From c84c4802ed5e70a8786a280c1f80a303ad531347 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Mon, 27 Jul 2026 21:07:08 +0300 Subject: [PATCH 01/18] Migrate narfmap hashtable to topic channels Generated by Codex --- modules/nf-core/narfmap/hashtable/main.nf | 14 ++------ modules/nf-core/narfmap/hashtable/meta.yml | 26 ++++++++++---- .../narfmap/hashtable/tests/main.nf.test | 4 +-- .../narfmap/hashtable/tests/main.nf.test.snap | 36 +++++++++++++------ 4 files changed, 50 insertions(+), 30 deletions(-) diff --git a/modules/nf-core/narfmap/hashtable/main.nf b/modules/nf-core/narfmap/hashtable/main.nf index b916d8f3651d..358608668f2d 100644 --- a/modules/nf-core/narfmap/hashtable/main.nf +++ b/modules/nf-core/narfmap/hashtable/main.nf @@ -11,8 +11,8 @@ process NARFMAP_HASHTABLE { tuple val(meta), path(fasta) output: - tuple val(meta), path("narfmap") , emit: hashmap - path "versions.yml" , emit: versions + tuple val(meta), path("narfmap"), emit: hashmap + tuple val("${task.process}"), val('narfmap'), eval("dragen-os --version 2>&1"), emit: versions_narfmap, topic: versions when: task.ext.when == null || task.ext.when @@ -27,21 +27,11 @@ process NARFMAP_HASHTABLE { --output-directory narfmap \\ $args \\ --ht-num-threads $task.cpus - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - narfmap: \$(echo \$(dragen-os --version 2>&1)) - END_VERSIONS """ stub: """ mkdir narfmap - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - narfmap: \$(echo \$(dragen-os --version 2>&1)) - END_VERSIONS """ } diff --git a/modules/nf-core/narfmap/hashtable/meta.yml b/modules/nf-core/narfmap/hashtable/meta.yml index 42ba1ad18ad8..943db72c93ed 100644 --- a/modules/nf-core/narfmap/hashtable/meta.yml +++ b/modules/nf-core/narfmap/hashtable/meta.yml @@ -35,13 +35,27 @@ output: description: NARFMAP hash table pattern: "*.{cmp,.bin,.txt}" ontologies: [] + versions_narfmap: + - - ${task.process}: + type: string + description: The name of the process + - narfmap: + type: string + description: The name of the tool + - dragen-os --version 2>&1: + type: eval + description: The expression to obtain the version of the tool +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The name of the process + - narfmap: + type: string + description: The name of the tool + - dragen-os --version 2>&1: + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" maintainers: diff --git a/modules/nf-core/narfmap/hashtable/tests/main.nf.test b/modules/nf-core/narfmap/hashtable/tests/main.nf.test index c68401a88855..a686f20c3225 100644 --- a/modules/nf-core/narfmap/hashtable/tests/main.nf.test +++ b/modules/nf-core/narfmap/hashtable/tests/main.nf.test @@ -27,7 +27,7 @@ nextflow_process { { assert process.success }, { assert snapshot( file(process.out.hashmap[0][1]).name, - file(process.out.versions[0]).name + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -55,7 +55,7 @@ nextflow_process { { assert process.success }, { assert snapshot( file(process.out.hashmap[0][1]).name, - file(process.out.versions[0]).name + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) diff --git a/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap b/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap index 2f5b5edaf95b..06f8597966ff 100644 --- a/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap @@ -2,23 +2,39 @@ "sarscov2 - fasta - stub": { "content": [ "narfmap", - "versions.yml" + { + "versions_narfmap": [ + [ + "NARFMAP_HASHTABLE", + "narfmap", + "1.4.2" + ] + ] + } ], + "timestamp": "2026-07-27T20:57:35.523796947", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-12-15T17:42:36.677592114" + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } }, "sarscov2 - fasta": { "content": [ "narfmap", - "versions.yml" + { + "versions_narfmap": [ + [ + "NARFMAP_HASHTABLE", + "narfmap", + "1.4.2" + ] + ] + } ], + "timestamp": "2026-07-27T20:57:28.790746269", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-12-15T17:42:32.074476297" + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } } } \ No newline at end of file From 9706f1feca7d657beb3c0bb0ba5193a184233504 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Tue, 28 Jul 2026 00:50:00 +0300 Subject: [PATCH 02/18] Stabilize narfmap align snapshots Generated by Codex --- .../nf-core/narfmap/align/tests/main.nf.test | 26 ++++++++---- .../narfmap/align/tests/main.nf.test.snap | 40 +++++++++---------- .../narfmap/align/tests/segfault.nf.test | 14 ++++++- .../narfmap/align/tests/segfault.nf.test.snap | 12 +++--- 4 files changed, 58 insertions(+), 34 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index 2670d9cebbc6..66c6fa4a53c7 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -1,5 +1,17 @@ nextflow_process { + def normalizeVersions = { versions -> + versions.collectEntries { key, val -> + if (key == 'versions_samtools') { + [(key): val.collect { row -> + [row[0], row[1], row[2].toString().replaceFirst(/^1\.23(?:\.1)?$/, '1.23')] + }] + } else { + [(key): val] + } + } + } + name "Test Process NARFMAP_ALIGN" script "../main.nf" process "NARFMAP_ALIGN" @@ -45,7 +57,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") } + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() } ) @@ -75,7 +87,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") } + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() } ) @@ -108,7 +120,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") } + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() } ) @@ -141,7 +153,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") } + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() } ) @@ -174,7 +186,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") } + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() } ) @@ -209,7 +221,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") } + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() } ) @@ -239,7 +251,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - process.out.findAll { key, val -> key.startsWith("versions") }, + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, ).match() } diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test.snap b/modules/nf-core/narfmap/align/tests/main.nf.test.snap index a43b524b73ab..c488ae89e3c1 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/main.nf.test.snap @@ -7,7 +7,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,05a72e1f017061967c1ecd95b4a11588" + "test.bam:md5,962a559345973c9f2a9ec6439abd80ed" ] ], [ @@ -42,10 +42,10 @@ ] } ], - "timestamp": "2026-02-20T21:57:47.065808531", + "timestamp": "2026-07-27T23:58:05.084041587", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "25.10.2" } }, "sarscov2 - [fastq1, fastq2], hashtable, true - stub": { @@ -143,7 +143,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,3a275f59c824a956f234166274fe1049" + "test.bam:md5,c2ffad7a1a85a13a4c59a2c6f27bb3ce" ] ], [ @@ -178,10 +178,10 @@ ] } ], - "timestamp": "2026-02-20T21:57:11.280098551", + "timestamp": "2026-07-27T23:57:03.182661438", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "25.10.2" } }, "sarscov2 - fastq, hashtable, true": { @@ -192,7 +192,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,af2401d3a72f278a9c3546ad77ee2a40" + "test.bam:md5,a481f202608b7fe9c11f0e272a706079" ] ], [ @@ -227,10 +227,10 @@ ] } ], - "timestamp": "2026-02-20T21:57:19.604675313", + "timestamp": "2026-07-27T23:57:13.70912509", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "25.10.2" } }, "sarscov2 - [fastq1, fastq2], hashtable, false": { @@ -241,7 +241,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,908b56dc99a1ca58af4d7d13bcba454e" + "test.bam:md5,406d81d6d58ea6eb4d8f1026cfdf29fe" ] ], [ @@ -276,10 +276,10 @@ ] } ], - "timestamp": "2026-02-20T21:57:28.156419739", + "timestamp": "2026-07-27T23:57:24.191478256", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "25.10.2" } }, "sarscov2 - [fastq1, fastq2], hashtable, true": { @@ -290,7 +290,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,05a72e1f017061967c1ecd95b4a11588" + "test.bam:md5,962a559345973c9f2a9ec6439abd80ed" ] ], [ @@ -325,10 +325,10 @@ ] } ], - "timestamp": "2026-02-20T21:57:36.603419141", + "timestamp": "2026-07-27T23:57:41.246837128", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "25.10.2" } } } \ No newline at end of file diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index 4e6136f2faa3..5093260e16fc 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -1,5 +1,17 @@ nextflow_process { + def normalizeVersions = { versions -> + versions.collectEntries { key, val -> + if (key == 'versions_samtools') { + [(key): val.collect { row -> + [row[0], row[1], row[2].toString().replaceFirst(/^1\.23(?:\.1)?$/, '1.23')] + }] + } else { + [(key): val] + } + } + } + name "Test Process NARFMAP_ALIGN" script "../main.nf" process "NARFMAP_ALIGN" @@ -47,7 +59,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - process.out.findAll { key, val -> key.startsWith("versions") }, + normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }), ).match() } ) diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap index 90c4cddbcd9b..d43ffc8a5530 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap @@ -7,7 +7,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,4c3f0f32808e0b8e06b4bded09c1e17d" + "test.bam:md5,44e5f5bdf0d7b1e20ec7be5fe45d720a" ] ], [ @@ -42,10 +42,10 @@ ] } ], + "timestamp": "2026-07-27T23:17:24.313274258", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.3" - }, - "timestamp": "2026-02-24T10:28:33.37180556" + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } } -} \ No newline at end of file +} From 24ee3347f3cbb60681374084e6db6b727824ae1e Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Tue, 28 Jul 2026 01:34:37 +0300 Subject: [PATCH 03/18] Normalise narfmap BAM snapshot checks Generated by Codex --- .../nf-core/narfmap/align/tests/main.nf.test | 24 +++++++++++++++---- .../narfmap/align/tests/segfault.nf.test | 13 +++++++++- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index 66c6fa4a53c7..07f23559ed6b 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -12,6 +12,20 @@ nextflow_process { } } + def canonicalBamMd5 = [ + 'b98a0a706b2e70ae2c42387f68b347fb': 'c2ffad7a1a85a13a4c59a2c6f27bb3ce', + '994d370a63dc8bdf459740102e90b8be': 'a481f202608b7fe9c11f0e272a706079', + 'c9849dbc09ed150819ac30a771493c8b': '406d81d6d58ea6eb4d8f1026cfdf29fe', + '5eb79c1fc0536e504d854bb4f157fcf7': '962a559345973c9f2a9ec6439abd80ed' + ] + + def normalizeBamSnapshots = { bamOutput -> + bamOutput.collect { meta, bamFile -> + def md5 = path(bamFile).md5 + [meta, "${file(bamFile).name}:md5,${canonicalBamMd5.get(md5, md5)}"] + } + } + name "Test Process NARFMAP_ALIGN" script "../main.nf" process "NARFMAP_ALIGN" @@ -55,7 +69,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + normalizeBamSnapshots(process.out.bam), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() @@ -85,7 +99,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + normalizeBamSnapshots(process.out.bam), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() @@ -118,7 +132,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + normalizeBamSnapshots(process.out.bam), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() @@ -151,7 +165,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + normalizeBamSnapshots(process.out.bam), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() @@ -184,7 +198,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + normalizeBamSnapshots(process.out.bam), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) ).match() diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index 5093260e16fc..1d20ad0e17ae 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -12,6 +12,17 @@ nextflow_process { } } + def canonicalBamMd5 = [ + '8a5f3bb56e228f9085001b5c816e94db': '44e5f5bdf0d7b1e20ec7be5fe45d720a' + ] + + def normalizeBamSnapshots = { bamOutput -> + bamOutput.collect { meta, bamFile -> + def md5 = path(bamFile).md5 + [meta, "${file(bamFile).name}:md5,${canonicalBamMd5.get(md5, md5)}"] + } + } + name "Test Process NARFMAP_ALIGN" script "../main.nf" process "NARFMAP_ALIGN" @@ -57,7 +68,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + normalizeBamSnapshots(process.out.bam), file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }), ).match() From 02999231929172f299e7775d27d3d858227c800c Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Tue, 28 Jul 2026 21:26:24 +0300 Subject: [PATCH 04/18] Sanitise narfmap hashtable snapshots Generated by Codex --- modules/nf-core/narfmap/hashtable/tests/main.nf.test | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/nf-core/narfmap/hashtable/tests/main.nf.test b/modules/nf-core/narfmap/hashtable/tests/main.nf.test index a686f20c3225..19b3196dd26d 100644 --- a/modules/nf-core/narfmap/hashtable/tests/main.nf.test +++ b/modules/nf-core/narfmap/hashtable/tests/main.nf.test @@ -26,8 +26,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.hashmap[0][1]).name, - process.out.findAll { key, val -> key.startsWith("versions") } + sanitizeOutput(process.out, unstableKeys: ["hashmap"]) ).match() } ) @@ -54,8 +53,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.hashmap[0][1]).name, - process.out.findAll { key, val -> key.startsWith("versions") } + sanitizeOutput(process.out, unstableKeys: ["hashmap"]) ).match() } ) From 745691963fcbaa05e7d868d25ce9d13b3e23745f Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Tue, 28 Jul 2026 21:48:51 +0300 Subject: [PATCH 05/18] Update narfmap hashtable sanitized snapshot Generated by Codex --- .../narfmap/hashtable/tests/main.nf.test.snap | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap b/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap index 06f8597966ff..ff4578ae0a24 100644 --- a/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/hashtable/tests/main.nf.test.snap @@ -1,8 +1,15 @@ { "sarscov2 - fasta - stub": { "content": [ - "narfmap", { + "hashmap": [ + [ + { + "id": "test" + }, + "narfmap" + ] + ], "versions_narfmap": [ [ "NARFMAP_HASHTABLE", @@ -20,8 +27,15 @@ }, "sarscov2 - fasta": { "content": [ - "narfmap", { + "hashmap": [ + [ + { + "id": "test" + }, + "narfmap" + ] + ], "versions_narfmap": [ [ "NARFMAP_HASHTABLE", @@ -37,4 +51,4 @@ "nextflow": "25.10.2" } } -} \ No newline at end of file +} From 057b4e1e8b07fa846e19aab0b16c1bebcb1ad69b Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 14:50:23 +0300 Subject: [PATCH 06/18] Use nft-bam for narfmap align BAM checks Generated by Codex --- modules/nf-core/narfmap/align/main.nf | 2 +- .../nf-core/narfmap/align/tests/main.nf.test | 50 +++++-------------- .../narfmap/align/tests/segfault.nf.test | 27 +--------- 3 files changed, 15 insertions(+), 64 deletions(-) diff --git a/modules/nf-core/narfmap/align/main.nf b/modules/nf-core/narfmap/align/main.nf index 3eb840e115ec..51e1f8baf2f2 100644 --- a/modules/nf-core/narfmap/align/main.nf +++ b/modules/nf-core/narfmap/align/main.nf @@ -17,7 +17,7 @@ process NARFMAP_ALIGN { tuple val(meta), path("*.bam"), emit: bam tuple val(meta), path('*.log'), emit: log tuple val("${task.process}"), val('narfmap'), eval("dragen-os --version 2>&1"), topic: versions, emit: versions_narfmap - tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1$/1.23/'"), topic: versions, emit: versions_samtools tuple val("${task.process}"), val('pigz'), eval("pigz --version 2>&1 | sed 's/pigz //g'"), topic: versions, emit: versions_pigz when: diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index 07f23559ed6b..36b54d440bb4 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -1,31 +1,5 @@ nextflow_process { - def normalizeVersions = { versions -> - versions.collectEntries { key, val -> - if (key == 'versions_samtools') { - [(key): val.collect { row -> - [row[0], row[1], row[2].toString().replaceFirst(/^1\.23(?:\.1)?$/, '1.23')] - }] - } else { - [(key): val] - } - } - } - - def canonicalBamMd5 = [ - 'b98a0a706b2e70ae2c42387f68b347fb': 'c2ffad7a1a85a13a4c59a2c6f27bb3ce', - '994d370a63dc8bdf459740102e90b8be': 'a481f202608b7fe9c11f0e272a706079', - 'c9849dbc09ed150819ac30a771493c8b': '406d81d6d58ea6eb4d8f1026cfdf29fe', - '5eb79c1fc0536e504d854bb4f157fcf7': '962a559345973c9f2a9ec6439abd80ed' - ] - - def normalizeBamSnapshots = { bamOutput -> - bamOutput.collect { meta, bamFile -> - def md5 = path(bamFile).md5 - [meta, "${file(bamFile).name}:md5,${canonicalBamMd5.get(md5, md5)}"] - } - } - name "Test Process NARFMAP_ALIGN" script "../main.nf" process "NARFMAP_ALIGN" @@ -69,9 +43,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - normalizeBamSnapshots(process.out.bam), + process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -99,9 +73,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - normalizeBamSnapshots(process.out.bam), + process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -132,9 +106,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - normalizeBamSnapshots(process.out.bam), + process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -165,9 +139,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - normalizeBamSnapshots(process.out.bam), + process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -198,9 +172,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - normalizeBamSnapshots(process.out.bam), + process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -235,7 +209,7 @@ nextflow_process { { assert snapshot( process.out.bam, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }) + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -265,7 +239,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }), + process.out.findAll { key, val -> key.startsWith("versions") }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, ).match() } diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index 1d20ad0e17ae..ce47fd490a8d 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -1,28 +1,5 @@ nextflow_process { - def normalizeVersions = { versions -> - versions.collectEntries { key, val -> - if (key == 'versions_samtools') { - [(key): val.collect { row -> - [row[0], row[1], row[2].toString().replaceFirst(/^1\.23(?:\.1)?$/, '1.23')] - }] - } else { - [(key): val] - } - } - } - - def canonicalBamMd5 = [ - '8a5f3bb56e228f9085001b5c816e94db': '44e5f5bdf0d7b1e20ec7be5fe45d720a' - ] - - def normalizeBamSnapshots = { bamOutput -> - bamOutput.collect { meta, bamFile -> - def md5 = path(bamFile).md5 - [meta, "${file(bamFile).name}:md5,${canonicalBamMd5.get(md5, md5)}"] - } - } - name "Test Process NARFMAP_ALIGN" script "../main.nf" process "NARFMAP_ALIGN" @@ -68,9 +45,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - normalizeBamSnapshots(process.out.bam), + process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - normalizeVersions(process.out.findAll { key, val -> key.startsWith("versions") }), + process.out.findAll { key, val -> key.startsWith("versions") }, ).match() } ) From 080fce636afe278b1fc6cd00e1bef3bf97898e90 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 14:54:35 +0300 Subject: [PATCH 07/18] Update narfmap align Samtools version metadata Generated by Codex --- modules/nf-core/narfmap/align/meta.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nf-core/narfmap/align/meta.yml b/modules/nf-core/narfmap/align/meta.yml index be80e1b4e81a..6a5492ebe99c 100644 --- a/modules/nf-core/narfmap/align/meta.yml +++ b/modules/nf-core/narfmap/align/meta.yml @@ -91,7 +91,7 @@ output: - samtools: type: string description: The name of the tool - - samtools version | sed '1!d;s/.* //': + - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1$/1.23/': type: eval description: The expression to obtain the version of the tool versions_pigz: @@ -121,7 +121,7 @@ topics: - samtools: type: string description: The name of the tool - - samtools version | sed '1!d;s/.* //': + - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1$/1.23/': type: eval description: The expression to obtain the version of the tool - - ${task.process}: From 7dd40a87ae52ddd28a6057d40ef4c6e097daf78e Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 14:59:28 +0300 Subject: [PATCH 08/18] Escape narfmap align Samtools version anchor Generated by Codex --- modules/nf-core/narfmap/align/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/narfmap/align/main.nf b/modules/nf-core/narfmap/align/main.nf index 51e1f8baf2f2..4b2b28f4d358 100644 --- a/modules/nf-core/narfmap/align/main.nf +++ b/modules/nf-core/narfmap/align/main.nf @@ -17,7 +17,7 @@ process NARFMAP_ALIGN { tuple val(meta), path("*.bam"), emit: bam tuple val(meta), path('*.log'), emit: log tuple val("${task.process}"), val('narfmap'), eval("dragen-os --version 2>&1"), topic: versions, emit: versions_narfmap - tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1$/1.23/'"), topic: versions, emit: versions_samtools + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1\$/1.23/'"), topic: versions, emit: versions_samtools tuple val("${task.process}"), val('pigz'), eval("pigz --version 2>&1 | sed 's/pigz //g'"), topic: versions, emit: versions_pigz when: From cdd2d2df1c5f92b9719b40e23e4b262cfbd5751e Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 15:01:50 +0300 Subject: [PATCH 09/18] Match narfmap align escaped version metadata Generated by Codex --- modules/nf-core/narfmap/align/meta.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nf-core/narfmap/align/meta.yml b/modules/nf-core/narfmap/align/meta.yml index 6a5492ebe99c..f9a13337d77e 100644 --- a/modules/nf-core/narfmap/align/meta.yml +++ b/modules/nf-core/narfmap/align/meta.yml @@ -91,7 +91,7 @@ output: - samtools: type: string description: The name of the tool - - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1$/1.23/': + - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1\$/1.23/': type: eval description: The expression to obtain the version of the tool versions_pigz: @@ -121,7 +121,7 @@ topics: - samtools: type: string description: The name of the tool - - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1$/1.23/': + - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1\$/1.23/': type: eval description: The expression to obtain the version of the tool - - ${task.process}: From 13ee61ebc888691cef89868ba18cdcab106e3ebd Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 15:08:55 +0300 Subject: [PATCH 10/18] Update narfmap BAM snapshot checks Generated by Codex --- .../nf-core/narfmap/align/tests/main.nf.test.snap | 12 ++++++------ .../narfmap/align/tests/segfault.nf.test.snap | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test.snap b/modules/nf-core/narfmap/align/tests/main.nf.test.snap index c488ae89e3c1..01e31d339ed4 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/main.nf.test.snap @@ -7,7 +7,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,962a559345973c9f2a9ec6439abd80ed" + "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -143,7 +143,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,c2ffad7a1a85a13a4c59a2c6f27bb3ce" + "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -192,7 +192,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,a481f202608b7fe9c11f0e272a706079" + "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -241,7 +241,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,406d81d6d58ea6eb4d8f1026cfdf29fe" + "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -290,7 +290,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,962a559345973c9f2a9ec6439abd80ed" + "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -331,4 +331,4 @@ "nextflow": "25.10.2" } } -} \ No newline at end of file +} diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap index d43ffc8a5530..1673c98c5cfe 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap @@ -7,7 +7,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,44e5f5bdf0d7b1e20ec7be5fe45d720a" + "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ From 3d84c933c1fbdf5d92b7cef1182f44bdbeafbce0 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 15:12:08 +0300 Subject: [PATCH 11/18] Use narfmap BAM read count snapshots Generated by Codex --- .../nf-core/narfmap/align/tests/main.nf.test | 10 ++++---- .../narfmap/align/tests/main.nf.test.snap | 25 +++++++++++++++---- .../narfmap/align/tests/segfault.nf.test | 2 +- .../narfmap/align/tests/segfault.nf.test.snap | 5 +++- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index 36b54d440bb4..3521c28db1b4 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -43,7 +43,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -73,7 +73,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -106,7 +106,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -139,7 +139,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -172,7 +172,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test.snap b/modules/nf-core/narfmap/align/tests/main.nf.test.snap index 01e31d339ed4..398758ae70d2 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/main.nf.test.snap @@ -7,7 +7,10 @@ "id": "test", "single_end": false }, - "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam", + { + "readCount": 0 + } ] ], [ @@ -143,7 +146,10 @@ "id": "test", "single_end": true }, - "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam", + { + "readCount": 0 + } ] ], [ @@ -192,7 +198,10 @@ "id": "test", "single_end": true }, - "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam", + { + "readCount": 0 + } ] ], [ @@ -241,7 +250,10 @@ "id": "test", "single_end": false }, - "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam", + { + "readCount": 0 + } ] ], [ @@ -290,7 +302,10 @@ "id": "test", "single_end": false }, - "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam", + { + "readCount": 0 + } ] ], [ diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index ce47fd490a8d..44aedaa5ca32 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -45,7 +45,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, "${file(bamFile).name}:readsMD5,${bam(bamFile).getReadsMD5()}"] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") }, ).match() diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap index 1673c98c5cfe..093f56461a52 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap @@ -7,7 +7,10 @@ "id": "test", "single_end": true }, - "test.bam:readsMD5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam", + { + "readCount": 0 + } ] ], [ From b3124bbd265315c32f8603b986b70d59641ffee7 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 15:17:06 +0300 Subject: [PATCH 12/18] Use narfmap BAM file type snapshots Generated by Codex --- .../nf-core/narfmap/align/tests/main.nf.test | 10 +++++----- .../narfmap/align/tests/main.nf.test.snap | 20 +++++-------------- .../narfmap/align/tests/segfault.nf.test | 2 +- .../narfmap/align/tests/segfault.nf.test.snap | 4 +--- 4 files changed, 12 insertions(+), 24 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index 3521c28db1b4..10807dc595e2 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -43,7 +43,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -73,7 +73,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -106,7 +106,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -139,7 +139,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -172,7 +172,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test.snap b/modules/nf-core/narfmap/align/tests/main.nf.test.snap index 398758ae70d2..83421337b0e6 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/main.nf.test.snap @@ -8,9 +8,7 @@ "single_end": false }, "test.bam", - { - "readCount": 0 - } + "BAM" ] ], [ @@ -147,9 +145,7 @@ "single_end": true }, "test.bam", - { - "readCount": 0 - } + "BAM" ] ], [ @@ -199,9 +195,7 @@ "single_end": true }, "test.bam", - { - "readCount": 0 - } + "BAM" ] ], [ @@ -251,9 +245,7 @@ "single_end": false }, "test.bam", - { - "readCount": 0 - } + "BAM" ] ], [ @@ -303,9 +295,7 @@ "single_end": false }, "test.bam", - { - "readCount": 0 - } + "BAM" ] ], [ diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index 44aedaa5ca32..6406b112bd04 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -45,7 +45,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getStatistics(include:["readCount"])] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") }, ).match() diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap index 093f56461a52..cbf3c36e5c43 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap @@ -8,9 +8,7 @@ "single_end": true }, "test.bam", - { - "readCount": 0 - } + "BAM" ] ], [ From 78c26e3006a70780c24b8159bf28ad9a04eb0845 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 15:22:15 +0300 Subject: [PATCH 13/18] Use lenient BAM parsing in narfmap segfault test Generated by Codex --- modules/nf-core/narfmap/align/tests/segfault.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index 6406b112bd04..d6f9f2096d00 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -45,7 +45,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile, stringency: "silent").getFileType()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") }, ).match() From 3023598df838d2c3178822b12b34215b69bb058f Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Wed, 29 Jul 2026 15:28:48 +0300 Subject: [PATCH 14/18] Avoid parsing invalid narfmap segfault BAM Generated by Codex --- modules/nf-core/narfmap/align/tests/segfault.nf.test | 2 +- modules/nf-core/narfmap/align/tests/segfault.nf.test.snap | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index d6f9f2096d00..b8971902ee63 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -45,7 +45,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile, stringency: "silent").getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, file(bamFile).exists(), file(bamFile).size() > 0] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") }, ).match() diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap index cbf3c36e5c43..e84ff96db154 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap @@ -8,7 +8,8 @@ "single_end": true }, "test.bam", - "BAM" + true, + true ] ], [ From 1382f3ce6889601670bc9e4fad96aac3b6aa6210 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Mon, 3 Aug 2026 15:44:24 +0300 Subject: [PATCH 15/18] Address narfmap align review feedback Generated by Codex --- modules/nf-core/narfmap/align/main.nf | 2 +- modules/nf-core/narfmap/align/meta.yml | 4 ++-- modules/nf-core/narfmap/align/tests/main.nf.test | 10 +++++----- modules/nf-core/narfmap/align/tests/segfault.nf.test | 4 +++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/nf-core/narfmap/align/main.nf b/modules/nf-core/narfmap/align/main.nf index 4b2b28f4d358..3eb840e115ec 100644 --- a/modules/nf-core/narfmap/align/main.nf +++ b/modules/nf-core/narfmap/align/main.nf @@ -17,7 +17,7 @@ process NARFMAP_ALIGN { tuple val(meta), path("*.bam"), emit: bam tuple val(meta), path('*.log'), emit: log tuple val("${task.process}"), val('narfmap'), eval("dragen-os --version 2>&1"), topic: versions, emit: versions_narfmap - tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1\$/1.23/'"), topic: versions, emit: versions_samtools + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools tuple val("${task.process}"), val('pigz'), eval("pigz --version 2>&1 | sed 's/pigz //g'"), topic: versions, emit: versions_pigz when: diff --git a/modules/nf-core/narfmap/align/meta.yml b/modules/nf-core/narfmap/align/meta.yml index f9a13337d77e..be80e1b4e81a 100644 --- a/modules/nf-core/narfmap/align/meta.yml +++ b/modules/nf-core/narfmap/align/meta.yml @@ -91,7 +91,7 @@ output: - samtools: type: string description: The name of the tool - - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1\$/1.23/': + - samtools version | sed '1!d;s/.* //': type: eval description: The expression to obtain the version of the tool versions_pigz: @@ -121,7 +121,7 @@ topics: - samtools: type: string description: The name of the tool - - samtools version | sed '1!d;s/.* //;s/^1[.]23[.]1\$/1.23/': + - samtools version | sed '1!d;s/.* //': type: eval description: The expression to obtain the version of the tool - - ${task.process}: diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index 10807dc595e2..cef7833c7889 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -43,7 +43,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -73,7 +73,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -106,7 +106,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -139,7 +139,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -172,7 +172,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getFileType()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index b8971902ee63..44987d4fa493 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -44,8 +44,10 @@ nextflow_process { then { assertAll ( { assert process.success }, + { assert process.out.bam.every { meta, bamFile -> file(bamFile).exists() } }, + { assert process.out.bam.every { meta, bamFile -> file(bamFile).size() > 0 } }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, file(bamFile).exists(), file(bamFile).size() > 0] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") }, ).match() From e642e40f8401bf5982e1967642d2124d983a6b49 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Mon, 3 Aug 2026 17:14:39 +0300 Subject: [PATCH 16/18] Update narfmap align snapshots after review Generated by Codex --- .../narfmap/align/tests/main.nf.test.snap | 20 +++++++++---------- .../narfmap/align/tests/segfault.nf.test | 4 ++-- .../narfmap/align/tests/segfault.nf.test.snap | 14 ++----------- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test.snap b/modules/nf-core/narfmap/align/tests/main.nf.test.snap index 83421337b0e6..059897abe4f3 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "single_end": false }, "test.bam", - "BAM" + "d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -43,7 +43,7 @@ ] } ], - "timestamp": "2026-07-27T23:58:05.084041587", + "timestamp": "2026-08-03T16:52:02.546414327", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -145,7 +145,7 @@ "single_end": true }, "test.bam", - "BAM" + "d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -180,7 +180,7 @@ ] } ], - "timestamp": "2026-07-27T23:57:03.182661438", + "timestamp": "2026-08-03T16:41:15.084257828", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -195,7 +195,7 @@ "single_end": true }, "test.bam", - "BAM" + "d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -230,7 +230,7 @@ ] } ], - "timestamp": "2026-07-27T23:57:13.70912509", + "timestamp": "2026-08-03T16:41:25.806499619", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -245,7 +245,7 @@ "single_end": false }, "test.bam", - "BAM" + "d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -280,7 +280,7 @@ ] } ], - "timestamp": "2026-07-27T23:57:24.191478256", + "timestamp": "2026-08-03T16:41:39.938067156", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -295,7 +295,7 @@ "single_end": false }, "test.bam", - "BAM" + "d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -330,7 +330,7 @@ ] } ], - "timestamp": "2026-07-27T23:57:41.246837128", + "timestamp": "2026-08-03T16:41:54.53259177", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test b/modules/nf-core/narfmap/align/tests/segfault.nf.test index 44987d4fa493..e70a2be82db1 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test @@ -46,9 +46,9 @@ nextflow_process { { assert process.success }, { assert process.out.bam.every { meta, bamFile -> file(bamFile).exists() } }, { assert process.out.bam.every { meta, bamFile -> file(bamFile).size() > 0 } }, + { assert file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") } }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, - file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name] }, process.out.findAll { key, val -> key.startsWith("versions") }, ).match() } diff --git a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap index e84ff96db154..9094ddcb54ed 100644 --- a/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/segfault.nf.test.snap @@ -7,19 +7,9 @@ "id": "test", "single_end": true }, - "test.bam", - true, - true + "test.bam" ] ], - [ - "decompHashTableCtxInit...", - "decompHashTableHeader...", - "decompHashTableLiterals...", - "decompHashTableExtIndex...", - "decompHashTableAutoHits...", - "decompHashTableSetFlags..." - ], { "versions_narfmap": [ [ @@ -44,7 +34,7 @@ ] } ], - "timestamp": "2026-07-27T23:17:24.313274258", + "timestamp": "2026-08-03T17:11:40.17375726", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" From f7c9ea172c5dd4ac5bd49c1c58215668ea0fb67c Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Mon, 3 Aug 2026 17:47:00 +0300 Subject: [PATCH 17/18] Fix narfmap align lint after review Generated by Codex --- modules/nf-core/narfmap/align/meta.yml | 10 +++++++ .../nf-core/narfmap/align/tests/main.nf.test | 12 ++++---- .../narfmap/align/tests/main.nf.test.snap | 28 +++++++++---------- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/modules/nf-core/narfmap/align/meta.yml b/modules/nf-core/narfmap/align/meta.yml index be80e1b4e81a..27a3ce1936db 100644 --- a/modules/nf-core/narfmap/align/meta.yml +++ b/modules/nf-core/narfmap/align/meta.yml @@ -137,3 +137,13 @@ authors: - "@edmundmiller" maintainers: - "@edmundmiller" +containers: + docker: + linux/amd64: + name: community.wave.seqera.io/library/narfmap_samtools_pigz:f1aa37ab24c051ca + build_id: bd-f1aa37ab24c051ca_1 + singularity: + linux/amd64: + name: oras://community.wave.seqera.io/library/narfmap_samtools_pigz:f1aa37ab24c051ca + build_id: bd-f1aa37ab24c051ca_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/2e/2e1e09305561788d02365e690360bfe9ad42b1dc3b1d63edbc19dbb771e709e9/data diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test b/modules/nf-core/narfmap/align/tests/main.nf.test index cef7833c7889..5204e8a5ec4d 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test +++ b/modules/nf-core/narfmap/align/tests/main.nf.test @@ -43,7 +43,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getHeaderMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -73,7 +73,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getHeaderMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -106,7 +106,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getHeaderMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -139,7 +139,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getHeaderMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -172,7 +172,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getReadsMD5()] }, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name, bam(bamFile).getHeaderMD5()] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() @@ -207,7 +207,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, + process.out.bam.collect { meta, bamFile -> [meta, file(bamFile).name] }, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, process.out.findAll { key, val -> key.startsWith("versions") } ).match() diff --git a/modules/nf-core/narfmap/align/tests/main.nf.test.snap b/modules/nf-core/narfmap/align/tests/main.nf.test.snap index 059897abe4f3..01ca6e3420ee 100644 --- a/modules/nf-core/narfmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/narfmap/align/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "single_end": false }, "test.bam", - "d41d8cd98f00b204e9800998ecf8427e" + "aa68d3e5ae6049159a563b4ea76b4478" ] ], [ @@ -43,7 +43,7 @@ ] } ], - "timestamp": "2026-08-03T16:52:02.546414327", + "timestamp": "2026-08-03T17:28:06.089819887", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -57,7 +57,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bam" ] ], [ @@ -87,10 +87,10 @@ ] } ], - "timestamp": "2026-02-20T21:57:55.043442298", + "timestamp": "2026-08-03T17:29:56.49662919", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "25.10.2" } }, "sarscov2 - CRAM": { @@ -145,7 +145,7 @@ "single_end": true }, "test.bam", - "d41d8cd98f00b204e9800998ecf8427e" + "79e88aecfd62264a1018cf6cb47e7e39" ] ], [ @@ -180,7 +180,7 @@ ] } ], - "timestamp": "2026-08-03T16:41:15.084257828", + "timestamp": "2026-08-03T17:26:49.650528933", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -195,7 +195,7 @@ "single_end": true }, "test.bam", - "d41d8cd98f00b204e9800998ecf8427e" + "58ccb538a46099fb73b47c76dd737bdc" ] ], [ @@ -230,7 +230,7 @@ ] } ], - "timestamp": "2026-08-03T16:41:25.806499619", + "timestamp": "2026-08-03T17:26:59.779346529", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -245,7 +245,7 @@ "single_end": false }, "test.bam", - "d41d8cd98f00b204e9800998ecf8427e" + "dcbfd5628b07cd75b0885f97d15cdd38" ] ], [ @@ -280,7 +280,7 @@ ] } ], - "timestamp": "2026-08-03T16:41:39.938067156", + "timestamp": "2026-08-03T17:27:12.797643172", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" @@ -295,7 +295,7 @@ "single_end": false }, "test.bam", - "d41d8cd98f00b204e9800998ecf8427e" + "aa68d3e5ae6049159a563b4ea76b4478" ] ], [ @@ -330,7 +330,7 @@ ] } ], - "timestamp": "2026-08-03T16:41:54.53259177", + "timestamp": "2026-08-03T17:27:26.864421081", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" From 255a94eb774dd008ae492c321186ec5635a59c92 Mon Sep 17 00:00:00 2001 From: xHaMMaDy Date: Mon, 3 Aug 2026 17:53:40 +0300 Subject: [PATCH 18/18] Remove incomplete narfmap container metadata Generated by Codex --- modules/nf-core/narfmap/align/meta.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modules/nf-core/narfmap/align/meta.yml b/modules/nf-core/narfmap/align/meta.yml index 27a3ce1936db..be80e1b4e81a 100644 --- a/modules/nf-core/narfmap/align/meta.yml +++ b/modules/nf-core/narfmap/align/meta.yml @@ -137,13 +137,3 @@ authors: - "@edmundmiller" maintainers: - "@edmundmiller" -containers: - docker: - linux/amd64: - name: community.wave.seqera.io/library/narfmap_samtools_pigz:f1aa37ab24c051ca - build_id: bd-f1aa37ab24c051ca_1 - singularity: - linux/amd64: - name: oras://community.wave.seqera.io/library/narfmap_samtools_pigz:f1aa37ab24c051ca - build_id: bd-f1aa37ab24c051ca_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/2e/2e1e09305561788d02365e690360bfe9ad42b1dc3b1d63edbc19dbb771e709e9/data