From b8fcc632823e8512d4a86b9da6252dc487eb1677 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Tue, 14 Jul 2026 15:08:01 +0200 Subject: [PATCH] bump samtools to 1.24 --- CHANGELOG.md | 2 + conf/modules.config | 2 +- modules.json | 14 +- .../nf-core/samtools/convert/environment.yml | 4 +- modules/nf-core/samtools/convert/main.nf | 4 +- .../samtools/convert/samtools-convert.diff | 2 +- .../samtools/convert/tests/main.nf.test | 28 +-- .../samtools/convert/tests/main.nf.test.snap | 18 +- .../nf-core/samtools/coverage/environment.yml | 4 +- modules/nf-core/samtools/coverage/main.nf | 5 +- .../samtools/coverage/samtools-coverage.diff | 2 +- .../samtools/coverage/tests/main.nf.test | 12 +- .../samtools/coverage/tests/main.nf.test.snap | 45 ++--- .../nf-core/samtools/flagstat/environment.yml | 4 +- modules/nf-core/samtools/flagstat/main.nf | 4 +- .../samtools/flagstat/tests/main.nf.test | 16 +- .../samtools/flagstat/tests/main.nf.test.snap | 52 +----- .../nf-core/samtools/idxstats/environment.yml | 4 +- modules/nf-core/samtools/idxstats/main.nf | 4 +- .../samtools/idxstats/tests/main.nf.test | 17 +- .../samtools/idxstats/tests/main.nf.test.snap | 12 +- .../nf-core/samtools/sormadup/environment.yml | 4 +- modules/nf-core/samtools/sormadup/main.nf | 4 +- .../samtools/sormadup/samtools-sormadup.diff | 2 +- .../samtools/sormadup/tests/main.nf.test | 16 +- .../samtools/sormadup/tests/main.nf.test.snap | 92 ++------- modules/nf-core/samtools/sort/environment.yml | 4 +- modules/nf-core/samtools/sort/main.nf | 4 +- .../nf-core/samtools/sort/samtools-sort.diff | 4 +- .../nf-core/samtools/sort/tests/main.nf.test | 175 +++++++----------- .../samtools/sort/tests/main.nf.test.snap | 174 ++++++----------- .../nf-core/samtools/stats/environment.yml | 4 +- modules/nf-core/samtools/stats/main.nf | 4 +- .../samtools/stats/samtools-stats.diff | 2 +- .../nf-core/samtools/stats/tests/main.nf.test | 28 +-- .../samtools/stats/tests/main.nf.test.snap | 108 +++-------- 36 files changed, 306 insertions(+), 574 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b717ea18..c5c0d775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add `apple` profile to enable the use of Apple containers. - Drop `hook_url` parameter. To configure messaging services, use a custom config in tandem with the `nf-teams`/`nf-slack` plugin instead. - Drop `run_coverage` and add `qc_mode` parameter. Thorough coveage analysis is now included in the `qc_mode` parameter, which can be set to `basic` or `full`. Basic QC includes samtools flagstat, idxstats and mosdepth. Full QC includes samtools stats, samtools coverage, riker metrics and panel coverage in addition to basic QC. +- Bump `samtools` module to 1.24. +- Add UMI consensus subworkflow using `fgumi`. ## 3.0.2 diff --git a/conf/modules.config b/conf/modules.config index 9da06635..d2afb0b2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -182,7 +182,7 @@ process { "-s", "--json", "-d 2500", - meta.umi_aware ? "--barcode-name" : "", + meta.umi_aware ? "--barcode-name --move-umi-to-tag" : "", "--write-index", "--output-fmt cram,version=3.0", "--output-fmt-option archive", diff --git a/modules.json b/modules.json index ccf88121..9f8d4d90 100644 --- a/modules.json +++ b/modules.json @@ -112,41 +112,41 @@ }, "samtools/convert": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/convert/samtools-convert.diff" }, "samtools/coverage": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/coverage/samtools-coverage.diff" }, "samtools/flagstat": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"] }, "samtools/sormadup": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/sormadup/samtools-sormadup.diff" }, "samtools/sort": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/sort/samtools-sort.diff" }, "samtools/stats": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "9339809fcb90af8a8b7051e6cd914894d5c52002", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/stats/samtools-stats.diff" }, diff --git a/modules/nf-core/samtools/convert/environment.yml b/modules/nf-core/samtools/convert/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/convert/environment.yml +++ b/modules/nf-core/samtools/convert/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/convert/main.nf b/modules/nf-core/samtools/convert/main.nf index f4afd726..5c92969a 100644 --- a/modules/nf-core/samtools/convert/main.nf +++ b/modules/nf-core/samtools/convert/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_CONVERT { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(input), path(index), path(fasta), path(fai) diff --git a/modules/nf-core/samtools/convert/samtools-convert.diff b/modules/nf-core/samtools/convert/samtools-convert.diff index 6f03ebec..6e7ebc1a 100644 --- a/modules/nf-core/samtools/convert/samtools-convert.diff +++ b/modules/nf-core/samtools/convert/samtools-convert.diff @@ -5,7 +5,7 @@ Changes in 'samtools/convert/main.nf': --- modules/nf-core/samtools/convert/main.nf +++ modules/nf-core/samtools/convert/main.nf @@ -8,8 +8,7 @@ - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: - tuple val(meta), path(input), path(index) diff --git a/modules/nf-core/samtools/convert/tests/main.nf.test b/modules/nf-core/samtools/convert/tests/main.nf.test index 638caabe..a4848662 100644 --- a/modules/nf-core/samtools/convert/tests/main.nf.test +++ b/modules/nf-core/samtools/convert/tests/main.nf.test @@ -30,11 +30,13 @@ nextflow_process { then { assert process.success - assert snapshot( - process.out.cram.collect{ meta, cram_file -> [ meta, file(cram_file).name] }, - process.out.crai.collect{ meta, crai_file -> [ meta, file(crai_file).name] }, - ["versions_samtools": process.out.versions_samtools] - ).match() + assertAll( + { assert snapshot( + process.out.cram.collect{ meta, cram_file -> [ meta, file(cram_file).name] }, + process.out.crai.collect{ meta, crai_file -> [ meta, file(crai_file).name] }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } + ) } } @@ -59,11 +61,13 @@ nextflow_process { then { assert process.success - assert snapshot( - process.out.bam.collect{ meta, bam_file -> [ meta, file(bam_file).name, bam(bam_file).getReadsMD5()] }, - process.out.bai.collect{ meta, bai_file -> [ meta, file(bai_file).name] }, - ["versions_samtools": process.out.versions_samtools] - ).match() + assertAll( + { assert snapshot( + process.out.bam.collect{ meta, bam_file -> [ meta, file(bam_file).name, bam(bam_file).getReadsMD5()] }, + process.out.bai.collect{ meta, bai_file -> [ meta, file(bai_file).name] }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } + ) } } @@ -90,7 +94,9 @@ nextflow_process { then { assert process.success - assert snapshot(sanitizeOutput(process.out)).match() + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match() } + ) } } } diff --git a/modules/nf-core/samtools/convert/tests/main.nf.test.snap b/modules/nf-core/samtools/convert/tests/main.nf.test.snap index 0f535753..dd23cbb4 100644 --- a/modules/nf-core/samtools/convert/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/convert/tests/main.nf.test.snap @@ -22,16 +22,16 @@ [ "SAMTOOLS_CONVERT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T08:55:56.895841", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:55:56.895841" + } }, "homo_sapiens - [cram, crai], [fasta, fai]": { "content": [ @@ -57,16 +57,16 @@ [ "SAMTOOLS_CONVERT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T08:56:03.056799", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:56:03.056799" + } }, "sarscov2 - [bam, bai], [fasta, fai] - stub": { "content": [ @@ -97,15 +97,15 @@ [ "SAMTOOLS_CONVERT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T08:56:09.165934", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:56:09.165934" + } } } \ No newline at end of file diff --git a/modules/nf-core/samtools/coverage/environment.yml b/modules/nf-core/samtools/coverage/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/coverage/environment.yml +++ b/modules/nf-core/samtools/coverage/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/coverage/main.nf b/modules/nf-core/samtools/coverage/main.nf index 3d7023de..f96889f9 100644 --- a/modules/nf-core/samtools/coverage/main.nf +++ b/modules/nf-core/samtools/coverage/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_COVERAGE { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(input), path(input_index), path(fasta), path(fai) @@ -38,5 +38,6 @@ process SAMTOOLS_COVERAGE { def prefix = task.ext.prefix ?: "${meta.id}" """ echo "#rname\tstartpos\tendpos\tnumreads\tcovbases\tcoverage\tmeandepth\tmeanbaseq\tmeanmapq" > ${prefix}.txt + echo "chr21\t16570000\t16610000\t8741\t39996\t99.9875\t32.4854\t29.6\t59.8" >> ${prefix}.txt """ } diff --git a/modules/nf-core/samtools/coverage/samtools-coverage.diff b/modules/nf-core/samtools/coverage/samtools-coverage.diff index b4d61678..7c57286e 100644 --- a/modules/nf-core/samtools/coverage/samtools-coverage.diff +++ b/modules/nf-core/samtools/coverage/samtools-coverage.diff @@ -5,7 +5,7 @@ Changes in 'samtools/coverage/main.nf': --- modules/nf-core/samtools/coverage/main.nf +++ modules/nf-core/samtools/coverage/main.nf @@ -8,8 +8,7 @@ - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: - tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/coverage/tests/main.nf.test b/modules/nf-core/samtools/coverage/tests/main.nf.test index c59ba4f8..23e5397d 100644 --- a/modules/nf-core/samtools/coverage/tests/main.nf.test +++ b/modules/nf-core/samtools/coverage/tests/main.nf.test @@ -25,8 +25,8 @@ nextflow_process { } then { + assert process.success assertAll( - { assert process.success }, { assert snapshot(sanitizeOutput(process.out)).match() } ) } @@ -52,9 +52,9 @@ nextflow_process { } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -111,7 +111,7 @@ nextflow_process { } - test("test_samtools_coverage_stub") { + test("test_samtools_coverage - stub") { options "-stub" @@ -133,12 +133,10 @@ nextflow_process { } then { + assert process.success assertAll( - { assert process.success }, { assert snapshot(sanitizeOutput(process.out)).match() } ) } - } - } diff --git a/modules/nf-core/samtools/coverage/tests/main.nf.test.snap b/modules/nf-core/samtools/coverage/tests/main.nf.test.snap index 359a9599..b460093c 100644 --- a/modules/nf-core/samtools/coverage/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/coverage/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "test_samtools_coverage_stub": { + "test_samtools_coverage - stub": { "content": [ { "coverage": [ @@ -7,23 +7,23 @@ { "id": "test" }, - "test.txt:md5,ea885d54c0223dff86e2e44f5bc08374" + "test.txt:md5,5b5fbaf1b8a9645ab2e9d34891ae165a" ] ], "versions_samtools": [ [ "SAMTOOLS_COVERAGE", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-05-21T15:45:07.736128337", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:56:33.66881" + "nf-test": "0.9.5", + "nextflow": "26.04.1" + } }, "test_samtools_coverage_bam": { "content": [ @@ -40,35 +40,20 @@ [ "SAMTOOLS_COVERAGE", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T08:56:13.846408", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:56:13.846408" + } }, "test_samtools_coverage_cram": { "content": [ { - "0": [ - [ - { - "id": "test" - }, - "test.txt:md5,ce896534bac51cfcc97e5508ae907e99" - ] - ], - "1": [ - [ - "SAMTOOLS_COVERAGE", - "samtools", - "1.23.1" - ] - ], "coverage": [ [ { @@ -81,15 +66,15 @@ [ "SAMTOOLS_COVERAGE", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T15:50:47.021688859", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:56:19.040435" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/flagstat/environment.yml +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index 2d9588b9..f4a0b3b3 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FLAGSTAT { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test index 3b648a37..dbf7c996 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test @@ -13,7 +13,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) @@ -23,9 +23,9 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -37,7 +37,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) @@ -47,9 +47,9 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index b110c47c..f572957b 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -2,22 +2,6 @@ "BAM - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" - ] - ], - "1": [ - [ - "SAMTOOLS_FLAGSTAT", - "samtools", - "1.23.1" - ] - ], "flagstat": [ [ { @@ -31,36 +15,20 @@ [ "SAMTOOLS_FLAGSTAT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T15:53:38.552555213", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:59:26.188788" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "BAM": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" - ] - ], - "1": [ - [ - "SAMTOOLS_FLAGSTAT", - "samtools", - "1.23.1" - ] - ], "flagstat": [ [ { @@ -74,15 +42,15 @@ [ "SAMTOOLS_FLAGSTAT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T15:53:33.931611374", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:59:20.212002" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 4d74768a..58d31062 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IDXSTATS { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test index c990cd55..cc204d6a 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -13,7 +13,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) @@ -23,8 +23,8 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( process.out.idxstats, process.out.findAll { key, val -> key.startsWith('versions') } @@ -34,11 +34,13 @@ nextflow_process { } test("bam - stub") { + options "-stub" + when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) @@ -48,12 +50,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( process.out.idxstats, process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } - }} + } +} diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index 7bcde2fd..2dba681c 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -15,16 +15,16 @@ [ "SAMTOOLS_IDXSTATS", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T08:59:41.877526", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:59:41.877526" + } }, "bam": { "content": [ @@ -42,15 +42,15 @@ [ "SAMTOOLS_IDXSTATS", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T08:59:34.725514", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T08:59:34.725514" + } } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sormadup/environment.yml b/modules/nf-core/samtools/sormadup/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/sormadup/environment.yml +++ b/modules/nf-core/samtools/sormadup/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/sormadup/main.nf b/modules/nf-core/samtools/sormadup/main.nf index c0a56ee3..1d6765a3 100644 --- a/modules/nf-core/samtools/sormadup/main.nf +++ b/modules/nf-core/samtools/sormadup/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_SORMADUP { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(input), path(fasta), path(fai) diff --git a/modules/nf-core/samtools/sormadup/samtools-sormadup.diff b/modules/nf-core/samtools/sormadup/samtools-sormadup.diff index 115e4ade..9ed3ebe5 100644 --- a/modules/nf-core/samtools/sormadup/samtools-sormadup.diff +++ b/modules/nf-core/samtools/sormadup/samtools-sormadup.diff @@ -5,7 +5,7 @@ Changes in 'samtools/sormadup/main.nf': --- modules/nf-core/samtools/sormadup/main.nf +++ modules/nf-core/samtools/sormadup/main.nf @@ -8,8 +8,7 @@ - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: - tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/sormadup/tests/main.nf.test b/modules/nf-core/samtools/sormadup/tests/main.nf.test index f9bc34e5..61e5d178 100644 --- a/modules/nf-core/samtools/sormadup/tests/main.nf.test +++ b/modules/nf-core/samtools/sormadup/tests/main.nf.test @@ -16,7 +16,6 @@ nextflow_process { input[0] = [ [id: 'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) ] input[1] = [ [ id:'fasta' ], @@ -30,7 +29,7 @@ nextflow_process { then { assert process.success assertAll( - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -46,7 +45,6 @@ nextflow_process { input[0] = [ [id: 'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) ] input[1] = [ [ id:'fasta' ], @@ -58,15 +56,12 @@ nextflow_process { } then { - assert process.success def fasta = params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta' + assert process.success assertAll( { assert snapshot( - cram( - process.out.cram[0][1], - fasta, - ).getReadsMD5(), + cram(process.out.cram[0][1], fasta).getReadsMD5(), file(process.out.crai[0][1]).name, process.out.metrics, process.out.findAll { key, val -> key.startsWith("versions") } @@ -87,7 +82,6 @@ nextflow_process { input[0] = [ [id: 'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) ] input[1] = [ [ id:'fasta' ], @@ -101,10 +95,8 @@ nextflow_process { then { assert process.success assertAll( - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } - } - } diff --git a/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap b/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap index e774fc12..5ce63333 100644 --- a/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap @@ -2,38 +2,6 @@ "sarscov2 - bam - stub": { "content": [ { - "0": [ - [ - { - "id": "test" - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - [ - { - "id": "test" - }, - "test.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "5": [ - [ - "SAMTOOLS_SORMADUP", - "samtools", - "1.23.1" - ] - ], "bam": [ [ { @@ -63,16 +31,16 @@ [ "SAMTOOLS_SORMADUP", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T16:09:23.851588322", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:03:58.177246" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "sarscov2 - cram": { "content": [ @@ -91,58 +59,26 @@ [ "SAMTOOLS_SORMADUP", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T09:03:52.7035", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:03:52.7035" + } }, "sarscov2 - bam": { "content": [ { - "0": [ - [ - { - "id": "test" - }, - "test.bam:md5,706f3bc699aa89ae43868fcfd38a0d71" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - [ - { - "id": "test" - }, - "test.metrics:md5,6093d8853805578a1868f22ff68177e7" - ] - ], - "5": [ - [ - "SAMTOOLS_SORMADUP", - "samtools", - "1.23.1" - ] - ], "bam": [ [ { "id": "test" }, - "test.bam:md5,706f3bc699aa89ae43868fcfd38a0d71" + "test.bam:md5,5ba398077fcb6258f65477176d82681e" ] ], "crai": [ @@ -166,15 +102,15 @@ [ "SAMTOOLS_SORMADUP", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T16:09:12.316289173", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:03:46.127216" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 271f1a91..43f1de5f 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(bam), path(fasta), path(fai) diff --git a/modules/nf-core/samtools/sort/samtools-sort.diff b/modules/nf-core/samtools/sort/samtools-sort.diff index 431117eb..974bb5bb 100644 --- a/modules/nf-core/samtools/sort/samtools-sort.diff +++ b/modules/nf-core/samtools/sort/samtools-sort.diff @@ -5,10 +5,10 @@ Changes in 'samtools/sort/main.nf': --- modules/nf-core/samtools/sort/main.nf +++ modules/nf-core/samtools/sort/main.nf @@ -8,8 +8,7 @@ - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: -- tuple val(meta), path(bam) +- tuple val(meta), path(bam, stageAs: "?/*") - tuple val(meta2), path(fasta), path(fai) + tuple val(meta), path(bam), path(fasta), path(fai) val index_format diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index b60edf8c..035e91b6 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -15,11 +15,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) @@ -30,13 +30,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( - process.out.bam, - process.out.index, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + process.out.bam.collect{meta, bam_ -> file(bam_).name + ':readsMD5,' + bam(bam_).getReadsMD5()}, + process.out.index, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -48,11 +48,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) @@ -63,13 +63,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( - process.out.bam, - process.out.index, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + process.out.bam.collect{meta, bam_ -> file(bam_).name + ':readsMD5,' + bam(bam_).getReadsMD5()}, + process.out.index, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -81,11 +81,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) @@ -96,13 +96,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( - process.out.bam, - process.out.index, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + process.out.bam.collect{meta, bam_ -> file(bam_).name + ':readsMD5,' + bam(bam_).getReadsMD5()}, + process.out.index, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -114,14 +114,14 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) ] ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -132,13 +132,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( - process.out.bam, - process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + process.out.bam.collect{meta, bam_ -> file(bam_).name + ':readsMD5,' + bam(bam_).getReadsMD5()}, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -150,14 +150,14 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) ] ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -168,13 +168,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( - process.out.bam, - process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + process.out.bam.collect{meta, bam_ -> file(bam_).name + ':readsMD5,' + bam(bam_).getReadsMD5()}, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -186,14 +186,14 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) ] ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -204,13 +204,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( - process.out.bam, - process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + process.out.bam.collect{meta, bam_ -> file(bam_).name + ':readsMD5,' + bam(bam_).getReadsMD5()}, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } @@ -222,11 +222,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -237,13 +237,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( process.out.cram.collect { it.collect { it instanceof Map ? it : file(it).name } }, process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + ).match() } ) } } @@ -256,11 +256,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) @@ -271,8 +271,8 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } @@ -285,14 +285,14 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) ] ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -303,8 +303,8 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } @@ -318,11 +318,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -333,47 +333,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } } - test("multi_sam") { - - config "./nextflow_sam.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.sam', checkIfExists: true) - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - ]) - input[2] = '' - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot( - process.out.bam.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} - ) - } - } - - test("sam") { config "./nextflow_sam.config" @@ -381,12 +347,11 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.sam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pairtools/mock.sam', checkIfExists: true) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) @@ -397,13 +362,13 @@ nextflow_process { } then { - assertAll ( - { assert process.success }, + assert process.success + assertAll( { assert snapshot( process.out.bam.collect { it.collect { it instanceof Map ? it : file(it).name } }, process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, process.out.findAll { key, val -> key.startsWith("versions") } - ).match()} + ).match() } ) } } diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index 5ce05c3c..43677f3c 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -24,27 +24,21 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T07:15:51.469358", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:36.491063" + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } }, "bam_csi_index": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,53aea06779611856bc481c60beabecaa" - ] + "test.sorted.bam:readsMD5,894549ee3ced6b5ca2eed2563a985217" ], [ [ @@ -52,7 +46,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.csi:md5,f77a4adb3dde616d7eafd28db2ed147c" + "test.sorted.bam.csi:md5,43f545200e545ca2075c475d194a5130" ] ], { @@ -60,16 +54,16 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T17:05:03.136300204", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:14.341977" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "bam - stub": { "content": [ @@ -78,27 +72,21 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T09:04:43.558376", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:43.558376" + } }, "multiple bam bai index": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,a15f775c655d4a3b080812a8aae84d34" - ] + "test.sorted.bam:readsMD5,c4525b95f05075208347295e6a1fb232" ], [ [ @@ -114,16 +102,16 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T17:05:14.840145298", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:25.647565" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "cram - stub": { "content": [ @@ -132,27 +120,21 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T09:04:54.684578", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:54.684578" + } }, "multiple bam": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,f4343475d9ed2c261f31e1e49d67c1b6" - ] + "test.sorted.bam:readsMD5,c4525b95f05075208347295e6a1fb232" ], [ @@ -162,16 +144,16 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T17:05:09.324351486", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:20.2368" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "multiple bam - stub": { "content": [ @@ -180,51 +162,21 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-03-19T09:04:48.874947", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:48.874947" + } }, "bam_no_index": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,9277ba4bea590ae1b84e6ab06d11d79b" - ] - ], - [ - - ], - { - "versions_samtools": [ - [ - "SAMTOOLS_SORT", - "samtools", - "1.23.1" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:03.721646" - }, - "multi_sam": { - "content": [ - [ - + "test.sorted.bam:readsMD5,894549ee3ced6b5ca2eed2563a985217" ], [ @@ -234,27 +186,21 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T17:04:53.194840222", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:05:00.624092" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "multiple bam csi index": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,f168809dc154156c40548c06d0f46791" - ] + "test.sorted.bam:readsMD5,c4525b95f05075208347295e6a1fb232" ], [ [ @@ -270,16 +216,16 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T17:05:22.574450685", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:31.11865" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "sam": { "content": [ @@ -294,27 +240,21 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T07:19:30.478625", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:05:06.309319" + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } }, "bam_bai_index": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,2ca2d7f2368251d3f06f84afa49865a5" - ] + "test.sorted.bam:readsMD5,894549ee3ced6b5ca2eed2563a985217" ], [ [ @@ -322,7 +262,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.bai:md5,66dca3dc2e314029035799f6f44f60d1" + "test.sorted.bam.bai:md5,4810374728f259a493e1e61c90847da3" ] ], { @@ -330,15 +270,15 @@ [ "SAMTOOLS_SORT", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T17:04:58.163543444", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:04:09.147615" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml index 946bb362..6a19f168 100644 --- a/modules/nf-core/samtools/stats/environment.yml +++ b/modules/nf-core/samtools/stats/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.23.1 + - bioconda::htslib=1.24 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.23.1 + - bioconda::samtools=1.24 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 144aa5e1..d7615fd2 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c5d2818c8b9f58e1fba77ce219fdaf32087ae53e857c4a496402978af26e78c/data' - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e994bf4eb3731150511a14f5706b7bdfd64df1b6d40898fff334286c027e0859/data' + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: tuple val(meta), path(input), path(input_index), path(fasta), path(fai) diff --git a/modules/nf-core/samtools/stats/samtools-stats.diff b/modules/nf-core/samtools/stats/samtools-stats.diff index ef06136d..7ba87f05 100644 --- a/modules/nf-core/samtools/stats/samtools-stats.diff +++ b/modules/nf-core/samtools/stats/samtools-stats.diff @@ -5,7 +5,7 @@ Changes in 'samtools/stats/main.nf': --- modules/nf-core/samtools/stats/main.nf +++ modules/nf-core/samtools/stats/main.nf @@ -8,8 +8,7 @@ - : 'community.wave.seqera.io/library/htslib_samtools:1.23.1--5b6bb4ede7e612e5'}" + : 'community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd'}" input: - tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test index 140adf34..5059e296 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) @@ -25,9 +25,9 @@ nextflow_process { } then { + assert process.success assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -37,12 +37,12 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // 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) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'genome' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) @@ -52,9 +52,9 @@ nextflow_process { } then { + assert process.success assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -66,7 +66,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) @@ -77,9 +77,9 @@ nextflow_process { } then { + assert process.success assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -91,12 +91,12 @@ nextflow_process { when { process { """ - input[0] = Channel.of([ + input[0] = channel.of([ [ id:'test', single_end:false ], // 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) ]) - input[1] = Channel.of([ + input[1] = channel.of([ [ id:'genome' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) @@ -106,9 +106,9 @@ nextflow_process { } then { + assert process.success assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 975d44a1..12eb0e47 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -2,65 +2,33 @@ "cram": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,e4d6cf0e75cebd0bafa84141e0b6929b" - ] - ], - "1": [ - [ - "SAMTOOLS_STATS", - "samtools", - "1.23.1" - ] - ], "stats": [ [ { "id": "test", "single_end": false }, - "test.stats:md5,e4d6cf0e75cebd0bafa84141e0b6929b" + "test.stats:md5,f8d811a048831b83812d55073566e67f" ] ], "versions_samtools": [ [ "SAMTOOLS_STATS", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T16:10:52.814596882", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:05:39.987454" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "bam - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - "SAMTOOLS_STATS", - "samtools", - "1.23.1" - ] - ], "stats": [ [ { @@ -74,36 +42,20 @@ [ "SAMTOOLS_STATS", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T16:10:57.131242371", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:05:47.495502" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "cram - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - "SAMTOOLS_STATS", - "samtools", - "1.23.1" - ] - ], "stats": [ [ { @@ -117,58 +69,42 @@ [ "SAMTOOLS_STATS", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T16:11:08.400007304", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:05:56.38373" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } }, "bam": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,80f94eb0b68e213bdc8231109d3b43ad" - ] - ], - "1": [ - [ - "SAMTOOLS_STATS", - "samtools", - "1.23.1" - ] - ], "stats": [ [ { "id": "test", "single_end": false }, - "test.stats:md5,80f94eb0b68e213bdc8231109d3b43ad" + "test.stats:md5,2313c93da60ff8673a793b14a0886987" ] ], "versions_samtools": [ [ "SAMTOOLS_STATS", "samtools", - "1.23.1" + "1.24" ] ] } ], + "timestamp": "2026-07-10T16:10:38.846072426", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T09:05:24.59441" + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } } } \ No newline at end of file