diff --git a/modules/nf-core/sentieon/applyvarcal/environment.yml b/modules/nf-core/sentieon/applyvarcal/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/applyvarcal/environment.yml +++ b/modules/nf-core/sentieon/applyvarcal/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/applyvarcal/main.nf b/modules/nf-core/sentieon/applyvarcal/main.nf index 8f4ad60adfc..f67c08fcf8f 100644 --- a/modules/nf-core/sentieon/applyvarcal/main.nf +++ b/modules/nf-core/sentieon/applyvarcal/main.nf @@ -5,8 +5,8 @@ process SENTIEON_APPLYVARCAL { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(vcf), path(vcf_tbi), path(recal), path(recal_index), path(tranches) @@ -16,7 +16,7 @@ process SENTIEON_APPLYVARCAL { output: tuple val(meta), path("*.vcf.gz"), emit: vcf tuple val(meta), path("*.tbi"), emit: tbi - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -41,11 +41,6 @@ process SENTIEON_APPLYVARCAL { --tranches_file ${tranches} \\ ${args2} \\ ${prefix}.vcf.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -53,10 +48,5 @@ process SENTIEON_APPLYVARCAL { """ echo | gzip > ${prefix}.vcf.gz touch ${prefix}.vcf.gz.tbi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/applyvarcal/meta.yml b/modules/nf-core/sentieon/applyvarcal/meta.yml index 9e4a21554b7..2f1a71b88e8 100644 --- a/modules/nf-core/sentieon/applyvarcal/meta.yml +++ b/modules/nf-core/sentieon/applyvarcal/meta.yml @@ -96,13 +96,28 @@ output: description: Index of recalibrated vcf file. pattern: "*vcf.gz.tbi" ontologies: [] + versions_sentieon: + - - "${task.process}": + type: string + description: The process the versions were collected from + - "sentieon": + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - "sentieon": + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@assp8200" maintainers: diff --git a/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test b/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test index 600ad9ea03f..942bd623fd0 100644 --- a/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test +++ b/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test @@ -37,8 +37,7 @@ nextflow_process { assertAll( { assert snapshot( path(process.out.vcf[0][1]).vcf.summary, - file(process.out.tbi[0][1]).name, - path(process.out.versions[0]).yaml + file(process.out.tbi[0][1]).name ).match() } ) @@ -71,8 +70,7 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out, - path(process.out.versions[0]).yaml + process.out ).match() } ) diff --git a/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test.snap b/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test.snap index 5831e501bb7..890cf6bbd77 100644 --- a/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/applyvarcal/tests/main.nf.test.snap @@ -2,18 +2,13 @@ "homo sapiens": { "content": [ "VcfFile [chromosomes=[chr21], sampleCount=1, variantCount=733, phased=false, phasedAutodetect=false]", - "test_applyvarcal.vcf.gz.tbi", - { - "SENTIEON_APPLYVARCAL": { - "sentieon": 202503.01 - } - } + "test_applyvarcal.vcf.gz.tbi" ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T07:58:39.037594229" + "timestamp": "2026-01-19T18:19:13.890563238" }, "homo sapiens -- stub": { "content": [ @@ -35,7 +30,11 @@ ] ], "2": [ - "versions.yml:md5,debf15eb513a4082e53616c5a77e0477" + [ + "SENTIEON_APPLYVARCAL", + "sentieon", + "202503.02" + ] ], "tbi": [ [ @@ -53,20 +52,19 @@ "test_applyvarcal.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "versions": [ - "versions.yml:md5,debf15eb513a4082e53616c5a77e0477" + "versions_sentieon": [ + [ + "SENTIEON_APPLYVARCAL", + "sentieon", + "202503.02" + ] ] - }, - { - "SENTIEON_APPLYVARCAL": { - "sentieon": 202503.01 - } } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T07:59:06.102870321" + "timestamp": "2026-01-19T18:19:21.793386558" } -} +} \ No newline at end of file diff --git a/modules/nf-core/sentieon/applyvarcal/tests/nextflow.config b/modules/nf-core/sentieon/applyvarcal/tests/nextflow.config index 0616d2c5166..bd3c339f60c 100644 --- a/modules/nf-core/sentieon/applyvarcal/tests/nextflow.config +++ b/modules/nf-core/sentieon/applyvarcal/tests/nextflow.config @@ -1,10 +1,3 @@ -process { - withName: "SENTIEON_APPLYVARCAL" { - ext.args = params.module_args - ext.args2 = params.module_args - } -} - env { // NOTE This is how nf-core/sarek users will use Sentieon in real world use // TODO: Update to `env('SENTIEON_LICSRVR_IP')` when minimum Nextflow version is >= 26.04.0 @@ -13,6 +6,13 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } + +process { + withName: 'SENTIEON_APPLYVARCAL' { + ext.args = params.module_args + ext.args2 = params.module_args2 + } +} diff --git a/modules/nf-core/sentieon/bwaindex/environment.yml b/modules/nf-core/sentieon/bwaindex/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/bwaindex/environment.yml +++ b/modules/nf-core/sentieon/bwaindex/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/bwaindex/main.nf b/modules/nf-core/sentieon/bwaindex/main.nf index e7b83c1382d..1b36961a187 100644 --- a/modules/nf-core/sentieon/bwaindex/main.nf +++ b/modules/nf-core/sentieon/bwaindex/main.nf @@ -5,15 +5,15 @@ process SENTIEON_BWAINDEX { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(fasta) output: tuple val(meta), path("bwa"), emit: index - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -21,7 +21,11 @@ process SENTIEON_BWAINDEX { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ? "bwa/${task.ext.prefix}" : "bwa/${fasta.baseName}" + def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 + ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " + : "" """ + ${sentieonLicense} mkdir bwa sentieon \\ @@ -29,12 +33,6 @@ process SENTIEON_BWAINDEX { ${args} \\ -p ${prefix} \\ ${fasta} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwa: \$(echo \$(sentieon bwa 2>&1) | sed 's/^.*Version: //; s/Contact:.*\$//') - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -46,11 +44,5 @@ process SENTIEON_BWAINDEX { touch bwa/genome.bwt touch bwa/genome.pac touch bwa/genome.sa - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwa: \$(echo \$(sentieon bwa 2>&1) | sed 's/^.*Version: //; s/Contact:.*\$//') - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/bwaindex/meta.yml b/modules/nf-core/sentieon/bwaindex/meta.yml index eb7bbe0d038..165247da84f 100644 --- a/modules/nf-core/sentieon/bwaindex/meta.yml +++ b/modules/nf-core/sentieon/bwaindex/meta.yml @@ -36,16 +36,28 @@ output: description: BWA genome index files pattern: "*.{amb,ann,bwt,pac,sa}" ontologies: [] + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - - "@drpatelh" - "@maxulysse" maintainers: - - "@drpatelh" - "@maxulysse" diff --git a/modules/nf-core/sentieon/bwaindex/tests/main.nf.test.snap b/modules/nf-core/sentieon/bwaindex/tests/main.nf.test.snap index 1e3abc6349b..98d1984acd4 100644 --- a/modules/nf-core/sentieon/bwaindex/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/bwaindex/tests/main.nf.test.snap @@ -17,7 +17,11 @@ ] ], "1": [ - "versions.yml:md5,c217de4e5a992968de304e342fd720f6" + [ + "SENTIEON_BWAINDEX", + "sentieon", + "202503.02" + ] ], "index": [ [ @@ -33,16 +37,20 @@ ] ] ], - "versions": [ - "versions.yml:md5,c217de4e5a992968de304e342fd720f6" + "versions_sentieon": [ + [ + "SENTIEON_BWAINDEX", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:16:59.165128416" + "timestamp": "2026-01-19T18:27:10.208416609" }, "build index - fasta": { "content": [ @@ -62,7 +70,11 @@ ] ], "1": [ - "versions.yml:md5,c217de4e5a992968de304e342fd720f6" + [ + "SENTIEON_BWAINDEX", + "sentieon", + "202503.02" + ] ], "index": [ [ @@ -78,15 +90,19 @@ ] ] ], - "versions": [ - "versions.yml:md5,c217de4e5a992968de304e342fd720f6" + "versions_sentieon": [ + [ + "SENTIEON_BWAINDEX", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:16:53.915178368" + "timestamp": "2026-01-19T18:27:03.694090374" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/bwaindex/tests/nextflow.config b/modules/nf-core/sentieon/bwaindex/tests/nextflow.config index 67462612282..b186b2e2f70 100644 --- a/modules/nf-core/sentieon/bwaindex/tests/nextflow.config +++ b/modules/nf-core/sentieon/bwaindex/tests/nextflow.config @@ -6,8 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file - // nextflow secrets set SENTIEON_LICENSE_BASE64 $(cat | base64 -w 0) -} -process { + // NOTE This is how users will test out Sentieon in Sarek with a license file + // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/collectvcmetrics/environment.yml b/modules/nf-core/sentieon/collectvcmetrics/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/collectvcmetrics/environment.yml +++ b/modules/nf-core/sentieon/collectvcmetrics/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/collectvcmetrics/main.nf b/modules/nf-core/sentieon/collectvcmetrics/main.nf index af2a186e67a..d836acc9d9e 100644 --- a/modules/nf-core/sentieon/collectvcmetrics/main.nf +++ b/modules/nf-core/sentieon/collectvcmetrics/main.nf @@ -5,8 +5,8 @@ process SENTIEON_COLLECTVCMETRICS { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(vcf), path(tbi) @@ -18,7 +18,7 @@ process SENTIEON_COLLECTVCMETRICS { output: tuple val(meta), path("*.variant_calling_detail_metrics"), emit: metrics tuple val(meta), path("*.variant_calling_summary_metrics"), emit: summary - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -40,11 +40,6 @@ process SENTIEON_COLLECTVCMETRICS { -d ${dbsnp} \\ ${args2} \\ ${prefix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -52,10 +47,5 @@ process SENTIEON_COLLECTVCMETRICS { """ touch ${prefix}.variant_calling_detail_metrics touch ${prefix}.variant_calling_summary_metrics - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/collectvcmetrics/meta.yml b/modules/nf-core/sentieon/collectvcmetrics/meta.yml index d3702a851a4..5eb98b93b23 100644 --- a/modules/nf-core/sentieon/collectvcmetrics/meta.yml +++ b/modules/nf-core/sentieon/collectvcmetrics/meta.yml @@ -102,13 +102,27 @@ output: Summary of VCF metrics pattern: "*.collectvcmetrics.txt" ontologies: [] + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@adamrtalbot" maintainers: diff --git a/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test b/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test index 31f1c0dffb5..7e836759199 100644 --- a/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test +++ b/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test @@ -7,11 +7,11 @@ nextflow_process { tag "collectvcmetrics" tag "sentieon/collectvcmetrics" + config "./nextflow.config" script "../main.nf" process "SENTIEON_COLLECTVCMETRICS" test("Test VCF") { - config "./nextflow.config" when { process { @@ -40,8 +40,7 @@ nextflow_process { assert snapshot( file(process.out.metrics[0][1]).readLines().findAll { !it.startsWith("#") }, file(process.out.summary[0][1]).readLines().findAll { !it.startsWith("#") }, - process.out.versions, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -49,7 +48,6 @@ nextflow_process { } test("Test VCF with intervals") { - config "./nextflow.config" when { process { @@ -78,8 +76,7 @@ nextflow_process { assert snapshot( file(process.out.metrics[0][1]).readLines().findAll { !it.startsWith("#") }, file(process.out.summary[0][1]).readLines().findAll { !it.startsWith("#") }, - process.out.versions, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -87,7 +84,6 @@ nextflow_process { } test("Test VCF - stub") { - config "./nextflow.config" options "-stub" when { diff --git a/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test.snap b/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test.snap index 54862ab71a4..f6aceb3aed7 100644 --- a/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test.snap @@ -19,7 +19,11 @@ ] ], "2": [ - "versions.yml:md5,da75fdfca2c1a2b065c89087e35f5d82" + [ + "SENTIEON_COLLECTVCMETRICS", + "sentieon", + "202503.02" + ] ], "metrics": [ [ @@ -37,16 +41,20 @@ "test.variant_calling_summary_metrics:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,da75fdfca2c1a2b065c89087e35f5d82" + "versions_sentieon": [ + [ + "SENTIEON_COLLECTVCMETRICS", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:04:29.28609603" + "timestamp": "2026-01-21T06:44:32.646401561" }, "Test VCF with intervals": { "content": [ @@ -60,20 +68,21 @@ "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0", "" ], - [ - "versions.yml:md5,da75fdfca2c1a2b065c89087e35f5d82" - ], { - "SENTIEON_COLLECTVCMETRICS": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_COLLECTVCMETRICS", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:56:47.190574079" + "timestamp": "2026-01-21T06:51:03.501057445" }, "Test VCF": { "content": [ @@ -87,19 +96,20 @@ "0\t0\t0\t8\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0", "" ], - [ - "versions.yml:md5,da75fdfca2c1a2b065c89087e35f5d82" - ], { - "SENTIEON_COLLECTVCMETRICS": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_COLLECTVCMETRICS", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:56:40.904662981" + "timestamp": "2026-01-21T06:50:54.098571008" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/collectvcmetrics/tests/nextflow.config b/modules/nf-core/sentieon/collectvcmetrics/tests/nextflow.config index e8969589246..b186b2e2f70 100644 --- a/modules/nf-core/sentieon/collectvcmetrics/tests/nextflow.config +++ b/modules/nf-core/sentieon/collectvcmetrics/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/coveragemetrics/environment.yml b/modules/nf-core/sentieon/coveragemetrics/environment.yml index 5a777da99d3..2986b7b43d9 100644 --- a/modules/nf-core/sentieon/coveragemetrics/environment.yml +++ b/modules/nf-core/sentieon/coveragemetrics/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 - conda-forge::gnuplot=5.4.10 diff --git a/modules/nf-core/sentieon/coveragemetrics/main.nf b/modules/nf-core/sentieon/coveragemetrics/main.nf index 3d8b44a06bb..4f4aee86461 100644 --- a/modules/nf-core/sentieon/coveragemetrics/main.nf +++ b/modules/nf-core/sentieon/coveragemetrics/main.nf @@ -5,8 +5,8 @@ process SENTIEON_COVERAGEMETRICS { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(bam), path(bai) @@ -22,7 +22,7 @@ process SENTIEON_COVERAGEMETRICS { tuple val(meta), path("${prefix}.${partitions_output}_cumulative_coverage_counts"), emit: coverage_counts, optional: true tuple val(meta), path("${prefix}.${partitions_output}_cumulative_coverage_proportions"), emit: coverage_proportions, optional: true tuple val(meta), path("${prefix}.${partitions_output}_interval_summary"), emit: interval_summary, optional: true - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -31,7 +31,7 @@ process SENTIEON_COVERAGEMETRICS { prefix = task.ext.prefix ?: "${meta.id}" def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' - def input = bam.sort().collect { "-i ${it}" }.join(' ') + def input = bam.sort().collect {in -> "-i ${in}" }.join(' ') def interval_cmd = interval ? "--interval ${interval}" : "" def gene_list_cmd = gene_list ? "--gene_list ${gene_list}" : "" // Glob that matches any version of 'sample_library_platform_center'. @@ -48,11 +48,6 @@ process SENTIEON_COVERAGEMETRICS { --algo CoverageMetrics \\ ${args2} \\ ${prefix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -68,10 +63,5 @@ process SENTIEON_COVERAGEMETRICS { touch ${prefix}.sample_cumulative_coverage_counts touch ${prefix}.sample_cumulative_coverage_proportions touch ${prefix}.sample_interval_summary - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/coveragemetrics/meta.yml b/modules/nf-core/sentieon/coveragemetrics/meta.yml index 315df827282..f2e12fe9565 100644 --- a/modules/nf-core/sentieon/coveragemetrics/meta.yml +++ b/modules/nf-core/sentieon/coveragemetrics/meta.yml @@ -139,13 +139,27 @@ output: description: The summary for PARTITION_GROUP library, aggregated by interval. pattern: "${sample_id}_interval_summary" ontologies: [] + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@adamrtalbot" maintainers: diff --git a/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test b/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test index a5a685526f3..71d024c4dc8 100644 --- a/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test +++ b/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test @@ -9,11 +9,14 @@ nextflow_process { script "../main.nf" process "SENTIEON_COVERAGEMETRICS" + config "./nextflow.config" test("Test per sample") { - config "./nextflow.config" - when { + params { + module_args = '' + module_args2 = '' + } process { """ input[0] = [ @@ -38,9 +41,11 @@ nextflow_process { } test("Test with interval") { - config "./nextflow.config" - when { + params { + module_args = '' + module_args2 = '' + } process { """ input[0] = [ @@ -65,9 +70,11 @@ nextflow_process { } test("Test omit outputs") { - config "./nextflow_omit.config" - when { + params { + module_args = '' + module_args2 = '--omit_sample_stat --omit_locus_stat --omit_interval_stat' + } process { """ input[0] = [ @@ -92,9 +99,11 @@ nextflow_process { } test("Test readgroup partition") { - config "./nextflow_partitions.config" - when { + params { + module_args = '' + module_args2 = '--partition sample,platform,library,center' + } process { """ input[0] = [ @@ -119,9 +128,12 @@ nextflow_process { } test("Test multiple BAMs") { - config "./nextflow.config" when { + params { + module_args = '' + module_args2 = '' + } process { """ input[0] = [ @@ -156,6 +168,10 @@ nextflow_process { options "-stub" when { + params { + module_args = '' + module_args2 = '' + } process { """ input[0] = [ diff --git a/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test.snap b/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test.snap index a0114c013b5..3047aab1b0c 100644 --- a/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test.snap @@ -26,7 +26,11 @@ ], "6": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ], "coverage_counts": [ @@ -51,16 +55,20 @@ "statistics": [ ], - "versions": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + "versions_sentieon": [ + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:05:51.88466788" + "timestamp": "2026-01-21T06:54:57.611594148" }, "Test with interval": { "content": [ @@ -114,7 +122,11 @@ ] ], "6": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ], "coverage_counts": [ [ @@ -164,16 +176,20 @@ "test.sample_interval_statistics:md5,4eeb041ef4b6f23318a5cb27ded8d185" ] ], - "versions": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + "versions_sentieon": [ + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:05:24.278027366" + "timestamp": "2026-01-21T06:54:48.537598623" }, "Test multiple BAMs": { "content": [ @@ -227,7 +243,11 @@ ] ], "6": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ], "coverage_counts": [ [ @@ -277,16 +297,20 @@ "test.sample_interval_statistics:md5,fbde27e69eb60da6929f84cde88fa71d" ] ], - "versions": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + "versions_sentieon": [ + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:06:46.323973672" + "timestamp": "2026-01-21T06:55:15.632397339" }, "Test - stub": { "content": [ @@ -335,7 +359,11 @@ ] ], "6": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ], "coverage_counts": [ [ @@ -380,8 +408,12 @@ "test.sample_interval_statistics:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + "versions_sentieon": [ + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ] } ], @@ -389,7 +421,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.2" }, - "timestamp": "2026-01-20T16:23:51.428668993" + "timestamp": "2026-01-21T06:55:22.931782396" }, "Test per sample": { "content": [ @@ -443,7 +475,11 @@ ] ], "6": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ], "coverage_counts": [ [ @@ -493,16 +529,20 @@ "test.sample_interval_statistics:md5,fbde27e69eb60da6929f84cde88fa71d" ] ], - "versions": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + "versions_sentieon": [ + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:04:57.099283101" + "timestamp": "2026-01-21T06:54:39.444896549" }, "Test readgroup partition": { "content": [ @@ -556,7 +596,11 @@ ] ], "6": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ], "coverage_counts": [ [ @@ -606,15 +650,19 @@ "test.sample_library_platform_center_interval_statistics:md5,fbde27e69eb60da6929f84cde88fa71d" ] ], - "versions": [ - "versions.yml:md5,c216eb43f743f0ea4df1632db5d0cf01" + "versions_sentieon": [ + [ + "SENTIEON_COVERAGEMETRICS", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:06:18.628321989" + "timestamp": "2026-01-21T06:55:06.47413819" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/coveragemetrics/tests/nextflow.config b/modules/nf-core/sentieon/coveragemetrics/tests/nextflow.config index e8969589246..216c6931c5b 100644 --- a/modules/nf-core/sentieon/coveragemetrics/tests/nextflow.config +++ b/modules/nf-core/sentieon/coveragemetrics/tests/nextflow.config @@ -1,3 +1,10 @@ +process { + withName: 'SENTIEON_COVERAGEMETRICS' { + ext.args = params.module_args + ext.args2 = params.module_args2 + } +} + env { // NOTE This is how nf-core/sarek users will use Sentieon in real world use // TODO: Update to `env('SENTIEON_LICSRVR_IP')` when minimum Nextflow version is >= 26.04.0 @@ -6,6 +13,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/coveragemetrics/tests/nextflow_omit.config b/modules/nf-core/sentieon/coveragemetrics/tests/nextflow_omit.config deleted file mode 100644 index 696ca01a654..00000000000 --- a/modules/nf-core/sentieon/coveragemetrics/tests/nextflow_omit.config +++ /dev/null @@ -1,17 +0,0 @@ -env { - // NOTE This is how nf-core/sarek users will use Sentieon in real world use - // TODO: Update to `env('SENTIEON_LICSRVR_IP')` when minimum Nextflow version is >= 26.04.0 - SENTIEON_LICENSE = System.getenv('SENTIEON_LICSRVR_IP') - // NOTE This should only happen in GitHub actions or nf-core MegaTests - // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 - SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') - SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file - // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) -} - -process { - withName: "SENTIEON_COVERAGEMETRICS" { - ext.args2 = "--omit_sample_stat --omit_locus_stat --omit_interval_stat" - } -} diff --git a/modules/nf-core/sentieon/coveragemetrics/tests/nextflow_partitions.config b/modules/nf-core/sentieon/coveragemetrics/tests/nextflow_partitions.config deleted file mode 100644 index 23985f3e3d1..00000000000 --- a/modules/nf-core/sentieon/coveragemetrics/tests/nextflow_partitions.config +++ /dev/null @@ -1,17 +0,0 @@ -env { - // NOTE This is how nf-core/sarek users will use Sentieon in real world use - // TODO: Update to `env('SENTIEON_LICSRVR_IP')` when minimum Nextflow version is >= 26.04.0 - SENTIEON_LICENSE = System.getenv('SENTIEON_LICSRVR_IP') - // NOTE This should only happen in GitHub actions or nf-core MegaTests - // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 - SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') - SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file - // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) -} - -process { - withName: "SENTIEON_COVERAGEMETRICS" { - ext.args2 = "--partition sample,platform,library,center" - } -} diff --git a/modules/nf-core/sentieon/datametrics/main.nf b/modules/nf-core/sentieon/datametrics/main.nf index a84baea6f1b..51035a35d59 100644 --- a/modules/nf-core/sentieon/datametrics/main.nf +++ b/modules/nf-core/sentieon/datametrics/main.nf @@ -33,7 +33,7 @@ process SENTIEON_DATAMETRICS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input = bam.sort().collect { "-i ${it}" }.join(' ') + def input = bam.sort().collect {in -> "-i ${in}" }.join(' ') def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " : "" diff --git a/modules/nf-core/sentieon/datametrics/tests/nextflow.config b/modules/nf-core/sentieon/datametrics/tests/nextflow.config index 9795314724a..1e494961dcc 100644 --- a/modules/nf-core/sentieon/datametrics/tests/nextflow.config +++ b/modules/nf-core/sentieon/datametrics/tests/nextflow.config @@ -6,13 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } - -process { - withLabel: 'sentieon' { - ext.sentieon_auth_mech_base64 = secrets.SENTIEON_AUTH_MECH_BASE64 - ext.sentieon_auth_data_base64 = secrets.SENTIEON_AUTH_DATA_BASE64 - } -} diff --git a/modules/nf-core/sentieon/dedup/environment.yml b/modules/nf-core/sentieon/dedup/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/dedup/environment.yml +++ b/modules/nf-core/sentieon/dedup/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/dedup/main.nf b/modules/nf-core/sentieon/dedup/main.nf index c6e9de5683b..321c0712f42 100644 --- a/modules/nf-core/sentieon/dedup/main.nf +++ b/modules/nf-core/sentieon/dedup/main.nf @@ -5,8 +5,8 @@ process SENTIEON_DEDUP { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(bam), path(bai) @@ -21,7 +21,7 @@ process SENTIEON_DEDUP { tuple val(meta), path("*.score"), emit: score tuple val(meta), path("*.metrics"), emit: metrics tuple val(meta), path("*.metrics.multiqc.tsv"), emit: metrics_multiqc_tsv - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -33,7 +33,7 @@ process SENTIEON_DEDUP { def args4 = task.ext.args4 ?: '' def prefix = task.ext.prefix ?: "${meta.id}.cram" def metrics = task.ext.metrics ?: "${prefix}.metrics" - def input_list = bam.collect { "-i ${it}" }.join(' ') + def input_list = bam.collect {input -> "-i ${input}" }.join(' ') def prefix_basename = prefix.substring(0, prefix.lastIndexOf(".")) def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " @@ -47,11 +47,6 @@ process SENTIEON_DEDUP { # This following tsv-file is produced in order to get a proper tsv-file with Dedup-metrics for importing in MultiQC as "custom content". # It should be removed once MultiQC has a module for displaying Dedup-metrics. head -3 ${metrics} > ${metrics}.multiqc.tsv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -66,10 +61,5 @@ process SENTIEON_DEDUP { touch "${metrics}" touch "${metrics}.multiqc.tsv" touch "${prefix_basename}.score" - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/dedup/meta.yml b/modules/nf-core/sentieon/dedup/meta.yml index 1a26d54296c..af4541ce793 100644 --- a/modules/nf-core/sentieon/dedup/meta.yml +++ b/modules/nf-core/sentieon/dedup/meta.yml @@ -133,13 +133,28 @@ output: pattern: "*.metrics.multiqc.tsv" ontologies: - edam: http://edamontology.org/format_3475 # TSV + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/sentieon/dedup/tests/main.nf.test b/modules/nf-core/sentieon/dedup/tests/main.nf.test index 114551b8c72..9e5179d6141 100644 --- a/modules/nf-core/sentieon/dedup/tests/main.nf.test +++ b/modules/nf-core/sentieon/dedup/tests/main.nf.test @@ -10,10 +10,18 @@ nextflow_process { script "../main.nf" process "SENTIEON_DEDUP" - test("Test marking duplicates") { - config "./nextflow.config" + config "./nextflow.config" + + test("Test marking duplicates, bam") { when { + params { + module_args = '' + module_args2 = '' + module_args3 = '' + module_args4 = '' + module_prefix = "test.dedup.bam" + } process { """ input[0] = [ @@ -30,15 +38,28 @@ nextflow_process { then { assert process.success assertAll( - { assert snapshot(process.out).match() } + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + file(process.out.bai[0][1]).name, + path(process.out.score[0][1]).contains("SentieonCommandLine"), + path(process.out.metrics[0][1]).contains("SentieonCommandLine"), + path(process.out.metrics_multiqc_tsv[0][1]).contains("SentieonCommandLine"), + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } - test("Test removing duplicates") { - config "./nextflow_rmdup.config" + test("Test removing duplicates, cram") { when { + params { + module_args = '' + module_args2 = '' + module_args3 = '' + module_args4 = '--rmdup' + module_prefix = "test.dedup.cram" + } process { """ input[0] = [ @@ -53,17 +74,31 @@ nextflow_process { } then { + def fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/sarscov2/genome/genome.fasta' assert process.success assertAll( - { assert snapshot(process.out).match() } + { assert snapshot( + cram(process.out.cram[0][1], fasta).getReadsMD5(), + file(process.out.crai[0][1]).name, + path(process.out.score[0][1]).contains("SentieonCommandLine"), + path(process.out.metrics[0][1]).contains("SentieonCommandLine"), + path(process.out.metrics_multiqc_tsv[0][1]).contains("SentieonCommandLine"), + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() } ) } } test("Test stub") { - config "./nextflow.config" options "-stub" when { + params { + module_args = '' + module_args2 = '' + module_args3 = '' + module_args4 = '' + module_prefix = '' + } process { """ input[0] = [ diff --git a/modules/nf-core/sentieon/dedup/tests/main.nf.test.snap b/modules/nf-core/sentieon/dedup/tests/main.nf.test.snap index 7d25f5d9521..1cf940dcc9a 100644 --- a/modules/nf-core/sentieon/dedup/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/dedup/tests/main.nf.test.snap @@ -1,241 +1,49 @@ { - "Test marking duplicates": { + "Test removing duplicates, cram": { "content": [ + "894549ee3ced6b5ca2eed2563a985217", + "test.dedup.cram.crai", + false, + false, + false, { - "0": [ - [ - { - "id": "test" - }, - "test.cram:md5,3cc6965582621779fad1b9583735a54c" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.cram.crai:md5,19a4bd170312993b5b50824173363733" - ] - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test" - }, - "test.cram.bai:md5,4c2f9d6808b4dd0fffdb5ab7e663f047" - ] - ], - "4": [ - [ - { - "id": "test" - }, - "test.score:md5,74f88df6027ecdea3e4b345ca7f7ee80" - ] - ], - "5": [ - [ - { - "id": "test" - }, - "test.cram.metrics:md5,ee74fa3a59dbecc559b8d3b7a70074e2" - ] - ], - "6": [ - [ - { - "id": "test" - }, - "test.cram.metrics.multiqc.tsv:md5,ee74fa3a59dbecc559b8d3b7a70074e2" - ] - ], - "7": [ - "versions.yml:md5,84017bd8f4cd3a50d370f6de544a768d" - ], - "bai": [ - [ - { - "id": "test" - }, - "test.cram.bai:md5,4c2f9d6808b4dd0fffdb5ab7e663f047" - ] - ], - "bam": [ - - ], - "crai": [ - [ - { - "id": "test" - }, - "test.cram.crai:md5,19a4bd170312993b5b50824173363733" - ] - ], - "cram": [ - [ - { - "id": "test" - }, - "test.cram:md5,3cc6965582621779fad1b9583735a54c" - ] - ], - "metrics": [ + "versions_sentieon": [ [ - { - "id": "test" - }, - "test.cram.metrics:md5,ee74fa3a59dbecc559b8d3b7a70074e2" + "SENTIEON_DEDUP", + "sentieon", + "202503.02" ] - ], - "metrics_multiqc_tsv": [ - [ - { - "id": "test" - }, - "test.cram.metrics.multiqc.tsv:md5,ee74fa3a59dbecc559b8d3b7a70074e2" - ] - ], - "score": [ - [ - { - "id": "test" - }, - "test.score:md5,74f88df6027ecdea3e4b345ca7f7ee80" - ] - ], - "versions": [ - "versions.yml:md5,84017bd8f4cd3a50d370f6de544a768d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:19:11.952461243" + "timestamp": "2026-01-21T11:42:11.871897434" }, - "Test removing duplicates": { + "Test marking duplicates, bam": { "content": [ + "894549ee3ced6b5ca2eed2563a985217", + "test.dedup.bam.bai", + false, + false, + false, { - "0": [ - [ - { - "id": "test" - }, - "test.cram:md5,efb9578f3f958d2d6143d68b17bdaed0" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.cram.crai:md5,f49d65d89421a61393c996a20a7c1018" - ] - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test" - }, - "test.cram.bai:md5,a1ea729eca4732ca3a5dee946a70fbc8" - ] - ], - "4": [ - [ - { - "id": "test" - }, - "test.score:md5,74f88df6027ecdea3e4b345ca7f7ee80" - ] - ], - "5": [ - [ - { - "id": "test" - }, - "test.cram.metrics:md5,270e532a0c20fb996369661e5520af60" - ] - ], - "6": [ - [ - { - "id": "test" - }, - "test.cram.metrics.multiqc.tsv:md5,270e532a0c20fb996369661e5520af60" - ] - ], - "7": [ - "versions.yml:md5,84017bd8f4cd3a50d370f6de544a768d" - ], - "bai": [ + "versions_sentieon": [ [ - { - "id": "test" - }, - "test.cram.bai:md5,a1ea729eca4732ca3a5dee946a70fbc8" - ] - ], - "bam": [ - - ], - "crai": [ - [ - { - "id": "test" - }, - "test.cram.crai:md5,f49d65d89421a61393c996a20a7c1018" - ] - ], - "cram": [ - [ - { - "id": "test" - }, - "test.cram:md5,efb9578f3f958d2d6143d68b17bdaed0" - ] - ], - "metrics": [ - [ - { - "id": "test" - }, - "test.cram.metrics:md5,270e532a0c20fb996369661e5520af60" - ] - ], - "metrics_multiqc_tsv": [ - [ - { - "id": "test" - }, - "test.cram.metrics.multiqc.tsv:md5,270e532a0c20fb996369661e5520af60" + "SENTIEON_DEDUP", + "sentieon", + "202503.02" ] - ], - "score": [ - [ - { - "id": "test" - }, - "test.score:md5,74f88df6027ecdea3e4b345ca7f7ee80" - ] - ], - "versions": [ - "versions.yml:md5,84017bd8f4cd3a50d370f6de544a768d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:19:19.79382323" + "timestamp": "2026-01-21T11:41:33.04379133" }, "Test stub": { "content": [ @@ -292,7 +100,11 @@ ] ], "7": [ - "versions.yml:md5,84017bd8f4cd3a50d370f6de544a768d" + [ + "SENTIEON_DEDUP", + "sentieon", + "202503.02" + ] ], "bai": [ [ @@ -345,15 +157,19 @@ "test.score:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,84017bd8f4cd3a50d370f6de544a768d" + "versions_sentieon": [ + [ + "SENTIEON_DEDUP", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:19:25.095728083" + "timestamp": "2026-01-19T18:07:52.331783324" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/dedup/tests/nextflow.config b/modules/nf-core/sentieon/dedup/tests/nextflow.config index e8969589246..48a45c4e8d6 100644 --- a/modules/nf-core/sentieon/dedup/tests/nextflow.config +++ b/modules/nf-core/sentieon/dedup/tests/nextflow.config @@ -6,6 +6,16 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } + +process { + withName: 'SENTIEON_DEDUP' { + ext.args = params.module_args + ext.args2 = params.module_args2 + ext.args3 = params.module_args3 + ext.args4 = params.module_args4 + ext.prefix = params.module_prefix + } +} diff --git a/modules/nf-core/sentieon/dedup/tests/nextflow_rmdup.config b/modules/nf-core/sentieon/dedup/tests/nextflow_rmdup.config deleted file mode 100644 index b29c636ffc1..00000000000 --- a/modules/nf-core/sentieon/dedup/tests/nextflow_rmdup.config +++ /dev/null @@ -1,17 +0,0 @@ -env { - // NOTE This is how nf-core/sarek users will use Sentieon in real world use - // TODO: Update to `env('SENTIEON_LICSRVR_IP')` when minimum Nextflow version is >= 26.04.0 - SENTIEON_LICENSE = System.getenv('SENTIEON_LICSRVR_IP') - // NOTE This should only happen in GitHub actions or nf-core MegaTests - // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 - SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') - SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file - // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) -} - -process { - withName: 'SENTIEON_DEDUP' { - ext.args4 = '--rmdup' - } -} diff --git a/modules/nf-core/sentieon/dnamodelapply/tests/nextflow.config b/modules/nf-core/sentieon/dnamodelapply/tests/nextflow.config index e8969589246..b186b2e2f70 100644 --- a/modules/nf-core/sentieon/dnamodelapply/tests/nextflow.config +++ b/modules/nf-core/sentieon/dnamodelapply/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/dnascope/tests/nextflow.config b/modules/nf-core/sentieon/dnascope/tests/nextflow.config index e8969589246..b186b2e2f70 100644 --- a/modules/nf-core/sentieon/dnascope/tests/nextflow.config +++ b/modules/nf-core/sentieon/dnascope/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/gvcftyper/tests/nextflow.config b/modules/nf-core/sentieon/gvcftyper/tests/nextflow.config index 3a9346d01bf..6074c3a47d9 100644 --- a/modules/nf-core/sentieon/gvcftyper/tests/nextflow.config +++ b/modules/nf-core/sentieon/gvcftyper/tests/nextflow.config @@ -6,10 +6,11 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } + process { withName: SENTIEON_GVCFTYPER { ext.prefix = { "${meta.id}.genotyped" } diff --git a/modules/nf-core/sentieon/haplotyper/environment.yml b/modules/nf-core/sentieon/haplotyper/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/haplotyper/environment.yml +++ b/modules/nf-core/sentieon/haplotyper/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/haplotyper/main.nf b/modules/nf-core/sentieon/haplotyper/main.nf index 80cd4d0de9b..64e609a7654 100644 --- a/modules/nf-core/sentieon/haplotyper/main.nf +++ b/modules/nf-core/sentieon/haplotyper/main.nf @@ -5,8 +5,8 @@ process SENTIEON_HAPLOTYPER { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(input), path(input_index), path(intervals), path(recal_table) @@ -24,7 +24,7 @@ process SENTIEON_HAPLOTYPER { // these output-files have to have the extension ".vcf.gz", otherwise the subsequent GATK-MergeVCFs will fail. tuple val(meta), path("*.g.vcf.gz"), emit: gvcf, optional: true tuple val(meta), path("*.g.vcf.gz.tbi"), emit: gvcf_tbi, optional: true - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -34,7 +34,7 @@ process SENTIEON_HAPLOTYPER { def args2 = task.ext.args2 ?: '' // options for the vcf generation def args3 = task.ext.args3 ?: '' // options for the gvcf generation def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = input instanceof List ? input.collect { "-i ${it}" }.join(' ') : "-i ${input}" + def input_list = input instanceof List ? input.collect {in -> "-i ${in}" }.join(' ') : "-i ${input}" def dbsnp_command = dbsnp ? "-d ${dbsnp} " : "" def interval_command = intervals ? "--interval ${intervals}" : "" def recal_table_command = recal_table ? "-q ${recal_table}" : "" @@ -70,11 +70,6 @@ process SENTIEON_HAPLOTYPER { ${recal_table_command} \\ ${vcf_cmd} \\ ${gvcf_cmd} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -84,10 +79,5 @@ process SENTIEON_HAPLOTYPER { touch ${prefix}.unfiltered.vcf.gz.tbi echo "" | gzip > ${prefix}.g.vcf.gz touch ${prefix}.g.vcf.gz.tbi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/haplotyper/meta.yml b/modules/nf-core/sentieon/haplotyper/meta.yml index f63eff8c373..cc98b9ac976 100644 --- a/modules/nf-core/sentieon/haplotyper/meta.yml +++ b/modules/nf-core/sentieon/haplotyper/meta.yml @@ -131,13 +131,27 @@ output: description: Index of GVCF file pattern: "*.g.vcf.gz.tbi" ontologies: [] + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/sentieon/haplotyper/tests/main.nf.test b/modules/nf-core/sentieon/haplotyper/tests/main.nf.test index 13c3b89d741..e915a3b2f90 100644 --- a/modules/nf-core/sentieon/haplotyper/tests/main.nf.test +++ b/modules/nf-core/sentieon/haplotyper/tests/main.nf.test @@ -36,10 +36,9 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.vcf_tbi.get(0).get(1)).name, - path(process.out.vcf[0][1]).vcf.variantsMD5 + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -71,10 +70,9 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.gvcf_tbi.get(0).get(1)).name, - path(process.out.gvcf[0][1]).vcf.variantsMD5 + path(process.out.gvcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -106,12 +104,11 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.gvcf_tbi.get(0).get(1)).name, path(process.out.gvcf[0][1]).vcf.variantsMD5, file(process.out.vcf_tbi.get(0).get(1)).name, - path(process.out.vcf[0][1]).vcf.variantsMD5 + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -143,12 +140,11 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.gvcf_tbi.get(0).get(1)).name, path(process.out.gvcf[0][1]).vcf.variantsMD5, file(process.out.vcf_tbi.get(0).get(1)).name, - path(process.out.vcf[0][1]).vcf.variantsMD5 + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -180,12 +176,11 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.gvcf_tbi.get(0).get(1)).name, path(process.out.gvcf[0][1]).vcf.variantsMD5, file(process.out.vcf_tbi.get(0).get(1)).name, - path(process.out.vcf[0][1]).vcf.variantsMD5 + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -241,10 +236,9 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.vcf_tbi.get(0).get(1)).name, - path(process.out.vcf[0][1]).vcf.variantsMD5 + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -283,10 +277,9 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out.versions, - path(process.out.versions[0]).yaml, file(process.out.vcf_tbi.get(0).get(1)).name, - path(process.out.vcf[0][1]).vcf.variantsMD5 + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) diff --git a/modules/nf-core/sentieon/haplotyper/tests/main.nf.test.snap b/modules/nf-core/sentieon/haplotyper/tests/main.nf.test.snap index c8f884a07b3..552c566f9cf 100644 --- a/modules/nf-core/sentieon/haplotyper/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/haplotyper/tests/main.nf.test.snap @@ -1,123 +1,129 @@ { "Sentieon Haplotyper VCF": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.unfiltered.vcf.gz.tbi", - "cea0045051da7877b38a1e25df812a91" + "cea0045051da7877b38a1e25df812a91", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:59:55.911444833" + "timestamp": "2026-01-20T20:24:00.027415188" }, "Sentieon Haplotyper Recalibration": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.unfiltered.vcf.gz.tbi", - "10faa3b669c49826098e09784d8a4716" + "10faa3b669c49826098e09784d8a4716", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:00:31.931354567" + "timestamp": "2026-01-20T20:24:47.907057871" }, "Sentieon Haplotyper GVCF": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.g.vcf.gz.tbi", - "338fc3c37b208d6595948576833eb665" + "338fc3c37b208d6595948576833eb665", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:00:02.6758866" + "timestamp": "2026-01-20T20:24:08.910048985" }, "Sentieon Haplotyper BOTH": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.g.vcf.gz.tbi", "338fc3c37b208d6595948576833eb665", "test.unfiltered.vcf.gz.tbi", - "cea0045051da7877b38a1e25df812a91" + "cea0045051da7877b38a1e25df812a91", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:00:09.763919171" + "timestamp": "2026-01-20T20:24:17.948416042" }, "Sentieon Haplotyper DBSNP BOTH": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.g.vcf.gz.tbi", "228556b7921205f023fec51098feeb97", "test.unfiltered.vcf.gz.tbi", - "cc1f3d4bd615f3640e7fd103cc39d2f8" + "cc1f3d4bd615f3640e7fd103cc39d2f8", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:00:23.521373869" + "timestamp": "2026-01-20T20:24:35.887578614" }, "Sentieon Haplotyper Intervals BOTH": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.g.vcf.gz.tbi", "338fc3c37b208d6595948576833eb665", "test.unfiltered.vcf.gz.tbi", - "cea0045051da7877b38a1e25df812a91" + "cea0045051da7877b38a1e25df812a91", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:00:16.430893603" + "timestamp": "2026-01-20T20:24:26.897616341" }, "Sentieon Haplotyper - stub": { "content": [ @@ -155,7 +161,11 @@ ] ], "4": [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] ], "gvcf": [ [ @@ -189,34 +199,39 @@ "test.unfiltered.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T08:21:01.202952019" + "timestamp": "2026-01-19T21:03:03.06824978" }, "Sentieon Haplotyper multiple CRAMs": { "content": [ - [ - "versions.yml:md5,96f268259f652e8a1083a3ecfcd4af57" - ], - { - "SENTIEON_HAPLOTYPER": { - "sentieon": 202503.01 - } - }, "test.unfiltered.vcf.gz.tbi", - "b5d6e09e336438e38f7bf5531799e3a" + "b5d6e09e336438e38f7bf5531799e3a", + { + "versions_sentieon": [ + [ + "SENTIEON_HAPLOTYPER", + "sentieon", + "202503.02" + ] + ] + } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:00:38.788987585" + "timestamp": "2026-01-20T20:24:56.57496734" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/haplotyper/tests/nextflow.config b/modules/nf-core/sentieon/haplotyper/tests/nextflow.config index 275a5d32004..5cdf3db7143 100644 --- a/modules/nf-core/sentieon/haplotyper/tests/nextflow.config +++ b/modules/nf-core/sentieon/haplotyper/tests/nextflow.config @@ -6,10 +6,11 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } + process { withName: 'SENTIEON_HAPLOTYPER' { ext.args2 = "--genotype_model multinomial" diff --git a/modules/nf-core/sentieon/hsmetrics/environment.yml b/modules/nf-core/sentieon/hsmetrics/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/hsmetrics/environment.yml +++ b/modules/nf-core/sentieon/hsmetrics/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/hsmetrics/main.nf b/modules/nf-core/sentieon/hsmetrics/main.nf index 6a09c88c138..8e3ceabf300 100644 --- a/modules/nf-core/sentieon/hsmetrics/main.nf +++ b/modules/nf-core/sentieon/hsmetrics/main.nf @@ -5,8 +5,8 @@ process SENTIEON_HSMETRICS { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(bam), path(bai), path(bait_intervals), path(target_intervals) @@ -23,7 +23,7 @@ process SENTIEON_HSMETRICS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input = bam.sort().collect {bam_ -> "-i ${bam_}" }.join(' ') + def input = bam.sort().collect {in -> "-i ${in}" }.join(' ') def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " : "" diff --git a/modules/nf-core/sentieon/hsmetrics/meta.yml b/modules/nf-core/sentieon/hsmetrics/meta.yml index a520afb6653..0b2fa185ab8 100644 --- a/modules/nf-core/sentieon/hsmetrics/meta.yml +++ b/modules/nf-core/sentieon/hsmetrics/meta.yml @@ -94,7 +94,7 @@ topics: - sentieon: type: string description: The tool name - - "sentieon driver --version | sed 's/.*-//g'": + - sentieon driver --version | sed 's/.*-//g': type: string description: The command used to generate the version of the tool authors: diff --git a/modules/nf-core/sentieon/hsmetrics/tests/main.nf.test.snap b/modules/nf-core/sentieon/hsmetrics/tests/main.nf.test.snap index 9359e7b24ec..641dcd377d7 100644 --- a/modules/nf-core/sentieon/hsmetrics/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/hsmetrics/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "SENTIEON_HSMETRICS", "sentieon", - "202503.01" + "202503.02" ] ], "metrics": [ @@ -29,7 +29,7 @@ [ "SENTIEON_HSMETRICS", "sentieon", - "202503.01" + "202503.02" ] ] } @@ -38,7 +38,7 @@ "nf-test": "0.9.3", "nextflow": "25.10.2" }, - "timestamp": "2026-01-06T14:42:35.157523347" + "timestamp": "2026-01-20T08:52:34.928359133" }, "sarscov2 - bam": { "content": [ @@ -149,7 +149,7 @@ [ "SENTIEON_HSMETRICS", "sentieon", - "202503.01" + "202503.02" ] ] } @@ -158,6 +158,6 @@ "nf-test": "0.9.3", "nextflow": "25.10.2" }, - "timestamp": "2026-01-06T15:22:37.882011263" + "timestamp": "2026-01-20T08:52:26.714701109" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/hsmetrics/tests/nextflow.config b/modules/nf-core/sentieon/hsmetrics/tests/nextflow.config index 4214d91de79..1e494961dcc 100644 --- a/modules/nf-core/sentieon/hsmetrics/tests/nextflow.config +++ b/modules/nf-core/sentieon/hsmetrics/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/qualcal/environment.yml b/modules/nf-core/sentieon/qualcal/environment.yml index 5a777da99d3..2986b7b43d9 100644 --- a/modules/nf-core/sentieon/qualcal/environment.yml +++ b/modules/nf-core/sentieon/qualcal/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 - conda-forge::gnuplot=5.4.10 diff --git a/modules/nf-core/sentieon/qualcal/main.nf b/modules/nf-core/sentieon/qualcal/main.nf index 9afd3111082..b6b0e16c884 100644 --- a/modules/nf-core/sentieon/qualcal/main.nf +++ b/modules/nf-core/sentieon/qualcal/main.nf @@ -4,8 +4,8 @@ process SENTIEON_QUALCAL { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/20/2050c5321a5426e31b9ed1e3e98356913fe3c316a7ef02c4fb872983a730db6f/data' - : 'community.wave.seqera.io/library/sentieon_gnuplot:a6da525a6c9ce6e3'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/ae/ae67a134620c3af22c8563a2913c4639caa0d75ce25764e7b10c996b242aa023/data' + : 'community.wave.seqera.io/library/sentieon_gnuplot:41931fca35668c97'}" input: tuple val(meta), path(input), path(input_index) @@ -22,7 +22,7 @@ process SENTIEON_QUALCAL { tuple val(meta), path("*.{cram,bam}"), emit: recal_alignment, optional: true tuple val(meta), path("*.csv"), emit: csv, optional: true tuple val(meta), path("*.pdf"), emit: pdf, optional: true - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -30,8 +30,8 @@ process SENTIEON_QUALCAL { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = input.collect { "-i ${it}" }.join(' ') - def knownSites = known_sites ? known_sites.collect { "-k ${it}" }.join(' ') : "" + def input_list = input.collect {in -> "-i ${in}" }.join(' ') + def knownSites = known_sites ? known_sites.collect {in -> "-k ${in}" }.join(' ') : "" def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " : "" @@ -49,11 +49,6 @@ process SENTIEON_QUALCAL { ${args} \\ ${knownSites} \\ ${prefix}.table - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } else { @@ -84,11 +79,6 @@ process SENTIEON_QUALCAL { ${prefix}.csv sentieon plot QualCal -o ${prefix}.pdf ${prefix}.csv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } @@ -103,10 +93,5 @@ process SENTIEON_QUALCAL { ${recalibrated_bam_cmd} touch ${prefix}.csv touch ${prefix}.pdf - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/qualcal/meta.yml b/modules/nf-core/sentieon/qualcal/meta.yml index 279af55ba96..050834a252d 100644 --- a/modules/nf-core/sentieon/qualcal/meta.yml +++ b/modules/nf-core/sentieon/qualcal/meta.yml @@ -139,14 +139,29 @@ output: description: PDF file containing graphs (optional) pattern: "*.pdf" ontologies: [] - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@FriederikeHanssen" maintainers: - "@FriederikeHanssen" + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool diff --git a/modules/nf-core/sentieon/qualcal/tests/main.nf.test b/modules/nf-core/sentieon/qualcal/tests/main.nf.test index 7e7f64c7640..4ef8ef2a4ae 100644 --- a/modules/nf-core/sentieon/qualcal/tests/main.nf.test +++ b/modules/nf-core/sentieon/qualcal/tests/main.nf.test @@ -121,10 +121,9 @@ nextflow_process { { assert snapshot( process.out.table, process.out.table_post, - process.out.recal_alignment, + bam(process.out.recal_alignment[0][1]).getReadsMD5(), process.out.csv, - file(process.out.pdf[0][1]).name, - path(process.out.versions[0]).yaml + file(process.out.pdf[0][1]).name ).match() } ) } @@ -175,15 +174,15 @@ nextflow_process { } then { + def fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' assert process.success assertAll( { assert snapshot( process.out.table, process.out.table_post, - process.out.recal_alignment, + cram(process.out.recal_alignment[0][1], fasta).getReadsMD5(), process.out.csv, - file(process.out.pdf[0][1]).name, - path(process.out.versions[0]).yaml + file(process.out.pdf[0][1]).name ).match() } ) diff --git a/modules/nf-core/sentieon/qualcal/tests/main.nf.test.snap b/modules/nf-core/sentieon/qualcal/tests/main.nf.test.snap index dd360032afd..2b393ca4623 100644 --- a/modules/nf-core/sentieon/qualcal/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/qualcal/tests/main.nf.test.snap @@ -12,14 +12,7 @@ "test.table.post:md5,83811f5f6a21ac1826074ef7b0ac97b6" ] ], - [ - [ - { - "id": "test" - }, - "test.recalibrated.bam:md5,d8a40a75fec761c04208463ea679c047" - ] - ], + "894549ee3ced6b5ca2eed2563a985217", [ [ { @@ -28,18 +21,13 @@ "test.csv:md5,1c5edd3a663f2b83337c54c162b9f87e" ] ], - "test.pdf", - { - "SENTIEON_QUALCAL": { - "sentieon": 202503.01 - } - } + "test.pdf" ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:22:17.518197719" + "timestamp": "2026-01-20T15:36:41.8541719" }, "BAM - stub": { "content": [ @@ -85,7 +73,11 @@ ] ], "5": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ], "csv": [ [ @@ -127,16 +119,20 @@ "test.table.post:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + "versions_sentieon": [ + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:22:33.246218197" + "timestamp": "2026-01-19T20:44:41.372394284" }, "Generate recalibration table - CRAM": { "content": [ @@ -162,7 +158,11 @@ ], "5": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ], "csv": [ @@ -184,16 +184,20 @@ "table_post": [ ], - "versions": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + "versions_sentieon": [ + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:22:08.541061248" + "timestamp": "2026-01-20T08:42:38.389272827" }, "no recal BAM - stub": { "content": [ @@ -234,7 +238,11 @@ ] ], "5": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ], "csv": [ [ @@ -271,16 +279,20 @@ "test.table.post:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + "versions_sentieon": [ + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:22:39.208751902" + "timestamp": "2026-01-19T20:44:49.330475275" }, "Recalibrate - CRAM": { "content": [ @@ -295,14 +307,7 @@ "test.table.post:md5,f9c04c33b3417e6183372658e9122c32" ] ], - [ - [ - { - "id": "test" - }, - "test.recalibrated.cram:md5,6c28ea63fd30c7fc2b7e9910d236904e" - ] - ], + "2f11e4fe3390b8ad0a1852616fd1da04", [ [ { @@ -311,18 +316,13 @@ "test.csv:md5,0482ccf531a0badbde21c6eb36da5884" ] ], - "test.pdf", - { - "SENTIEON_QUALCAL": { - "sentieon": 202503.01 - } - } + "test.pdf" ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:22:27.664270911" + "timestamp": "2026-01-20T16:00:47.365728967" }, "Generate recalibration table - BAM": { "content": [ @@ -348,7 +348,11 @@ ], "5": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ], "csv": [ @@ -370,15 +374,19 @@ "table_post": [ ], - "versions": [ - "versions.yml:md5,e48ef9b6808aaeffeeff6b8e91058c15" + "versions_sentieon": [ + [ + "SENTIEON_QUALCAL", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T08:22:02.058577117" + "timestamp": "2026-01-20T08:42:29.378865734" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/qualcal/tests/nextflow.config b/modules/nf-core/sentieon/qualcal/tests/nextflow.config index 4214d91de79..1e494961dcc 100644 --- a/modules/nf-core/sentieon/qualcal/tests/nextflow.config +++ b/modules/nf-core/sentieon/qualcal/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/readwriter/tests/nextflow.config b/modules/nf-core/sentieon/readwriter/tests/nextflow.config index 4214d91de79..1e494961dcc 100644 --- a/modules/nf-core/sentieon/readwriter/tests/nextflow.config +++ b/modules/nf-core/sentieon/readwriter/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/readwriter/tests/nextflow_outputcram.config b/modules/nf-core/sentieon/readwriter/tests/nextflow_outputcram.config index fece11eb17f..4bfa7604d7a 100644 --- a/modules/nf-core/sentieon/readwriter/tests/nextflow_outputcram.config +++ b/modules/nf-core/sentieon/readwriter/tests/nextflow_outputcram.config @@ -6,11 +6,10 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how pipeline users will test out Sentieon with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } - process { withName: "SENTIEON_READWRITER" { ext.prefix = { "${meta.id}.cram" } diff --git a/modules/nf-core/sentieon/rsemcalculateexpression/tests/nextflow.config b/modules/nf-core/sentieon/rsemcalculateexpression/tests/nextflow.config index 71db586af17..5084270c693 100644 --- a/modules/nf-core/sentieon/rsemcalculateexpression/tests/nextflow.config +++ b/modules/nf-core/sentieon/rsemcalculateexpression/tests/nextflow.config @@ -1,7 +1,5 @@ process { - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - withName: SENTIEON_RSEMPREPAREREFERENCE { ext.args = '--star' } diff --git a/modules/nf-core/sentieon/tnfilter/tests/nextflow.config b/modules/nf-core/sentieon/tnfilter/tests/nextflow.config index 55b7e10c5ca..5b98549410b 100644 --- a/modules/nf-core/sentieon/tnfilter/tests/nextflow.config +++ b/modules/nf-core/sentieon/tnfilter/tests/nextflow.config @@ -6,10 +6,11 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } + process { withName: 'SENTIEON_TNFILTER' { ext.args = params.module_args diff --git a/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config b/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config index 5b491f90280..ac579b68875 100644 --- a/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config +++ b/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config @@ -27,6 +27,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/tnscope/environment.yml b/modules/nf-core/sentieon/tnscope/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/tnscope/environment.yml +++ b/modules/nf-core/sentieon/tnscope/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/tnscope/main.nf b/modules/nf-core/sentieon/tnscope/main.nf index cdce359d31a..5adaf22a99c 100644 --- a/modules/nf-core/sentieon/tnscope/main.nf +++ b/modules/nf-core/sentieon/tnscope/main.nf @@ -5,8 +5,8 @@ process SENTIEON_TNSCOPE { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(input), path(input_index), path(intervals) @@ -22,7 +22,7 @@ process SENTIEON_TNSCOPE { output: tuple val(meta), path("*.vcf.gz"), emit: vcf tuple val(meta), path("*.vcf.gz.tbi"), emit: index - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -35,7 +35,7 @@ process SENTIEON_TNSCOPE { def dbsnp_str = dbsnp ? "--dbsnp ${dbsnp}" : '' def pon_str = pon ? "--pon ${pon}" : '' def prefix = task.ext.prefix ?: "${meta.id}" - def inputs = input.collect { "-i ${it}" }.join(" ") + def inputs = input.collect {in -> "-i ${in}" }.join(" ") def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " : "" @@ -55,11 +55,6 @@ process SENTIEON_TNSCOPE { ${dbsnp_str} \\ ${pon_str} \\ ${prefix}.vcf.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -67,10 +62,5 @@ process SENTIEON_TNSCOPE { """ echo | gzip > ${prefix}.vcf.gz touch ${prefix}.vcf.gz.tbi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g" ) - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/tnscope/meta.yml b/modules/nf-core/sentieon/tnscope/meta.yml index 7b6bbc402ac..f6543476a8a 100644 --- a/modules/nf-core/sentieon/tnscope/meta.yml +++ b/modules/nf-core/sentieon/tnscope/meta.yml @@ -143,13 +143,27 @@ output: description: Index of the VCF file pattern: "*.vcf.gz.tbi" ontologies: [] + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate 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 process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/sentieon/tnscope/tests/main.nf.test b/modules/nf-core/sentieon/tnscope/tests/main.nf.test index afb0e24d28d..ad4c31f8a51 100644 --- a/modules/nf-core/sentieon/tnscope/tests/main.nf.test +++ b/modules/nf-core/sentieon/tnscope/tests/main.nf.test @@ -79,8 +79,7 @@ nextflow_process { { assert snapshot( path(process.out.vcf[0][1]).vcf.summary, file(process.out.index[0][1]).name, - process.out.versions, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) } @@ -131,8 +130,7 @@ nextflow_process { { assert snapshot( path(process.out.vcf[0][1]).vcf.summary, file(process.out.index[0][1]).name, - process.out.versions, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) } diff --git a/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap b/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap index 67f86d8a3af..e418b99a11f 100644 --- a/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap @@ -3,20 +3,21 @@ "content": [ "VcfFile [chromosomes=[], sampleCount=2, variantCount=0, phased=true, phasedAutodetect=true]", "tumour.vcf.gz.tbi", - [ - "versions.yml:md5,059038177e029abb12a93af385a6888e" - ], { - "SENTIEON_TNSCOPE": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_TNSCOPE", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:09:42.635087221" + "timestamp": "2026-01-21T06:41:13.859689718" }, "tumour normal - stub": { "content": [ @@ -38,7 +39,11 @@ ] ], "2": [ - "versions.yml:md5,059038177e029abb12a93af385a6888e" + [ + "SENTIEON_TNSCOPE", + "sentieon", + "202503.02" + ] ], "index": [ [ @@ -56,34 +61,39 @@ "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "versions": [ - "versions.yml:md5,059038177e029abb12a93af385a6888e" + "versions_sentieon": [ + [ + "SENTIEON_TNSCOPE", + "sentieon", + "202503.02" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T09:13:41.783906165" + "timestamp": "2026-01-19T21:17:16.26067442" }, "tumour normal - no dbsnp": { "content": [ "VcfFile [chromosomes=[], sampleCount=2, variantCount=0, phased=true, phasedAutodetect=true]", "tumour.vcf.gz.tbi", - [ - "versions.yml:md5,059038177e029abb12a93af385a6888e" - ], { - "SENTIEON_TNSCOPE": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_TNSCOPE", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:09:21.115356777" + "timestamp": "2026-01-21T06:40:50.157815802" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/tnscope/tests/nextflow.config b/modules/nf-core/sentieon/tnscope/tests/nextflow.config index b64115be9e5..f292324c613 100644 --- a/modules/nf-core/sentieon/tnscope/tests/nextflow.config +++ b/modules/nf-core/sentieon/tnscope/tests/nextflow.config @@ -25,6 +25,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/varcal/environment.yml b/modules/nf-core/sentieon/varcal/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/varcal/environment.yml +++ b/modules/nf-core/sentieon/varcal/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/varcal/main.nf b/modules/nf-core/sentieon/varcal/main.nf index f9f3e8ecc5b..022ddacf7b7 100644 --- a/modules/nf-core/sentieon/varcal/main.nf +++ b/modules/nf-core/sentieon/varcal/main.nf @@ -5,8 +5,8 @@ process SENTIEON_VARCAL { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(vcf), path(tbi) @@ -21,7 +21,7 @@ process SENTIEON_VARCAL { tuple val(meta), path("*.idx"), emit: idx tuple val(meta), path("*.tranches"), emit: tranches tuple val(meta), path("*plots.R"), emit: plots, optional: true - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -75,11 +75,6 @@ process SENTIEON_VARCAL { ${labels_command} \\ ${args} \\ ${prefix}.recal - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: @@ -89,10 +84,5 @@ process SENTIEON_VARCAL { touch ${prefix}.idx touch ${prefix}.tranches touch ${prefix}plots.R - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/varcal/meta.yml b/modules/nf-core/sentieon/varcal/meta.yml index 9d7bd79ae54..55e3161e82d 100644 --- a/modules/nf-core/sentieon/varcal/meta.yml +++ b/modules/nf-core/sentieon/varcal/meta.yml @@ -106,14 +106,29 @@ output: pattern: "*plots.R" ontologies: - edam: http://edamontology.org/format_3999 # R script - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@asp8200" maintainers: - "@asp8200" + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool diff --git a/modules/nf-core/sentieon/varcal/tests/main.nf.test b/modules/nf-core/sentieon/varcal/tests/main.nf.test index 5c9b2bf01c9..d0457d56fe0 100644 --- a/modules/nf-core/sentieon/varcal/tests/main.nf.test +++ b/modules/nf-core/sentieon/varcal/tests/main.nf.test @@ -42,7 +42,7 @@ nextflow_process { file(process.out.recal[0][1]).readLines()[0..5], file(process.out.idx[0][1]).name, process.out.tranches, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -91,7 +91,7 @@ nextflow_process { file(process.out.recal[0][1]).readLines()[0..5], file(process.out.idx[0][1]).name, process.out.tranches, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) @@ -137,8 +137,7 @@ nextflow_process { assert process.success assertAll( { assert snapshot( - process.out, - path(process.out.versions[0]).yaml + process.out ).match() } ) diff --git a/modules/nf-core/sentieon/varcal/tests/main.nf.test.snap b/modules/nf-core/sentieon/varcal/tests/main.nf.test.snap index 60e6f69b408..300c11e2e0e 100644 --- a/modules/nf-core/sentieon/varcal/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/varcal/tests/main.nf.test.snap @@ -19,16 +19,20 @@ ] ], { - "SENTIEON_VARCAL": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_VARCAL", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T09:24:53.607167407" + "timestamp": "2026-01-20T18:45:46.069110116" }, "homo sapiens - multiple resources": { "content": [ @@ -50,16 +54,20 @@ ] ], { - "SENTIEON_VARCAL": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_VARCAL", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T09:25:22.885471633" + "timestamp": "2026-01-20T18:45:56.92195873" }, "homo sapiens -- stub": { "content": [ @@ -97,7 +105,11 @@ ] ], "4": [ - "versions.yml:md5,9f0e64d56a3b09e026029691efc7b092" + [ + "SENTIEON_VARCAL", + "sentieon", + "202503.02" + ] ], "idx": [ [ @@ -131,20 +143,19 @@ "test.tranches:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,9f0e64d56a3b09e026029691efc7b092" + "versions_sentieon": [ + [ + "SENTIEON_VARCAL", + "sentieon", + "202503.02" + ] ] - }, - { - "SENTIEON_VARCAL": { - "sentieon": 202503.01 - } } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-05-09T09:25:50.621320098" + "timestamp": "2026-01-19T20:50:05.37962282" } -} +} \ No newline at end of file diff --git a/modules/nf-core/sentieon/varcal/tests/nextflow.config b/modules/nf-core/sentieon/varcal/tests/nextflow.config index 08d8d296fd5..9555254fb08 100644 --- a/modules/nf-core/sentieon/varcal/tests/nextflow.config +++ b/modules/nf-core/sentieon/varcal/tests/nextflow.config @@ -12,6 +12,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/sentieon/wgsmetrics/environment.yml b/modules/nf-core/sentieon/wgsmetrics/environment.yml index dae76d1b6de..6b8bb523202 100644 --- a/modules/nf-core/sentieon/wgsmetrics/environment.yml +++ b/modules/nf-core/sentieon/wgsmetrics/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::sentieon=202503.01 + - bioconda::sentieon=202503.02 diff --git a/modules/nf-core/sentieon/wgsmetrics/main.nf b/modules/nf-core/sentieon/wgsmetrics/main.nf index 687c460e617..d0a641c13a1 100644 --- a/modules/nf-core/sentieon/wgsmetrics/main.nf +++ b/modules/nf-core/sentieon/wgsmetrics/main.nf @@ -5,8 +5,8 @@ process SENTIEON_WGSMETRICS { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0f1dfe59ef66d7326b43db9ab1f39ce6220b358a311078c949a208f9c9815d4e/data' - : 'community.wave.seqera.io/library/sentieon:202503.01--1863def31ed8e4d5'}" + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/73/73e9111552beb76e2ad3ad89eb75bed162d7c5b85b2433723ecb4fc96a02674a/data' + : 'community.wave.seqera.io/library/sentieon:202503.02--def60555294d04fa'}" input: tuple val(meta), path(bam), path(bai) @@ -16,7 +16,7 @@ process SENTIEON_WGSMETRICS { output: tuple val(meta), path('*.txt'), emit: wgs_metrics - path "versions.yml", emit: versions + tuple val("${task.process}"), val('sentieon'), eval('sentieon driver --version | sed "s/.*-//g"'), topic: versions, emit: versions_sentieon when: task.ext.when == null || task.ext.when @@ -25,7 +25,7 @@ process SENTIEON_WGSMETRICS { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def interval = intervals_list ? "--interval ${intervals_list}" : "" - def input = bam.sort().collect { "-i ${it}" }.join(' ') + def input = bam.sort().collect {in -> "-i ${in}" }.join(' ') def sentieonLicense = secrets.SENTIEON_LICENSE_BASE64 ? "export SENTIEON_LICENSE=\$(mktemp);echo -e \"${secrets.SENTIEON_LICENSE_BASE64}\" | base64 -d > \$SENTIEON_LICENSE; " : "" @@ -41,21 +41,11 @@ process SENTIEON_WGSMETRICS { ${args} \\ --algo WgsMetricsAlgo \\ ${prefix}.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sentieon: \$(echo \$(sentieon driver --version 2>&1) | sed -e "s/sentieon-genomics-//g") - END_VERSIONS """ } diff --git a/modules/nf-core/sentieon/wgsmetrics/meta.yml b/modules/nf-core/sentieon/wgsmetrics/meta.yml index 7e04bfd8f74..588246fab7a 100644 --- a/modules/nf-core/sentieon/wgsmetrics/meta.yml +++ b/modules/nf-core/sentieon/wgsmetrics/meta.yml @@ -70,14 +70,29 @@ output: for each sequencing cycle pattern: "*.txt" ontologies: [] - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + versions_sentieon: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool authors: - "@ramprasadn" maintainers: - "@ramprasadn" + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - sentieon: + type: string + description: The tool name + - 'sentieon driver --version | sed "s/.*-//g"': + type: string + description: The command used to generate the version of the tool diff --git a/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test b/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test index 1368282abca..08179fb21f3 100644 --- a/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test +++ b/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test @@ -37,8 +37,7 @@ nextflow_process { assertAll( { assert snapshot( file(process.out.wgs_metrics[0][1]).readLines()[1..5], - process.out.versions, - path(process.out.versions[0]).yaml + process.out.findAll { key, val -> key.startsWith("versions") } ).match() } ) } @@ -72,11 +71,7 @@ nextflow_process { then { assert process.success assertAll( - { assert snapshot( - process.out, - process.out.versions, - path(process.out.versions[0]).yaml - ).match() } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test.snap b/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test.snap index f97eafd3bdd..0c10cc9d0e5 100644 --- a/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/wgsmetrics/tests/main.nf.test.snap @@ -12,10 +12,18 @@ ] ], "1": [ - "versions.yml:md5,bd0dc0ec752b43a80ae2fe1c2ee21a13" + [ + "SENTIEON_WGSMETRICS", + "sentieon", + "202503.02" + ] ], - "versions": [ - "versions.yml:md5,bd0dc0ec752b43a80ae2fe1c2ee21a13" + "versions_sentieon": [ + [ + "SENTIEON_WGSMETRICS", + "sentieon", + "202503.02" + ] ], "wgs_metrics": [ [ @@ -26,21 +34,13 @@ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] - }, - [ - "versions.yml:md5,bd0dc0ec752b43a80ae2fe1c2ee21a13" - ], - { - "SENTIEON_WGSMETRICS": { - "sentieon": 202503.01 - } } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:10:23.628449727" + "timestamp": "2026-01-21T09:28:12.500084203" }, "sarscov2 - bam": { "content": [ @@ -51,19 +51,20 @@ "coverage\thigh_quality_coverage_count\t", "0\t17554" ], - [ - "versions.yml:md5,bd0dc0ec752b43a80ae2fe1c2ee21a13" - ], { - "SENTIEON_WGSMETRICS": { - "sentieon": 202503.01 - } + "versions_sentieon": [ + [ + "SENTIEON_WGSMETRICS", + "sentieon", + "202503.02" + ] + ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-08-21T09:10:18.544792193" + "timestamp": "2026-01-21T09:37:25.493486027" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/wgsmetrics/tests/nextflow.config b/modules/nf-core/sentieon/wgsmetrics/tests/nextflow.config index e8969589246..b186b2e2f70 100644 --- a/modules/nf-core/sentieon/wgsmetrics/tests/nextflow.config +++ b/modules/nf-core/sentieon/wgsmetrics/tests/nextflow.config @@ -6,6 +6,6 @@ env { // TODO: Update to `env('SENTIEON_AUTH_MECH')` when minimum Nextflow version is >= 26.04.0 SENTIEON_AUTH_MECH = System.getenv('SENTIEON_AUTH_MECH') SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA - // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // NOTE This is how users will test out Sentieon in Sarek with a license file // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) }