Conversation
✅ Deploy Preview for nextflow-docs-staging ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
This PR does not make any changes to operators, so you need some extra logic in some cases to pass records through an operator. For example, given two record channels that you want to join: samples_ch = fastqc_ch.join(quant_ch, by: 'id')The above syntax is what we'd like to do, but samples_ch = fastqc_ch.map { r -> tuple(r.id, r) }
.join( quant_ch.map { r -> tuple(r.id, r) } )
.map { id, r1, r2 -> r1 + r2 } |
4f335a9 to
01e71db
Compare
01e71db to
7af3758
Compare
7af3758 to
f545b47
Compare
christopher-hakkaart
left a comment
There was a problem hiding this comment.
Docs are excellent. No comments.
0cbf80f to
18ae371
Compare
d8d92b3 to
5880e05
Compare
Demonstrates how record types (nextflow-io/nextflow#6679) would simplify the workflow outputs pattern by replacing groups of related tuple-based channels with single record-typed channels. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5880e05 to
dfadf32
Compare
d9fa5cd to
d752bc2
Compare
dfadf32 to
7a9a7df
Compare
pditommaso
left a comment
There was a problem hiding this comment.
Code review of the record types feature. Overall well-structured implementation following existing codebase patterns. Flagging 5 issues ranging from a mutability/data-race risk to minor UX improvements.
modules/nf-lang/src/main/java/nextflow/script/parser/ScriptAstBuilder.java
Show resolved
Hide resolved
modules/nextflow/src/main/groovy/nextflow/processor/TaskProcessor.groovy
Show resolved
Hide resolved
modules/nextflow/src/main/groovy/nextflow/processor/TaskInputResolver.groovy
Outdated
Show resolved
Hide resolved
7a9a7df to
d90e7fe
Compare
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
86ab198 to
e28ef7f
Compare
|
Does this change the hashing irrespective the use of record types? if so could be confined only when the feature is enabled? |
|
The hashing change was to hash maps by their keys and values instead of only their values It made more sense to apply this change for all records and maps because it fixes a bug (#4916) where e.g. a meta-map key would be renamed but the task wouldn't re-execute |
|
Considering the impact breaking the cache in production deployment it may be worth considering making this configurable. Default should use the new version, however it could be possible to back to the previous caching. it should be fairly simple to have a caching strategy as a singleton in the session or process level. |
|
I'm not sure that anyone is asking for that, but if we were to do anything about it, I would do something like #6353 where we add an environment variable to the |
This PR implements the first preview of record types:
Recordtype to standard typesrecord()function to create a record from named argumentsrecordkeyword for validating recordsCache breaking: This PR changes the way that map values are hashed. It now includes both the keys and values instead of only the values. It also prioritizes
CacheFunneloverMap, so that custom classes can implementMapwhile also implementingCacheFunnalin order to define custom hashing behavior.