From 290946eef19f7d92647f72f8441eb52ff663386e Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Tue, 10 Feb 2026 19:12:48 +0100 Subject: [PATCH 01/13] more multiqc_files topic --- modules/nf-core/fastqc/main.nf | 20 +-- modules/nf-core/fastqc/meta.yml | 45 +++++- modules/nf-core/fastqc/tests/main.nf.test | 84 ++++++----- .../nf-core/fastqc/tests/main.nf.test.snap | 140 +++++++++++++----- 4 files changed, 205 insertions(+), 84 deletions(-) diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index f5629527d12e..53b5d61caf0a 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -3,28 +3,28 @@ process FASTQC { label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : - 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' + : 'biocontainers/fastqc:0.12.1--hdfd78af_0'}" input: tuple val(meta), path(reads) output: - tuple val(meta) , path("*.html") , emit: html - tuple val(meta) , path("*.zip") , emit: zip + tuple val(meta), val("${task.process}"), val('fastqc'), path("*.html"), topic: multiqc_files, emit: html + tuple val(meta), val("${task.process}"), val('fastqc'), path("*.zip"), topic: multiqc_files, emit: zip tuple val("${task.process}"), val('fastqc'), eval('fastqc --version | sed "/FastQC v/!d; s/.*v//"'), emit: versions_fastqc, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" // Make list of old name and new name pairs to use for renaming in the bash while loop - def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } - def rename_to = old_new_pairs*.join(' ').join(' ') - def renamed_files = old_new_pairs.collect{ _old_name, new_name -> new_name }.join(' ') + def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[reads, "${prefix}.${reads.extension}"]] : reads.withIndex().collect { entry, index -> [entry, "${prefix}_${index + 1}.${entry.extension}"] } + def rename_to = old_new_pairs*.join(' ').join(' ') + def renamed_files = old_new_pairs.collect { _old_name, new_name -> new_name }.join(' ') // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index 49164c88fb6a..ef120680bc4f 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -16,7 +16,8 @@ tools: overrepresented sequences. homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ - licence: ["GPL-2.0-only"] + licence: + - "GPL-2.0-only" identifier: biotools:fastqc input: - - meta: @@ -37,6 +38,12 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] + - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name - "*.html": type: file description: FastQC report @@ -48,6 +55,12 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] + - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name - "*.zip": type: file description: FastQC report archive @@ -63,7 +76,6 @@ output: - fastqc --version | sed "/FastQC v/!d; s/.*v//": type: eval description: The expression to obtain the version of the tool - topics: versions: - - ${task.process}: @@ -75,6 +87,35 @@ topics: - fastqc --version | sed "/FastQC v/!d; s/.*v//": type: eval description: The expression to obtain the version of the tool + multiqc_files: + - - meta: + type: string + description: The name of the process + - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name + - "*.html": + type: file + description: FastQC report + pattern: "*_{fastqc.html}" + ontologies: [] + - - meta: + type: string + description: The name of the process + - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name + - "*.zip": + type: file + description: FastQC report archive + pattern: "*_{fastqc.zip}" + ontologies: [] authors: - "@drpatelh" - "@grst" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 66c44da9bf2b..91439d9e34e0 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -27,10 +27,12 @@ nextflow_process { // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. // looks like this:
Mon 2 Oct 2023
test.gz
// https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, + { assert snapshot( + file(process.out.html[0][3]).name, + file(process.out.zip[0][3]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -52,13 +54,15 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert path(process.out.html[0][3][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][3][1]).text.contains("File typeConventional base calls") }, + { assert snapshot( + file(process.out.html[0][3][0]).name, + file(process.out.html[0][3][1]).name, + file(process.out.zip[0][3][0]).name, + file(process.out.zip[0][3][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -79,10 +83,12 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, + { assert snapshot( + file(process.out.html[0][3]).name, + file(process.out.zip[0][3]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -103,10 +109,12 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, + { assert snapshot( + file(process.out.html[0][3]).name, + file(process.out.zip[0][3]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -130,19 +138,21 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, - { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, - { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert path(process.out.html[0][3][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][3][1]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][3][2]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][3][3]).text.contains("File typeConventional base calls") }, + { assert snapshot( + file(process.out.html[0][3][0]).name, + file(process.out.html[0][3][1]).name, + file(process.out.html[0][3][2]).name, + file(process.out.html[0][3][3]).name, + file(process.out.zip[0][3][0]).name, + file(process.out.zip[0][3][1]).name, + file(process.out.zip[0][3][2]).name, + file(process.out.zip[0][3][3]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -163,10 +173,12 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, + { assert snapshot( + file(process.out.html[0][3]).name, + file(process.out.zip[0][3]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index c8ee120f56b6..50c2ee1c1ad1 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,6 +1,8 @@ { "sarscov2 custom_prefix": { "content": [ + "mysample_fastqc.html", + "mysample_fastqc.zip", { "versions_fastqc": [ [ @@ -12,10 +14,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:14.518503" + "timestamp": "2026-02-10T19:09:02.748395459" }, "sarscov2 single-end [fastq] - stub": { "content": [ @@ -26,6 +28,8 @@ "id": "test", "single_end": true }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -35,6 +39,8 @@ "id": "test", "single_end": true }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -51,6 +57,8 @@ "id": "test", "single_end": true }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -67,16 +75,18 @@ "id": "test", "single_end": true }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:19.309008" + "timestamp": "2026-02-10T19:01:20.415830638" }, "sarscov2 custom_prefix - stub": { "content": [ @@ -87,6 +97,8 @@ "id": "mysample", "single_end": true }, + "FASTQC", + "fastqc", "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -96,6 +108,8 @@ "id": "mysample", "single_end": true }, + "FASTQC", + "fastqc", "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -112,6 +126,8 @@ "id": "mysample", "single_end": true }, + "FASTQC", + "fastqc", "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -128,19 +144,23 @@ "id": "mysample", "single_end": true }, + "FASTQC", + "fastqc", "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:44.94888" + "timestamp": "2026-02-10T19:01:59.118451407" }, "sarscov2 interleaved [fastq]": { "content": [ + "test_fastqc.html", + "test_fastqc.zip", { "versions_fastqc": [ [ @@ -152,13 +172,15 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:38:45.168496" + "timestamp": "2026-02-10T19:08:35.06246522" }, "sarscov2 paired-end [bam]": { "content": [ + "test_fastqc.html", + "test_fastqc.zip", { "versions_fastqc": [ [ @@ -170,13 +192,21 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:38:53.268919" + "timestamp": "2026-02-10T19:08:43.954055074" }, "sarscov2 multiple [fastq]": { "content": [ + "test_1_fastqc.html", + "test_2_fastqc.html", + "test_3_fastqc.html", + "test_4_fastqc.html", + "test_1_fastqc.zip", + "test_2_fastqc.zip", + "test_3_fastqc.zip", + "test_4_fastqc.zip", { "versions_fastqc": [ [ @@ -188,13 +218,17 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:05.050305" + "timestamp": "2026-02-10T19:08:54.2279679" }, "sarscov2 paired-end [fastq]": { "content": [ + "test_1_fastqc.html", + "test_2_fastqc.html", + "test_1_fastqc.zip", + "test_2_fastqc.zip", { "versions_fastqc": [ [ @@ -206,10 +240,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:38:37.2373" + "timestamp": "2026-02-10T19:08:25.230550084" }, "sarscov2 paired-end [fastq] - stub": { "content": [ @@ -220,6 +254,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -229,6 +265,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -245,6 +283,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -261,16 +301,18 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:24.450398" + "timestamp": "2026-02-10T19:01:29.09723744" }, "sarscov2 multiple [fastq] - stub": { "content": [ @@ -281,6 +323,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -290,6 +334,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -306,6 +352,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -322,19 +370,23 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:39.758762" + "timestamp": "2026-02-10T19:01:52.251837124" }, "sarscov2 single-end [fastq]": { "content": [ + "test_fastqc.html", + "test_fastqc.zip", { "versions_fastqc": [ [ @@ -346,10 +398,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:38:29.555068" + "timestamp": "2026-02-10T19:08:15.007534236" }, "sarscov2 interleaved [fastq] - stub": { "content": [ @@ -360,6 +412,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -369,6 +423,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -385,6 +441,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -401,16 +459,18 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:29.193136" + "timestamp": "2026-02-10T19:01:36.147856784" }, "sarscov2 paired-end [bam] - stub": { "content": [ @@ -421,6 +481,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -430,6 +492,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -446,6 +510,8 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -462,15 +528,17 @@ "id": "test", "single_end": false }, + "FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-28T16:39:34.144919" + "timestamp": "2026-02-10T19:01:44.122442898" } } \ No newline at end of file From 5a0bb56995ee7127e42564a48679b6df1cfda366 Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Tue, 10 Feb 2026 19:28:59 +0100 Subject: [PATCH 02/13] subworkflow snapshots --- .../tests/main.nf.test.snap | 132 ++++++++++++++++-- .../tests/main.nf.test.snap | 30 +++- .../tests/main.nf.test.snap | 34 ++++- 3 files changed, 180 insertions(+), 16 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 37955fbb9193..93349d032182 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -110,6 +110,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -131,6 +133,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -140,6 +144,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -149,6 +155,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -212,6 +220,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -221,6 +231,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -230,6 +242,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -239,6 +253,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -308,7 +324,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:16.937742298" + "timestamp": "2026-02-10T19:22:48.709459387" }, "sarscov2 paired-end [fastq] | skip_trimming - stub": { "content": [ @@ -321,6 +337,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -330,6 +348,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -365,7 +385,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:23.046804125" + "timestamp": "2026-02-10T19:22:55.894857041" }, "sarscov2 paired-end [fastq] | skip_trimming": { "content": [ @@ -464,6 +484,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -491,6 +513,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -500,6 +524,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -509,6 +535,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -572,6 +600,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -581,6 +611,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -590,6 +622,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -599,6 +633,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -674,7 +710,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:43.232621634" + "timestamp": "2026-02-10T19:23:20.773593026" }, "sarscov2 paired-end [fastq] | save_trimmed_fail": { "content": [ @@ -803,6 +839,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -824,6 +862,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -833,6 +873,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -842,6 +884,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -915,6 +959,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -924,6 +970,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -933,6 +981,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -942,6 +992,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1021,7 +1073,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:29.76860289" + "timestamp": "2026-02-10T19:23:04.359559546" }, "sarscov2 paired-end [fastq] | skip_fastqc - stub": { "content": [ @@ -1217,6 +1269,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1244,6 +1298,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1253,6 +1309,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1262,6 +1320,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1325,6 +1385,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1334,6 +1396,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1343,6 +1407,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1352,6 +1418,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1427,7 +1495,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:36.446963981" + "timestamp": "2026-02-10T19:23:12.596081232" }, "sarscov2 paired-end [fastq] | min_trimmed_reads = 26": { "content": [ @@ -1552,6 +1620,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1573,6 +1643,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1582,6 +1654,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1591,6 +1665,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1654,6 +1730,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1663,6 +1741,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1672,6 +1752,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1681,6 +1763,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1750,7 +1834,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:19:47.918568452" + "timestamp": "2026-02-10T19:22:14.362787133" }, "sarscov2 paired-end [fastq] | save_merged": { "content": [ @@ -1824,6 +1908,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1845,6 +1931,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1854,6 +1942,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1863,6 +1953,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1941,6 +2033,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1950,6 +2044,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1959,6 +2055,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -1968,6 +2066,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2049,7 +2149,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:03.594981453" + "timestamp": "2026-02-10T19:22:32.464695901" }, "sarscov2 paired-end [fastq] | skip_umi_extract - stub": { "content": [ @@ -2072,6 +2172,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2093,6 +2195,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2102,6 +2206,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2111,6 +2217,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2174,6 +2282,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2183,6 +2293,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2192,6 +2304,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2201,6 +2315,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -2270,6 +2386,6 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:20:10.2749087" + "timestamp": "2026-02-10T19:22:40.713868068" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index a22db98bc89e..1d1e52dcef0c 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -11,6 +11,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -20,6 +22,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -77,6 +81,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -86,6 +92,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -146,7 +154,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:21:45.022632239" + "timestamp": "2026-02-10T19:24:59.529273333" }, "test paired end read without UMI - stub": { "content": [ @@ -160,6 +168,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -169,6 +179,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -214,6 +226,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -223,6 +237,8 @@ "id": "test", "single_end": false }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -271,7 +287,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:21:51.075428076" + "timestamp": "2026-02-10T19:25:06.780914071" }, "test paired end read without UMI": { "content": [ @@ -393,6 +409,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -402,6 +420,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -456,6 +476,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -465,6 +487,8 @@ "id": "test", "single_end": true }, + "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -522,6 +546,6 @@ "nf-test": "0.9.3", "nextflow": "25.10.3" }, - "timestamp": "2026-02-03T13:21:36.092099503" + "timestamp": "2026-02-10T19:24:49.694760728" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_trim_fastp_fastqc/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_trim_fastp_fastqc/tests/main.nf.test.snap index 331913ad6704..a1edc75ad7a3 100644 --- a/subworkflows/nf-core/fastq_trim_fastp_fastqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_trim_fastp_fastqc/tests/main.nf.test.snap @@ -199,6 +199,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -208,6 +210,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -223,6 +227,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -232,6 +238,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -274,10 +282,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-10-29T12:30:36.850497" + "timestamp": "2026-02-10T19:26:04.97139095" }, "sarscov2 paired-end [fastq] | skip_fastp": { "content": [ @@ -390,6 +398,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -399,6 +409,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -408,6 +420,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -417,6 +431,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -426,6 +442,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -435,6 +453,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_RAW", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -444,6 +464,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_TRIM", + "fastqc", "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -453,6 +475,8 @@ "id": "test", "single_end": false }, + "FASTQ_TRIM_FASTP_FASTQC:FASTQC_TRIM", + "fastqc", "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -508,8 +532,8 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nextflow": "25.10.3" }, - "timestamp": "2026-01-23T11:00:12.756883609" + "timestamp": "2026-02-10T19:25:50.450039777" } } \ No newline at end of file From 7edc1535224ef5b865a996786247e0a32a2748db Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 09:50:04 +0100 Subject: [PATCH 03/13] snapshot --- .../nf-core/fastq_qc_stats/tests/main.nf.test | 12 ++++---- .../fastq_qc_stats/tests/main.nf.test.snap | 28 +++++++++++++++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test index f19d4979bf35..14ec7b1d0c80 100644 --- a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test @@ -35,8 +35,8 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - file(workflow.out.fastqc_html[0][1]).name, - file(workflow.out.fastqc_zip[0][1]).name, + file(workflow.out.fastqc_html[0][3]).name, + file(workflow.out.fastqc_zip[0][3]).name, workflow.out.seqfu_check, workflow.out.seqfu_stats, workflow.out.seqfu_multiqc, @@ -95,10 +95,10 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - file(workflow.out.fastqc_html[0][1][0]).name, - file(workflow.out.fastqc_zip[0][1][0]).name, - file(workflow.out.fastqc_html[0][1][1]).name, - file(workflow.out.fastqc_zip[0][1][1]).name, + file(workflow.out.fastqc_html[0][3][0]).name, + file(workflow.out.fastqc_zip[0][3][0]).name, + file(workflow.out.fastqc_html[0][3][1]).name, + file(workflow.out.fastqc_zip[0][3][1]).name, workflow.out.seqfu_check, workflow.out.seqfu_stats, workflow.out.seqfu_multiqc, diff --git a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap index 0b16d4ceb6c3..1113830a793b 100644 --- a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap @@ -8,6 +8,8 @@ "id": "test_single", "single_end": true }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_single.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -17,6 +19,8 @@ "id": "test_single", "single_end": true }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_single.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -75,6 +79,8 @@ "id": "test_single", "single_end": true }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_single.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -84,6 +90,8 @@ "id": "test_single", "single_end": true }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_single.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -152,9 +160,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:30:28.391994301" + "timestamp": "2026-02-11T09:43:56.533348924" }, "sarscov2 - fastq - single_end - skip all": { "content": [ @@ -271,9 +279,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:30:09.161775877" + "timestamp": "2026-02-11T09:43:34.42198883" }, "sarscov2 - fastq - paired_end": { "content": [ @@ -346,6 +354,8 @@ "id": "test_paired", "single_end": false }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_paired.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -355,6 +365,8 @@ "id": "test_paired", "single_end": false }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_paired.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -413,6 +425,8 @@ "id": "test_paired", "single_end": false }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_paired.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -422,6 +436,8 @@ "id": "test_paired", "single_end": false }, + "FASTQ_QC_STATS:FASTQC", + "fastqc", "test_paired.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], @@ -490,8 +506,8 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:30:34.56299164" + "timestamp": "2026-02-11T09:44:03.432690545" } } \ No newline at end of file From e050081a1f0410759ea2db70e74abf6333e1bd71 Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 10:29:18 +0100 Subject: [PATCH 04/13] test update --- .../tests/main.nf.test | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test index 563ec899cffd..83fca1c10581 100644 --- a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test @@ -228,14 +228,14 @@ nextflow_workflow { { assert snapshot( path(workflow.out.reads[0][1][0]).linesGzip.size(), path(workflow.out.reads[0][1][1]).linesGzip.size(), - file(workflow.out.pre_stats_fastqc_html[0][1][0]).name, - file(workflow.out.pre_stats_fastqc_html[0][1][1]).name, - file(workflow.out.post_stats_fastqc_html[0][1][0]).name, - file(workflow.out.post_stats_fastqc_html[0][1][1]).name, - file(workflow.out.pre_stats_fastqc_zip[0][1][0]).name, - file(workflow.out.pre_stats_fastqc_zip[0][1][1]).name, - file(workflow.out.post_stats_fastqc_zip[0][1][0]).name, - file(workflow.out.post_stats_fastqc_zip[0][1][1]).name, + file(workflow.out.pre_stats_fastqc_html[0][3][0]).name, + file(workflow.out.pre_stats_fastqc_html[0][3][1]).name, + file(workflow.out.post_stats_fastqc_html[0][3][0]).name, + file(workflow.out.post_stats_fastqc_html[0][3][1]).name, + file(workflow.out.pre_stats_fastqc_zip[0][3][0]).name, + file(workflow.out.pre_stats_fastqc_zip[0][3][1]).name, + file(workflow.out.post_stats_fastqc_zip[0][3][0]).name, + file(workflow.out.post_stats_fastqc_zip[0][3][1]).name, path(workflow.out.clumpify_log[0][1]).readLines().size(), workflow.out.versions.collect { path(it).yaml } ).match() } From 7608184fa3b41189021bc48d34083557f8990987 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Wed, 11 Feb 2026 10:29:59 +0100 Subject: [PATCH 05/13] Apply suggestion from @mashehu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Matthias Hörtenhuber --- modules/nf-core/fastqc/tests/main.nf.test | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 91439d9e34e0..8b2525a58a58 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -57,10 +57,8 @@ nextflow_process { { assert path(process.out.html[0][3][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][1]).text.contains("File typeConventional base calls") }, { assert snapshot( - file(process.out.html[0][3][0]).name, - file(process.out.html[0][3][1]).name, - file(process.out.zip[0][3][0]).name, - file(process.out.zip[0][3][1]).name, + process.out.html[0][3].collect { f -> file(f).name } + process.out.zip[0][3].collect { f -> file(f).name } process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) From ac7e6b47d27b21d3d6469b4751b3b2f5c9637355 Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 10:33:55 +0100 Subject: [PATCH 06/13] better filename capture --- modules/nf-core/fastqc/tests/main.nf.test | 14 ++----- .../nf-core/fastqc/tests/main.nf.test.snap | 40 +++++++++++-------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 8b2525a58a58..4d9ae03ce595 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -57,8 +57,8 @@ nextflow_process { { assert path(process.out.html[0][3][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][1]).text.contains("File typeConventional base calls") }, { assert snapshot( - process.out.html[0][3].collect { f -> file(f).name } - process.out.zip[0][3].collect { f -> file(f).name } + process.out.html[0][3].collect { f -> file(f).name }, + process.out.zip[0][3].collect { f -> file(f).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -141,14 +141,8 @@ nextflow_process { { assert path(process.out.html[0][3][2]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][3]).text.contains("File typeConventional base calls") }, { assert snapshot( - file(process.out.html[0][3][0]).name, - file(process.out.html[0][3][1]).name, - file(process.out.html[0][3][2]).name, - file(process.out.html[0][3][3]).name, - file(process.out.zip[0][3][0]).name, - file(process.out.zip[0][3][1]).name, - file(process.out.zip[0][3][2]).name, - file(process.out.zip[0][3][3]).name, + process.out.html[0][3].collect { f -> file(f).name }, + process.out.zip[0][3].collect { f -> file(f).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index 50c2ee1c1ad1..e968747ae097 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -199,14 +199,18 @@ }, "sarscov2 multiple [fastq]": { "content": [ - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_3_fastqc.html", - "test_4_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip", - "test_3_fastqc.zip", - "test_4_fastqc.zip", + [ + "test_1_fastqc.html", + "test_2_fastqc.html", + "test_3_fastqc.html", + "test_4_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip", + "test_3_fastqc.zip", + "test_4_fastqc.zip" + ], { "versions_fastqc": [ [ @@ -219,16 +223,20 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:08:54.2279679" + "timestamp": "2026-02-11T10:31:49.281886685" }, "sarscov2 paired-end [fastq]": { "content": [ - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip", + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], { "versions_fastqc": [ [ @@ -241,9 +249,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:08:25.230550084" + "timestamp": "2026-02-11T10:31:19.451776613" }, "sarscov2 paired-end [fastq] - stub": { "content": [ From 91288f3063e0683583c3b0588995b80b6b725a1e Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 10:42:42 +0100 Subject: [PATCH 07/13] snapshot --- .../nf-core/fastq_qc_stats/tests/main.nf.test | 6 ++-- .../fastq_qc_stats/tests/main.nf.test.snap | 16 +++++++---- .../tests/main.nf.test | 12 +++----- .../tests/main.nf.test.snap | 28 ++++++++++++------- 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test index 14ec7b1d0c80..1717dc6a300c 100644 --- a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test @@ -95,10 +95,8 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - file(workflow.out.fastqc_html[0][3][0]).name, - file(workflow.out.fastqc_zip[0][3][0]).name, - file(workflow.out.fastqc_html[0][3][1]).name, - file(workflow.out.fastqc_zip[0][3][1]).name, + workflow.out.fastqc_html[0][3].collect { f -> file(f).name }, + workflow.out.fastqc_zip[0][3].collect { f -> file(f).name }, workflow.out.seqfu_check, workflow.out.seqfu_stats, workflow.out.seqfu_multiqc, diff --git a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap index 1113830a793b..cb7a2e74368e 100644 --- a/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_qc_stats/tests/main.nf.test.snap @@ -285,10 +285,14 @@ }, "sarscov2 - fastq - paired_end": { "content": [ - "test_paired_1_fastqc.html", - "test_paired_1_fastqc.zip", - "test_paired_2_fastqc.html", - "test_paired_2_fastqc.zip", + [ + "test_paired_1_fastqc.html", + "test_paired_2_fastqc.html" + ], + [ + "test_paired_1_fastqc.zip", + "test_paired_2_fastqc.zip" + ], [ [ { @@ -341,9 +345,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:30:22.113056749" + "timestamp": "2026-02-11T10:40:26.810051472" }, "sarscov2 - fastq - paired_end - stub": { "content": [ diff --git a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test index 83fca1c10581..6f7b7adae28a 100644 --- a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test @@ -228,14 +228,10 @@ nextflow_workflow { { assert snapshot( path(workflow.out.reads[0][1][0]).linesGzip.size(), path(workflow.out.reads[0][1][1]).linesGzip.size(), - file(workflow.out.pre_stats_fastqc_html[0][3][0]).name, - file(workflow.out.pre_stats_fastqc_html[0][3][1]).name, - file(workflow.out.post_stats_fastqc_html[0][3][0]).name, - file(workflow.out.post_stats_fastqc_html[0][3][1]).name, - file(workflow.out.pre_stats_fastqc_zip[0][3][0]).name, - file(workflow.out.pre_stats_fastqc_zip[0][3][1]).name, - file(workflow.out.post_stats_fastqc_zip[0][3][0]).name, - file(workflow.out.post_stats_fastqc_zip[0][3][1]).name, + workflow.out.pre_stats_fastqc_html[0][3].collect { f -> file(f).name }, + workflow.out.pre_stats_fastqc_zip[0][3].collect { f -> file(f).name }, + workflow.out.post_stats_fastqc_html[0][3].collect { f -> file(f).name }, + workflow.out.post_stats_fastqc_zip[0][3].collect { f -> file(f).name }, path(workflow.out.clumpify_log[0][1]).readLines().size(), workflow.out.versions.collect { path(it).yaml } ).match() } diff --git a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test.snap index ef44fac6bd0a..7fd0007448cb 100644 --- a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test.snap @@ -139,14 +139,22 @@ "content": [ 400, 400, - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip", - "test_1_fastqc.zip", - "test_2_fastqc.zip", + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], 41, [ { @@ -178,9 +186,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T15:12:04.335584164" + "timestamp": "2026-02-11T10:41:33.298600818" }, "sarscov2 - fastq - skip all - single_end": { "content": [ From 51a57b1ceb54663498db8c13f9fa5d8dc0b34bb9 Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 10:55:13 +0100 Subject: [PATCH 08/13] fix test --- .../tests/main.nf.test | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index 1c66c0687be4..d85fa129dbdb 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -38,12 +38,12 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert path(workflow.out.fastqc_html[0][1]).text.contains("File typeConventional base calls") }, + { assert path(workflow.out.fastqc_html[0][3]).text.contains("File typeConventional base calls") }, { assert snapshot( workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, -).match() } + ).match() } ) } } @@ -77,7 +77,7 @@ nextflow_workflow { workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, -).match() } + ).match() } ) } } @@ -110,7 +110,7 @@ nextflow_workflow { workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, -).match() } + ).match() } ) } } @@ -143,7 +143,7 @@ nextflow_workflow { { assert snapshot( workflow.out.trim_read_count, workflow.out.trim_unpaired, -).match() } + ).match() } ) } } From 1d7cffb878437497b922cdfa8e1fad1986a80b5e Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 15:28:20 +0100 Subject: [PATCH 09/13] better snapshot --- modules/nf-core/fastqc/tests/main.nf.test | 60 +- .../nf-core/fastqc/tests/main.nf.test.snap | 248 +--- .../fastq_fastqc_umitools_fastp/main.nf | 60 +- .../tests/main.nf.test | 80 +- .../tests/main.nf.test.snap | 1146 +++-------------- .../fastq_fastqc_umitools_trimgalore/main.nf | 35 +- .../tests/main.nf.test | 29 +- .../tests/main.nf.test.snap | 250 +--- .../main.nf | 173 ++- .../tests/main.function.nf.test | 3 - 10 files changed, 469 insertions(+), 1615 deletions(-) diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 4d9ae03ce595..d89b287faf05 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -22,15 +22,15 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. // looks like this:
Mon 2 Oct 2023
test.gz
// https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, { assert snapshot( - file(process.out.html[0][3]).name, - file(process.out.zip[0][3]).name, + process.out.html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + process.out.zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -52,13 +52,13 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, { assert path(process.out.html[0][3][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][1]).text.contains("File typeConventional base calls") }, { assert snapshot( - process.out.html[0][3].collect { f -> file(f).name }, - process.out.zip[0][3].collect { f -> file(f).name }, + process.out.html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + process.out.zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -79,12 +79,12 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, { assert snapshot( - file(process.out.html[0][3]).name, - file(process.out.zip[0][3]).name, + process.out.html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + process.out.zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -105,12 +105,12 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, { assert snapshot( - file(process.out.html[0][3]).name, - file(process.out.zip[0][3]).name, + process.out.html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + process.out.zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -134,15 +134,15 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, { assert path(process.out.html[0][3][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][1]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][2]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][3][3]).text.contains("File typeConventional base calls") }, { assert snapshot( - process.out.html[0][3].collect { f -> file(f).name }, - process.out.zip[0][3].collect { f -> file(f).name }, + process.out.html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + process.out.zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -163,12 +163,12 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, { assert path(process.out.html[0][3]).text.contains("File typeConventional base calls") }, { assert snapshot( - file(process.out.html[0][3]).name, - file(process.out.zip[0][3]).name, + process.out.html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + process.out.zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -190,9 +190,9 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -213,9 +213,9 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -235,9 +235,9 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -257,9 +257,9 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -282,9 +282,9 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -304,9 +304,9 @@ nextflow_process { } then { + assert process.success assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index e968747ae097..9fc9e62db826 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,8 +1,12 @@ { "sarscov2 custom_prefix": { "content": [ - "mysample_fastqc.html", - "mysample_fastqc.zip", + [ + "mysample_fastqc.html" + ], + [ + "mysample_fastqc.zip" + ], { "versions_fastqc": [ [ @@ -15,42 +19,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:09:02.748395459" + "timestamp": "2026-02-11T14:33:12.319467851" }, "sarscov2 single-end [fastq] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ], "html": [ [ { @@ -84,42 +59,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:01:20.415830638" + "timestamp": "2026-02-11T14:38:23.147388614" }, "sarscov2 custom_prefix - stub": { "content": [ { - "0": [ - [ - { - "id": "mysample", - "single_end": true - }, - "FASTQC", - "fastqc", - "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "mysample", - "single_end": true - }, - "FASTQC", - "fastqc", - "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ], "html": [ [ { @@ -153,14 +99,18 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:01:59.118451407" + "timestamp": "2026-02-11T14:39:01.896543843" }, "sarscov2 interleaved [fastq]": { "content": [ - "test_fastqc.html", - "test_fastqc.zip", + [ + "test_fastqc.html" + ], + [ + "test_fastqc.zip" + ], { "versions_fastqc": [ [ @@ -173,14 +123,18 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:08:35.06246522" + "timestamp": "2026-02-11T14:32:43.093082785" }, "sarscov2 paired-end [bam]": { "content": [ - "test_fastqc.html", - "test_fastqc.zip", + [ + "test_fastqc.html" + ], + [ + "test_fastqc.zip" + ], { "versions_fastqc": [ [ @@ -193,9 +147,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:08:43.954055074" + "timestamp": "2026-02-11T14:32:52.50059813" }, "sarscov2 multiple [fastq]": { "content": [ @@ -225,7 +179,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.4" }, - "timestamp": "2026-02-11T10:31:49.281886685" + "timestamp": "2026-02-11T14:33:02.862562448" }, "sarscov2 paired-end [fastq]": { "content": [ @@ -256,35 +210,6 @@ "sarscov2 paired-end [fastq] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ], "html": [ [ { @@ -318,42 +243,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:01:29.09723744" + "timestamp": "2026-02-11T14:38:30.061273733" }, "sarscov2 multiple [fastq] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ], "html": [ [ { @@ -387,14 +283,18 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:01:52.251837124" + "timestamp": "2026-02-11T14:38:53.737196741" }, "sarscov2 single-end [fastq]": { "content": [ - "test_fastqc.html", - "test_fastqc.zip", + [ + "test_fastqc.html" + ], + [ + "test_fastqc.zip" + ], { "versions_fastqc": [ [ @@ -407,42 +307,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:08:15.007534236" + "timestamp": "2026-02-11T14:32:21.756344375" }, "sarscov2 interleaved [fastq] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ], "html": [ [ { @@ -476,42 +347,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:01:36.147856784" + "timestamp": "2026-02-11T14:38:38.338009706" }, "sarscov2 paired-end [bam] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ], "html": [ [ { @@ -545,8 +387,8 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:01:44.122442898" + "timestamp": "2026-02-11T14:38:45.842081984" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index 04e03c6454c2..8dcc1a428d14 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -1,10 +1,10 @@ // // Read QC, UMI extraction and trimming // -include { FASTQC as FASTQC_RAW } from '../../../modules/nf-core/fastqc/main' -include { FASTQC as FASTQC_TRIM } from '../../../modules/nf-core/fastqc/main' -include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract/main' -include { FASTP } from '../../../modules/nf-core/fastp/main' +include { FASTP } from '../../../modules/nf-core/fastp' +include { FASTQC as FASTQC_RAW } from '../../../modules/nf-core/fastqc' +include { FASTQC as FASTQC_TRIM } from '../../../modules/nf-core/fastqc' +include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract' // // Function that parses fastp json output file to get total number of reads after trimming @@ -37,14 +37,14 @@ def getFastpAdapterSequence(json_file) { workflow FASTQ_FASTQC_UMITOOLS_FASTP { take: - reads // channel: [ val(meta), [ reads ], adapter_fasta ] - skip_fastqc // boolean: true/false - with_umi // boolean: true/false - skip_umi_extract // boolean: true/false - umi_discard_read // integer: 0, 1 or 2 - skip_trimming // boolean: true/false + reads // channel: [ val(meta), [ reads ], adapter_fasta ] + skip_fastqc // boolean: true/false + with_umi // boolean: true/false + skip_umi_extract // boolean: true/false + umi_discard_read // integer: 0, 1 or 2 + skip_trimming // boolean: true/false save_trimmed_fail // boolean: true/false - save_merged // boolean: true/false + save_merged // boolean: true/false min_trimmed_reads // integer: > 0 main: @@ -62,12 +62,11 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { adapter_seq = channel.empty() // Split input channel for reads-only operations - reads_only = reads.map { meta, reads_files, _adapter_fasta -> [ meta, reads_files ] } + reads_only = reads.map { meta, reads_files, _adapter_fasta -> [meta, reads_files] } if (!skip_fastqc) { - FASTQC_RAW( - reads_only - ) + FASTQC_RAW(reads_only) + fastqc_raw_html = FASTQC_RAW.out.html fastqc_raw_zip = FASTQC_RAW.out.zip } @@ -107,7 +106,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { umi_reads_with_adapters, false, save_trimmed_fail, - save_merged + save_merged, ) trim_json = FASTP.out.json trim_html = FASTP.out.html @@ -134,9 +133,8 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { .set { adapter_seq } if (!skip_fastqc) { - FASTQC_TRIM( - trim_reads - ) + FASTQC_TRIM(trim_reads) + fastqc_trim_html = FASTQC_TRIM.out.html fastqc_trim_zip = FASTQC_TRIM.out.zip } @@ -144,17 +142,17 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { emit: reads = trim_reads // channel: [ val(meta), [ reads ] ] - fastqc_raw_html // channel: [ val(meta), [ html ] ] - fastqc_raw_zip // channel: [ val(meta), [ zip ] ] - umi_log // channel: [ val(meta), [ log ] ] - umi_reads // channel: [ val(meta), [ reads ] ] - adapter_seq // channel: [ val(meta), [ adapter_seq] ] - trim_json // channel: [ val(meta), [ json ] ] - trim_html // channel: [ val(meta), [ html ] ] - trim_log // channel: [ val(meta), [ log ] ] - trim_reads_fail // channel: [ val(meta), [ fastq.gz ] ] + fastqc_raw_html // channel: [ val(meta), process, tool, [ html ] ] + fastqc_raw_zip // channel: [ val(meta), process, tool, [ zip ] ] + umi_log // channel: [ val(meta), [ log ] ] + umi_reads // channel: [ val(meta), [ reads ] ] + adapter_seq // channel: [ val(meta), [ adapter_seq] ] + trim_json // channel: [ val(meta), [ json ] ] + trim_html // channel: [ val(meta), [ html ] ] + trim_log // channel: [ val(meta), [ log ] ] + trim_reads_fail // channel: [ val(meta), [ fastq.gz ] ] trim_reads_merged // channel: [ val(meta), [ fastq.gz ] ] - trim_read_count // channel: [ val(meta), val(count) ] - fastqc_trim_html // channel: [ val(meta), [ html ] ] - fastqc_trim_zip // channel: [ val(meta), [ zip ] ] + trim_read_count // channel: [ val(meta), val(count) ] + fastqc_trim_html // channel: [ val(meta), process, tool, [ html ] ] + fastqc_trim_zip // channel: [ val(meta), process, tool, [ zip ] ] } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 2daf04102821..467da6284736 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -53,14 +53,14 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -169,12 +169,12 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -225,14 +225,14 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -283,14 +283,14 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -341,8 +341,6 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, { assert !workflow.out.fastqc_trim_html }, { assert !workflow.out.fastqc_trim_zip }, { assert !workflow.out.trim_html }, @@ -350,7 +348,9 @@ nextflow_workflow { { assert snapshot( // If we skip trimming then input is output, so not snapshotting workflow.out.adapter_seq, - workflow.out.reads.get(0).get(0), // Reads meta map + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.reads[0][0], // Reads meta map workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, @@ -400,14 +400,14 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -458,14 +458,14 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -517,14 +517,14 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert snapshot( workflow.out.adapter_seq, + workflow.out.fastqc_raw_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_raw_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_trim_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_reads_fail, @@ -576,7 +576,7 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -621,7 +621,7 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -664,9 +664,9 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -712,7 +712,7 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -757,7 +757,7 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -800,8 +800,8 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success }, { assert snapshot( workflow.out.adapter_seq, workflow.out.fastqc_raw_html, @@ -859,7 +859,7 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -902,9 +902,9 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -950,7 +950,7 @@ nextflow_workflow { then { assert workflow.success assertAll( - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 93349d032182..2c20989524a4 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -10,6 +10,22 @@ "unspecified" ] ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -43,9 +59,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:18:53.838884403" + "timestamp": "2026-02-11T14:43:36.048228098" }, "sarscov2 paired-end [fastq] | with_umi": { "content": [ @@ -58,6 +74,14 @@ "" ] ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -85,126 +109,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:18:44.18362126" + "timestamp": "2026-02-11T14:43:21.694691754" }, "sarscov2 paired-end [fastq] | umi_discard_read = 2 - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 1 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - - ], "adapter_seq": [ [ { @@ -322,9 +233,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:22:48.709459387" + "timestamp": "2026-02-11T14:45:24.147203186" }, "sarscov2 paired-end [fastq] | skip_trimming - stub": { "content": [ @@ -391,6 +302,14 @@ "content": [ [ + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" ], { "id": "test", @@ -411,9 +330,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:19:12.020305151" + "timestamp": "2026-02-11T14:43:59.551167396" }, "sarscov2 paired-end [fastq] | umi_discard_read = 2": { "content": [ @@ -426,6 +345,22 @@ "unspecified" ] ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -459,132 +394,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:19:03.546158761" + "timestamp": "2026-02-11T14:43:49.365663656" }, "sarscov2 paired-end [fastq] | min_trimmed_reads = 26 - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 26 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - - ], "adapter_seq": [ [ { @@ -708,9 +524,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:23:20.773593026" + "timestamp": "2026-02-11T14:46:00.201401055" }, "sarscov2 paired-end [fastq] | save_trimmed_fail": { "content": [ @@ -723,6 +539,22 @@ "unspecified" ] ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -766,9 +598,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:19:21.78045793" + "timestamp": "2026-02-11T14:44:11.543627633" }, "sarscov2 paired-end [fastq] | skip_fastqc": { "content": [ @@ -821,19 +653,16 @@ "sarscov2 paired-end [fastq] | save_trimmed_fail - stub": { "content": [ { - "0": [ + "adapter_seq": [ [ { "id": "test", "single_end": false }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "" ] ], - "1": [ + "fastqc_raw_html": [ [ { "id": "test", @@ -844,127 +673,7 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 1 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "adapter_seq": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "fastqc_raw_html": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "fastqc_raw_zip": [ + "fastqc_raw_zip": [ [ { "id": "test", @@ -1071,94 +780,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:23:04.359559546" + "timestamp": "2026-02-11T14:45:41.491484521" }, "sarscov2 paired-end [fastq] | skip_fastqc - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "1": [ - - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 1 - ] - ], - "12": [ - - ], - "13": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - - ], "adapter_seq": [ [ { @@ -1244,132 +872,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:19:54.094320651" + "timestamp": "2026-02-11T14:44:54.570745009" }, "sarscov2 paired-end [fastq] | save_merged - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 1 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - - ], "adapter_seq": [ [ { @@ -1493,9 +1002,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:23:12.596081232" + "timestamp": "2026-02-11T14:45:51.156903793" }, "sarscov2 paired-end [fastq] | min_trimmed_reads = 26": { "content": [ @@ -1508,6 +1017,22 @@ "unspecified" ] ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -1547,9 +1072,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:19:41.14746713" + "timestamp": "2026-02-11T14:44:36.994836206" }, "sarscov2 paired-end [fastq]": { "content": [ @@ -1563,158 +1088,61 @@ ] ], [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_R2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" - ] - ] + "test_1_fastqc.html", + "test_2_fastqc.html" ], [ - [ - { - "id": "test", - "single_end": false - }, - 198 - ] + "test_1_fastqc.zip", + "test_2_fastqc.zip" ], [ - + "test_1_fastqc.html", + "test_2_fastqc.html" ], [ - + "test_1_fastqc.zip", + "test_2_fastqc.zip" ], [ - - ] - ], - "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.3" - }, - "timestamp": "2026-02-03T13:18:22.011891063" - }, - "sarscov2 paired-end [fastq] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 1 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_R2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] - ], - "9": [ - - ], + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-02-11T14:42:55.981762464" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { "adapter_seq": [ [ { @@ -1832,9 +1260,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:22:14.362787133" + "timestamp": "2026-02-11T14:44:45.667083742" }, "sarscov2 paired-end [fastq] | save_merged": { "content": [ @@ -1847,6 +1275,22 @@ "unspecified" ] ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -1886,138 +1330,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:19:31.453483505" + "timestamp": "2026-02-11T14:44:23.552180268" }, "sarscov2 paired-end [fastq] | with_umi - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": true - }, - 1 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": true - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": true - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.umi_extract_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.umi_extract_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "5": [ - [ - { - "id": "test", - "single_end": true - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - - ], "adapter_seq": [ [ { @@ -2147,126 +1466,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:22:32.464695901" + "timestamp": "2026-02-11T14:45:06.09054678" }, "sarscov2 paired-end [fastq] | skip_umi_extract - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_R1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_R2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - 1 - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - - ], "adapter_seq": [ [ { @@ -2384,8 +1590,8 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:22:40.713868068" + "timestamp": "2026-02-11T14:45:15.220321082" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf index 262cbf530c69..adc0e7638520 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf @@ -2,9 +2,9 @@ // Read QC, UMI extraction and trimming // -include { FASTQC } from '../../../modules/nf-core/fastqc/main' -include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract/main' -include { TRIMGALORE } from '../../../modules/nf-core/trimgalore/main' +include { FASTQC } from '../../../modules/nf-core/fastqc' +include { TRIMGALORE } from '../../../modules/nf-core/trimgalore' +include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract' // // Function that parses TrimGalore log output file to get total number of reads after trimming @@ -27,12 +27,12 @@ def getTrimGaloreReadsAfterFiltering(log_file) { workflow FASTQ_FASTQC_UMITOOLS_TRIMGALORE { take: - reads // channel: [ val(meta), [ reads ] ] - skip_fastqc // boolean: true/false - with_umi // boolean: true/false - skip_umi_extract // boolean: true/false - skip_trimming // boolean: true/false - umi_discard_read // integer: 0, 1 or 2 + reads // channel: [ val(meta), [ reads ] ] + skip_fastqc // boolean: true/false + with_umi // boolean: true/false + skip_umi_extract // boolean: true/false + skip_trimming // boolean: true/false + umi_discard_read // integer: 0, 1 or 2 min_trimmed_reads // integer: > 0 main: @@ -40,6 +40,7 @@ workflow FASTQ_FASTQC_UMITOOLS_TRIMGALORE { fastqc_zip = channel.empty() if (!skip_fastqc) { FASTQC(reads) + fastqc_html = FASTQC.out.html fastqc_zip = FASTQC.out.zip } @@ -104,13 +105,13 @@ workflow FASTQ_FASTQC_UMITOOLS_TRIMGALORE { emit: reads = trim_reads // channel: [ val(meta), [ reads ] ] - fastqc_html // channel: [ val(meta), [ html ] ] - fastqc_zip // channel: [ val(meta), [ zip ] ] - umi_log // channel: [ val(meta), [ log ] ] - umi_reads // channel: [ val(meta), [ reads ] ] - trim_unpaired // channel: [ val(meta), [ reads ] ] - trim_html // channel: [ val(meta), [ html ] ] - trim_zip // channel: [ val(meta), [ zip ] ] - trim_log // channel: [ val(meta), [ txt ] ] + fastqc_html // channel: [ val(meta), process, tool, [ html ] ] + fastqc_zip // channel: [ val(meta), process, tool, [ zip ] ] + umi_log // channel: [ val(meta), [ log ] ] + umi_reads // channel: [ val(meta), [ reads ] ] + trim_unpaired // channel: [ val(meta), [ reads ] ] + trim_html // channel: [ val(meta), [ html ] ] + trim_zip // channel: [ val(meta), [ zip ] ] + trim_log // channel: [ val(meta), [ txt ] ] trim_read_count // channel: [ val(meta), val(count) ] } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index d85fa129dbdb..8dc8a77b850e 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -36,10 +36,11 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, - { assert path(workflow.out.fastqc_html[0][3]).text.contains("File typeConventional base calls") }, { assert snapshot( + workflow.out.fastqc_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, @@ -71,9 +72,11 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, { assert snapshot( + workflow.out.fastqc_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, @@ -104,9 +107,11 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, { assert snapshot( + workflow.out.fastqc_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, @@ -138,8 +143,10 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, + { assert !workflow.out.fastqc_html }, + { assert !workflow.out.fastqc_zip }, { assert snapshot( workflow.out.trim_read_count, workflow.out.trim_unpaired, @@ -170,9 +177,9 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -202,9 +209,9 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } @@ -233,9 +240,9 @@ nextflow_workflow { } then { + assert workflow.success assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot(sanitizeOutput(workflow.out)).match() } ) } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index 1d1e52dcef0c..eafb3f94bed5 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -2,79 +2,6 @@ "test paired end read with UMI - stub": { "content": [ { - "0": [ - - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.umi_extract_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.umi_extract_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": true - }, - 0 - ] - ], "fastqc_html": [ [ { @@ -152,74 +79,13 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:24:59.529273333" + "timestamp": "2026-02-11T14:47:05.647721208" }, "test paired end read without UMI - stub": { "content": [ { - "0": [ - - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": false - }, - 0 - ] - ], "fastqc_html": [ [ { @@ -285,12 +151,20 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:25:06.780914071" + "timestamp": "2026-02-11T14:47:14.08042154" }, "test paired end read without UMI": { "content": [ + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -318,12 +192,18 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:21:22.252381045" + "timestamp": "2026-02-11T14:46:37.294916439" }, "test single end read with UMI": { "content": [ + [ + "test_fastqc.html" + ], + [ + "test_fastqc.zip" + ], [ [ { @@ -348,12 +228,20 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:21:01.887880112" + "timestamp": "2026-02-11T14:46:13.310452258" }, "test paired end read with UMI": { "content": [ + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ], [ [ { @@ -378,9 +266,9 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-03T13:21:13.989761245" + "timestamp": "2026-02-11T14:46:27.2011909" }, "test skip all steps": { "content": [ @@ -400,76 +288,6 @@ "test single end read with UMI - stub": { "content": [ { - "0": [ - - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", - "fastqc", - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": true - }, - "FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC", - "fastqc", - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": true - }, - "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": true - }, - "test.umi_extract.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": true - }, - 0 - ] - ], "fastqc_html": [ [ { @@ -544,8 +362,8 @@ ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-10T19:24:49.694760728" + "timestamp": "2026-02-11T14:46:54.690152145" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index 39d1ff600d89..332e0c0a7f11 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -1,13 +1,13 @@ include { BBMAP_BBSPLIT } from '../../../modules/nf-core/bbmap/bbsplit' -include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq/main' -include { FQ_LINT } from '../../../modules/nf-core/fq/lint/main' -include { FQ_LINT as FQ_LINT_AFTER_TRIMMING } from '../../../modules/nf-core/fq/lint/main' -include { FQ_LINT as FQ_LINT_AFTER_BBSPLIT } from '../../../modules/nf-core/fq/lint/main' -include { FQ_LINT as FQ_LINT_AFTER_RIBO_REMOVAL } from '../../../modules/nf-core/fq/lint/main' +include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq' +include { FQ_LINT } from '../../../modules/nf-core/fq/lint' +include { FQ_LINT as FQ_LINT_AFTER_BBSPLIT } from '../../../modules/nf-core/fq/lint' +include { FQ_LINT as FQ_LINT_AFTER_RIBO_REMOVAL } from '../../../modules/nf-core/fq/lint' +include { FQ_LINT as FQ_LINT_AFTER_TRIMMING } from '../../../modules/nf-core/fq/lint' +include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../fastq_fastqc_umitools_fastp' +include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../fastq_fastqc_umitools_trimgalore' include { FASTQ_REMOVE_RRNA } from '../fastq_remove_rrna' include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../fastq_subsample_fq_salmon' -include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../fastq_fastqc_umitools_trimgalore' -include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../fastq_fastqc_umitools_fastp' // // Function to determine library type by comparing type counts. @@ -83,45 +83,32 @@ def multiqcTsvFromList(tsv_data, header) { workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { take: - // Input channels - ch_reads // channel: [ val(meta), [ reads ] ] - ch_fasta // channel: /path/to/genome.fasta - ch_transcript_fasta // channel: /path/to/transcript.fasta - ch_gtf // channel: /path/to/genome.gtf - ch_salmon_index // channel: /path/to/salmon/index/ (optional) - ch_sortmerna_index // channel: /path/to/sortmerna/index/ (optional) - ch_bowtie2_index // channel: /path/to/bowtie2/index/ (optional) - ch_bbsplit_index // channel: /path/to/bbsplit/index/ (optional) - ch_rrna_fastas // channel: one or more fasta files containing rrna sequences to be passed to SortMeRNA/Bowtie2 (optional) - - // Skip options - skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads. - skip_fastqc // boolean: true/false - skip_trimming // boolean: true/false - skip_umi_extract // boolean: true/false - skip_linting // boolean: true/false - - // Index generation - make_salmon_index // boolean: Whether to create salmon index before running salmon quant + ch_reads // channel: [ val(meta), [ reads ] ] + ch_fasta // channel: /path/to/genome.fasta + ch_transcript_fasta // channel: /path/to/transcript.fasta + ch_gtf // channel: /path/to/genome.gtf + ch_salmon_index // channel: /path/to/salmon/index/ (optional) + ch_sortmerna_index // channel: /path/to/sortmerna/index/ (optional) + ch_bowtie2_index // channel: /path/to/bowtie2/index/ (optional) + ch_bbsplit_index // channel: /path/to/bbsplit/index/ (optional) + ch_rrna_fastas // channel: one or more fasta files containing rrna sequences to be passed to SortMeRNA/Bowtie2 (optional) + skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads. + skip_fastqc // boolean: true/false + skip_trimming // boolean: true/false + skip_umi_extract // boolean: true/false + skip_linting // boolean: true/false + make_salmon_index // boolean: Whether to create salmon index before running salmon quant make_sortmerna_index // boolean: Whether to create a sortmerna index before running sortmerna - make_bowtie2_index // boolean: Whether to create a bowtie2 index before running bowtie2 - - // Trimming options - trimmer // string (enum): 'fastp' or 'trimgalore' - min_trimmed_reads // integer: > 0 - save_trimmed // boolean: true/false - fastp_merge // boolean: true/false: whether to stitch paired end reads together in FASTP output - - // rRNA removal options - remove_ribo_rna // boolean: true/false: whether to remove rRNA - ribo_removal_tool // string (enum): 'sortmerna', 'ribodetector', or 'bowtie2' - - // UMI options - with_umi // boolean: true/false: Enable UMI-based read deduplication. - umi_discard_read // integer: 0, 1 or 2 - - // Strandedness thresholds - stranded_threshold // float: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5 + make_bowtie2_index // boolean: Whether to create a bowtie2 index before running bowtie2 + trimmer // string (enum): 'fastp' or 'trimgalore' + min_trimmed_reads // integer: > 0 + save_trimmed // boolean: true/false + fastp_merge // boolean: true/false: whether to stitch paired end reads together in FASTP output + remove_ribo_rna // boolean: true/false: whether to remove rRNA + ribo_removal_tool // string (enum): 'sortmerna', 'ribodetector', or 'bowtie2' + with_umi // boolean: true/false: Enable UMI-based read deduplication. + umi_discard_read // integer: 0, 1 or 2 + stranded_threshold // float: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5 unstranded_threshold // float: The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded' main: @@ -135,25 +122,25 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_lint_log_ribo = channel.empty() // Individual output channels for workflow outputs - ch_fastqc_raw_html = channel.empty() - ch_fastqc_raw_zip = channel.empty() - ch_fastqc_trim_html = channel.empty() - ch_fastqc_trim_zip = channel.empty() - ch_trim_html = channel.empty() - ch_trim_zip = channel.empty() - ch_trim_log = channel.empty() - ch_trim_json = channel.empty() - ch_trim_unpaired = channel.empty() - ch_umi_log = channel.empty() - ch_umi_reads = channel.empty() - ch_bbsplit_stats = channel.empty() - ch_sortmerna_log = channel.empty() - ch_ribodetector_log = channel.empty() - ch_seqkit_stats = channel.empty() - ch_bowtie2_log = channel.empty() - ch_bowtie2_index = channel.empty() - ch_seqkit_prefixed = channel.empty() - ch_seqkit_converted = channel.empty() + ch_fastqc_raw_html = channel.empty() + ch_fastqc_raw_zip = channel.empty() + ch_fastqc_trim_html = channel.empty() + ch_fastqc_trim_zip = channel.empty() + ch_trim_html = channel.empty() + ch_trim_zip = channel.empty() + ch_trim_log = channel.empty() + ch_trim_json = channel.empty() + ch_trim_unpaired = channel.empty() + ch_umi_log = channel.empty() + ch_umi_reads = channel.empty() + ch_bbsplit_stats = channel.empty() + ch_sortmerna_log = channel.empty() + ch_ribodetector_log = channel.empty() + ch_seqkit_stats = channel.empty() + ch_bowtie2_log = channel.empty() + ch_bowtie2_index = channel.empty() + ch_seqkit_prefixed = channel.empty() + ch_seqkit_converted = channel.empty() ch_reads .branch { meta, fastqs -> @@ -201,19 +188,19 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { // Capture individual outputs for workflow outputs ch_fastqc_raw_html = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_html - ch_fastqc_raw_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip - ch_fastqc_trim_html = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_html - ch_fastqc_trim_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip - ch_trim_log = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log - ch_trim_unpaired = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_unpaired - ch_umi_log = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log - ch_umi_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_reads - - ch_multiqc_files = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip + ch_fastqc_raw_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip + ch_trim_html = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_html + ch_trim_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip + ch_trim_log = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log + ch_trim_unpaired = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_unpaired + ch_umi_log = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log + ch_umi_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_reads + + ch_multiqc_files = ch_multiqc_files + .mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.map { meta, _process, _tool, file -> [meta, file] }) .mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip) .mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log) .mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log) - .mix(ch_multiqc_files) } // @@ -221,7 +208,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { // if (trimmer == 'fastp') { FASTQ_FASTQC_UMITOOLS_FASTP( - ch_filtered_reads.map { meta, reads -> tuple(meta, reads, []) }, // Add empty adapter sequence + ch_filtered_reads.map { meta, reads -> tuple(meta, reads, []) }, skip_fastqc, with_umi, skip_umi_extract, @@ -235,21 +222,21 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_read_count // Capture individual outputs for workflow outputs - ch_fastqc_raw_html = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_html - ch_fastqc_raw_zip = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip + ch_fastqc_raw_html = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_html + ch_fastqc_raw_zip = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip ch_fastqc_trim_html = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_html - ch_fastqc_trim_zip = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip - ch_trim_json = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json - ch_trim_html = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_html - ch_trim_log = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_log - ch_umi_log = FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_log - ch_umi_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_reads - - ch_multiqc_files = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip - .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip) + ch_fastqc_trim_zip = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip + ch_trim_json = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json + ch_trim_html = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_html + ch_trim_log = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_log + ch_umi_log = FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_log + ch_umi_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_reads + + ch_multiqc_files = ch_multiqc_files + .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip.map { meta, _process, _tool, file -> [meta, file] }) + .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip.map { meta, _process, _tool, file -> [meta, file] }) .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json) .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_log) - .mix(ch_multiqc_files) } def pass_trimmed_reads = [:] @@ -326,12 +313,12 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ) ch_filtered_reads = FASTQ_REMOVE_RRNA.out.reads - ch_sortmerna_log = FASTQ_REMOVE_RRNA.out.sortmerna_log + ch_sortmerna_log = FASTQ_REMOVE_RRNA.out.sortmerna_log ch_ribodetector_log = FASTQ_REMOVE_RRNA.out.ribodetector_log - ch_seqkit_stats = FASTQ_REMOVE_RRNA.out.seqkit_stats - ch_bowtie2_log = FASTQ_REMOVE_RRNA.out.bowtie2_log - ch_bowtie2_index = FASTQ_REMOVE_RRNA.out.bowtie2_index - ch_seqkit_prefixed = FASTQ_REMOVE_RRNA.out.seqkit_prefixed + ch_seqkit_stats = FASTQ_REMOVE_RRNA.out.seqkit_stats + ch_bowtie2_log = FASTQ_REMOVE_RRNA.out.bowtie2_log + ch_bowtie2_index = FASTQ_REMOVE_RRNA.out.bowtie2_index + ch_seqkit_prefixed = FASTQ_REMOVE_RRNA.out.seqkit_prefixed ch_seqkit_converted = FASTQ_REMOVE_RRNA.out.seqkit_converted ch_multiqc_files = ch_multiqc_files.mix(FASTQ_REMOVE_RRNA.out.multiqc_files) @@ -391,8 +378,6 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { reads = ch_strand_inferred_fastq trim_read_count = ch_trim_read_count multiqc_files = ch_multiqc_files.transpose().map { _meta, file -> file } - - // Individual outputs for workflow outputs lint_log_raw = ch_lint_log_raw lint_log_trimmed = ch_lint_log_trimmed lint_log_bbsplit = ch_lint_log_bbsplit diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test index 3f0ee1513dd5..09849096dfa4 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test @@ -41,7 +41,6 @@ nextflow_function { { assert snapshot(function.result).match() } ) } - } test("Test Function getSalmonInferredStrandedness forward") { @@ -77,7 +76,6 @@ nextflow_function { { assert snapshot(function.result).match() } ) } - } test("Test Function getSalmonInferredStrandedness reverse") { @@ -113,6 +111,5 @@ nextflow_function { { assert snapshot(function.result).match() } ) } - } } From b6094a96dcca40ff2effb5d06307ad9e86c0a05d Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 15:35:53 +0100 Subject: [PATCH 10/13] better snapshot --- .../fastq_shortreads_preprocess_qc/tests/main.nf.test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test index 6f7b7adae28a..c02f40c5e748 100644 --- a/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_shortreads_preprocess_qc/tests/main.nf.test @@ -228,10 +228,10 @@ nextflow_workflow { { assert snapshot( path(workflow.out.reads[0][1][0]).linesGzip.size(), path(workflow.out.reads[0][1][1]).linesGzip.size(), - workflow.out.pre_stats_fastqc_html[0][3].collect { f -> file(f).name }, - workflow.out.pre_stats_fastqc_zip[0][3].collect { f -> file(f).name }, - workflow.out.post_stats_fastqc_html[0][3].collect { f -> file(f).name }, - workflow.out.post_stats_fastqc_zip[0][3].collect { f -> file(f).name }, + workflow.out.pre_stats_fastqc_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.pre_stats_fastqc_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.post_stats_fastqc_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.post_stats_fastqc_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, path(workflow.out.clumpify_log[0][1]).readLines().size(), workflow.out.versions.collect { path(it).yaml } ).match() } From 28c7e295e6671a5b2effe773701d992c6881bd53 Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Wed, 11 Feb 2026 16:52:04 +0100 Subject: [PATCH 11/13] not a typo --- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index 332e0c0a7f11..6123b15a5020 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -189,8 +189,8 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { // Capture individual outputs for workflow outputs ch_fastqc_raw_html = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_html ch_fastqc_raw_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip - ch_trim_html = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_html - ch_trim_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip + ch_fastqc_trim_html = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_html + ch_fastqc_trim_zip = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip ch_trim_log = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log ch_trim_unpaired = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_unpaired ch_umi_log = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log From 1c0ebc847665ef2b074e2cd739ed89f0d0fe6a6d Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Thu, 12 Feb 2026 12:40:10 +0100 Subject: [PATCH 12/13] Apply suggestion from @maxulysse --- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index e380cf9ae239..9b2e742fbd06 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -5,6 +5,8 @@ include { FQ_LINT } from '../../../modules/nf-core include { FQ_LINT as FQ_LINT_AFTER_BBSPLIT } from '../../../modules/nf-core/fq/lint' include { FQ_LINT as FQ_LINT_AFTER_RIBO_REMOVAL } from '../../../modules/nf-core/fq/lint' include { FQ_LINT as FQ_LINT_AFTER_TRIMMING } from '../../../modules/nf-core/fq/lint' +include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../fastq_fastqc_umitools_trimgalore' +include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../fastq_fastqc_umitools_fastp' include { FASTQ_REMOVE_RRNA } from '../fastq_remove_rrna' include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../fastq_subsample_fq_salmon' From 71c514b5101a7a2d49e52beacfa9fc71a93576a0 Mon Sep 17 00:00:00 2001 From: "Maxime U. Garcia" Date: Thu, 12 Feb 2026 15:10:21 +0100 Subject: [PATCH 13/13] better snapshot --- .../main.nf | 96 +++++++++---------- .../tests/main.nf.test | 28 ++---- .../tests/main.nf.test.snap | 76 +++++++++------ 3 files changed, 106 insertions(+), 94 deletions(-) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index 9b2e742fbd06..6c5715f3fc46 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -123,27 +123,27 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_lint_log_ribo = channel.empty() // Individual output channels for workflow outputs - ch_fastqc_raw_html = channel.empty() - ch_fastqc_raw_zip = channel.empty() - ch_fastqc_trim_html = channel.empty() - ch_fastqc_trim_zip = channel.empty() - ch_trim_html = channel.empty() - ch_trim_zip = channel.empty() - ch_trim_log = channel.empty() - ch_trim_json = channel.empty() - ch_trim_unpaired = channel.empty() - ch_umi_log = channel.empty() - ch_umi_reads = channel.empty() - ch_bbsplit_stats = channel.empty() - ch_sortmerna_log = channel.empty() - ch_ribodetector_log = channel.empty() - ch_seqkit_stats = channel.empty() - ch_bowtie2_log = channel.empty() - ch_bowtie2_index = channel.empty() - ch_seqkit_prefixed = channel.empty() - ch_seqkit_converted = channel.empty() + ch_fastqc_raw_html = channel.empty() + ch_fastqc_raw_zip = channel.empty() + ch_fastqc_trim_html = channel.empty() + ch_fastqc_trim_zip = channel.empty() + ch_trim_html = channel.empty() + ch_trim_zip = channel.empty() + ch_trim_log = channel.empty() + ch_trim_json = channel.empty() + ch_trim_unpaired = channel.empty() + ch_umi_log = channel.empty() + ch_umi_reads = channel.empty() + ch_bbsplit_stats = channel.empty() + ch_sortmerna_log = channel.empty() + ch_ribodetector_log = channel.empty() + ch_seqkit_stats = channel.empty() + ch_bowtie2_log = channel.empty() + ch_bowtie2_index = channel.empty() + ch_seqkit_prefixed = channel.empty() + ch_seqkit_converted = channel.empty() ch_fastqc_filtered_html = channel.empty() - ch_fastqc_filtered_zip = channel.empty() + ch_fastqc_filtered_zip = channel.empty() ch_reads .branch { meta, fastqs -> @@ -342,8 +342,8 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_filtered_reads ) ch_fastqc_filtered_html = FASTQC_FILTERED.out.html - ch_fastqc_filtered_zip = FASTQC_FILTERED.out.zip - ch_multiqc_files = ch_multiqc_files.mix(FASTQC_FILTERED.out.zip) + ch_fastqc_filtered_zip = FASTQC_FILTERED.out.zip + ch_multiqc_files = ch_multiqc_files.mix(FASTQC_FILTERED.out.zip.map { meta, _process, _tool, file -> [meta, file] }) } // Branch FastQ channels if 'auto' specified to infer strandedness @@ -390,32 +390,32 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { .set { ch_strand_inferred_fastq } emit: - reads = ch_strand_inferred_fastq - trim_read_count = ch_trim_read_count - multiqc_files = ch_multiqc_files.transpose().map { _meta, file -> file } - lint_log_raw = ch_lint_log_raw - lint_log_trimmed = ch_lint_log_trimmed - lint_log_bbsplit = ch_lint_log_bbsplit - lint_log_ribo = ch_lint_log_ribo - fastqc_raw_html = ch_fastqc_raw_html - fastqc_raw_zip = ch_fastqc_raw_zip - fastqc_trim_html = ch_fastqc_trim_html - fastqc_trim_zip = ch_fastqc_trim_zip - trim_html = ch_trim_html - trim_zip = ch_trim_zip - trim_log = ch_trim_log - trim_json = ch_trim_json - trim_unpaired = ch_trim_unpaired - umi_log = ch_umi_log - umi_reads = ch_umi_reads - bbsplit_stats = ch_bbsplit_stats - sortmerna_log = ch_sortmerna_log - ribodetector_log = ch_ribodetector_log - seqkit_stats = ch_seqkit_stats - bowtie2_log = ch_bowtie2_log - bowtie2_index = ch_bowtie2_index + reads = ch_strand_inferred_fastq + trim_read_count = ch_trim_read_count + multiqc_files = ch_multiqc_files.transpose().map { _meta, file -> file } + lint_log_raw = ch_lint_log_raw + lint_log_trimmed = ch_lint_log_trimmed + lint_log_bbsplit = ch_lint_log_bbsplit + lint_log_ribo = ch_lint_log_ribo + fastqc_raw_html = ch_fastqc_raw_html + fastqc_raw_zip = ch_fastqc_raw_zip + fastqc_trim_html = ch_fastqc_trim_html + fastqc_trim_zip = ch_fastqc_trim_zip + trim_html = ch_trim_html + trim_zip = ch_trim_zip + trim_log = ch_trim_log + trim_json = ch_trim_json + trim_unpaired = ch_trim_unpaired + umi_log = ch_umi_log + umi_reads = ch_umi_reads + bbsplit_stats = ch_bbsplit_stats + sortmerna_log = ch_sortmerna_log + ribodetector_log = ch_ribodetector_log + seqkit_stats = ch_seqkit_stats + bowtie2_log = ch_bowtie2_log + bowtie2_index = ch_bowtie2_index fastqc_filtered_html = ch_fastqc_filtered_html fastqc_filtered_zip = ch_fastqc_filtered_zip - seqkit_prefixed = ch_seqkit_prefixed - seqkit_converted = ch_seqkit_converted + seqkit_prefixed = ch_seqkit_prefixed + seqkit_converted = ch_seqkit_converted } diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test index 753b67d6785a..d3f9588efb57 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -123,10 +123,8 @@ nextflow_workflow { pelines1.join('\n').md5(), pelines2.join('\n').md5(), processed_ribo_removal_lint_report, - file(workflow.out.fastqc_filtered_html[0][1][0]).name, - file(workflow.out.fastqc_filtered_html[0][1][1]).name, - file(workflow.out.fastqc_filtered_zip[0][1][0]).name, - file(workflow.out.fastqc_filtered_zip[0][1][1]).name, + workflow.out.fastqc_filtered_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_filtered_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, ).match() } ) } @@ -213,10 +211,8 @@ nextflow_workflow { pelines1.join('\n').md5(), pelines2.join('\n').md5(), processed_ribo_removal_lint_report.md5(), - file(workflow.out.fastqc_filtered_html[0][1][0]).name, - file(workflow.out.fastqc_filtered_html[0][1][1]).name, - file(workflow.out.fastqc_filtered_zip[0][1][0]).name, - file(workflow.out.fastqc_filtered_zip[0][1][1]).name, + workflow.out.fastqc_filtered_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_filtered_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, ).match() } ) } @@ -301,10 +297,8 @@ nextflow_workflow { pelines1.join('\n').md5(), pelines2.join('\n').md5(), processed_ribo_removal_lint_report.md5(), - file(workflow.out.fastqc_filtered_html[0][1][0]).name, - file(workflow.out.fastqc_filtered_html[0][1][1]).name, - file(workflow.out.fastqc_filtered_zip[0][1][0]).name, - file(workflow.out.fastqc_filtered_zip[0][1][1]).name, + workflow.out.fastqc_filtered_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_filtered_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, ).match() } ) } @@ -395,10 +389,8 @@ nextflow_workflow { pelines1.join('\n').md5(), pelines2.join('\n').md5(), processed_ribo_removal_lint_report.md5(), - file(workflow.out.fastqc_filtered_html[0][1][0]).name, - file(workflow.out.fastqc_filtered_html[0][1][1]).name, - file(workflow.out.fastqc_filtered_zip[0][1][0]).name, - file(workflow.out.fastqc_filtered_zip[0][1][1]).name, + workflow.out.fastqc_filtered_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_filtered_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, ).match() } ) } @@ -503,8 +495,8 @@ nextflow_workflow { { assert snapshot( selines.join('\n').md5(), processed_ribo_removal_lint_report.md5(), - file(workflow.out.fastqc_filtered_html[0][1]).name, - file(workflow.out.fastqc_filtered_zip[0][1]).name, + workflow.out.fastqc_filtered_html.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, + workflow.out.fastqc_filtered_zip.collect().flatten().findAll { !(it instanceof Map) && it.startsWith("/") }.collect { file(it).name }, ).match() } ) } diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap index 69a3a21263ca..2392dfd19f7b 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap @@ -4,76 +4,96 @@ "427d190cd40caeff5e2bd1967a21facb", "5d74b788577eb11cf8c858ca94e2f787", "\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m fq-lint start\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m validating paired end reads\n\u001b[32m INFO\u001b[0m \u001b[2mfq::validators\u001b[0m\u001b[2m:\u001b[0m disabled validators: []\n\u001b[32m INFO\u001b[0m \u001b[2mfq::validators\u001b[0m\u001b[2m:\u001b[0m enabled single read validators: [\"[S003] NameValidator\", \"[S004] CompleteValidator\", \"[S002] AlphabetValidator\", \"[S001] PlusLineValidator\", \"[S005] ConsistentSeqQualValidator\", \"[S006] QualityStringValidator\"]\n\u001b[32m INFO\u001b[0m \u001b[2mfq::validators\u001b[0m\u001b[2m:\u001b[0m enabled paired read validators: [\"[P001] NamesValidator\"]\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m enabled special validators: [\"[S007] DuplicateNameValidator\"]\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m starting validation (pass 1)\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m read 1127 * 2 records\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m starting validation (pass 2)\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m read 1127 records\n\u001b[32m INFO\u001b[0m \u001b[2mfq::commands::lint\u001b[0m\u001b[2m:\u001b[0m fq-lint end", - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip" + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-12T09:05:53.923664771" + "timestamp": "2026-02-12T15:07:59.122815005" }, "homo_sapiens paired-end [fastq] fastp ribodetector": { "content": [ "5f14496c2cc20412609a0005ac6d10c4", "888d06ce2b2c67c8b8fc94eae65870ed", "13bd489c0acd9f79cfa291e982c6ba21", - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip" + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-12T09:06:16.903127796" + "timestamp": "2026-02-12T15:08:26.494865291" }, "homo_sapiens paired-end [fastq] trimgalore sortmerna": { "content": [ "d4b38548c21fb1a703204a38df4f6577", "546d6903d24642870c2ef7bdbc435758", "42c4b902767edb12752797e908f66d6c", - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip" + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-12T09:06:33.867211398" + "timestamp": "2026-02-12T15:08:50.272644661" }, "homo_sapiens paired-end [fastq] fastp bowtie2": { "content": [ "e4b3f501156cf176093c712e7a1bc0e1", "f79feea1f5d509b4bcfd0a637b5d8558", "0a6ee69d1a42f5e38ad2d4dfe9faf5a6", - "test_1_fastqc.html", - "test_2_fastqc.html", - "test_1_fastqc.zip", - "test_2_fastqc.zip" + [ + "test_1_fastqc.html", + "test_2_fastqc.html" + ], + [ + "test_1_fastqc.zip", + "test_2_fastqc.zip" + ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-12T09:06:51.756578633" + "timestamp": "2026-02-12T15:09:14.037822812" }, "homo_sapiens single-end [fastq] fastp bowtie2": { "content": [ "b423f619ae31c22b2bf99bdcb89bf852", "5c1e74518dd70e4f1506b4f64da7b5f3", - "test_se_fastqc.html", - "test_se_fastqc.zip" + [ + "test_se_fastqc.html" + ], + [ + "test_se_fastqc.zip" + ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.3" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-12T09:07:08.160495752" + "timestamp": "2026-02-12T15:09:36.85865527" } } \ No newline at end of file