Conversation
|
clean workflow output
…g the storing paths
|
Hi @pinin4fjords @grst , here you have the implementation for migrating into the new workflow output format. Please review, and if everything looks great to you, I'll proceed to first commit the changes in nf-core subworkflow and then merge this one :) |
grst
left a comment
There was a problem hiding this comment.
I like it a lot, feels very satisfying to remove so much from the config file!
I didn't check everything in detail though.
| // gsea-specific outputs | ||
| gsea_report = GSEA_GSEA.out.report_tsvs_ref.join(GSEA_GSEA.out.report_tsvs_target) | ||
| gsea_report = GSEA_GSEA.out.report_tsvs_ref.join(GSEA_GSEA.out.report_tsvs_target) | ||
| gsea_artifacts = GSEA_GSEA.out.rpt |
There was a problem hiding this comment.
Is it necessary to be that verbose?
Does it not work to just use GSEA_GSEA.out or to iterate over the sub-channel and exclude a selected few?
There was a problem hiding this comment.
how can i do that? I thought that multichannel cannot be emitted directly.
so this will give error:
emit:
gsea = GSEA_GSEA.out
# ERROR ~ Cannot emit a multi-channel output: gsea
There was a problem hiding this comment.
an alternative I can do though is to modify the GSEA module itself and emit the output files as a combined tuple
There was a problem hiding this comment.
I have no idea, I had just hoped there might be an easy solution.
I'm fine with leaving it as is if there's not.
pinin4fjords
left a comment
There was a problem hiding this comment.
Also like, but we should preserve file paths, outside the explicit objectives of the PR.
I think the newly captured log files are a bug fix, but they'll be variable over time so we shouldn't snapshot them.
| ch_plot_differential_input.samples_features_matrices | ||
| ) | ||
|
|
||
| ch_plots_differential = PLOT_DIFFERENTIAL.out.volcanos_png |
There was a problem hiding this comment.
not ever used in the pipeline, but they were module outputs that were saved in dev
|
hi @pinin4fjords @grst, i have now updated the subworkflows from nf-core. |
| ch_plot_differential_input.samples_features_matrices | ||
| ) | ||
|
|
||
| ch_plots_differential = PLOT_DIFFERENTIAL.out.volcanos_png |
…o main.nf The inner workflow (DIFFERENTIALABUNDANCE) previously mixed all outputs into 7 broad category channels with name-tagging (e.g. ['affy_raw_expression', meta, file]). This re-introduced the mixed-type channel pattern that was explicitly rejected in nf-core/modules#11024. Now each output is emitted as its own clean channel from the inner workflow. The name-tagging and category mixing for publishing is done in main.nf's entry workflow, keeping publishing logic in one place and the inner workflow reusable without baked-in publishing assumptions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove 43 intermediate variables that were only defined to be emitted. The prepareModuleOutput() calls now live directly in the emit block, eliminating unnecessary indirection. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Hey @suzannejin, thanks for all the work on this - the migration to workflow outputs is a really important change and the core of it looks great. One piece of feedback: in the inner workflow ( This also re-introduces the mixed-type channel pattern we discussed in nf-core/modules#11024, where the inner workflow bundles disparate outputs into single channels. I've opened #687 against your branch with a refactor that:
The net effect is fewer lines overall and all publishing concerns in one file. It should also port more cleanly to future Nextflow enhancements (record types, etc.). I know the verbosity of having ~62 individual emits isn't ideal - it's the same issue that led me to park the equivalent migration in rnaseq (nf-core/rnaseq#1679). But it's not too bad here, and Nextflow should address this with record types in future, at which point it'll collapse down nicely. Could you take a look at #687 and merge it if it looks good to you? It should be a straightforward review since the |
Emit individual channels from inner workflow
This solves #611 (linked to parent issue #471), by 1) migrating to the new workflow output format and 2) remove paramset_names when running modules.
PR checklist
nf-core lint).nf-test test main.nf.test -profile test,docker).nextflow run . -profile debug,test,docker --outdir <OUTDIR>).docs/usage.mdis updated.docs/output.mdis updated.CHANGELOG.mdis updated.README.mdis updated (including new tool citations and authors/contributors).