diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3b9513e56..c48d11e7c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -224,7 +224,9 @@ jobs: - tags: "bwamem2/mem" - tags: "cat/cat" - tags: "cat/fastq" + - tags: "cnvkit/antitarget" - tags: "cnvkit/batch" + - tags: "cnvkit/reference" - tags: "deepvariant" - tags: "dragmap/align" - tags: "dragmap/hashtable" @@ -247,6 +249,7 @@ jobs: - tags: "gawk" - tags: "mosdepth" - tags: "multiqc" + - tags: "ngscheckmate/ncm" - tags: "samblaster" - tags: "samtools/convert" - tags: "samtools/mpileup" diff --git a/.gitignore b/.gitignore index 9bd5a6ee00..c807bd5d3f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ testing* .nf-test* .nf-test/ test-datasets/ +test.tap +test.xml diff --git a/.nf-core.yml b/.nf-core.yml index 4abfaf5a37..e0b3aa1f76 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -6,16 +6,11 @@ lint: - .github/workflows/awsfulltest.yml - .github/workflows/awstest.yml - conf/modules.config - - lib/WorkflowMain.groovy - - lib/NfcoreTemplate.groovy - - lib/WorkflowSarek.groovy files_unchanged: - .gitignore - .github/PULL_REQUEST_TEMPLATE.md - assets/nf-core-sarek_logo_light.png - docs/images/nf-core-sarek_logo_dark.png - docs/images/nf-core-sarek_logo_light.png - - lib/NfcoreTemplate.groovy - - lib/NfcoreSchema.groovy modules_config: False template_strings: False diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ea65ba007..c231616998 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#1513](https://github.com/nf-core/sarek/pull/1513) - Back to dev - [#1518](https://github.com/nf-core/sarek/pull/1518) - Sync `TEMPLATE` with `tools` `2.14.1` - [#1521](https://github.com/nf-core/sarek/pull/1521) - Minor code refactoring to simplify syntax in args handling +- [#1545](https://github.com/nf-core/sarek/pull/1545) - Update modules - [#1552](https://github.com/nf-core/sarek/pull/1552) - Update samtools to v1.20 +- [#1545](https://github.com/nf-core/sarek/pull/1545) - Update modules - [#1553](https://github.com/nf-core/sarek/pull/1553) - Update bcftools to v1.20 ### Fixed @@ -36,10 +38,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | Dependency | Old version | New version | | ---------- | ----------- | ----------- | | `bcftools` | 1.18 | 1.20 | +| `bwa` | 0.7.17 | 0.7.18 | +| `cnvkit` | 0.9.10 | 0.9.11 | +| `htslib` | 1.19.1 | 1.20 | | `samtools` | 1.19.2 | 1.20 | -### Modules / Subworkflows - ### Parameters ## [3.4.2](https://github.com/nf-core/sarek/releases/tag/3.4.2) - Sájtáristjåhkkå diff --git a/modules.json b/modules.json index bb5710bd7d..d2b4bb9c28 100644 --- a/modules.json +++ b/modules.json @@ -38,12 +38,12 @@ }, "bwa/index": { "branch": "master", - "git_sha": "6278bf9afd4a4b2d00fa6052250e73da3d91546f", + "git_sha": "086fa66260595e123b0ea47a6512539b72a9afa3", "installed_by": ["modules"] }, "bwa/mem": { "branch": "master", - "git_sha": "b97197968ac12dde2463fa54541f6350c46f2035", + "git_sha": "0c34b8159f62cde451c4ff249629c9d0a4f3f9c3", "installed_by": ["modules"] }, "bwamem2/index": { @@ -63,12 +63,12 @@ }, "cat/fastq": { "branch": "master", - "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca", + "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e", "installed_by": ["modules"] }, "cnvkit/antitarget": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "7d8eff8f0cbc20cb83ce624e86c58ede51397054", "installed_by": ["modules"] }, "cnvkit/batch": { @@ -93,7 +93,7 @@ }, "cnvkit/reference": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "f8693ff46b884892982d658271ed260380111c53", "installed_by": ["modules"] }, "controlfreec/assesssignificance": { @@ -186,7 +186,7 @@ }, "gatk4/applyvqsr": { "branch": "master", - "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", + "git_sha": "cee8fe33d3ef1a220dee67dac75a32f7c872f63f", "installed_by": ["modules"] }, "gatk4/baserecalibrator": { @@ -196,7 +196,7 @@ }, "gatk4/calculatecontamination": { "branch": "master", - "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", + "git_sha": "77ffba959bbe8b6e1d95d47688075d113e24f0d4", "installed_by": ["modules"] }, "gatk4/cnnscorevariants": { @@ -206,7 +206,7 @@ }, "gatk4/createsequencedictionary": { "branch": "master", - "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", + "git_sha": "e6fe277739f5894711405af3e717b2470bd956b5", "installed_by": ["modules"] }, "gatk4/estimatelibrarycomplexity": { @@ -216,7 +216,7 @@ }, "gatk4/filtermutectcalls": { "branch": "master", - "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", + "git_sha": "7d814815f638e1483995b24a23f5f23229036bbf", "installed_by": ["modules"] }, "gatk4/filtervarianttranches": { @@ -246,7 +246,7 @@ }, "gatk4/getpileupsummaries": { "branch": "master", - "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", + "git_sha": "b632dcbf8bd3d7b9cb22fd0b2416e9e6cb8f4045", "installed_by": ["modules"] }, "gatk4/haplotypecaller": { @@ -271,7 +271,7 @@ }, "gatk4/mergemutectstats": { "branch": "master", - "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", + "git_sha": "cafe91148ca110e52ceaa07f3e373b882800d04b", "installed_by": ["modules"] }, "gatk4/mergevcfs": { @@ -306,7 +306,7 @@ }, "gawk": { "branch": "master", - "git_sha": "b42fec6f7c6e5d0716685cabb825ef6bf6e386b5", + "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", "installed_by": ["modules"] }, "manta/germline": { @@ -346,7 +346,7 @@ }, "ngscheckmate/ncm": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "0e04b949c90e686c8b07495576832d78ab9210cf", "installed_by": ["bam_ngscheckmate"] }, "samblaster": { diff --git a/modules/nf-core/bwa/index/environment.yml b/modules/nf-core/bwa/index/environment.yml index 5d3cb3231b..126e003448 100644 --- a/modules/nf-core/bwa/index/environment.yml +++ b/modules/nf-core/bwa/index/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::bwa=0.7.17 + - bioconda::bwa=0.7.18 diff --git a/modules/nf-core/bwa/index/main.nf b/modules/nf-core/bwa/index/main.nf index 24b5a2ea99..2e48b6caae 100644 --- a/modules/nf-core/bwa/index/main.nf +++ b/modules/nf-core/bwa/index/main.nf @@ -4,8 +4,8 @@ process BWA_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bwa:0.7.17--hed695b0_7' : - 'biocontainers/bwa:0.7.17--hed695b0_7' }" + 'https://depot.galaxyproject.org/singularity/bwa:0.7.18--he4a0461_0' : + 'biocontainers/bwa:0.7.18--he4a0461_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/bwa/index/meta.yml b/modules/nf-core/bwa/index/meta.yml index 730628d005..4c7d30f3aa 100644 --- a/modules/nf-core/bwa/index/meta.yml +++ b/modules/nf-core/bwa/index/meta.yml @@ -43,3 +43,4 @@ authors: maintainers: - "@drpatelh" - "@maxulysse" + - "@gallvp" diff --git a/modules/nf-core/bwa/index/tests/main.nf.test.snap b/modules/nf-core/bwa/index/tests/main.nf.test.snap index e51ad5bf2b..7c8f046578 100644 --- a/modules/nf-core/bwa/index/tests/main.nf.test.snap +++ b/modules/nf-core/bwa/index/tests/main.nf.test.snap @@ -17,7 +17,7 @@ ] ], "1": [ - "versions.yml:md5,0f20525da90e7489a7ebb02adca3265f" + "versions.yml:md5,a64462ac7dfb21f4ade9b02e7f65c5bb" ], "index": [ [ @@ -34,10 +34,14 @@ ] ], "versions": [ - "versions.yml:md5,0f20525da90e7489a7ebb02adca3265f" + "versions.yml:md5,a64462ac7dfb21f4ade9b02e7f65c5bb" ] } ], - "timestamp": "2023-10-17T17:20:20.180927714" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-16T11:40:09.925307" } } \ No newline at end of file diff --git a/modules/nf-core/bwa/mem/environment.yml b/modules/nf-core/bwa/mem/environment.yml index 3f136d0a3f..3aa9f0cca2 100644 --- a/modules/nf-core/bwa/mem/environment.yml +++ b/modules/nf-core/bwa/mem/environment.yml @@ -4,7 +4,7 @@ channels: - bioconda - defaults dependencies: - - bwa=0.7.17 + - bwa=0.7.18 # renovate: datasource=conda depName=bioconda/samtools - - samtools=1.19.2 - - htslib=1.19.1 + - samtools=1.20 + - htslib=1.20.0 diff --git a/modules/nf-core/bwa/mem/main.nf b/modules/nf-core/bwa/mem/main.nf index d8bd281519..9c815f0c8e 100644 --- a/modules/nf-core/bwa/mem/main.nf +++ b/modules/nf-core/bwa/mem/main.nf @@ -4,8 +4,8 @@ process BWA_MEM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:a34558545ae1413d94bde4578787ebef08027945-0' : - 'biocontainers/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:a34558545ae1413d94bde4578787ebef08027945-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:1bd8542a8a0b42e0981337910954371d0230828e-0' : + 'biocontainers/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:1bd8542a8a0b42e0981337910954371d0230828e-0' }" input: tuple val(meta) , path(reads) diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test b/modules/nf-core/bwa/mem/tests/main.nf.test index 1fa9b56dc7..463b76f81c 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test +++ b/modules/nf-core/bwa/mem/tests/main.nf.test @@ -44,7 +44,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.cram, + process.out.csi, + process.out.crai, + process.out.versions, + file(process.out.bam[0][1]).name + ).match() + } ) } @@ -85,7 +92,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.cram, + process.out.csi, + process.out.crai, + process.out.versions, + file(process.out.bam[0][1]).name + ).match() + } ) } @@ -127,7 +141,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.cram, + process.out.csi, + process.out.crai, + process.out.versions, + file(process.out.bam[0][1]).name + ).match() + } ) } @@ -169,7 +190,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.cram, + process.out.csi, + process.out.crai, + process.out.versions, + file(process.out.bam[0][1]).name + ).match() + } ) } @@ -211,7 +239,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.cram, + process.out.csi, + process.out.crai, + process.out.versions, + file(process.out.bam[0][1]).name + ).match() + } ) } diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test.snap b/modules/nf-core/bwa/mem/tests/main.nf.test.snap index 0d1bdb416d..038ee7b7a2 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwa/mem/tests/main.nf.test.snap @@ -1,295 +1,140 @@ { "Single-End": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test.bam:md5,a74710a0345b4717bb4431bf9c257120" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ], - "bam": [ - [ - { - "id": "test", - "single_end": true - }, - "test.bam:md5,a74710a0345b4717bb4431bf9c257120" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ] - } + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "test.bam" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-14T14:14:56.820798254" + "timestamp": "2024-05-20T08:44:32.953673185" }, "Single-End Sort": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test.bam:md5,cb1e038bc4d990683fa485d632550b54" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ], - "bam": [ - [ - { - "id": "test", - "single_end": true - }, - "test.bam:md5,cb1e038bc4d990683fa485d632550b54" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ] - } + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "test.bam" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-14T14:15:20.271428534" + "timestamp": "2024-05-20T08:44:45.27066093" }, "Paired-End": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,aea123a3828a99da1906126355f15a12" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,aea123a3828a99da1906126355f15a12" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ] - } + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "test.bam" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-14T14:15:38.264256823" + "timestamp": "2024-05-20T08:44:57.706852274" }, "Paired-End Sort": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,4682087bcdc3617384b375093fecd8dd" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,4682087bcdc3617384b375093fecd8dd" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ] - } + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "test.bam" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-14T14:16:00.528642686" + "timestamp": "2024-05-20T08:45:10.376505036" }, "Single-end - stub": { "content": [ "test.bam", "test.csi", [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-15T09:50:33.238543011" + "timestamp": "2024-05-20T08:46:07.182072398" }, "Paired-End - no fasta": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,aea123a3828a99da1906126355f15a12" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,aea123a3828a99da1906126355f15a12" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" - ] - } + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "test.bam" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-14T14:40:16.345342005" + "timestamp": "2024-05-20T08:45:53.813076501" }, "Paired-end - stub": { "content": [ "test.bam", "test.csi", [ - "versions.yml:md5,c32f719a68bb2966c8511d808154d42d" + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-15T09:50:42.268673302" + "timestamp": "2024-05-20T08:46:18.412916364" } } \ No newline at end of file diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test index dab2e14c02..a71dcb8dfa 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -1,3 +1,5 @@ +// NOTE The version snaps may not be consistant +// https://github.com/nf-core/modules/pull/4087#issuecomment-1767948035 nextflow_process { name "Test Process CAT_FASTQ" diff --git a/modules/nf-core/cnvkit/antitarget/environment.yml b/modules/nf-core/cnvkit/antitarget/environment.yml index d40626a56e..a33a12e23c 100644 --- a/modules/nf-core/cnvkit/antitarget/environment.yml +++ b/modules/nf-core/cnvkit/antitarget/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::cnvkit=0.9.10 + - bioconda::cnvkit=0.9.11 diff --git a/modules/nf-core/cnvkit/antitarget/main.nf b/modules/nf-core/cnvkit/antitarget/main.nf index 795145451b..0c1f6674a4 100644 --- a/modules/nf-core/cnvkit/antitarget/main.nf +++ b/modules/nf-core/cnvkit/antitarget/main.nf @@ -4,8 +4,8 @@ process CNVKIT_ANTITARGET { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.10--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.10--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.11--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.11--pyhdfd78af_0' }" input: tuple val(meta), path(targets) diff --git a/modules/nf-core/cnvkit/antitarget/tests/main.nf.test b/modules/nf-core/cnvkit/antitarget/tests/main.nf.test new file mode 100644 index 0000000000..558abb6768 --- /dev/null +++ b/modules/nf-core/cnvkit/antitarget/tests/main.nf.test @@ -0,0 +1,59 @@ +nextflow_process { + + name "Test Process CNVKIT_ANTITARGET" + script "../main.nf" + process "CNVKIT_ANTITARGET" + + tag "modules" + tag "modules_nfcore" + tag "cnvkit" + tag "cnvkit/antitarget" + + test("human - bed") { + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("version") }, + { assert snapshot(file(process.out.bed.get(0).get(1)).readLines()[0..5]).match() } + ) + } + + } + + test("human - bed - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/cnvkit/antitarget/tests/main.nf.test.snap b/modules/nf-core/cnvkit/antitarget/tests/main.nf.test.snap new file mode 100644 index 0000000000..f793a5275f --- /dev/null +++ b/modules/nf-core/cnvkit/antitarget/tests/main.nf.test.snap @@ -0,0 +1,64 @@ +{ + "human - bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.antitarget.bed:md5,3d4d20f9f23b39970865d29ef239d20b" + ] + ], + "1": [ + "versions.yml:md5,b5e73ea85743cedc68ca6ef8006e5030" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.antitarget.bed:md5,3d4d20f9f23b39970865d29ef239d20b" + ] + ], + "versions": [ + "versions.yml:md5,b5e73ea85743cedc68ca6ef8006e5030" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-13T13:58:45.758206" + }, + "human - bed": { + "content": [ + [ + "chr21\t23354500\t23509999\tAntitarget", + "chr21\t23509999\t23665499\tAntitarget", + "chr21\t23665499\t23820999\tAntitarget", + "chr21\t23820999\t23976499\tAntitarget", + "chr21\t23976499\t24131999\tAntitarget", + "chr21\t24911498\t25066997\tAntitarget" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-13T13:58:33.088665" + }, + "version": { + "content": [ + [ + "versions.yml:md5,b5e73ea85743cedc68ca6ef8006e5030" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-13T13:58:33.070317" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvkit/antitarget/tests/tags.yml b/modules/nf-core/cnvkit/antitarget/tests/tags.yml new file mode 100644 index 0000000000..9261ab536e --- /dev/null +++ b/modules/nf-core/cnvkit/antitarget/tests/tags.yml @@ -0,0 +1,2 @@ +cnvkit/antitarget: + - "modules/nf-core/cnvkit/antitarget/**" diff --git a/modules/nf-core/cnvkit/reference/environment.yml b/modules/nf-core/cnvkit/reference/environment.yml index 35e890e541..e3070044d0 100644 --- a/modules/nf-core/cnvkit/reference/environment.yml +++ b/modules/nf-core/cnvkit/reference/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::cnvkit=0.9.10 + - bioconda::cnvkit=0.9.11 diff --git a/modules/nf-core/cnvkit/reference/main.nf b/modules/nf-core/cnvkit/reference/main.nf index 0e0b20a01e..857996f111 100644 --- a/modules/nf-core/cnvkit/reference/main.nf +++ b/modules/nf-core/cnvkit/reference/main.nf @@ -4,8 +4,8 @@ process CNVKIT_REFERENCE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.10--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.10--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.11--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.11--pyhdfd78af_0' }" input: path fasta diff --git a/modules/nf-core/cnvkit/reference/meta.yml b/modules/nf-core/cnvkit/reference/meta.yml index 8c561c9953..8747893b6f 100644 --- a/modules/nf-core/cnvkit/reference/meta.yml +++ b/modules/nf-core/cnvkit/reference/meta.yml @@ -34,7 +34,7 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - reference: + - cnn: type: file description: File containing a copy-number reference (required for CNV calling in tumor_only mode) pattern: "*.{cnn}" diff --git a/modules/nf-core/cnvkit/reference/tests/main.nf.test b/modules/nf-core/cnvkit/reference/tests/main.nf.test new file mode 100644 index 0000000000..47039e3086 --- /dev/null +++ b/modules/nf-core/cnvkit/reference/tests/main.nf.test @@ -0,0 +1,57 @@ +nextflow_process { + + name "Test Process CNVKIT_REFERENCE" + script "../main.nf" + process "CNVKIT_REFERENCE" + + tag "modules" + tag "modules_nfcore" + tag "cnvkit" + tag "cnvkit/reference" + + test("human - [fasta, bed]") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.antitarget.bed', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("version") }, + { assert snapshot(file(process.out.cnn.get(0)).readLines()[0]).match() } + ) + } + + } + + test("human - [fasta, bed] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.antitarget.bed', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/cnvkit/reference/tests/main.nf.test.snap b/modules/nf-core/cnvkit/reference/tests/main.nf.test.snap new file mode 100644 index 0000000000..353f6378a6 --- /dev/null +++ b/modules/nf-core/cnvkit/reference/tests/main.nf.test.snap @@ -0,0 +1,47 @@ +{ + "human - [fasta, bed]": { + "content": [ + "chromosome\tstart\tend\tgene\tlog2\tdepth\tgc\trmask\tspread" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-13T14:00:12.102517" + }, + "human - [fasta, bed] - stub": { + "content": [ + { + "0": [ + "multi_intervals.reference.cnn:md5,7c4a7902f5ab101b1f9d6038d331b3d9" + ], + "1": [ + "versions.yml:md5,85ff8911567b4e1245b883541ad3cc1e" + ], + "cnn": [ + "multi_intervals.reference.cnn:md5,7c4a7902f5ab101b1f9d6038d331b3d9" + ], + "versions": [ + "versions.yml:md5,85ff8911567b4e1245b883541ad3cc1e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-13T14:00:30.095718" + }, + "version": { + "content": [ + [ + "versions.yml:md5,85ff8911567b4e1245b883541ad3cc1e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-13T14:00:12.090836" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvkit/reference/tests/tags.yml b/modules/nf-core/cnvkit/reference/tests/tags.yml new file mode 100644 index 0000000000..55e13dd0a8 --- /dev/null +++ b/modules/nf-core/cnvkit/reference/tests/tags.yml @@ -0,0 +1,2 @@ +cnvkit/reference: + - "modules/nf-core/cnvkit/reference/**" diff --git a/modules/nf-core/gatk4/applyvqsr/main.nf b/modules/nf-core/gatk4/applyvqsr/main.nf index 0506e28185..047321b8e9 100644 --- a/modules/nf-core/gatk4/applyvqsr/main.nf +++ b/modules/nf-core/gatk4/applyvqsr/main.nf @@ -52,7 +52,7 @@ process GATK4_APPLYVQSR { stub: prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.vcf.gz + echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.vcf.gz.tbi cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/gatk4/applyvqsr/tests/allelspecificity.config b/modules/nf-core/gatk4/applyvqsr/tests/allelspecificity.config new file mode 100644 index 0000000000..ac368bd058 --- /dev/null +++ b/modules/nf-core/gatk4/applyvqsr/tests/allelspecificity.config @@ -0,0 +1,5 @@ +process { + withName: GATK4_APPLYVQSR { + ext.args = '--mode SNP --truth-sensitivity-filter-level 99.0 -AS' + } +} diff --git a/modules/nf-core/gatk4/applyvqsr/tests/main.nf.test b/modules/nf-core/gatk4/applyvqsr/tests/main.nf.test new file mode 100644 index 0000000000..104eb7f01b --- /dev/null +++ b/modules/nf-core/gatk4/applyvqsr/tests/main.nf.test @@ -0,0 +1,106 @@ +nextflow_process { + + name "Test Process GATK4_APPLYVQSR" + script "../main.nf" + process "GATK4_APPLYVQSR" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/applyvqsr" + + test("human - vcf") { + + config "./no-allelspecificity.config" + + when { + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2.recal', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2.recal.idx', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2.tranches', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") }, + { assert snapshot(file(process.out.tbi.get(0).get(1)).name).match() } + ) + } + + } + + test("human - vcf - allele-specific") { + + config "./allelspecificity.config" + + when { + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2_allele_specific.recal', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2_allele_specific.recal.idx', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2_allele_specific.tranches', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions_allelspecific") }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") }, + { assert snapshot(file(process.out.tbi.get(0).get(1)).name).match() } + ) + } + + } + + test("human - vcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2.recal', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2.recal.idx', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/variantrecalibrator/test2.tranches', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/applyvqsr/tests/main.nf.test.snap b/modules/nf-core/gatk4/applyvqsr/tests/main.nf.test.snap new file mode 100644 index 0000000000..ad2fe8be65 --- /dev/null +++ b/modules/nf-core/gatk4/applyvqsr/tests/main.nf.test.snap @@ -0,0 +1,95 @@ +{ + "human - vcf": { + "content": [ + "test.vcf.gz.tbi" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T13:31:50.727658" + }, + "human - vcf - allele-specific": { + "content": [ + "test.vcf.gz.tbi" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T13:29:42.331816" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,4a6890d486a62ce6f2edfd2f8961da4f" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T13:00:49.353138" + }, + "human - vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,4a6890d486a62ce6f2edfd2f8961da4f" + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,4a6890d486a62ce6f2edfd2f8961da4f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T13:01:24.370421" + }, + "versions_allelspecific": { + "content": [ + [ + "versions.yml:md5,4a6890d486a62ce6f2edfd2f8961da4f" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T13:01:08.104194" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/applyvqsr/tests/no-allelspecificity.config b/modules/nf-core/gatk4/applyvqsr/tests/no-allelspecificity.config new file mode 100644 index 0000000000..c08c918e1a --- /dev/null +++ b/modules/nf-core/gatk4/applyvqsr/tests/no-allelspecificity.config @@ -0,0 +1,5 @@ +process { + withName: GATK4_APPLYVQSR { + ext.args = '--mode SNP --truth-sensitivity-filter-level 99.0' + } +} diff --git a/modules/nf-core/gatk4/applyvqsr/tests/tags.yml b/modules/nf-core/gatk4/applyvqsr/tests/tags.yml new file mode 100644 index 0000000000..c65706301a --- /dev/null +++ b/modules/nf-core/gatk4/applyvqsr/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/applyvqsr: + - "modules/nf-core/gatk4/applyvqsr/**" diff --git a/modules/nf-core/gatk4/calculatecontamination/main.nf b/modules/nf-core/gatk4/calculatecontamination/main.nf index 80070e5ff3..1ca3fd9d45 100644 --- a/modules/nf-core/gatk4/calculatecontamination/main.nf +++ b/modules/nf-core/gatk4/calculatecontamination/main.nf @@ -43,4 +43,16 @@ process GATK4_CALCULATECONTAMINATION { gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') END_VERSIONS """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.contamination.table + touch ${prefix}.segmentation.table + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/gatk4/calculatecontamination/tests/main.nf.test b/modules/nf-core/gatk4/calculatecontamination/tests/main.nf.test new file mode 100644 index 0000000000..81f048f67b --- /dev/null +++ b/modules/nf-core/gatk4/calculatecontamination/tests/main.nf.test @@ -0,0 +1,106 @@ +nextflow_process { + + name "Test Process GATK4_CALCULATECONTAMINATION" + script "../main.nf" + process "GATK4_CALCULATECONTAMINATION" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/calculatecontamination" + + test("human - pileup-table") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test2.pileups.table', checkIfExists: true), + [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") }, + { assert snapshot(file(process.out.contamination.get(0).get(1)).readLines()[0]).match() } + ) + } + + } + + test("human - pileup-table - matched-pair") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test2.pileups.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.pileups.table', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions_pair") }, + { assert snapshot(file(process.out.contamination.get(0).get(1)).readLines()[0]).match() } + ) + } + + } + + test("human - pileup-table - segmentation") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test2.pileups.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.pileups.table', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions_segmentation") }, + { assert snapshot(file(process.out.contamination.get(0).get(1)).readLines()[0]).match("contamination") }, + { assert snapshot(file(process.out.segmentation.get(0).get(1)).readLines()[0]).match("segmentation") } + ) + } + + } + + test("human - pileup-table - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test2.pileups.table', checkIfExists: true), + [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/calculatecontamination/tests/main.nf.test.snap b/modules/nf-core/gatk4/calculatecontamination/tests/main.nf.test.snap new file mode 100644 index 0000000000..5c2930f948 --- /dev/null +++ b/modules/nf-core/gatk4/calculatecontamination/tests/main.nf.test.snap @@ -0,0 +1,127 @@ +{ + "versions_pair": { + "content": [ + [ + "versions.yml:md5,4a72b1da18f7045d470225881e7266a6" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T11:08:17.057861" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,4a72b1da18f7045d470225881e7266a6" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T11:08:07.193762" + }, + "versions_segmentation": { + "content": [ + [ + "versions.yml:md5,4a72b1da18f7045d470225881e7266a6" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T11:08:26.99069" + }, + "segmentation": { + "content": [ + "#SAMPLE=tumour" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:57:38.845287" + }, + "human - pileup-table": { + "content": [ + "sample\tcontamination\terror" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T11:09:16.292509" + }, + "human - pileup-table - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.contamination.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.segmentation.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,4a72b1da18f7045d470225881e7266a6" + ], + "contamination": [ + [ + { + "id": "test" + }, + "test.contamination.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "segmentation": [ + [ + { + "id": "test" + }, + "test.segmentation.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4a72b1da18f7045d470225881e7266a6" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:56:14.817045" + }, + "human - pileup-table - matched-pair": { + "content": [ + "sample\tcontamination\terror" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T11:09:26.408848" + }, + "contamination": { + "content": [ + "sample\tcontamination\terror" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:57:38.840651" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/calculatecontamination/tests/nextflow.config b/modules/nf-core/gatk4/calculatecontamination/tests/nextflow.config new file mode 100644 index 0000000000..db836b7f80 --- /dev/null +++ b/modules/nf-core/gatk4/calculatecontamination/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GATK4_CALCULATECONTAMINATION { + ext.args = { "--tumor-segmentation ${meta.id}.segmentation.table" } + } +} diff --git a/modules/nf-core/gatk4/calculatecontamination/tests/tags.yml b/modules/nf-core/gatk4/calculatecontamination/tests/tags.yml new file mode 100644 index 0000000000..29acb20487 --- /dev/null +++ b/modules/nf-core/gatk4/calculatecontamination/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/calculatecontamination: + - "modules/nf-core/gatk4/calculatecontamination/**" diff --git a/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test new file mode 100644 index 0000000000..a8a9c6d2e8 --- /dev/null +++ b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test @@ -0,0 +1,56 @@ +nextflow_process { + + name "Test Process GATK4_CREATESEQUENCEDICTIONARY" + script "../main.nf" + process "GATK4_CREATESEQUENCEDICTIONARY" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/createsequencedictionary" + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap new file mode 100644 index 0000000000..16735f9549 --- /dev/null +++ b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "sarscov2 - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.dict:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6" + ], + "dict": [ + [ + { + "id": "test" + }, + "genome.dict:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T10:16:16.34453" + }, + "sarscov2 - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.dict:md5,7362679f176e0f52add03c08f457f646" + ] + ], + "1": [ + "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6" + ], + "dict": [ + [ + { + "id": "test" + }, + "genome.dict:md5,7362679f176e0f52add03c08f457f646" + ] + ], + "versions": [ + "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T13:58:25.822068" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml b/modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml new file mode 100644 index 0000000000..035c5e4c74 --- /dev/null +++ b/modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/createsequencedictionary: + - "modules/nf-core/gatk4/createsequencedictionary/**" diff --git a/modules/nf-core/gatk4/filtermutectcalls/main.nf b/modules/nf-core/gatk4/filtermutectcalls/main.nf index 38dd44c786..0532ec0258 100644 --- a/modules/nf-core/gatk4/filtermutectcalls/main.nf +++ b/modules/nf-core/gatk4/filtermutectcalls/main.nf @@ -59,7 +59,7 @@ process GATK4_FILTERMUTECTCALLS { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.vcf.gz + echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.vcf.gz.tbi touch ${prefix}.vcf.gz.filteringStats.tsv diff --git a/modules/nf-core/gatk4/filtermutectcalls/tests/main.nf.test b/modules/nf-core/gatk4/filtermutectcalls/tests/main.nf.test new file mode 100644 index 0000000000..83c3703fcb --- /dev/null +++ b/modules/nf-core/gatk4/filtermutectcalls/tests/main.nf.test @@ -0,0 +1,176 @@ +nextflow_process { + + name "Test Process GATK4_FILTERMUTECTCALLS" + script "../main.nf" + process "GATK4_FILTERMUTECTCALLS" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/filtermutectcalls" + + test("human - vcf - base") { + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.stats', checkIfExists: true), + [], + [], + [], + [] + ] + + input[1] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[2] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions_base") }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") }, + { assert path(process.out.tbi.get(0).get(1)).linesGzip.toString().contains("TBI")}, + { assert snapshot(file(process.out.stats.get(0).get(1)).readLines()[0]).match() } + ) + } + + } + + test("human - vcf - with-files") { + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.stats', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test_test2_paired_mutect2_calls.artifact-prior.tar.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test_test2_paired.segmentation.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test_test2_paired.contamination.table', checkIfExists: true), + [] + ] + + input[1] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[2] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions_with-files") }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") }, + { assert path(process.out.tbi.get(0).get(1)).linesGzip.toString().contains("TBI")}, + { assert snapshot(file(process.out.stats.get(0).get(1)).readLines()[0..5]).match() } + ) + } + + } + + test("human - vcf - use-val") { + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.stats', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test_test2_paired_mutect2_calls.artifact-prior.tar.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test_test2_paired.segmentation.table', checkIfExists: true), + [], + '20.0' + ] + + input[1] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[2] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions_use-val") }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") }, + { assert path(process.out.tbi.get(0).get(1)).linesGzip.toString().contains("TBI")}, + { assert snapshot(file(process.out.stats.get(0).get(1)).readLines()[0]).match() } + ) + } + + } + + test("human - vcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.stats', checkIfExists: true), + [], + [], + [], + [] + ] + + input[1] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[2] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/filtermutectcalls/tests/main.nf.test.snap b/modules/nf-core/gatk4/filtermutectcalls/tests/main.nf.test.snap new file mode 100644 index 0000000000..1c39e3b5d7 --- /dev/null +++ b/modules/nf-core/gatk4/filtermutectcalls/tests/main.nf.test.snap @@ -0,0 +1,140 @@ +{ + "human - vcf - use-val": { + "content": [ + "#Ln prior of deletion of length 10=-20.72326583694641" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:46:03.887912" + }, + "versions_with-files": { + "content": [ + [ + "versions.yml:md5,1e86368bd682668a6777ccf2cfd90689" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:45:43.679571" + }, + "human - vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.filtered.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.filtered.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.filtered.vcf.gz.filteringStats.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,1e86368bd682668a6777ccf2cfd90689" + ], + "stats": [ + [ + { + "id": "test" + }, + "test.filtered.vcf.gz.filteringStats.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.filtered.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.filtered.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,1e86368bd682668a6777ccf2cfd90689" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:46:32.666273" + }, + "versions_use-val": { + "content": [ + [ + "versions.yml:md5,1e86368bd682668a6777ccf2cfd90689" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:46:03.876073" + }, + "versions_base": { + "content": [ + [ + "versions.yml:md5,1e86368bd682668a6777ccf2cfd90689" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:47:39.930795" + }, + "human - vcf - with-files": { + "content": [ + [ + "#Ln prior of deletion of length 10=-20.72326583694641", + "#Ln prior of deletion of length 9=-20.72326583694641", + "#Ln prior of deletion of length 8=-20.72326583694641", + "#Ln prior of deletion of length 7=-20.72326583694641", + "#Ln prior of deletion of length 6=-20.72326583694641", + "#Ln prior of deletion of length 5=-20.72326583694641" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:45:43.699286" + }, + "human - vcf - base": { + "content": [ + "#Ln prior of deletion of length 10=-20.72326583694641" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-15T12:47:39.949405" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/filtermutectcalls/tests/nextflow.config b/modules/nf-core/gatk4/filtermutectcalls/tests/nextflow.config new file mode 100644 index 0000000000..12fa58fb34 --- /dev/null +++ b/modules/nf-core/gatk4/filtermutectcalls/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GATK4_FILTERMUTECTCALLS { + ext.prefix = { "${meta.id}.filtered" } + } +} diff --git a/modules/nf-core/gatk4/filtermutectcalls/tests/tags.yml b/modules/nf-core/gatk4/filtermutectcalls/tests/tags.yml new file mode 100644 index 0000000000..4473103181 --- /dev/null +++ b/modules/nf-core/gatk4/filtermutectcalls/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/filtermutectcalls: + - "modules/nf-core/gatk4/filtermutectcalls/**" diff --git a/modules/nf-core/gatk4/getpileupsummaries/main.nf b/modules/nf-core/gatk4/getpileupsummaries/main.nf index 6006e8dd42..43611271e0 100644 --- a/modules/nf-core/gatk4/getpileupsummaries/main.nf +++ b/modules/nf-core/gatk4/getpileupsummaries/main.nf @@ -50,4 +50,15 @@ process GATK4_GETPILEUPSUMMARIES { gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.pileups.table + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/gatk4/getpileupsummaries/tests/main.nf.test b/modules/nf-core/gatk4/getpileupsummaries/tests/main.nf.test new file mode 100644 index 0000000000..79cd6344cb --- /dev/null +++ b/modules/nf-core/gatk4/getpileupsummaries/tests/main.nf.test @@ -0,0 +1,104 @@ +nextflow_process { + + name "Test Process GATK4_GETPILEUPSUMMARIES" + script "../main.nf" + process "GATK4_GETPILEUPSUMMARIES" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/getpileupsummaries" + + test("human - bam") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam', checkIfExists: true) , + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.interval_list', checkIfExists: true) + ] + input[1] = [[],[]] // fasta + input[2] = [[],[]] // fai + input[3] = [[],[]] // dict + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz', checkIfExists: true) + input[5] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("human - cram") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true) , + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.interval_list', checkIfExists: true) + ] + input[1] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[2] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict', checkIfExists: true) + ] + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz', checkIfExists: true) + input[5] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("human - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam', checkIfExists: true) , + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.interval_list', checkIfExists: true) + ] + input[1] = [[],[]] // fasta + input[2] = [[],[]] // fai + input[3] = [[],[]] // dict + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz', checkIfExists: true) + input[5] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/getpileupsummaries/tests/main.nf.test.snap b/modules/nf-core/gatk4/getpileupsummaries/tests/main.nf.test.snap new file mode 100644 index 0000000000..d9304bcdc5 --- /dev/null +++ b/modules/nf-core/gatk4/getpileupsummaries/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "human - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pileups.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,a243840d67560fd6de1209a0aa99401a" + ], + "table": [ + [ + { + "id": "test" + }, + "test.pileups.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,a243840d67560fd6de1209a0aa99401a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T10:18:25.186463" + }, + "human - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pileups.table:md5,8e0ca6f66e112bd2f7ec1d31a2d62469" + ] + ], + "1": [ + "versions.yml:md5,a243840d67560fd6de1209a0aa99401a" + ], + "table": [ + [ + { + "id": "test" + }, + "test.pileups.table:md5,8e0ca6f66e112bd2f7ec1d31a2d62469" + ] + ], + "versions": [ + "versions.yml:md5,a243840d67560fd6de1209a0aa99401a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T14:14:59.7414" + }, + "human - cram": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pileups.table:md5,8e0ca6f66e112bd2f7ec1d31a2d62469" + ] + ], + "1": [ + "versions.yml:md5,a243840d67560fd6de1209a0aa99401a" + ], + "table": [ + [ + { + "id": "test" + }, + "test.pileups.table:md5,8e0ca6f66e112bd2f7ec1d31a2d62469" + ] + ], + "versions": [ + "versions.yml:md5,a243840d67560fd6de1209a0aa99401a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T14:15:25.680928" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/getpileupsummaries/tests/tags.yml b/modules/nf-core/gatk4/getpileupsummaries/tests/tags.yml new file mode 100644 index 0000000000..bac8007d9e --- /dev/null +++ b/modules/nf-core/gatk4/getpileupsummaries/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/getpileupsummaries: + - "modules/nf-core/gatk4/getpileupsummaries/**" diff --git a/modules/nf-core/gatk4/mergemutectstats/main.nf b/modules/nf-core/gatk4/mergemutectstats/main.nf index af41d61507..06bce31e31 100644 --- a/modules/nf-core/gatk4/mergemutectstats/main.nf +++ b/modules/nf-core/gatk4/mergemutectstats/main.nf @@ -41,4 +41,15 @@ process GATK4_MERGEMUTECTSTATS { gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.vcf.gz.stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/gatk4/mergemutectstats/tests/main.nf.test b/modules/nf-core/gatk4/mergemutectstats/tests/main.nf.test new file mode 100644 index 0000000000..5f5ab40233 --- /dev/null +++ b/modules/nf-core/gatk4/mergemutectstats/tests/main.nf.test @@ -0,0 +1,57 @@ +nextflow_process { + + name "Test Process GATK4_MERGEMUTECTSTATS" + script "../main.nf" + process "GATK4_MERGEMUTECTSTATS" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/mergemutectstats" + + test("human - stats, tsv") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.stats', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") }, + { assert snapshot(file(process.out.stats.get(0).get(1)).readLines()[0]).match() } + ) + } + + } + + test("human - stats,tsv - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.stats', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/mergemutectstats/tests/main.nf.test.snap b/modules/nf-core/gatk4/mergemutectstats/tests/main.nf.test.snap new file mode 100644 index 0000000000..d0279f272e --- /dev/null +++ b/modules/nf-core/gatk4/mergemutectstats/tests/main.nf.test.snap @@ -0,0 +1,59 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,7298d6e6e18024f7c2ed0fe38d259a52" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T10:13:56.2195" + }, + "human - stats,tsv - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,7298d6e6e18024f7c2ed0fe38d259a52" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,7298d6e6e18024f7c2ed0fe38d259a52" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T10:14:10.058769" + }, + "human - stats, tsv": { + "content": [ + "statistic\tvalue" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.0" + }, + "timestamp": "2024-05-16T10:13:56.262881" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/mergemutectstats/tests/tags.yml b/modules/nf-core/gatk4/mergemutectstats/tests/tags.yml new file mode 100644 index 0000000000..b750e551f9 --- /dev/null +++ b/modules/nf-core/gatk4/mergemutectstats/tests/tags.yml @@ -0,0 +1,2 @@ +gatk4/mergemutectstats: + - "modules/nf-core/gatk4/mergemutectstats/**" diff --git a/modules/nf-core/gawk/environment.yml b/modules/nf-core/gawk/environment.yml index 34513c7f4a..3d98a08b0c 100644 --- a/modules/nf-core/gawk/environment.yml +++ b/modules/nf-core/gawk/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - anaconda::gawk=5.1.0 + - conda-forge::gawk=5.3.0 diff --git a/modules/nf-core/gawk/main.nf b/modules/nf-core/gawk/main.nf index 578b448c4f..ca4689297c 100644 --- a/modules/nf-core/gawk/main.nf +++ b/modules/nf-core/gawk/main.nf @@ -4,8 +4,8 @@ process GAWK { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' : - 'biocontainers/gawk:5.1.0' }" + 'https://depot.galaxyproject.org/singularity/gawk:5.3.0' : + 'biocontainers/gawk:5.3.0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/gawk/tests/main.nf.test.snap b/modules/nf-core/gawk/tests/main.nf.test.snap index ce20747890..4f3a759c62 100644 --- a/modules/nf-core/gawk/tests/main.nf.test.snap +++ b/modules/nf-core/gawk/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,4c320d8c98ca80690afd7651da1ba520" + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ], "output": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,4c320d8c98ca80690afd7651da1ba520" + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.02.0" + "nextflow": "24.03.0" }, - "timestamp": "2024-04-05T11:00:28.097563" + "timestamp": "2024-05-17T15:20:02.495430346" }, "convert fasta to bed": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,4c320d8c98ca80690afd7651da1ba520" + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ], "output": [ [ @@ -55,14 +55,14 @@ ] ], "versions": [ - "versions.yml:md5,4c320d8c98ca80690afd7651da1ba520" + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.02.0" + "nextflow": "24.03.0" }, - "timestamp": "2024-04-05T10:28:15.625869" + "timestamp": "2024-05-17T15:19:53.291809648" } } \ No newline at end of file diff --git a/modules/nf-core/ngscheckmate/ncm/main.nf b/modules/nf-core/ngscheckmate/ncm/main.nf index 99921ddcc5..d5500a257c 100644 --- a/modules/nf-core/ngscheckmate/ncm/main.nf +++ b/modules/nf-core/ngscheckmate/ncm/main.nf @@ -48,6 +48,7 @@ process NGSCHECKMATE_NCM { """ stub: + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "$meta.id" """ touch ${prefix}_output_corr_matrix.txt diff --git a/modules/nf-core/ngscheckmate/ncm/tests/bam.config b/modules/nf-core/ngscheckmate/ncm/tests/bam.config new file mode 100644 index 0000000000..09805c1614 --- /dev/null +++ b/modules/nf-core/ngscheckmate/ncm/tests/bam.config @@ -0,0 +1,5 @@ +process { + withName: NGSCHECKMATE_NCM { + ext.args = '-B' + } +} diff --git a/modules/nf-core/ngscheckmate/ncm/tests/main.nf.test b/modules/nf-core/ngscheckmate/ncm/tests/main.nf.test new file mode 100644 index 0000000000..9dafbdf6df --- /dev/null +++ b/modules/nf-core/ngscheckmate/ncm/tests/main.nf.test @@ -0,0 +1,184 @@ +nextflow_process { + + name "Test Process NGSCHECKMATE_NCM" + script "../main.nf" + process "NGSCHECKMATE_NCM" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "ngscheckmate" + tag "ngscheckmate/ncm" + tag "bedtools/makewindows" + tag "bcftools/mpileup" + + setup { + + run("BEDTOOLS_MAKEWINDOWS") { + script "../../../bedtools/makewindows/main.nf" + process { + """ + input[0] = [ [ id:'test' ], + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + ] + """ + } + } + + run("BCFTOOLS_MPILEUP", alias: "BCFTOOLS_MPILEUP1") { + script "../../../bcftools/mpileup/main.nf" + process { + """ + input[0] = [ + [ id:'test1' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + ] + input[1] = [ [ id:'sarscov2' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + input[2] = false + """ + } + } + + run("BCFTOOLS_MPILEUP", alias: "BCFTOOLS_MPILEUP2") { + script "../../../bcftools/mpileup/main.nf" + process { + """ + input[0] = [ + [ id:'test2' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + ] + input[1] = [ [ id:'sarscov2' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + input[2] = false + """ + } + } + + } + + + test("sarscov2 - bam") { + config "./bam.config" + when { + process { + """ + input[0] = [ [ id: 'combined_bams' ], + [file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'] , checkIfExists: true ), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'] , checkIfExists: true ), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'] , checkIfExists: true ), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true ) + ] + ] + input[1] = BEDTOOLS_MAKEWINDOWS.out.bed + input[2] = [ [ id:'sarscov2' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.corr_matrix, + process.out.matched, + process.out.all, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - vcf") { + config "./vcf.config" + when { + process { + """ + input[0] = BCFTOOLS_MPILEUP1.out.vcf.combine(BCFTOOLS_MPILEUP2.out.vcf.map{it[1]}).map{meta, one, two -> [meta, [one, two]]}.map{meta, stuff -> [meta, stuff.flatten()]} + input[1] = BEDTOOLS_MAKEWINDOWS.out.bed + input[2] = [ [ id:'sarscov2' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.corr_matrix, + process.out.matched, + process.out.all, + file(process.out.pdf[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + config "./bam.config" + when { + process { + """ + input[0] = [ [ id: 'combined_bams' ], + [file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'] , checkIfExists: true ), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'] , checkIfExists: true ), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'] , checkIfExists: true ), + file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true ) + ] + ] + input[1] = BEDTOOLS_MAKEWINDOWS.out.bed + input[2] = [ [ id:'sarscov2' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - vcf - stub") { + + options "-stub" + config "./vcf.config" + when { + process { + """ + input[0] = BCFTOOLS_MPILEUP1.out.vcf.combine(BCFTOOLS_MPILEUP2.out.vcf.map{it[1]}) + input[1] = BEDTOOLS_MAKEWINDOWS.out.bed + input[2] = [ [ id:'sarscov2' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/ngscheckmate/ncm/tests/main.nf.test.snap b/modules/nf-core/ngscheckmate/ncm/tests/main.nf.test.snap new file mode 100644 index 0000000000..46a98ccc98 --- /dev/null +++ b/modules/nf-core/ngscheckmate/ncm/tests/main.nf.test.snap @@ -0,0 +1,249 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "combined_bams" + }, + "combined_bams_output_corr_matrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "combined_bams" + }, + "combined_bams_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "combined_bams" + }, + "combined_bams_all.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "combined_bams" + }, + "combined_bams.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,7ac92d9cbf4fc44b3253832f3a8b2a80" + ], + "all": [ + [ + { + "id": "combined_bams" + }, + "combined_bams_all.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "corr_matrix": [ + [ + { + "id": "combined_bams" + }, + "combined_bams_output_corr_matrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "matched": [ + [ + { + "id": "combined_bams" + }, + "combined_bams_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pdf": [ + [ + { + "id": "combined_bams" + }, + "combined_bams.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + + ], + "versions": [ + "versions.yml:md5,7ac92d9cbf4fc44b3253832f3a8b2a80" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-05-22T15:02:55.532427413" + }, + "sarscov2 - vcf": { + "content": [ + [ + [ + { + "id": "test1" + }, + "test1_output_corr_matrix.txt:md5,0c86bdad2721c470fe6be119f291c8e5" + ] + ], + [ + [ + { + "id": "test1" + }, + "test1_matched.txt:md5,fd74956dcac279b6f58e82ea73e344f8" + ] + ], + [ + [ + { + "id": "test1" + }, + "test1_all.txt:md5,fd74956dcac279b6f58e82ea73e344f8" + ] + ], + "test1.pdf", + [ + "versions.yml:md5,7ac92d9cbf4fc44b3253832f3a8b2a80" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-05-22T19:53:29.123160766" + }, + "sarscov2 - bam": { + "content": [ + [ + [ + { + "id": "combined_bams" + }, + "combined_bams_output_corr_matrix.txt:md5,b8bfd203232680b746ac91ccb290b5e3" + ] + ], + [ + [ + { + "id": "combined_bams" + }, + "combined_bams_matched.txt:md5,14d0b35765e127aab0ffa5ea5406b4ab" + ] + ], + [ + [ + { + "id": "combined_bams" + }, + "combined_bams_all.txt:md5,14d0b35765e127aab0ffa5ea5406b4ab" + ] + ], + [ + "versions.yml:md5,7ac92d9cbf4fc44b3253832f3a8b2a80" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-05-22T16:04:35.032277154" + }, + "sarscov2 - vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test1" + }, + "test1_output_corr_matrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test1" + }, + "test1_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test1" + }, + "test1_all.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test1" + }, + "test1.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,7ac92d9cbf4fc44b3253832f3a8b2a80" + ], + "all": [ + [ + { + "id": "test1" + }, + "test1_all.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "corr_matrix": [ + [ + { + "id": "test1" + }, + "test1_output_corr_matrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "matched": [ + [ + { + "id": "test1" + }, + "test1_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pdf": [ + [ + { + "id": "test1" + }, + "test1.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + + ], + "versions": [ + "versions.yml:md5,7ac92d9cbf4fc44b3253832f3a8b2a80" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-05-22T15:20:40.816531052" + } +} \ No newline at end of file diff --git a/modules/nf-core/ngscheckmate/ncm/tests/nextflow.config b/modules/nf-core/ngscheckmate/ncm/tests/nextflow.config new file mode 100644 index 0000000000..cf3d42a0e9 --- /dev/null +++ b/modules/nf-core/ngscheckmate/ncm/tests/nextflow.config @@ -0,0 +1,15 @@ +process { + withName: BEDTOOLS_MAKEWINDOWS { + ext.args = '-w 1' + ext.prefix = 'test_split' + } + withName: BCFTOOLS_MPILEUP1 { + ext.args2 = '--no-version --ploidy 1 --multiallelic-caller' + ext.args3 = '--no-version' + } + withName: BCFTOOLS_MPILEUP2 { + ext.args2 = '--no-version --ploidy 1 --multiallelic-caller' + ext.args3 = '--no-version' + } + +} diff --git a/modules/nf-core/ngscheckmate/ncm/tests/tags.yml b/modules/nf-core/ngscheckmate/ncm/tests/tags.yml new file mode 100644 index 0000000000..f9f6044516 --- /dev/null +++ b/modules/nf-core/ngscheckmate/ncm/tests/tags.yml @@ -0,0 +1,2 @@ +ngscheckmate/ncm: + - "modules/nf-core/ngscheckmate/ncm/**" diff --git a/modules/nf-core/ngscheckmate/ncm/tests/vcf.config b/modules/nf-core/ngscheckmate/ncm/tests/vcf.config new file mode 100644 index 0000000000..67053c14da --- /dev/null +++ b/modules/nf-core/ngscheckmate/ncm/tests/vcf.config @@ -0,0 +1,5 @@ + process { + withName: NGSCHECKMATE_NCM { + ext.args = '-V' + } + }