diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ca177595..01af5ada6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -199,7 +199,6 @@ jobs: exclude: - tags: "GFFREAD" - tags: "PIPELINE" - - tags: "SUBREAD_FEATURECOUNTS" - tags: "STRINGTIE_STRINGTIE" - tags: "UMITOOLS_PREPAREFORRSEM" diff --git a/modules.json b/modules.json index 0191de343..4b0d5ed9e 100644 --- a/modules.json +++ b/modules.json @@ -221,7 +221,7 @@ }, "trimgalore": { "branch": "master", - "git_sha": "2e6c468e0ad43b23df71d7a7f130d5c0e0aa89e3", + "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "tximeta/tximport": { @@ -246,7 +246,7 @@ }, "umitools/extract": { "branch": "master", - "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", + "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "umitools/prepareforrsem": { @@ -309,7 +309,7 @@ }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml index 6cd0f51b3..17b39f4a5 100644 --- a/modules/nf-core/trimgalore/environment.yml +++ b/modules/nf-core/trimgalore/environment.yml @@ -5,3 +5,4 @@ channels: - defaults dependencies: - bioconda::trim-galore=0.6.7 + - bioconda::cutadapt=3.4 diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 3e3819b6d..43904ac32 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -10,9 +10,6 @@ nextflow_process { test("test_trimgalore_single_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ id:'test', single_end:true ], // meta map @@ -41,7 +38,8 @@ nextflow_process { { report1_lines.each { report1_line -> { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } } - } + }, + { assert snapshot(process.out.versions).match() } ) } } @@ -49,13 +47,10 @@ nextflow_process { test("test_trimgalore_paired_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true), file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_2.fastq.gz", checkIfExists: true) ] @@ -100,7 +95,8 @@ nextflow_process { { report2_lines.each { report2_line -> { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } } - } + }, + { assert snapshot(process.out.versions).match() } ) } } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap index 84feacca2..082c55004 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test.snap +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -1,148 +1,26 @@ { "test_trimgalore_single_end": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" - ] - ], - "reads": [ - [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" - ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - - ] - } + [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ] ], - "timestamp": "2023-10-17T15:24:57.782141441" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T16:33:20.401347" }, "test_trimgalore_paired_end": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", - "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", - "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" - ] - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", - "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" - ] - ] - ], - "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", - "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" - ] - ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - - ] - } + [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ] ], - "timestamp": "2023-10-17T15:25:08.513589909" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T16:33:28.960497" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index 83a77a1b1..2a8eba150 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -12,9 +12,6 @@ nextflow_process { test("Should run without failures") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ id:'test', single_end:true ], // meta map @@ -26,10 +23,9 @@ nextflow_process { then { assertAll ( - { assert process.success }, - { assert snapshot(process.out.versions).match("versions") } + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") } ) } - } } \ No newline at end of file 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 new file mode 100644 index 000000000..3a6cae860 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -0,0 +1,147 @@ +nextflow_workflow { + + name "Test Subworkflow FASTQ_FASTQC_UMITOOLS_TRIMGALORE" + script "../main.nf" + workflow "FASTQ_FASTQC_UMITOOLS_TRIMGALORE" + config './nextflow.config' + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_trimgalore" + tag "fastqc" + tag "umitools/extract" + tag "trimgalore" + + tag "FASTQC" + tag "UMITOOLS_EXTRACT" + tag "TRIMGALORE" + + test("test single end read with UMI") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = false // skip_fastqc + input[2] = true // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert path(workflow.out.fastqc_html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(workflow.out.reads).match("se - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("se - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("se - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("se - versions") } + ) + } + } + + test("test paired end read with UMI") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = false // skip_fastqc + input[2] = true // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.reads).match("pe - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("pe - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("pe - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("pe - versions") } + ) + } + } + test("test paired end read without UMI") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = false // skip_fastqc + input[2] = false // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.reads).match("pe no umi - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("pe no umi - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("pe no umi - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("pe no umi - versions") } + ) + } + } + + test("test skip all steps") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = true // skip_fastqc + input[2] = true // with_umi + input[3] = true // skip_umi_extract + input[4] = true // skip_trimming + input[5] = 0 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.reads).match("pe skip all - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("pe skip all - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("pe skip all - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("pe skip all - versions") } + ) + } + } +} 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 new file mode 100644 index 000000000..f7379500e --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -0,0 +1,247 @@ +{ + "pe no umi - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_val_1.fq.gz:md5,566d44cca0d22c522d6cf0e50c7165dc", + "test_2_val_2.fq.gz:md5,3c023e8e890b897821df3dc98f48c2b3" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.470766" + }, + "pe skip all - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.820606" + }, + "pe skip all - versions": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.831239" + }, + "pe - trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + 100.0 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.817321" + }, + "se - trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + 100.0 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.520435" + }, + "se - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.535593" + }, + "pe no umi - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.49149" + }, + "pe - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,9c58b78ac2c7b5ce9ca6b090eee1d39c" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.810693" + }, + "se - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,faae784affdd7d84e2fa9da9e9425229" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.481086" + }, + "se - versions": { + "content": [ + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.551084" + }, + "pe skip all - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.799159" + }, + "pe no umi - versions": { + "content": [ + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.50189" + }, + "pe no umi - trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + 100.0 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.482197" + }, + "pe - versions": { + "content": [ + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.837523" + }, + "pe skip all - trim_read_count": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.808588" + }, + "pe - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.824011" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config new file mode 100644 index 000000000..06a7d07a7 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: UMITOOLS_EXTRACT { + ext.args = '--bc-pattern="NNNN"' + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml new file mode 100644 index 000000000..5bf59db41 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_fastqc_umitools_trimgalore: + - subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/**