From 846c888a60f4c89a7f2cefc9cb48b5efbf214df0 Mon Sep 17 00:00:00 2001 From: suzannejin Date: Mon, 23 Mar 2026 19:57:49 +0100 Subject: [PATCH 1/5] update modules --- .../abundance_differential_filter/main.nf | 45 ++-- .../abundance_differential_filter/meta.yml | 19 ++ .../tests/main.nf.test.snap | 194 +++++++++++++++++- .../main.nf | 61 ++++-- .../meta.yml | 24 +++ .../tests/main.nf.test.snap | 170 ++++++++++++--- 6 files changed, 452 insertions(+), 61 deletions(-) diff --git a/subworkflows/nf-core/abundance_differential_filter/main.nf b/subworkflows/nf-core/abundance_differential_filter/main.nf index 929341332adb..5b54bed29fb8 100644 --- a/subworkflows/nf-core/abundance_differential_filter/main.nf +++ b/subworkflows/nf-core/abundance_differential_filter/main.nf @@ -90,15 +90,15 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // LIMMA_NORM directly. It internally runs normalization + DE analysis. LIMMA_NORM( - norm_inputs.contrasts_for_norm_with_formula.filter{index -> index[0].differential_method == 'limma'}, - norm_inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'limma'} + norm_inputs.contrasts_for_norm_with_formula.filter{it[0].differential_method == 'limma'}, + norm_inputs.samples_and_matrix.filter{it[0].differential_method == 'limma'} ) ch_versions = ch_versions.mix(LIMMA_NORM.out.versions.first()) LIMMA_DIFFERENTIAL( - inputs.contrasts_for_diff_with_formula.filter{index -> index[0].differential_method == 'limma' }, - inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'limma' } + inputs.contrasts_for_diff_with_formula.filter{ it[0].differential_method == 'limma' }, + inputs.samples_and_matrix.filter{ it[0].differential_method == 'limma' } ) ch_versions = ch_versions.mix(LIMMA_DIFFERENTIAL.out.versions.first()) @@ -115,19 +115,19 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // DESEQ2_NORM directly. It internally runs normalization + DE analysis. DESEQ2_NORM( - norm_inputs.contrasts_for_norm_with_formula.filter{index -> index[0].differential_method == 'deseq2'}, - norm_inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'deseq2'}, - norm_inputs.control_features.filter{index -> index[0].differential_method == 'deseq2'}, - norm_inputs.transcript_length.filter{index -> index[0].differential_method == 'deseq2'} + norm_inputs.contrasts_for_norm_with_formula.filter{it[0].differential_method == 'deseq2'}, + norm_inputs.samples_and_matrix.filter{it[0].differential_method == 'deseq2'}, + norm_inputs.control_features.filter{it[0].differential_method == 'deseq2'}, + norm_inputs.transcript_length.filter{it[0].differential_method == 'deseq2'} ) ch_versions = ch_versions.mix(DESEQ2_NORM.out.versions.first()) DESEQ2_DIFFERENTIAL( - inputs.contrasts_for_diff_with_formula.filter{index -> index[0].differential_method == 'deseq2'}, - inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'deseq2'}, - inputs.control_features.filter{index -> index[0].differential_method == 'deseq2'}, - inputs.transcript_length.filter{index -> index[0].differential_method == 'deseq2'} + inputs.contrasts_for_diff_with_formula.filter{it[0].differential_method == 'deseq2'}, + inputs.samples_and_matrix.filter{it[0].differential_method == 'deseq2'}, + inputs.control_features.filter{it[0].differential_method == 'deseq2'}, + inputs.transcript_length.filter{it[0].differential_method == 'deseq2'} ) ch_versions = ch_versions.mix(DESEQ2_DIFFERENTIAL.out.versions.first()) @@ -140,8 +140,8 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // not produce a normalized matrix. PROPR_PROPD( - inputs.contrasts_for_diff.filter{index -> index[0].differential_method == 'propd'}, - inputs.samples_and_matrix.filter {index -> index[0].differential_method == 'propd' } + inputs.contrasts_for_diff.filter{it[0].differential_method == 'propd'}, + inputs.samples_and_matrix.filter { it[0].differential_method == 'propd' } ) ch_versions = ch_versions.mix(PROPR_PROPD.out.versions.first()) @@ -163,13 +163,13 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { } DREAM_NORM( - norm_inputs.contrasts_for_norm_with_formula.filter{index -> index[0].differential_method == 'dream'}, - norm_inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'dream'} + norm_inputs.contrasts_for_norm_with_formula.filter{it[0].differential_method == 'dream'}, + norm_inputs.samples_and_matrix.filter{it[0].differential_method == 'dream'} ) VARIANCEPARTITION_DREAM( dream_inputs, - inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'dream' } + inputs.samples_and_matrix.filter{ it[0].differential_method == 'dream' } ) ch_versions = ch_versions.mix( VARIANCEPARTITION_DREAM.out.versions.first() ) @@ -195,6 +195,15 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { .mix(DESEQ2_NORM.out.vst_counts) .groupTuple() + ch_plots = DESEQ2_DIFFERENTIAL.out.dispersion_plot_png + .mix(LIMMA_DIFFERENTIAL.out.md_plot) + + ch_other = DESEQ2_DIFFERENTIAL.out.rdata + .mix(DESEQ2_DIFFERENTIAL.out.size_factors) + .mix(DESEQ2_DIFFERENTIAL.out.session_info) + .mix(LIMMA_DIFFERENTIAL.out.rdata) + .mix(LIMMA_DIFFERENTIAL.out.session_info) + // ---------------------------------------------------- // Filter DE results // ---------------------------------------------------- @@ -253,5 +262,7 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { normalised_matrix = ch_normalised_matrix variance_stabilised_matrix = ch_variance_stabilised_matrix model = ch_model + plots = ch_plots + other = ch_other versions = ch_versions } diff --git a/subworkflows/nf-core/abundance_differential_filter/meta.yml b/subworkflows/nf-core/abundance_differential_filter/meta.yml index 382198a56213..8417ceee3c79 100644 --- a/subworkflows/nf-core/abundance_differential_filter/meta.yml +++ b/subworkflows/nf-core/abundance_differential_filter/meta.yml @@ -157,6 +157,25 @@ output: type: file description: Statistical model object file pattern: "*.rds" + - plots: + description: Channel containing plots from differential analysis + structure: + - meta: + type: map + description: Metadata map + - plots: + type: list + description: A list of plot files + pattern: "*.{png,pdf}" + - other: + description: Channel containing other outputs from differential analysis + structure: + - meta: + type: map + description: Metadata map + - other_files: + type: list + description: A list of other output files from differential analysis authors: - "@pinin4fjords" - "@bjlang" diff --git a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap index 1aaebc25f353..e55ba2f81399 100644 --- a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap +++ b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap @@ -350,10 +350,10 @@ ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-26T15:13:48.91832163" + "timestamp": "2026-03-23T16:09:15.466767644" }, "deseq2 + limma-voom + propd - mouse - basic": { "content": [ @@ -720,6 +720,98 @@ ] ], "6": [ + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ "versions.yml:md5,05e3901f6d78f8839a7e07f422e9bc03", "versions.yml:md5,1d567f203085b6ae7b621d5587260a23", "versions.yml:md5,50cd86004ca6259274b10316b1b96f00" @@ -760,6 +852,98 @@ "test.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "other": [ + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "plots": [ + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "results_genewise": [ [ { @@ -832,9 +1016,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.10.4" }, - "timestamp": "2025-06-17T10:39:22.686251" + "timestamp": "2026-03-23T16:13:29.194527941" }, "dream - voom": { "content": [ diff --git a/subworkflows/nf-core/differential_functional_enrichment/main.nf b/subworkflows/nf-core/differential_functional_enrichment/main.nf index 7854e70ffd4c..9c2fc493e764 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/main.nf +++ b/subworkflows/nf-core/differential_functional_enrichment/main.nf @@ -65,7 +65,7 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { contrasts_and_samples: [ meta_with_contrast, samplesheet ] features: - [ meta_with_method, featuresheet ] + [ meta_with_contrast, featuresheet ] features_cols: [ features_id, features_symbol ] } @@ -97,28 +97,32 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { // Perform enrichment analysis with GSEA // ---------------------------------------------------- - // NOTE that GCT input can be more than 1, if they come from different tools (eg. limma, deseq2). - // CLS input can be as many as combinations of input x contrasts - // Whereas features can be only one file. - CUSTOM_TABULARTOGSEAGCT(ch_input_for_gsea.input) - CUSTOM_TABULARTOGSEACLS(ch_input_for_gsea.contrasts_and_samples) - CUSTOM_TABULARTOGSEACHIP( - ch_input_for_gsea.features.first(), - ch_input_for_gsea.features_cols.first() + ch_input_for_gsea.features, + ch_input_for_gsea.features_cols ) - ch_input_for_gsea = CUSTOM_TABULARTOGSEAGCT.out.gct + ch_in_gsea = CUSTOM_TABULARTOGSEAGCT.out.gct .join(CUSTOM_TABULARTOGSEACLS.out.cls) .join( ch_input_for_gsea.genesets ) + .join( CUSTOM_TABULARTOGSEACHIP.out.chip ) + .multiMap { meta, gct, cls, genesets, chip -> + input: + [meta, gct, cls, genesets] + ref_target: + [meta.reference, meta.target] + chip: + [meta, chip] + } GSEA_GSEA( - ch_input_for_gsea, - ch_input_for_gsea.map{ index -> tuple(index[0].reference, index[0].target) }, - CUSTOM_TABULARTOGSEACHIP.out.chip.first() + ch_in_gsea.input, + ch_in_gsea.ref_target, + ch_in_gsea.chip ) + // ---------------------------------------------------- // Perform enrichment analysis with DECOUPLER // ---------------------------------------------------- @@ -153,19 +157,44 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { // nf-core/differentialabundance pipeline // gprofiler2-specific outputs + gprofiler2_plot_html = GPROFILER2_GOST.out.plot_html gprofiler2_all_enrich = GPROFILER2_GOST.out.all_enrich gprofiler2_sub_enrich = GPROFILER2_GOST.out.sub_enrich - gprofiler2_plot_html = GPROFILER2_GOST.out.plot_html + gprofiler2_artifacts = GPROFILER2_GOST.out.plot_png + .mix(GPROFILER2_GOST.out.sub_plot) + .mix(GPROFILER2_GOST.out.rds) + .mix(GPROFILER2_GOST.out.filtered_gmt) + .mix(GPROFILER2_GOST.out.session_info) // 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 + .mix(GSEA_GSEA.out.index_html) + .mix(GSEA_GSEA.out.heat_map_corr_plot) + .mix(GSEA_GSEA.out.report_tsvs_ref) + .mix(GSEA_GSEA.out.report_htmls_ref) + .mix(GSEA_GSEA.out.report_tsvs_target) + .mix(GSEA_GSEA.out.report_htmls_target) + .mix(GSEA_GSEA.out.ranked_gene_list) + .mix(GSEA_GSEA.out.gene_set_sizes) + .mix(GSEA_GSEA.out.histogram) + .mix(GSEA_GSEA.out.heatmap) + .mix(GSEA_GSEA.out.pvalues_vs_nes_plot) + .mix(GSEA_GSEA.out.ranked_list_corr) + .mix(GSEA_GSEA.out.butterfly_plot) + .mix(GSEA_GSEA.out.gene_set_tsv) + .mix(GSEA_GSEA.out.gene_set_html) + .mix(GSEA_GSEA.out.gene_set_heatmap) + .mix(GSEA_GSEA.out.snapshot) + .mix(GSEA_GSEA.out.gene_set_enplot) + .mix(GSEA_GSEA.out.gene_set_dist) + .mix(GSEA_GSEA.out.archive) // decoupler-specific outputs decoupler_dc_estimate = DECOUPLER_DECOUPLER.out.dc_estimate decoupler_dc_pvals = DECOUPLER_DECOUPLER.out.dc_pvals decoupler_png = DECOUPLER_DECOUPLER.out.png - // grea-specific outputs grea_results = PROPR_GREA.out.results diff --git a/subworkflows/nf-core/differential_functional_enrichment/meta.yml b/subworkflows/nf-core/differential_functional_enrichment/meta.yml index 37e672ca006c..f389dca7415b 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/meta.yml +++ b/subworkflows/nf-core/differential_functional_enrichment/meta.yml @@ -133,6 +133,18 @@ output: HTML file; interactive Manhattan plot of all enriched pathways. Note that this file will only be generated if enriched pathways were found. pattern: "*.gprofiler2.gostplot.html" + - gprofiler2_artifacts: + description: Channel containing additional gprofiler2 artifacts. + structure: + - meta: + type: map + description: Metadata map + - artifact: + type: file + description: | + Additional outputs from gprofiler2, including gost results (RDS), + filtered GMT files, and R session logs. + pattern: "*.{rds,gmt,log}" - gsea_report: description: Channel containing all the output from GSEA needed for further reporting. structure: @@ -147,6 +159,18 @@ output: type: file description: Main TSV results report file for the target group. pattern: "*gsea_report_for_${target}.tsv" + - gsea_artifacts: + description: Channel containing additional GSEA output artifacts. + structure: + - meta: + type: map + description: Metadata map + - artifact: + type: file + description: | + Additional files generated by GSEA, including reports, plots, archives, + and supporting HTML/TSV outputs. + pattern: "*.{rpt,html,tsv,png,zip}" - decoupler_dc_estimate: description: Channel containing decoupler estimate results. structure: diff --git a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap index 03efd791afd7..fb307ce4d939 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap +++ b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap @@ -137,6 +137,9 @@ "versions.yml:md5,cd9cd1563a983e586b15fd2276da8bfb", "versions.yml:md5,cd9cd1563a983e586b15fd2276da8bfb", "versions.yml:md5,f2db818ec8143f64399247548098b643", + "versions.yml:md5,f2db818ec8143f64399247548098b643", + "versions.yml:md5,f2db818ec8143f64399247548098b643", + "versions.yml:md5,f2db818ec8143f64399247548098b643", "versions.yml:md5,f3be00003ea786284231f77c03c92eed", "versions.yml:md5,f3be00003ea786284231f77c03c92eed", "versions.yml:md5,f3be00003ea786284231f77c03c92eed", @@ -147,11 +150,11 @@ "versions.yml:md5,f823a4e0a4d8744b89aff1391ca74e3a" ] ], - "timestamp": "2026-03-11T20:58:08.296452361", "meta": { - "nf-test": "0.9.4", + "nf-test": "0.9.2", "nextflow": "25.10.4" - } + }, + "timestamp": "2026-03-23T19:46:29.209223232" }, "deseq2 + gprofiler2 - mouse": { "content": [ @@ -242,11 +245,11 @@ "versions.yml:md5,55ff15a3f507c22d830c496cd8b57881" ] ], - "timestamp": "2026-01-19T14:27:15.972785923", "meta": { "nf-test": "0.9.3", "nextflow": "25.04.2" - } + }, + "timestamp": "2026-01-19T14:27:15.972785923" }, "propd + grea - mouse": { "content": [ @@ -286,11 +289,11 @@ "versions.yml:md5,cd9cd1563a983e586b15fd2276da8bfb" ] ], - "timestamp": "2025-06-19T11:40:12.466459", "meta": { "nf-test": "0.9.2", "nextflow": "24.10.5" - } + }, + "timestamp": "2025-06-19T11:40:12.466459" }, "test gprofiler2 - mouse": { "content": [ @@ -343,11 +346,11 @@ "versions.yml:md5,55ff15a3f507c22d830c496cd8b57881" ] ], - "timestamp": "2026-01-19T14:26:41.509490757", "meta": { "nf-test": "0.9.3", "nextflow": "25.04.2" - } + }, + "timestamp": "2026-01-19T14:26:41.509490757" }, "deseq2 + decoupler - mouse": { "content": [ @@ -382,11 +385,11 @@ "versions.yml:md5,ee67949b865ffd841f658d8645dd5024" ] ], - "timestamp": "2025-09-19T18:08:19.213003254", "meta": { "nf-test": "0.9.2", "nextflow": "25.04.6" - } + }, + "timestamp": "2025-09-19T18:08:19.213003254" }, "deseq2 + gsea - mouse": { "content": [ @@ -424,6 +427,7 @@ } }, [ + "versions.yml:md5,f2db818ec8143f64399247548098b643", "versions.yml:md5,f2db818ec8143f64399247548098b643", "versions.yml:md5,f3be00003ea786284231f77c03c92eed", "versions.yml:md5,f3be00003ea786284231f77c03c92eed", @@ -431,11 +435,11 @@ "versions.yml:md5,f823a4e0a4d8744b89aff1391ca74e3a" ] ], - "timestamp": "2026-03-11T20:56:16.153594443", "meta": { - "nf-test": "0.9.4", + "nf-test": "0.9.2", "nextflow": "25.10.4" - } + }, + "timestamp": "2026-03-23T19:45:34.127838812" }, "stub": { "content": [ @@ -450,7 +454,7 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.all_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.gprofiler2.gostplot.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -463,9 +467,12 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.gprofiler2.all_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "10": [ + "versions.yml:md5,50c836cd9ebcf71e839b301ce81da4cd" + ], "2": [ [ { @@ -476,11 +483,65 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.gostplot.html:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ - + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.ENSG_filtered.gmt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.gprofiler2.gost_results.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.gprofiler2.gostplot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "4": [ @@ -495,7 +556,10 @@ ], "8": [ - "versions.yml:md5,50c836cd9ebcf71e839b301ce81da4cd" + + ], + "9": [ + ], "decoupler_dc_estimate": [ @@ -519,6 +583,63 @@ "Condition_genotype_WT_KO.gprofiler2.all_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "gprofiler2_artifacts": [ + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.ENSG_filtered.gmt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.gprofiler2.gost_results.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "Condition_genotype_WT_KO", + "variable": "Condition genotype", + "reference": "WT", + "target": "KO", + "blocking": "batch", + "functional_method": "gprofiler2" + }, + "Condition_genotype_WT_KO.gprofiler2.gostplot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "gprofiler2_plot_html": [ [ { @@ -547,6 +668,9 @@ ], "grea_results": [ + ], + "gsea_artifacts": [ + ], "gsea_report": [ @@ -556,10 +680,10 @@ ] } ], - "timestamp": "2026-01-19T14:31:16.676906636", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.2" - } + "nf-test": "0.9.2", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-23T19:52:37.584455034" } } \ No newline at end of file From d339469d038125fe8a7d94aeca545b0351265e6c Mon Sep 17 00:00:00 2001 From: Suzanne Jin Date: Mon, 23 Mar 2026 20:10:58 +0100 Subject: [PATCH 2/5] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../nf-core/abundance_differential_filter/meta.yml | 9 +++++---- .../nf-core/differential_functional_enrichment/meta.yml | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/subworkflows/nf-core/abundance_differential_filter/meta.yml b/subworkflows/nf-core/abundance_differential_filter/meta.yml index 8417ceee3c79..b6962bf495cb 100644 --- a/subworkflows/nf-core/abundance_differential_filter/meta.yml +++ b/subworkflows/nf-core/abundance_differential_filter/meta.yml @@ -164,8 +164,8 @@ output: type: map description: Metadata map - plots: - type: list - description: A list of plot files + type: file + description: Plot file pattern: "*.{png,pdf}" - other: description: Channel containing other outputs from differential analysis @@ -174,8 +174,9 @@ output: type: map description: Metadata map - other_files: - type: list - description: A list of other output files from differential analysis + type: file + description: Other output file from differential analysis + pattern: "*.{rds,tsv,log}" authors: - "@pinin4fjords" - "@bjlang" diff --git a/subworkflows/nf-core/differential_functional_enrichment/meta.yml b/subworkflows/nf-core/differential_functional_enrichment/meta.yml index f389dca7415b..f6969ca19b92 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/meta.yml +++ b/subworkflows/nf-core/differential_functional_enrichment/meta.yml @@ -143,8 +143,8 @@ output: type: file description: | Additional outputs from gprofiler2, including gost results (RDS), - filtered GMT files, and R session logs. - pattern: "*.{rds,gmt,log}" + filtered GMT files, R session logs, and PNG plot files. + pattern: "*.{rds,gmt,log,png}" - gsea_report: description: Channel containing all the output from GSEA needed for further reporting. structure: From 5fef88ae19abfb75c633b778371e088cf3437be2 Mon Sep 17 00:00:00 2001 From: suzannejin Date: Mon, 23 Mar 2026 20:14:26 +0100 Subject: [PATCH 3/5] fix changes --- .../abundance_differential_filter/main.nf | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/subworkflows/nf-core/abundance_differential_filter/main.nf b/subworkflows/nf-core/abundance_differential_filter/main.nf index 5b54bed29fb8..e17aa2a204fd 100644 --- a/subworkflows/nf-core/abundance_differential_filter/main.nf +++ b/subworkflows/nf-core/abundance_differential_filter/main.nf @@ -90,15 +90,15 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // LIMMA_NORM directly. It internally runs normalization + DE analysis. LIMMA_NORM( - norm_inputs.contrasts_for_norm_with_formula.filter{it[0].differential_method == 'limma'}, - norm_inputs.samples_and_matrix.filter{it[0].differential_method == 'limma'} + norm_inputs.contrasts_for_norm_with_formula.filter{index -> index[0].differential_method == 'limma'}, + norm_inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'limma'} ) ch_versions = ch_versions.mix(LIMMA_NORM.out.versions.first()) LIMMA_DIFFERENTIAL( - inputs.contrasts_for_diff_with_formula.filter{ it[0].differential_method == 'limma' }, - inputs.samples_and_matrix.filter{ it[0].differential_method == 'limma' } + inputs.contrasts_for_diff_with_formula.filter{index -> index[0].differential_method == 'limma' }, + inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'limma' } ) ch_versions = ch_versions.mix(LIMMA_DIFFERENTIAL.out.versions.first()) @@ -115,19 +115,19 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // DESEQ2_NORM directly. It internally runs normalization + DE analysis. DESEQ2_NORM( - norm_inputs.contrasts_for_norm_with_formula.filter{it[0].differential_method == 'deseq2'}, - norm_inputs.samples_and_matrix.filter{it[0].differential_method == 'deseq2'}, - norm_inputs.control_features.filter{it[0].differential_method == 'deseq2'}, - norm_inputs.transcript_length.filter{it[0].differential_method == 'deseq2'} + norm_inputs.contrasts_for_norm_with_formula.filter{index -> index[0].differential_method == 'deseq2'}, + norm_inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'deseq2'}, + norm_inputs.control_features.filter{index -> index[0].differential_method == 'deseq2'}, + norm_inputs.transcript_length.filter{index -> index[0].differential_method == 'deseq2'} ) ch_versions = ch_versions.mix(DESEQ2_NORM.out.versions.first()) DESEQ2_DIFFERENTIAL( - inputs.contrasts_for_diff_with_formula.filter{it[0].differential_method == 'deseq2'}, - inputs.samples_and_matrix.filter{it[0].differential_method == 'deseq2'}, - inputs.control_features.filter{it[0].differential_method == 'deseq2'}, - inputs.transcript_length.filter{it[0].differential_method == 'deseq2'} + inputs.contrasts_for_diff_with_formula.filter{index -> index[0].differential_method == 'deseq2'}, + inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'deseq2'}, + inputs.control_features.filter{index -> index[0].differential_method == 'deseq2'}, + inputs.transcript_length.filter{index -> index[0].differential_method == 'deseq2'} ) ch_versions = ch_versions.mix(DESEQ2_DIFFERENTIAL.out.versions.first()) @@ -140,8 +140,8 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // not produce a normalized matrix. PROPR_PROPD( - inputs.contrasts_for_diff.filter{it[0].differential_method == 'propd'}, - inputs.samples_and_matrix.filter { it[0].differential_method == 'propd' } + inputs.contrasts_for_diff.filter{index -> index[0].differential_method == 'propd'}, + inputs.samples_and_matrix.filter {index -> index[0].differential_method == 'propd' } ) ch_versions = ch_versions.mix(PROPR_PROPD.out.versions.first()) @@ -163,13 +163,13 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { } DREAM_NORM( - norm_inputs.contrasts_for_norm_with_formula.filter{it[0].differential_method == 'dream'}, - norm_inputs.samples_and_matrix.filter{it[0].differential_method == 'dream'} + norm_inputs.contrasts_for_norm_with_formula.filter{index -> index[0].differential_method == 'dream'}, + norm_inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'dream'} ) VARIANCEPARTITION_DREAM( dream_inputs, - inputs.samples_and_matrix.filter{ it[0].differential_method == 'dream' } + inputs.samples_and_matrix.filter{index -> index[0].differential_method == 'dream' } ) ch_versions = ch_versions.mix( VARIANCEPARTITION_DREAM.out.versions.first() ) From 729a7c3848dad1b1e10266fb1f3320b2651a4254 Mon Sep 17 00:00:00 2001 From: suzannejin Date: Tue, 24 Mar 2026 15:50:21 +0100 Subject: [PATCH 4/5] split outputs in abundance_differential_filter and update snapshots --- .../abundance_differential_filter/main.nf | 33 +- .../tests/main.nf.test | 24 ++ .../tests/main.nf.test.snap | 285 ++++++++++++------ 3 files changed, 249 insertions(+), 93 deletions(-) diff --git a/subworkflows/nf-core/abundance_differential_filter/main.nf b/subworkflows/nf-core/abundance_differential_filter/main.nf index e17aa2a204fd..923dfe28c5e1 100644 --- a/subworkflows/nf-core/abundance_differential_filter/main.nf +++ b/subworkflows/nf-core/abundance_differential_filter/main.nf @@ -195,13 +195,16 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { .mix(DESEQ2_NORM.out.vst_counts) .groupTuple() - ch_plots = DESEQ2_DIFFERENTIAL.out.dispersion_plot_png - .mix(LIMMA_DIFFERENTIAL.out.md_plot) + ch_dispersion_plot = DESEQ2_DIFFERENTIAL.out.dispersion_plot_png - ch_other = DESEQ2_DIFFERENTIAL.out.rdata - .mix(DESEQ2_DIFFERENTIAL.out.size_factors) - .mix(DESEQ2_DIFFERENTIAL.out.session_info) + ch_md_plot = LIMMA_DIFFERENTIAL.out.md_plot + + ch_rdata = DESEQ2_DIFFERENTIAL.out.rdata .mix(LIMMA_DIFFERENTIAL.out.rdata) + + ch_size_factors = DESEQ2_DIFFERENTIAL.out.size_factors + + ch_session_info = DESEQ2_DIFFERENTIAL.out.session_info .mix(LIMMA_DIFFERENTIAL.out.session_info) // ---------------------------------------------------- @@ -251,6 +254,7 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { ch_versions = ch_versions.mix(CUSTOM_FILTERDIFFERENTIALTABLE.out.versions.first()) emit: + // main results results_genewise = ch_results results_genewise_filtered = CUSTOM_FILTERDIFFERENTIALTABLE.out.filtered @@ -258,11 +262,24 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { // pairwise results adjacency = PROPR_PROPD.out.adjacency - // other + // other matrices normalised_matrix = ch_normalised_matrix variance_stabilised_matrix = ch_variance_stabilised_matrix + + // differential model model = ch_model - plots = ch_plots - other = ch_other + + // size factors + size_factors = ch_size_factors + + // plots + dispersion_plot = ch_dispersion_plot + md_plot = ch_md_plot + + // rdata and session info + rdata = ch_rdata + session_info = ch_session_info + + // versions versions = ch_versions } diff --git a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test index a8369e4d6bd7..36d9def82dd6 100644 --- a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test +++ b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test @@ -234,6 +234,10 @@ nextflow_workflow { workflow.out.normalised_matrix, workflow.out.variance_stabilised_matrix, workflow.out.model, + workflow.out.size_factors.collect { file(it[1]).name }.sort(), + workflow.out.dispersion_plot.collect { file(it[1]).name }.sort(), + workflow.out.rdata.collect { file(it[1]).name }.sort(), + workflow.out.session_info.collect { file(it[1]).name }.sort(), workflow.out.versions ).match() } ) @@ -318,6 +322,9 @@ nextflow_workflow { workflow.out.results_genewise_filtered, workflow.out.normalised_matrix, workflow.out.model, + workflow.out.md_plot.collect { file(it[1]).name }.sort(), + workflow.out.rdata.collect { file(it[1]).name }.sort(), + workflow.out.session_info.collect { file(it[1]).name }.sort(), workflow.out.versions ).match() } ) @@ -376,6 +383,9 @@ nextflow_workflow { workflow.out.results_genewise_filtered, workflow.out.normalised_matrix, workflow.out.model, + workflow.out.md_plot.collect { file(it[1]).name }.sort(), + workflow.out.rdata.collect { file(it[1]).name }.sort(), + workflow.out.session_info.collect { file(it[1]).name }.sort(), workflow.out.versions ).match() } ) @@ -439,6 +449,10 @@ nextflow_workflow { workflow.out.normalised_matrix, workflow.out.variance_stabilised_matrix, workflow.out.model, + workflow.out.size_factors.collect { file(it[1]).name }.sort(), + workflow.out.dispersion_plot.collect { file(it[1]).name }.sort(), + workflow.out.rdata.collect { file(it[1]).name }.sort(), + workflow.out.session_info.collect { file(it[1]).name }.sort(), workflow.out.versions ).match() } ) @@ -564,6 +578,11 @@ nextflow_workflow { workflow.out.normalised_matrix, workflow.out.variance_stabilised_matrix, workflow.out.model, + workflow.out.size_factors.collect { file(it[1]).name }.sort(), + workflow.out.dispersion_plot.collect { file(it[1]).name }.sort(), + workflow.out.md_plot.collect { file(it[1]).name }.sort(), + workflow.out.rdata.collect { file(it[1]).name }.sort(), + workflow.out.session_info.collect { file(it[1]).name }.sort(), workflow.out.versions ).match() } ) @@ -640,6 +659,11 @@ nextflow_workflow { workflow.out.normalised_matrix, workflow.out.variance_stabilised_matrix, workflow.out.model, + workflow.out.size_factors.collect { file(it[1]).name }.sort(), + workflow.out.dispersion_plot.collect { file(it[1]).name }.sort(), + workflow.out.md_plot.collect { file(it[1]).name }.sort(), + workflow.out.rdata.collect { file(it[1]).name }.sort(), + workflow.out.session_info.collect { file(it[1]).name }.sort(), workflow.out.versions ).match() } ) diff --git a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap index e55ba2f81399..f4bfb492b35b 100644 --- a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap +++ b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap @@ -42,16 +42,25 @@ "diagnosis_normal_uremia_test_limma.limma.model.txt:md5,70b000f632b8bdba4917046362dd876b" ] ], + [ + "diagnosis_normal_uremia_test_limma.limma.mean_difference.png" + ], + [ + "diagnosis_normal_uremia_test_limma.MArrayLM.limma.rds" + ], + [ + "diagnosis_normal_uremia_test_limma.R_sessionInfo.log" + ], [ "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", "versions.yml:md5,1ddaab440e2528c688c05a02dd066f12" ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-04T21:34:41.609825626" + "timestamp": "2026-03-24T15:43:26.461974792" }, "deseq2 and limma - mouse - basic": { "content": [ @@ -228,6 +237,30 @@ "treatment_mCherry_hND6_sample_number_test_limma_voom.limma.model.txt:md5,3b96713b4e3f027b0347859f02a9038d" ] ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.sizefactors.tsv", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.sizefactors.tsv" + ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.dispersion.png", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.dispersion.png" + ], + [ + "treatment_mCherry_hND6__test_limma_voom.limma.mean_difference.png", + "treatment_mCherry_hND6_sample_number_test_limma_voom.limma.mean_difference.png" + ], + [ + "treatment_mCherry_hND6__test_deseq2.dds.rld.rds", + "treatment_mCherry_hND6__test_limma_voom.MArrayLM.limma.rds", + "treatment_mCherry_hND6_sample_number_test_deseq2.dds.rld.rds", + "treatment_mCherry_hND6_sample_number_test_limma_voom.MArrayLM.limma.rds" + ], + [ + "treatment_mCherry_hND6__test_deseq2.R_sessionInfo.log", + "treatment_mCherry_hND6__test_limma_voom.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_deseq2.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_limma_voom.R_sessionInfo.log" + ], [ "versions.yml:md5,1a6a400c49aa4dda7ec5c4ed0cc56340", "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", @@ -237,10 +270,10 @@ ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-04T21:36:19.869897897" + "timestamp": "2026-03-24T15:47:16.379223242" }, "limma - voom": { "content": [ @@ -306,6 +339,18 @@ "treatment_mCherry_hND6_sample_number_test_limma_voom.limma.model.txt:md5,3b96713b4e3f027b0347859f02a9038d" ] ], + [ + "treatment_mCherry_hND6__test_limma_voom.limma.mean_difference.png", + "treatment_mCherry_hND6_sample_number_test_limma_voom.limma.mean_difference.png" + ], + [ + "treatment_mCherry_hND6__test_limma_voom.MArrayLM.limma.rds", + "treatment_mCherry_hND6_sample_number_test_limma_voom.MArrayLM.limma.rds" + ], + [ + "treatment_mCherry_hND6__test_limma_voom.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_limma_voom.R_sessionInfo.log" + ], [ "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", "versions.yml:md5,1ddaab440e2528c688c05a02dd066f12", @@ -313,10 +358,10 @@ ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-04T21:34:54.342799115" + "timestamp": "2026-03-24T15:45:01.909392414" }, "dream": { "content": [ @@ -602,6 +647,30 @@ "treatment_mCherry_hND6_sample_number_test_limma_voom.limma.model.txt:md5,3b96713b4e3f027b0347859f02a9038d" ] ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.sizefactors.tsv", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.sizefactors.tsv" + ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.dispersion.png", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.dispersion.png" + ], + [ + "treatment_mCherry_hND6__test_limma_voom.limma.mean_difference.png", + "treatment_mCherry_hND6_sample_number_test_limma_voom.limma.mean_difference.png" + ], + [ + "treatment_mCherry_hND6__test_deseq2.dds.rld.rds", + "treatment_mCherry_hND6__test_limma_voom.MArrayLM.limma.rds", + "treatment_mCherry_hND6_sample_number_test_deseq2.dds.rld.rds", + "treatment_mCherry_hND6_sample_number_test_limma_voom.MArrayLM.limma.rds" + ], + [ + "treatment_mCherry_hND6__test_deseq2.R_sessionInfo.log", + "treatment_mCherry_hND6__test_limma_voom.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_deseq2.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_limma_voom.R_sessionInfo.log" + ], [ "versions.yml:md5,1a6a400c49aa4dda7ec5c4ed0cc56340", "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", @@ -612,10 +681,10 @@ ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-04T21:37:02.640236928" + "timestamp": "2026-03-24T15:48:06.008809772" }, "stub": { "content": [ @@ -672,6 +741,35 @@ "treatment_mCherry_hND6_sample_number_test_filtered.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "10": [ + [ + { + "id": "treatment_mCherry_hND6__test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6__test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number", + "differential_method": "deseq2" + }, + "treatment_mCherry_hND6_sample_number_test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + "versions.yml:md5,05e3901f6d78f8839a7e07f422e9bc03", + "versions.yml:md5,1d567f203085b6ae7b621d5587260a23", + "versions.yml:md5,50cd86004ca6259274b10316b1b96f00" + ], "2": [ ], @@ -729,7 +827,7 @@ "blocking": "", "differential_method": "deseq2" }, - "treatment_mCherry_hND6__test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -740,7 +838,7 @@ "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6_sample_number_test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "7": [ @@ -753,19 +851,24 @@ "blocking": "", "differential_method": "deseq2" }, - "treatment_mCherry_hND6__test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { - "id": "treatment_mCherry_hND6__test", + "id": "treatment_mCherry_hND6_sample_number_test", "variable": "treatment", "reference": "mCherry", "target": "hND6", - "blocking": "", + "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6__test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "treatment_mCherry_hND6_sample_number_test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ [ { "id": "treatment_mCherry_hND6__test", @@ -775,7 +878,7 @@ "blocking": "", "differential_method": "deseq2" }, - "treatment_mCherry_hND6__test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -786,18 +889,23 @@ "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "treatment_mCherry_hND6_sample_number_test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "adjacency": [ + + ], + "dispersion_plot": [ [ { - "id": "treatment_mCherry_hND6_sample_number_test", + "id": "treatment_mCherry_hND6__test", "variable": "treatment", "reference": "mCherry", "target": "hND6", - "blocking": "sample_number", + "blocking": "", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -808,15 +916,10 @@ "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6_sample_number_test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "8": [ - "versions.yml:md5,05e3901f6d78f8839a7e07f422e9bc03", - "versions.yml:md5,1d567f203085b6ae7b621d5587260a23", - "versions.yml:md5,50cd86004ca6259274b10316b1b96f00" - ], - "adjacency": [ + "md_plot": [ ], "model": [ @@ -852,18 +955,7 @@ "test.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "other": [ - [ - { - "id": "treatment_mCherry_hND6__test", - "variable": "treatment", - "reference": "mCherry", - "target": "hND6", - "blocking": "", - "differential_method": "deseq2" - }, - "treatment_mCherry_hND6__test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "rdata": [ [ { "id": "treatment_mCherry_hND6__test", @@ -875,17 +967,6 @@ }, "treatment_mCherry_hND6__test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" ], - [ - { - "id": "treatment_mCherry_hND6__test", - "variable": "treatment", - "reference": "mCherry", - "target": "hND6", - "blocking": "", - "differential_method": "deseq2" - }, - "treatment_mCherry_hND6__test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ], [ { "id": "treatment_mCherry_hND6_sample_number_test", @@ -895,18 +976,20 @@ "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "treatment_mCherry_hND6_sample_number_test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "results_genewise": [ [ { - "id": "treatment_mCherry_hND6_sample_number_test", + "id": "treatment_mCherry_hND6__test", "variable": "treatment", "reference": "mCherry", "target": "hND6", - "blocking": "sample_number", + "blocking": "", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -917,10 +1000,10 @@ "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6_sample_number_test.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "plots": [ + "results_genewise_filtered": [ [ { "id": "treatment_mCherry_hND6__test", @@ -928,9 +1011,11 @@ "reference": "mCherry", "target": "hND6", "blocking": "", - "differential_method": "deseq2" + "differential_method": "deseq2", + "fc_threshold": 1.5, + "stat_threshold": 0.05 }, - "treatment_mCherry_hND6__test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test_filtered.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -939,12 +1024,14 @@ "reference": "mCherry", "target": "hND6", "blocking": "sample_number", - "differential_method": "deseq2" + "differential_method": "deseq2", + "fc_threshold": 1.5, + "stat_threshold": 0.05 }, - "treatment_mCherry_hND6_sample_number_test.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6_sample_number_test_filtered.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "results_genewise": [ + "session_info": [ [ { "id": "treatment_mCherry_hND6__test", @@ -954,7 +1041,7 @@ "blocking": "", "differential_method": "deseq2" }, - "treatment_mCherry_hND6__test.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -965,10 +1052,10 @@ "blocking": "sample_number", "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6_sample_number_test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "results_genewise_filtered": [ + "size_factors": [ [ { "id": "treatment_mCherry_hND6__test", @@ -976,11 +1063,9 @@ "reference": "mCherry", "target": "hND6", "blocking": "", - "differential_method": "deseq2", - "fc_threshold": 1.5, - "stat_threshold": 0.05 + "differential_method": "deseq2" }, - "treatment_mCherry_hND6__test_filtered.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6__test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { @@ -989,11 +1074,9 @@ "reference": "mCherry", "target": "hND6", "blocking": "sample_number", - "differential_method": "deseq2", - "fc_threshold": 1.5, - "stat_threshold": 0.05 + "differential_method": "deseq2" }, - "treatment_mCherry_hND6_sample_number_test_filtered.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "treatment_mCherry_hND6_sample_number_test.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "variance_stabilised_matrix": [ @@ -1018,7 +1101,7 @@ "nf-test": "0.9.2", "nextflow": "25.10.4" }, - "timestamp": "2026-03-23T16:13:29.194527941" + "timestamp": "2026-03-24T15:49:19.347075595" }, "dream - voom": { "content": [ @@ -1164,6 +1247,22 @@ "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" ] ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.sizefactors.tsv", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.sizefactors.tsv" + ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.dispersion.png", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.dispersion.png" + ], + [ + "treatment_mCherry_hND6__test_deseq2.dds.rld.rds", + "treatment_mCherry_hND6_sample_number_test_deseq2.dds.rld.rds" + ], + [ + "treatment_mCherry_hND6__test_deseq2.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_deseq2.R_sessionInfo.log" + ], [ "versions.yml:md5,1a6a400c49aa4dda7ec5c4ed0cc56340", "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", @@ -1171,10 +1270,10 @@ ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-04T21:34:07.788482554" + "timestamp": "2026-03-24T15:32:07.906913925" }, "dream - complex contrast - literal contrast string comparison": { "content": [ @@ -1311,6 +1410,22 @@ "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" ] ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.sizefactors.tsv", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.sizefactors.tsv" + ], + [ + "treatment_mCherry_hND6__test_deseq2.deseq2.dispersion.png", + "treatment_mCherry_hND6_sample_number_test_deseq2.deseq2.dispersion.png" + ], + [ + "treatment_mCherry_hND6__test_deseq2.dds.rld.rds", + "treatment_mCherry_hND6_sample_number_test_deseq2.dds.rld.rds" + ], + [ + "treatment_mCherry_hND6__test_deseq2.R_sessionInfo.log", + "treatment_mCherry_hND6_sample_number_test_deseq2.R_sessionInfo.log" + ], [ "versions.yml:md5,1a6a400c49aa4dda7ec5c4ed0cc56340", "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", @@ -1318,10 +1433,10 @@ ] ], "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nf-test": "0.9.2", + "nextflow": "25.10.4" }, - "timestamp": "2025-12-04T21:35:28.598725232" + "timestamp": "2026-03-24T15:46:27.915203315" }, "propd - mouse - basic": { "content": [ From 685596fe00cb0f17f5d9a43f50865ef378278589 Mon Sep 17 00:00:00 2001 From: suzannejin Date: Thu, 26 Mar 2026 16:46:50 +0100 Subject: [PATCH 5/5] split outputs in subworkflow differential_functional_enrichment --- .../main.nf | 74 +++---- .../tests/main.nf.test | 4 +- .../tests/main.nf.test.snap | 194 ++++++++++++++---- 3 files changed, 196 insertions(+), 76 deletions(-) diff --git a/subworkflows/nf-core/differential_functional_enrichment/main.nf b/subworkflows/nf-core/differential_functional_enrichment/main.nf index 9c2fc493e764..2ae98aac8314 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/main.nf +++ b/subworkflows/nf-core/differential_functional_enrichment/main.nf @@ -143,7 +143,12 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { ch_input_for_other.genesets.filter{ index -> index[0].functional_method == 'grea' } ) - // collect versions info + // ---------------------------------------------------- + // collect generic outputs + // ---------------------------------------------------- + + ch_session_info = GPROFILER2_GOST.out.session_info + ch_versions = ch_versions .mix(GPROFILER2_GOST.out.versions) .mix(CUSTOM_TABULARTOGSEAGCT.out.versions) @@ -157,47 +162,44 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { // nf-core/differentialabundance pipeline // gprofiler2-specific outputs - gprofiler2_plot_html = GPROFILER2_GOST.out.plot_html - gprofiler2_all_enrich = GPROFILER2_GOST.out.all_enrich - gprofiler2_sub_enrich = GPROFILER2_GOST.out.sub_enrich - gprofiler2_artifacts = GPROFILER2_GOST.out.plot_png - .mix(GPROFILER2_GOST.out.sub_plot) - .mix(GPROFILER2_GOST.out.rds) - .mix(GPROFILER2_GOST.out.filtered_gmt) - .mix(GPROFILER2_GOST.out.session_info) + gprofiler2_plot_html = GPROFILER2_GOST.out.plot_html + gprofiler2_all_enrich = GPROFILER2_GOST.out.all_enrich + gprofiler2_sub_enrich = GPROFILER2_GOST.out.sub_enrich + gprofiler2_artifacts = GPROFILER2_GOST.out.plot_png + gprofiler2_sub_plot = GPROFILER2_GOST.out.sub_plot + gprofiler2_rds = GPROFILER2_GOST.out.rds + gprofiler2_filtered_gmt = GPROFILER2_GOST.out.filtered_gmt // gsea-specific outputs - gsea_report = GSEA_GSEA.out.report_tsvs_ref.join(GSEA_GSEA.out.report_tsvs_target) - gsea_artifacts = GSEA_GSEA.out.rpt - .mix(GSEA_GSEA.out.index_html) - .mix(GSEA_GSEA.out.heat_map_corr_plot) - .mix(GSEA_GSEA.out.report_tsvs_ref) - .mix(GSEA_GSEA.out.report_htmls_ref) - .mix(GSEA_GSEA.out.report_tsvs_target) - .mix(GSEA_GSEA.out.report_htmls_target) - .mix(GSEA_GSEA.out.ranked_gene_list) - .mix(GSEA_GSEA.out.gene_set_sizes) - .mix(GSEA_GSEA.out.histogram) - .mix(GSEA_GSEA.out.heatmap) - .mix(GSEA_GSEA.out.pvalues_vs_nes_plot) - .mix(GSEA_GSEA.out.ranked_list_corr) - .mix(GSEA_GSEA.out.butterfly_plot) - .mix(GSEA_GSEA.out.gene_set_tsv) - .mix(GSEA_GSEA.out.gene_set_html) - .mix(GSEA_GSEA.out.gene_set_heatmap) - .mix(GSEA_GSEA.out.snapshot) - .mix(GSEA_GSEA.out.gene_set_enplot) - .mix(GSEA_GSEA.out.gene_set_dist) - .mix(GSEA_GSEA.out.archive) + gsea_report_tsv = GSEA_GSEA.out.report_tsvs_ref.join(GSEA_GSEA.out.report_tsvs_target) + gsea_report_html = GSEA_GSEA.out.report_htmls_ref.join(GSEA_GSEA.out.report_htmls_target) + gsea_index_html = GSEA_GSEA.out.index_html + gsea_heat_map_corr_plot = GSEA_GSEA.out.heat_map_corr_plot + gsea_ranked_gene_list = GSEA_GSEA.out.ranked_gene_list + gsea_gene_set_sizes = GSEA_GSEA.out.gene_set_sizes + gsea_histogram = GSEA_GSEA.out.histogram + gsea_heatmap = GSEA_GSEA.out.heatmap + gsea_pvalues_vs_nes_plot = GSEA_GSEA.out.pvalues_vs_nes_plot + gsea_ranked_list_corr = GSEA_GSEA.out.ranked_list_corr + gsea_butterfly_plot = GSEA_GSEA.out.butterfly_plot + gsea_gene_set_tsv = GSEA_GSEA.out.gene_set_tsv + gsea_gene_set_html = GSEA_GSEA.out.gene_set_html + gsea_gene_set_heatmap = GSEA_GSEA.out.gene_set_heatmap + gsea_gene_set_enplot = GSEA_GSEA.out.gene_set_enplot + gsea_gene_set_dist = GSEA_GSEA.out.gene_set_dist + gsea_snapshot = GSEA_GSEA.out.snapshot + gsea_archive = GSEA_GSEA.out.archive + gsea_rpt = GSEA_GSEA.out.rpt // decoupler-specific outputs - decoupler_dc_estimate = DECOUPLER_DECOUPLER.out.dc_estimate - decoupler_dc_pvals = DECOUPLER_DECOUPLER.out.dc_pvals - decoupler_png = DECOUPLER_DECOUPLER.out.png + decoupler_dc_estimate = DECOUPLER_DECOUPLER.out.dc_estimate + decoupler_dc_pvals = DECOUPLER_DECOUPLER.out.dc_pvals + decoupler_png = DECOUPLER_DECOUPLER.out.png // grea-specific outputs - grea_results = PROPR_GREA.out.results + grea_results = PROPR_GREA.out.results // tool versions - versions = ch_versions + session_info = ch_session_info + versions = ch_versions } diff --git a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test index 6a09b83a9ece..41a1bd2a353f 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test +++ b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test @@ -251,7 +251,7 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot( - workflow.out.gsea_report, + workflow.out.gsea_report_tsv, path(workflow.out.versions.get(0)).yaml, workflow.out.versions ).match()} @@ -469,7 +469,7 @@ nextflow_workflow { path(workflow.out.gprofiler2_all_enrich[0][1]).exists(), // This generates empty md5sums and linting fails workflow.out.gprofiler2_sub_enrich, workflow.out.gprofiler2_plot_html.collect{ meta, html -> file(html).name }, //assert unstable file - workflow.out.gsea_report, + workflow.out.gsea_report_tsv, workflow.out.grea_results, workflow.out.versions ).match()}, diff --git a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap index fb307ce4d939..e18b102d9af5 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap +++ b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test.snap @@ -471,7 +471,34 @@ ] ], "10": [ - "versions.yml:md5,50c836cd9ebcf71e839b301ce81da4cd" + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + + ], + "15": [ + + ], + "16": [ + + ], + "17": [ + + ], + "18": [ + + ], + "19": [ + ], "2": [ [ @@ -485,6 +512,36 @@ }, "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "20": [ + + ], + "21": [ + + ], + "22": [ + + ], + "23": [ + + ], + "24": [ + + ], + "25": [ + + ], + "26": [ + + ], + "27": [ + + ], + "28": [ + + ], + "29": [ + ], "3": [ [ @@ -496,8 +553,10 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.ENSG_filtered.gmt:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "Condition_genotype_WT_KO.gprofiler2.gostplot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "30": [ [ { "id": "Condition_genotype_WT_KO", @@ -508,7 +567,12 @@ "functional_method": "gprofiler2" }, "Condition_genotype_WT_KO.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + ] + ], + "31": [ + "versions.yml:md5,50c836cd9ebcf71e839b301ce81da4cd" + ], + "4": [ [ { "id": "Condition_genotype_WT_KO", @@ -519,7 +583,9 @@ "functional_method": "gprofiler2" }, "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.png:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + ] + ], + "5": [ [ { "id": "Condition_genotype_WT_KO", @@ -530,7 +596,9 @@ "functional_method": "gprofiler2" }, "Condition_genotype_WT_KO.gprofiler2.gost_results.rds:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + ] + ], + "6": [ [ { "id": "Condition_genotype_WT_KO", @@ -540,17 +608,8 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.gostplot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.ENSG_filtered.gmt:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - ], "7": [ @@ -593,8 +652,10 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.ENSG_filtered.gmt:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "Condition_genotype_WT_KO.gprofiler2.gostplot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gprofiler2_filtered_gmt": [ [ { "id": "Condition_genotype_WT_KO", @@ -604,8 +665,10 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "Condition_genotype_WT_KO.ENSG_filtered.gmt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gprofiler2_plot_html": [ [ { "id": "Condition_genotype_WT_KO", @@ -615,8 +678,10 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.png:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "Condition_genotype_WT_KO.gprofiler2.gostplot.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gprofiler2_rds": [ [ { "id": "Condition_genotype_WT_KO", @@ -627,7 +692,9 @@ "functional_method": "gprofiler2" }, "Condition_genotype_WT_KO.gprofiler2.gost_results.rds:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + ] + ], + "gprofiler2_sub_enrich": [ [ { "id": "Condition_genotype_WT_KO", @@ -637,10 +704,10 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.gostplot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "gprofiler2_plot_html": [ + "gprofiler2_sub_plot": [ [ { "id": "Condition_genotype_WT_KO", @@ -650,10 +717,70 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.gostplot.html:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.png:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "gprofiler2_sub_enrich": [ + "grea_results": [ + + ], + "gsea_archive": [ + + ], + "gsea_butterfly_plot": [ + + ], + "gsea_gene_set_dist": [ + + ], + "gsea_gene_set_enplot": [ + + ], + "gsea_gene_set_heatmap": [ + + ], + "gsea_gene_set_html": [ + + ], + "gsea_gene_set_sizes": [ + + ], + "gsea_gene_set_tsv": [ + + ], + "gsea_heat_map_corr_plot": [ + + ], + "gsea_heatmap": [ + + ], + "gsea_histogram": [ + + ], + "gsea_index_html": [ + + ], + "gsea_pvalues_vs_nes_plot": [ + + ], + "gsea_ranked_gene_list": [ + + ], + "gsea_ranked_list_corr": [ + + ], + "gsea_report_html": [ + + ], + "gsea_report_tsv": [ + + ], + "gsea_rpt": [ + + ], + "gsea_snapshot": [ + + ], + "session_info": [ [ { "id": "Condition_genotype_WT_KO", @@ -663,17 +790,8 @@ "blocking": "batch", "functional_method": "gprofiler2" }, - "Condition_genotype_WT_KO.gprofiler2.*.sub_enriched_pathways.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "Condition_genotype_WT_KO.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "grea_results": [ - - ], - "gsea_artifacts": [ - - ], - "gsea_report": [ - ], "versions": [ "versions.yml:md5,50c836cd9ebcf71e839b301ce81da4cd" @@ -684,6 +802,6 @@ "nf-test": "0.9.2", "nextflow": "25.10.4" }, - "timestamp": "2026-03-23T19:52:37.584455034" + "timestamp": "2026-03-26T16:37:30.751120961" } } \ No newline at end of file