From 6d90c3f3331fbb1a2556cfd0cbd40c739a7acadd Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Fri, 14 Aug 2026 16:29:19 +0200 Subject: [PATCH 01/24] Add dragen and dragenutils --- modules/UMCUGenetics/dragen/main.nf | 97 ++++++++++ .../UMCUGenetics/dragen/tests/main.nf.test | 39 ++++ .../dragen/tests/main.nf.test.snap | 174 ++++++++++++++++++ modules/UMCUGenetics/dragenutils/dxqc/main.nf | 34 ++++ .../dragenutils/dxqc/tests/main.nf.test | 41 +++++ .../dragenutils/dxqc/tests/main.nf.test.snap | 52 ++++++ .../dragenutils/fastqlist/main.nf | 25 +++ .../dragenutils/fastqlist/tests/main.nf.test | 56 ++++++ .../fastqlist/tests/main.nf.test.snap | 42 +++++ 9 files changed, 560 insertions(+) create mode 100644 modules/UMCUGenetics/dragen/main.nf create mode 100644 modules/UMCUGenetics/dragen/tests/main.nf.test create mode 100644 modules/UMCUGenetics/dragen/tests/main.nf.test.snap create mode 100644 modules/UMCUGenetics/dragenutils/dxqc/main.nf create mode 100644 modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test create mode 100644 modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap create mode 100644 modules/UMCUGenetics/dragenutils/fastqlist/main.nf create mode 100644 modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test create mode 100644 modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test.snap diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf new file mode 100644 index 0000000..6fdb306 --- /dev/null +++ b/modules/UMCUGenetics/dragen/main.nf @@ -0,0 +1,97 @@ +process DRAGEN { + // No container image as dragen requires specific hardware (FPGA) to run. + tag "${meta.id}" + label 'process_fpga' + + input: + // TODO: use prefix via task.ext.prefix instead of passing it as an input + // TODO: what to do with repeat_genotype_specs? -> or should we create a 'srWGS' specific module that has this hardcoded? + tuple val(meta), path(r1_fastq), path(r2_fastq) + path fastq_list + path ref_tar + path repeat_genotype_specs + val output_file_prefix + + output: + // TODO: Expand output to include all expected outputs of the process? Or can we leave it tailored to the needs of the srWGS workflow? + tuple val(meta), path("*"), emit: output + tuple val(meta), path('*.csv'), emit: csv + tuple val(meta), path("${meta.id}_${output_file_prefix}.wgs_coverage_metrics.csv"), emit: wgs_coverage_metrics + tuple val(meta), path("${meta.id}_${output_file_prefix}.cnv_metrics.csv"), emit: cnv_metrics + tuple val(meta), path("${meta.id}_${output_file_prefix}.mapping_metrics.csv"), emit: mapping_metrics + tuple val(meta), path("${meta.id}_${output_file_prefix}.ploidy_estimation_metrics.csv"), emit: ploidy_estimation_metrics + tuple val(meta), path("${meta.id}_${output_file_prefix}.gvcf_metrics.csv"), emit: gvcf_metrics + tuple val("${task.process}"), val('dragen'), eval("dragen --version 2>&1 | sed 's/^dragen Version //'"), topic: versions, emit: versions_dragen + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + // def prefix = task.ext.prefix ?: "${meta.id}" + """ + set -ex + mkdir -p /scratch/reference + tar -C /scratch/reference -xf ${ref_tar} + + /opt/edico/bin/dragen --partial-reconfig HMM --ignore-version-check true + + /opt/edico/bin/dragen --lic-instance-id-location /opt/instance-identity \\ + --ref-dir /scratch/reference/DRAGEN/9 \\ + --fastq-list ${fastq_list} \\ + --fastq-list-sample-id ${meta.id} \\ + --output-file-prefix ${meta.id}_${output_file_prefix} \\ + --output-directory ./ \\ + --intermediate-results-dir /scratch \\ + --enable-map-align true \\ + --enable-map-align-output true \\ + --output-format BAM \\ + --enable-duplicate-marking true \\ + --enable-variant-caller true \\ + --vc-emit-ref-confidence GVCF \\ + --vc-enable-vcf-output true \\ + --vc-ml-enable-recalibration true \\ + --enable-cnv true \\ + --cnv-segmentation-mode SLM \\ + --enable-sv true \\ + --repeat-genotype-enable true \\ + --repeat-genotype-specs ${repeat_genotype_specs} \\ + --enable-smn true \\ + --enable-cyp2d6 true \\ + --enable-cyp2b6 false \\ + --enable-gba true \\ + --enable-star-allele false \\ + --enable-cyp21a2 false \\ + --enable-hba false \\ + --enable-lpa false \\ + --checkfingerprint-enable-vcf-comparison false \\ + --cnv-enable-self-normalization true \\ + --logging-to-output-dir true \\ + --qc-cross-cont-vcf /opt/edico/config/sample_cross_contamination_resource_hg38.vcf.gz \\ + --enable-rh true \\ + --cnv-enable-ref-calls true \\ + --enable-bam-indexing true \\ + --enable-metrics-json true \\ + --enable-vcf-compression true \\ + --vc-enable-bqd true \\ + --enable-hla true \\ + --hla-enable-class-2 false \\ + --sv-cnv-max-coord-delta 1000 \\ + ${args} + """ + + stub: + // TODO: Expand stub output to include all expected outputs of the process? + def args = task.ext.args ?: '' + // def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo ${args} + + touch ${meta.id}_${output_file_prefix}.bam + touch ${meta.id}_${output_file_prefix}.wgs_coverage_metrics.csv + touch ${meta.id}_${output_file_prefix}.cnv_metrics.csv + touch ${meta.id}_${output_file_prefix}.mapping_metrics.csv + touch ${meta.id}_${output_file_prefix}.ploidy_estimation_metrics.csv + touch ${meta.id}_${output_file_prefix}.gvcf_metrics.csv + """ +} diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test b/modules/UMCUGenetics/dragen/tests/main.nf.test new file mode 100644 index 0000000..b4f8d89 --- /dev/null +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test @@ -0,0 +1,39 @@ +nextflow_process { + + name "Test Process DRAGEM" + script "../main.nf" + process "DRAGEN" + + tag "modules" + tag "modules_UMCUGenetics" + tag "dragen" + tag "dragen" + + test("dragen - stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [id:'stub'], + [], + [] + ] + input[1] = [] + input[2] = [] + input[3] = [] + input[4] = 'stub' + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap new file mode 100644 index 0000000..8ff32d2 --- /dev/null +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap @@ -0,0 +1,174 @@ +{ + "dragen - stub": { + "content": [ + { + "0": [ + [ + { + "id": "stub" + }, + [ + "stub_stub.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + { + "id": "stub" + }, + [ + "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "2": [ + [ + { + "id": "stub" + }, + "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "stub" + }, + "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "stub" + }, + "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "stub" + }, + "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "stub" + }, + "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + "DRAGEN", + "dragen", + "bash: dragen: command not found" + ] + ], + "cnv_metrics": [ + [ + { + "id": "stub" + }, + "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csv": [ + [ + { + "id": "stub" + }, + [ + "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "gvcf_metrics": [ + [ + { + "id": "stub" + }, + "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "mapping_metrics": [ + [ + { + "id": "stub" + }, + "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "output": [ + [ + { + "id": "stub" + }, + [ + "stub_stub.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "ploidy_estimation_metrics": [ + [ + { + "id": "stub" + }, + "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_dragen": [ + [ + "DRAGEN", + "dragen", + "bash: dragen: command not found" + ] + ], + "wgs_coverage_metrics": [ + [ + { + "id": "stub" + }, + "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + }, + { + "versions_dragen": [ + [ + "DRAGEN", + "dragen", + "bash: dragen: command not found" + ] + ] + } + ], + "timestamp": "2026-08-14T16:28:06.645335", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } + } +} \ No newline at end of file diff --git a/modules/UMCUGenetics/dragenutils/dxqc/main.nf b/modules/UMCUGenetics/dragenutils/dxqc/main.nf new file mode 100644 index 0000000..6b25aa0 --- /dev/null +++ b/modules/UMCUGenetics/dragenutils/dxqc/main.nf @@ -0,0 +1,34 @@ +process DRAGENUTILS_DXQC { + tag "${meta.id}" + label 'process_single' + + container 'ghcr.io/umcugenetics/dragen-utils:sha-b1d12b9' + + input: + tuple val(meta), path(wgs_coverage_metrics), path(cnv_metrics), path(mapping_metrics), path(ploidy_estimation_metrics), path(gvcf_metrics) + val output_file_prefix + + output: + tuple val(meta), path("${meta.id}_${output_file_prefix}.dragen_dx_qc.csv"), emit: csv + tuple val("${task.process}"), val('dragenutils'), eval("echo 0.1.0"), topic: versions, emit: versions_dragenutils + + when: + task.ext.when == null || task.ext.when + + script: + """ + dragen-utils dx_qc \\ + ${meta.id}_${output_file_prefix} \\ + ${wgs_coverage_metrics} \\ + ${cnv_metrics} \\ + ${mapping_metrics} \\ + ${ploidy_estimation_metrics} \\ + ${gvcf_metrics} \\ + > ${meta.id}_${output_file_prefix}.dragen_dx_qc.csv + """ + + stub: + """ + touch ${meta.id}_${output_file_prefix}.dragen_dx_qc.csv + """ +} diff --git a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test new file mode 100644 index 0000000..e6d9266 --- /dev/null +++ b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test @@ -0,0 +1,41 @@ +nextflow_process { + + name "Test Process DRAGENUTILS_DXQC" + script "../main.nf" + process "DRAGENUTILS_DXQC" + + tag "modules" + tag "modules_UMCUGenetics" + tag "dragenutils" + tag "dragenutils/dxqc" + + test("HG002 - srWGS QC csv files") { + when { + process { + """ + input[0] = [ + [ id:'HG002' ], + file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.wgs_coverage_metrics.csv", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.cnv_metrics.csv", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.mapping_metrics.csv", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.ploidy_estimation_metrics.csv", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.gvcf_metrics.csv", checkIfExists: true), + ] + input[1] = "" + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } + ) + } + + } + +} diff --git a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap new file mode 100644 index 0000000..d68d038 --- /dev/null +++ b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap @@ -0,0 +1,52 @@ +{ + "HG002 - srWGS QC csv files": { + "content": [ + { + "0": [ + [ + { + "id": "HG002" + }, + "HG002_.dragen_dx_qc.csv:md5,98824ef57db0db2af68a565168580df6" + ] + ], + "1": [ + [ + "DRAGENUTILS_DXQC", + "dragenutils", + "0.1.0" + ] + ], + "csv": [ + [ + { + "id": "HG002" + }, + "HG002_.dragen_dx_qc.csv:md5,98824ef57db0db2af68a565168580df6" + ] + ], + "versions_dragenutils": [ + [ + "DRAGENUTILS_DXQC", + "dragenutils", + "0.1.0" + ] + ] + }, + { + "versions_dragenutils": [ + [ + "DRAGENUTILS_DXQC", + "dragenutils", + "0.1.0" + ] + ] + } + ], + "timestamp": "2026-08-14T16:18:23.243017", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } + } +} \ No newline at end of file diff --git a/modules/UMCUGenetics/dragenutils/fastqlist/main.nf b/modules/UMCUGenetics/dragenutils/fastqlist/main.nf new file mode 100644 index 0000000..08634ea --- /dev/null +++ b/modules/UMCUGenetics/dragenutils/fastqlist/main.nf @@ -0,0 +1,25 @@ +process DRAGENUTILS_FASTQLIST { + label 'process_single' + + container 'ghcr.io/umcugenetics/dragen-utils:sha-b1d12b9' + + input: + path fastq + + output: + path "fastq_list.csv", emit: csv + tuple val("${task.process}"), val('dragenutils'), eval("dragen-utils --version"), topic: versions, emit: versions_dragenutils + + when: + task.ext.when == null || task.ext.when + + script: + """ + dragen-utils fastq_list > fastq_list.csv + """ + + stub: + """ + touch fastq_list.csv + """ +} diff --git a/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test b/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test new file mode 100644 index 0000000..3b225d1 --- /dev/null +++ b/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test @@ -0,0 +1,56 @@ +// TODO nf-core: Once you have added the required tests, please run the following command to build this file: +// nf-core modules test dragenutils/fastqlist +nextflow_process { + + name "Test Process DRAGENUTILS_FASTQLIST" + script "../main.nf" + process "DRAGENUTILS_FASTQLIST" + + tag "modules" + tag "modules_UMCUGenetics" + tag "dragenutils" + tag "dragenutils/fastqlist" + + test("HG002 - fastq") { + when { + process { + """ + input[0] = [ + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L004_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L004_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L005_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L005_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L006_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L006_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L007_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L007_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L008_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-1_23KCWCLT3_S8_L008_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L004_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L004_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L005_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L005_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L006_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L006_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L007_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L007_R2_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L008_R1_001.fastq.gz", checkIfExists: true), + file(params.modules_umcu_testdata_base_path + "dragen_utils/fastq/HG002-2_23KCWCLT3_S14_L008_R2_001.fastq.gz", checkIfExists: true) + ] + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } + ) + } + + } + +} diff --git a/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test.snap b/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test.snap new file mode 100644 index 0000000..c05c54f --- /dev/null +++ b/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test.snap @@ -0,0 +1,42 @@ +{ + "HG002 - fastq": { + "content": [ + { + "0": [ + "fastq_list.csv:md5,2d99abf6c85e82473ee0a7e3b161a01a" + ], + "1": [ + [ + "DRAGENUTILS_FASTQLIST", + "dragenutils", + "1.0.0" + ] + ], + "csv": [ + "fastq_list.csv:md5,2d99abf6c85e82473ee0a7e3b161a01a" + ], + "versions_dragenutils": [ + [ + "DRAGENUTILS_FASTQLIST", + "dragenutils", + "1.0.0" + ] + ] + }, + { + "versions_dragenutils": [ + [ + "DRAGENUTILS_FASTQLIST", + "dragenutils", + "1.0.0" + ] + ] + } + ], + "timestamp": "2026-08-14T16:18:28.099028", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } + } +} \ No newline at end of file From 13ea4daeaee99871b93c5385b27db3e86e1f08a1 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Fri, 14 Aug 2026 17:31:49 +0200 Subject: [PATCH 02/24] Fix typo --- modules/UMCUGenetics/dragen/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test b/modules/UMCUGenetics/dragen/tests/main.nf.test index b4f8d89..6ab2820 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test @@ -1,6 +1,6 @@ nextflow_process { - name "Test Process DRAGEM" + name "Test Process DRAGEN" script "../main.nf" process "DRAGEN" From ed573e384f067d88ab2ec7c48f8ca7a0ee841f05 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Mon, 17 Aug 2026 18:15:06 +0200 Subject: [PATCH 03/24] Move dragen to dragen wgs --- modules/UMCUGenetics/dragen/{ => wgs}/main.nf | 2 +- .../UMCUGenetics/dragen/{ => wgs}/tests/main.nf.test | 8 ++++---- .../dragen/{ => wgs}/tests/main.nf.test.snap | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) rename modules/UMCUGenetics/dragen/{ => wgs}/main.nf (99%) rename modules/UMCUGenetics/dragen/{ => wgs}/tests/main.nf.test (87%) rename modules/UMCUGenetics/dragen/{ => wgs}/tests/main.nf.test.snap (97%) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/wgs/main.nf similarity index 99% rename from modules/UMCUGenetics/dragen/main.nf rename to modules/UMCUGenetics/dragen/wgs/main.nf index 6fdb306..55362fc 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/wgs/main.nf @@ -1,4 +1,4 @@ -process DRAGEN { +process DRAGEN_WGS { // No container image as dragen requires specific hardware (FPGA) to run. tag "${meta.id}" label 'process_fpga' diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test b/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test similarity index 87% rename from modules/UMCUGenetics/dragen/tests/main.nf.test rename to modules/UMCUGenetics/dragen/wgs/tests/main.nf.test index 6ab2820..78fa682 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test +++ b/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test @@ -1,15 +1,15 @@ nextflow_process { - name "Test Process DRAGEN" + name "Test Process DRAGEN WGS" script "../main.nf" - process "DRAGEN" + process "DRAGEN_WGS" tag "modules" tag "modules_UMCUGenetics" tag "dragen" - tag "dragen" + tag "dragen/wgs" - test("dragen - stub") { + test("dragen wgs - stub") { options '-stub' when { process { diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap similarity index 97% rename from modules/UMCUGenetics/dragen/tests/main.nf.test.snap rename to modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap index 8ff32d2..55ccf7c 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "dragen - stub": { + "dragen wgs - stub": { "content": [ { "0": [ @@ -73,7 +73,7 @@ ], "7": [ [ - "DRAGEN", + "DRAGEN_WGS", "dragen", "bash: dragen: command not found" ] @@ -141,7 +141,7 @@ ], "versions_dragen": [ [ - "DRAGEN", + "DRAGEN_WGS", "dragen", "bash: dragen: command not found" ] @@ -158,14 +158,14 @@ { "versions_dragen": [ [ - "DRAGEN", + "DRAGEN_WGS", "dragen", "bash: dragen: command not found" ] ] } ], - "timestamp": "2026-08-14T16:28:06.645335", + "timestamp": "2026-08-17T18:14:24.216965", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" From 3d2f19327f2487ac517046ef37080d5b0ee3555f Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 11:10:48 +0200 Subject: [PATCH 04/24] Fix dragen tests --- .nf-core.yml | 1 + modules/UMCUGenetics/dragen/{wgs => }/main.nf | 36 ++-- .../dragen/{wgs => }/tests/main.nf.test | 10 +- .../dragen/tests/main.nf.test.snap | 174 ++++++++++++++++++ .../dragen/wgs/tests/main.nf.test.snap | 174 ------------------ tests/config/modules.config | 5 + tests/config/nf-test.config | 3 + 7 files changed, 205 insertions(+), 198 deletions(-) rename modules/UMCUGenetics/dragen/{wgs => }/main.nf (68%) rename modules/UMCUGenetics/dragen/{wgs => }/tests/main.nf.test (78%) create mode 100644 modules/UMCUGenetics/dragen/tests/main.nf.test.snap delete mode 100644 modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap create mode 100644 tests/config/modules.config diff --git a/.nf-core.yml b/.nf-core.yml index 1df527c..f1a0695 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -2,3 +2,4 @@ org_path: UMCUGenetics repository_type: modules container-registry: - ghcr.io + - 079623148045.dkr.ecr.eu-central-1.amazonaws.com diff --git a/modules/UMCUGenetics/dragen/wgs/main.nf b/modules/UMCUGenetics/dragen/main.nf similarity index 68% rename from modules/UMCUGenetics/dragen/wgs/main.nf rename to modules/UMCUGenetics/dragen/main.nf index 55362fc..9d6b54e 100644 --- a/modules/UMCUGenetics/dragen/wgs/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -1,34 +1,35 @@ -process DRAGEN_WGS { +process DRAGEN { // No container image as dragen requires specific hardware (FPGA) to run. tag "${meta.id}" label 'process_fpga' + // Dragen 4.2.4-2 (F2 compatible container) + container '079623148045.dkr.ecr.eu-central-1.amazonaws.com/cp-prod/f1b7ad6a-11ac-4bc1-b705-b275ff2887ad:latest' + input: - // TODO: use prefix via task.ext.prefix instead of passing it as an input // TODO: what to do with repeat_genotype_specs? -> or should we create a 'srWGS' specific module that has this hardcoded? tuple val(meta), path(r1_fastq), path(r2_fastq) path fastq_list path ref_tar path repeat_genotype_specs - val output_file_prefix output: // TODO: Expand output to include all expected outputs of the process? Or can we leave it tailored to the needs of the srWGS workflow? tuple val(meta), path("*"), emit: output tuple val(meta), path('*.csv'), emit: csv - tuple val(meta), path("${meta.id}_${output_file_prefix}.wgs_coverage_metrics.csv"), emit: wgs_coverage_metrics - tuple val(meta), path("${meta.id}_${output_file_prefix}.cnv_metrics.csv"), emit: cnv_metrics - tuple val(meta), path("${meta.id}_${output_file_prefix}.mapping_metrics.csv"), emit: mapping_metrics - tuple val(meta), path("${meta.id}_${output_file_prefix}.ploidy_estimation_metrics.csv"), emit: ploidy_estimation_metrics - tuple val(meta), path("${meta.id}_${output_file_prefix}.gvcf_metrics.csv"), emit: gvcf_metrics + tuple val(meta), path("${prefix}.wgs_coverage_metrics.csv"), emit: wgs_coverage_metrics + tuple val(meta), path("${prefix}.cnv_metrics.csv"), emit: cnv_metrics + tuple val(meta), path("${prefix}.mapping_metrics.csv"), emit: mapping_metrics + tuple val(meta), path("${prefix}.ploidy_estimation_metrics.csv"), emit: ploidy_estimation_metrics + tuple val(meta), path("${prefix}.gvcf_metrics.csv"), emit: gvcf_metrics tuple val("${task.process}"), val('dragen'), eval("dragen --version 2>&1 | sed 's/^dragen Version //'"), topic: versions, emit: versions_dragen when: task.ext.when == null || task.ext.when script: + prefix = task.ext.prefix ?: "${meta.id}" def args = task.ext.args ?: '' - // def prefix = task.ext.prefix ?: "${meta.id}" """ set -ex mkdir -p /scratch/reference @@ -40,7 +41,7 @@ process DRAGEN_WGS { --ref-dir /scratch/reference/DRAGEN/9 \\ --fastq-list ${fastq_list} \\ --fastq-list-sample-id ${meta.id} \\ - --output-file-prefix ${meta.id}_${output_file_prefix} \\ + --output-file-prefix ${prefix} \\ --output-directory ./ \\ --intermediate-results-dir /scratch \\ --enable-map-align true \\ @@ -81,17 +82,16 @@ process DRAGEN_WGS { """ stub: - // TODO: Expand stub output to include all expected outputs of the process? + prefix = task.ext.prefix ?: "${meta.id}" def args = task.ext.args ?: '' - // def prefix = task.ext.prefix ?: "${meta.id}" """ echo ${args} - touch ${meta.id}_${output_file_prefix}.bam - touch ${meta.id}_${output_file_prefix}.wgs_coverage_metrics.csv - touch ${meta.id}_${output_file_prefix}.cnv_metrics.csv - touch ${meta.id}_${output_file_prefix}.mapping_metrics.csv - touch ${meta.id}_${output_file_prefix}.ploidy_estimation_metrics.csv - touch ${meta.id}_${output_file_prefix}.gvcf_metrics.csv + touch ${prefix}.bam + touch ${prefix}.wgs_coverage_metrics.csv + touch ${prefix}.cnv_metrics.csv + touch ${prefix}.mapping_metrics.csv + touch ${prefix}.ploidy_estimation_metrics.csv + touch ${prefix}.gvcf_metrics.csv """ } diff --git a/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test b/modules/UMCUGenetics/dragen/tests/main.nf.test similarity index 78% rename from modules/UMCUGenetics/dragen/wgs/tests/main.nf.test rename to modules/UMCUGenetics/dragen/tests/main.nf.test index 78fa682..bc83628 100644 --- a/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test @@ -1,28 +1,26 @@ nextflow_process { - name "Test Process DRAGEN WGS" + name "Test Process DRAGEN" script "../main.nf" - process "DRAGEN_WGS" + process "DRAGEN" tag "modules" tag "modules_UMCUGenetics" tag "dragen" - tag "dragen/wgs" - test("dragen wgs - stub") { + test("dragen - stub") { options '-stub' when { process { """ input[0] = [ - [id:'stub'], + [id:'sample1'], [], [] ] input[1] = [] input[2] = [] input[3] = [] - input[4] = 'stub' """ } } diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap new file mode 100644 index 0000000..f18f987 --- /dev/null +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap @@ -0,0 +1,174 @@ +{ + "dragen - stub": { + "content": [ + { + "0": [ + [ + { + "id": "sample1" + }, + [ + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + { + "id": "sample1" + }, + [ + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "2": [ + [ + { + "id": "sample1" + }, + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "sample1" + }, + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "sample1" + }, + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "sample1" + }, + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "sample1" + }, + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + "DRAGEN", + "dragen", + "bash: line 1: dragen: command not found" + ] + ], + "cnv_metrics": [ + [ + { + "id": "sample1" + }, + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csv": [ + [ + { + "id": "sample1" + }, + [ + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "gvcf_metrics": [ + [ + { + "id": "sample1" + }, + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "mapping_metrics": [ + [ + { + "id": "sample1" + }, + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "output": [ + [ + { + "id": "sample1" + }, + [ + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "ploidy_estimation_metrics": [ + [ + { + "id": "sample1" + }, + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_dragen": [ + [ + "DRAGEN", + "dragen", + "bash: line 1: dragen: command not found" + ] + ], + "wgs_coverage_metrics": [ + [ + { + "id": "sample1" + }, + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + }, + { + "versions_dragen": [ + [ + "DRAGEN", + "dragen", + "bash: line 1: dragen: command not found" + ] + ] + } + ], + "timestamp": "2026-08-18T11:08:58.003281", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.2" + } + } +} \ No newline at end of file diff --git a/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap deleted file mode 100644 index 55ccf7c..0000000 --- a/modules/UMCUGenetics/dragen/wgs/tests/main.nf.test.snap +++ /dev/null @@ -1,174 +0,0 @@ -{ - "dragen wgs - stub": { - "content": [ - { - "0": [ - [ - { - "id": "stub" - }, - [ - "stub_stub.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "1": [ - [ - { - "id": "stub" - }, - [ - "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "2": [ - [ - { - "id": "stub" - }, - "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "stub" - }, - "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "stub" - }, - "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "5": [ - [ - { - "id": "stub" - }, - "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "6": [ - [ - { - "id": "stub" - }, - "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - "DRAGEN_WGS", - "dragen", - "bash: dragen: command not found" - ] - ], - "cnv_metrics": [ - [ - { - "id": "stub" - }, - "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csv": [ - [ - { - "id": "stub" - }, - [ - "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "gvcf_metrics": [ - [ - { - "id": "stub" - }, - "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "mapping_metrics": [ - [ - { - "id": "stub" - }, - "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "output": [ - [ - { - "id": "stub" - }, - [ - "stub_stub.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", - "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "ploidy_estimation_metrics": [ - [ - { - "id": "stub" - }, - "stub_stub.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions_dragen": [ - [ - "DRAGEN_WGS", - "dragen", - "bash: dragen: command not found" - ] - ], - "wgs_coverage_metrics": [ - [ - { - "id": "stub" - }, - "stub_stub.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - }, - { - "versions_dragen": [ - [ - "DRAGEN_WGS", - "dragen", - "bash: dragen: command not found" - ] - ] - } - ], - "timestamp": "2026-08-17T18:14:24.216965", - "meta": { - "nf-test": "0.9.5", - "nextflow": "25.10.2" - } - } -} \ No newline at end of file diff --git a/tests/config/modules.config b/tests/config/modules.config new file mode 100644 index 0000000..ede5df5 --- /dev/null +++ b/tests/config/modules.config @@ -0,0 +1,5 @@ +process { + withName: DRAGEN { + container = 'docker.io/nextflow/nextflow:25.10.2' + } +} diff --git a/tests/config/nf-test.config b/tests/config/nf-test.config index f946df0..02e8a44 100644 --- a/tests/config/nf-test.config +++ b/tests/config/nf-test.config @@ -97,6 +97,9 @@ conda { createTimeout = "120 min" } // Load test_data.config containing paths to test data includeConfig 'test_data.config' +// Load module specific test config if it exists +includeConfig 'modules.config' + manifest { nextflowVersion = '!>=24.10.2' } From 47e6064bad71699fa56d98deb8089da3779116a9 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 14:14:47 +0200 Subject: [PATCH 05/24] Update to smaller container --- tests/config/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/config/modules.config b/tests/config/modules.config index ede5df5..aa8301d 100644 --- a/tests/config/modules.config +++ b/tests/config/modules.config @@ -1,5 +1,5 @@ process { withName: DRAGEN { - container = 'docker.io/nextflow/nextflow:25.10.2' + container = 'quay.io/nextflow/bash' } } From 5aed942942b953eaabf62565a95160c0e6862ef2 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 15:26:07 +0200 Subject: [PATCH 06/24] Remove wgs specific args --- modules/UMCUGenetics/dragen/main.nf | 52 ++++++----------------------- 1 file changed, 11 insertions(+), 41 deletions(-) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index 9d6b54e..c64371e 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -7,21 +7,20 @@ process DRAGEN { container '079623148045.dkr.ecr.eu-central-1.amazonaws.com/cp-prod/f1b7ad6a-11ac-4bc1-b705-b275ff2887ad:latest' input: - // TODO: what to do with repeat_genotype_specs? -> or should we create a 'srWGS' specific module that has this hardcoded? + // TODO: Move ref_tar unpacking to a separate process to avoid unpacking the reference for every sample? -> added in prs branch tuple val(meta), path(r1_fastq), path(r2_fastq) path fastq_list path ref_tar path repeat_genotype_specs output: - // TODO: Expand output to include all expected outputs of the process? Or can we leave it tailored to the needs of the srWGS workflow? tuple val(meta), path("*"), emit: output tuple val(meta), path('*.csv'), emit: csv - tuple val(meta), path("${prefix}.wgs_coverage_metrics.csv"), emit: wgs_coverage_metrics - tuple val(meta), path("${prefix}.cnv_metrics.csv"), emit: cnv_metrics - tuple val(meta), path("${prefix}.mapping_metrics.csv"), emit: mapping_metrics - tuple val(meta), path("${prefix}.ploidy_estimation_metrics.csv"), emit: ploidy_estimation_metrics - tuple val(meta), path("${prefix}.gvcf_metrics.csv"), emit: gvcf_metrics + tuple val(meta), path("${prefix}.wgs_coverage_metrics.csv"), optional: true, emit: wgs_coverage_metrics + tuple val(meta), path("${prefix}.cnv_metrics.csv"), optional: true, emit: cnv_metrics + tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics + tuple val(meta), path("${prefix}.ploidy_estimation_metrics.csv"), optional: true, emit: ploidy_estimation_metrics + tuple val(meta), path("${prefix}.gvcf_metrics.csv"), optional: true, emit: gvcf_metrics tuple val("${task.process}"), val('dragen'), eval("dragen --version 2>&1 | sed 's/^dragen Version //'"), topic: versions, emit: versions_dragen when: @@ -30,6 +29,11 @@ process DRAGEN { script: prefix = task.ext.prefix ?: "${meta.id}" def args = task.ext.args ?: '' + + if (repeat_genotype_specs) { + args = args + " --repeat-genotype-enable true --repeat-genotype-specs " + repeat_genotype_specs + } + """ set -ex mkdir -p /scratch/reference @@ -44,40 +48,6 @@ process DRAGEN { --output-file-prefix ${prefix} \\ --output-directory ./ \\ --intermediate-results-dir /scratch \\ - --enable-map-align true \\ - --enable-map-align-output true \\ - --output-format BAM \\ - --enable-duplicate-marking true \\ - --enable-variant-caller true \\ - --vc-emit-ref-confidence GVCF \\ - --vc-enable-vcf-output true \\ - --vc-ml-enable-recalibration true \\ - --enable-cnv true \\ - --cnv-segmentation-mode SLM \\ - --enable-sv true \\ - --repeat-genotype-enable true \\ - --repeat-genotype-specs ${repeat_genotype_specs} \\ - --enable-smn true \\ - --enable-cyp2d6 true \\ - --enable-cyp2b6 false \\ - --enable-gba true \\ - --enable-star-allele false \\ - --enable-cyp21a2 false \\ - --enable-hba false \\ - --enable-lpa false \\ - --checkfingerprint-enable-vcf-comparison false \\ - --cnv-enable-self-normalization true \\ - --logging-to-output-dir true \\ - --qc-cross-cont-vcf /opt/edico/config/sample_cross_contamination_resource_hg38.vcf.gz \\ - --enable-rh true \\ - --cnv-enable-ref-calls true \\ - --enable-bam-indexing true \\ - --enable-metrics-json true \\ - --enable-vcf-compression true \\ - --vc-enable-bqd true \\ - --enable-hla true \\ - --hla-enable-class-2 false \\ - --sv-cnv-max-coord-delta 1000 \\ ${args} """ From d6b6b9783c7ae74f019112077e8666cc3a04658a Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 15:36:57 +0200 Subject: [PATCH 07/24] Use prefix --- modules/UMCUGenetics/dragenutils/dxqc/main.nf | 11 ++++++----- .../UMCUGenetics/dragenutils/dxqc/tests/main.nf.test | 1 - .../dragenutils/dxqc/tests/main.nf.test.snap | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/UMCUGenetics/dragenutils/dxqc/main.nf b/modules/UMCUGenetics/dragenutils/dxqc/main.nf index 6b25aa0..08680d5 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/main.nf +++ b/modules/UMCUGenetics/dragenutils/dxqc/main.nf @@ -6,29 +6,30 @@ process DRAGENUTILS_DXQC { input: tuple val(meta), path(wgs_coverage_metrics), path(cnv_metrics), path(mapping_metrics), path(ploidy_estimation_metrics), path(gvcf_metrics) - val output_file_prefix output: - tuple val(meta), path("${meta.id}_${output_file_prefix}.dragen_dx_qc.csv"), emit: csv + tuple val(meta), path("${prefix}.dragen_dx_qc.csv"), emit: csv tuple val("${task.process}"), val('dragenutils'), eval("echo 0.1.0"), topic: versions, emit: versions_dragenutils when: task.ext.when == null || task.ext.when script: + prefix = task.ext.prefix ?: "${meta.id}" + """ dragen-utils dx_qc \\ - ${meta.id}_${output_file_prefix} \\ + ${prefix} \\ ${wgs_coverage_metrics} \\ ${cnv_metrics} \\ ${mapping_metrics} \\ ${ploidy_estimation_metrics} \\ ${gvcf_metrics} \\ - > ${meta.id}_${output_file_prefix}.dragen_dx_qc.csv + > ${prefix}.dragen_dx_qc.csv """ stub: """ - touch ${meta.id}_${output_file_prefix}.dragen_dx_qc.csv + touch ${prefix}.dragen_dx_qc.csv """ } diff --git a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test index e6d9266..48bd4f1 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test +++ b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test @@ -21,7 +21,6 @@ nextflow_process { file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.ploidy_estimation_metrics.csv", checkIfExists: true), file(params.modules_umcu_testdata_base_path + "dragen_utils/qc/HG002.gvcf_metrics.csv", checkIfExists: true), ] - input[1] = "" """ } } diff --git a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap index d68d038..f5fac7b 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap @@ -7,7 +7,7 @@ { "id": "HG002" }, - "HG002_.dragen_dx_qc.csv:md5,98824ef57db0db2af68a565168580df6" + "HG002.dragen_dx_qc.csv:md5,a6e8fd73836dd3b75ef50f082817cd24" ] ], "1": [ @@ -22,7 +22,7 @@ { "id": "HG002" }, - "HG002_.dragen_dx_qc.csv:md5,98824ef57db0db2af68a565168580df6" + "HG002.dragen_dx_qc.csv:md5,a6e8fd73836dd3b75ef50f082817cd24" ] ], "versions_dragenutils": [ @@ -43,7 +43,7 @@ ] } ], - "timestamp": "2026-08-14T16:18:23.243017", + "timestamp": "2026-08-18T15:36:11.629383", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" From 9653af8baa4c26b080cdef1fb385e01acadfabec Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 16:06:34 +0200 Subject: [PATCH 08/24] Add prefix to test --- modules/UMCUGenetics/dragenutils/dxqc/main.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/UMCUGenetics/dragenutils/dxqc/main.nf b/modules/UMCUGenetics/dragenutils/dxqc/main.nf index 08680d5..e45ea5c 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/main.nf +++ b/modules/UMCUGenetics/dragenutils/dxqc/main.nf @@ -29,6 +29,8 @@ process DRAGENUTILS_DXQC { """ stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ touch ${prefix}.dragen_dx_qc.csv """ From dd19f8eb2b1a719da0352dedae49cfffcd516a34 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 19:54:53 +0200 Subject: [PATCH 09/24] Switch quotes --- modules/UMCUGenetics/dragen/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index c64371e..73ac1b9 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -21,7 +21,7 @@ process DRAGEN { tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics tuple val(meta), path("${prefix}.ploidy_estimation_metrics.csv"), optional: true, emit: ploidy_estimation_metrics tuple val(meta), path("${prefix}.gvcf_metrics.csv"), optional: true, emit: gvcf_metrics - tuple val("${task.process}"), val('dragen'), eval("dragen --version 2>&1 | sed 's/^dragen Version //'"), topic: versions, emit: versions_dragen + tuple val("${task.process}"), val('dragen'), eval('dragen --version 2>&1 | sed "s/^dragen Version //"'), topic: versions, emit: versions_dragen when: task.ext.when == null || task.ext.when From e17708c59b6b44f6e8c5586cb6437a68974bd552 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 19:59:10 +0200 Subject: [PATCH 10/24] Remove todo --- modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test b/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test index 3b225d1..716f7a7 100644 --- a/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test +++ b/modules/UMCUGenetics/dragenutils/fastqlist/tests/main.nf.test @@ -1,5 +1,3 @@ -// TODO nf-core: Once you have added the required tests, please run the following command to build this file: -// nf-core modules test dragenutils/fastqlist nextflow_process { name "Test Process DRAGENUTILS_FASTQLIST" From 134f915fa6f4eedefb3f4a4409662109b738eda6 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Tue, 18 Aug 2026 22:02:28 +0200 Subject: [PATCH 11/24] Fix version one more time... --- modules/UMCUGenetics/dragen/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index 73ac1b9..e305eb9 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -21,7 +21,7 @@ process DRAGEN { tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics tuple val(meta), path("${prefix}.ploidy_estimation_metrics.csv"), optional: true, emit: ploidy_estimation_metrics tuple val(meta), path("${prefix}.gvcf_metrics.csv"), optional: true, emit: gvcf_metrics - tuple val("${task.process}"), val('dragen'), eval('dragen --version 2>&1 | sed "s/^dragen Version //"'), topic: versions, emit: versions_dragen + tuple val("${task.process}"), val('dragen'), eval('{ set +x; } 2>/dev/null; dragen --version 2>&1 | sed "s/^dragen Version //"'), topic: versions, emit: versions_dragen when: task.ext.when == null || task.ext.when From e0a8d3e88fd86a212d35d9c291320969d2cb7c3a Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Wed, 19 Aug 2026 13:12:38 +0200 Subject: [PATCH 12/24] Remove set -ex --- modules/UMCUGenetics/dragen/main.nf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index e305eb9..a67a717 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -21,7 +21,7 @@ process DRAGEN { tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics tuple val(meta), path("${prefix}.ploidy_estimation_metrics.csv"), optional: true, emit: ploidy_estimation_metrics tuple val(meta), path("${prefix}.gvcf_metrics.csv"), optional: true, emit: gvcf_metrics - tuple val("${task.process}"), val('dragen'), eval('{ set +x; } 2>/dev/null; dragen --version 2>&1 | sed "s/^dragen Version //"'), topic: versions, emit: versions_dragen + tuple val("${task.process}"), val('dragen'), eval("dragen --version 2>&1 | sed 's/^dragen Version //'"), topic: versions, emit: versions_dragen when: task.ext.when == null || task.ext.when @@ -35,7 +35,6 @@ process DRAGEN { } """ - set -ex mkdir -p /scratch/reference tar -C /scratch/reference -xf ${ref_tar} From e24cc821bb6d8d0bdf267fe52749ce38777c2e22 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Wed, 19 Aug 2026 20:06:35 +0200 Subject: [PATCH 13/24] Fix version --- modules/UMCUGenetics/dragenutils/dxqc/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/UMCUGenetics/dragenutils/dxqc/main.nf b/modules/UMCUGenetics/dragenutils/dxqc/main.nf index e45ea5c..221d70a 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/main.nf +++ b/modules/UMCUGenetics/dragenutils/dxqc/main.nf @@ -9,7 +9,7 @@ process DRAGENUTILS_DXQC { output: tuple val(meta), path("${prefix}.dragen_dx_qc.csv"), emit: csv - tuple val("${task.process}"), val('dragenutils'), eval("echo 0.1.0"), topic: versions, emit: versions_dragenutils + tuple val("${task.process}"), val('dragenutils'), eval("dragen-utils --version"), topic: versions, emit: versions_dragenutils when: task.ext.when == null || task.ext.when From 9d24eba70d9b185f013bed5b281d8e3d4c1da86c Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Thu, 20 Aug 2026 15:12:13 +0200 Subject: [PATCH 14/24] Update snap --- .../UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap index f5fac7b..36b0775 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/dragenutils/dxqc/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "DRAGENUTILS_DXQC", "dragenutils", - "0.1.0" + "1.0.0" ] ], "csv": [ @@ -29,7 +29,7 @@ [ "DRAGENUTILS_DXQC", "dragenutils", - "0.1.0" + "1.0.0" ] ] }, @@ -38,12 +38,12 @@ [ "DRAGENUTILS_DXQC", "dragenutils", - "0.1.0" + "1.0.0" ] ] } ], - "timestamp": "2026-08-18T15:36:11.629383", + "timestamp": "2026-08-20T15:11:59.763461", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.2" From ff6695d6d189641a352e75c6617146a29ca7ee27 Mon Sep 17 00:00:00 2001 From: Robert Ernst Date: Wed, 26 Aug 2026 11:09:07 +0200 Subject: [PATCH 15/24] Bump dragen utils containers to 1.0.0 --- modules/UMCUGenetics/dragenutils/dxqc/main.nf | 2 +- modules/UMCUGenetics/dragenutils/fastqlist/main.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/UMCUGenetics/dragenutils/dxqc/main.nf b/modules/UMCUGenetics/dragenutils/dxqc/main.nf index 221d70a..6612708 100644 --- a/modules/UMCUGenetics/dragenutils/dxqc/main.nf +++ b/modules/UMCUGenetics/dragenutils/dxqc/main.nf @@ -2,7 +2,7 @@ process DRAGENUTILS_DXQC { tag "${meta.id}" label 'process_single' - container 'ghcr.io/umcugenetics/dragen-utils:sha-b1d12b9' + container 'ghcr.io/umcugenetics/dragen-utils:1.0.0' input: tuple val(meta), path(wgs_coverage_metrics), path(cnv_metrics), path(mapping_metrics), path(ploidy_estimation_metrics), path(gvcf_metrics) diff --git a/modules/UMCUGenetics/dragenutils/fastqlist/main.nf b/modules/UMCUGenetics/dragenutils/fastqlist/main.nf index 08634ea..9f0b613 100644 --- a/modules/UMCUGenetics/dragenutils/fastqlist/main.nf +++ b/modules/UMCUGenetics/dragenutils/fastqlist/main.nf @@ -1,7 +1,7 @@ process DRAGENUTILS_FASTQLIST { label 'process_single' - container 'ghcr.io/umcugenetics/dragen-utils:sha-b1d12b9' + container 'ghcr.io/umcugenetics/dragen-utils:1.0.0' input: path fastq From 162aa61b8eec0615581c17eca4c0b8c7ac4974ca Mon Sep 17 00:00:00 2001 From: Joris van Steenbrugge Date: Fri, 21 Aug 2026 14:59:34 +0200 Subject: [PATCH 16/24] Add BAM and BAI output files to dragen --- modules/UMCUGenetics/dragen/main.nf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index a67a717..dc1c023 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -16,6 +16,8 @@ process DRAGEN { output: tuple val(meta), path("*"), emit: output tuple val(meta), path('*.csv'), emit: csv + tuple val(meta), path("${prefix}.bam"), emit: bam + tuple val(meta), path("${prefix}.bam.bai"), emit: bai tuple val(meta), path("${prefix}.wgs_coverage_metrics.csv"), optional: true, emit: wgs_coverage_metrics tuple val(meta), path("${prefix}.cnv_metrics.csv"), optional: true, emit: cnv_metrics tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics @@ -57,6 +59,7 @@ process DRAGEN { echo ${args} touch ${prefix}.bam + touch ${prefix}.bam.bai touch ${prefix}.wgs_coverage_metrics.csv touch ${prefix}.cnv_metrics.csv touch ${prefix}.mapping_metrics.csv From e70ebc7425f7511bf178e6ac1e18cc7917cf21d7 Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:01:50 +0200 Subject: [PATCH 17/24] include bai in snapshot --- .../dragen/tests/main.nf.test.snap | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap index f18f987..9abbfab 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap @@ -9,6 +9,7 @@ }, [ "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -36,7 +37,7 @@ { "id": "sample1" }, - "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -44,7 +45,7 @@ { "id": "sample1" }, - "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ @@ -52,7 +53,7 @@ { "id": "sample1" }, - "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "5": [ @@ -60,7 +61,7 @@ { "id": "sample1" }, - "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "6": [ @@ -68,16 +69,48 @@ { "id": "sample1" }, - "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "7": [ + [ + { + "id": "sample1" + }, + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "sample1" + }, + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ [ "DRAGEN", "dragen", "bash: line 1: dragen: command not found" ] ], + "bai": [ + [ + { + "id": "sample1" + }, + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "sample1" + }, + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "cnv_metrics": [ [ { @@ -123,6 +156,7 @@ }, [ "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -165,10 +199,10 @@ ] } ], - "timestamp": "2026-08-18T11:08:58.003281", + "timestamp": "2026-08-21T15:01:24.781021", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.2" + "nextflow": "26.04.6" } } } \ No newline at end of file From b31f4e20ff75208cda4cff624e86806b930b492d Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:18:13 +0200 Subject: [PATCH 18/24] genome tar processing flow --- modules/UMCUGenetics/untar/genome/main.nf | 32 ++++++++++++++++--- .../untar/genome/tests/main.nf.test | 5 ++- .../untar/genome/tests/main.nf.test.snap | 2 +- .../prepare_ica_references/main.nf | 13 +++----- .../prepare_ica_references/tests/main.nf.test | 3 +- .../tests/main.nf.test.snap | 8 ++--- 6 files changed, 42 insertions(+), 21 deletions(-) diff --git a/modules/UMCUGenetics/untar/genome/main.nf b/modules/UMCUGenetics/untar/genome/main.nf index 30f5d51..4c989f0 100644 --- a/modules/UMCUGenetics/untar/genome/main.nf +++ b/modules/UMCUGenetics/untar/genome/main.nf @@ -1,5 +1,5 @@ process UNTAR_GENOME { - tag "${archive}" + tag "${meta.id}" label 'process_single' container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container @@ -7,18 +7,40 @@ process UNTAR_GENOME { : 'community.wave.seqera.io/library/coreutils_grep_gzip_lbzip2_pruned:838ba80435a629f8'}" input: - tuple val(meta), path(archive) + tuple val(meta), path(genome_tar) output: - tuple val(meta), path('genome'), emit: untar + tuple val(meta), path('dragen_ref'), emit: dragen_ref + tuple val(meta), path('genome.fa'), emit: fasta + tuple val(meta), path("genes.gtf.gz"), emit: gtf tuple val("${task.process}"), val('UNTAR'), eval('echo 1.0.0'), emit: versions_untar_genome, topic: versions when: task.ext.when == null || task.ext.when script: + def hashtable_version = params.dragen_hashtable_version ?: '' """ - mkdir genome - tar -xavf ${archive} -C genome + tar -xzf ${genome_tar} + mapfile -t hts < <(find . -name hash_table.cfg -printf '%h\\n' | grep -E '/[0-9]+\$' | sort -V) + + if [ \${#hts[@]} -eq 0 ]; then + echo "ERROR: no DRAGEN hashtable (hash_table.cfg) found in ${genome_tar}" >&2 + exit 1 + fi + + + if [ -n "${hashtable_version}" ]; then + ref_dir=\$(printf '%s\\n' "\${hts[@]}" | grep -E "/${hashtable_version}\$") || { + echo "ERROR: hashtable v${hashtable_version} not found. Available: \${hts[*]}" >&2 + exit 1 + } + else + ref_dir=\${hts[-1]} # Highest version + fi + + echo "Using DRAGEN ref-dir: \$ref_dir" >&2 + ln -s "\$(realpath \$ref_dir)" dragen_ref + """ } diff --git a/modules/UMCUGenetics/untar/genome/tests/main.nf.test b/modules/UMCUGenetics/untar/genome/tests/main.nf.test index cf588e8..0ec417d 100644 --- a/modules/UMCUGenetics/untar/genome/tests/main.nf.test +++ b/modules/UMCUGenetics/untar/genome/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = channel.of([ [id: 'genome'], - file(params.subworkflows_umcu_testdata_base_path + "prepare_ica_references/genome.tar", checkIfExists: true) + file(params.subworkflows_umcu_testdata_base_path + "prepare_ica_references/genome.tar.gz", checkIfExists: true) ]) """ } @@ -23,6 +23,9 @@ nextflow_process { then{ assertAll( { assert process.success }, + { assert path(process.out.dragen_ref[0][1]).exists() }, + { assert path(process.out.fasta[0][1]).exists() }, + { assert path(process.out.gtf[0][1]).exists() }, { assert snapshot( process.out.findAll { key, val -> key.startsWith('versions') } ).match() } diff --git a/modules/UMCUGenetics/untar/genome/tests/main.nf.test.snap b/modules/UMCUGenetics/untar/genome/tests/main.nf.test.snap index 83357a9..1c01a83 100644 --- a/modules/UMCUGenetics/untar/genome/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/untar/genome/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] } ], - "timestamp": "2026-08-21T11:44:44.991954", + "timestamp": "2026-08-28T10:56:51.250213", "meta": { "nf-test": "0.9.5", "nextflow": "26.04.6" diff --git a/subworkflows/UMCUGenetics/prepare_ica_references/main.nf b/subworkflows/UMCUGenetics/prepare_ica_references/main.nf index 394ad2a..f93b821 100644 --- a/subworkflows/UMCUGenetics/prepare_ica_references/main.nf +++ b/subworkflows/UMCUGenetics/prepare_ica_references/main.nf @@ -11,23 +11,18 @@ workflow PREPARE_ICA_REFERENCES { UNTAR_GENOME(genome_tar) - genome_fasta = UNTAR_GENOME.out.untar - .map{ meta, dir -> [meta, file("${dir}/genome.fa", - checkIfExists: !workflow.stubRun) - ]} - SAMTOOLS_FAIDX( - genome_fasta.map {meta, fasta -> [meta, fasta, []]}, + UNTAR_GENOME.out.fasta.map {meta, fasta -> [meta, fasta, []]}, false ) - GATK4_CREATESEQUENCEDICTIONARY(genome_fasta) + GATK4_CREATESEQUENCEDICTIONARY(UNTAR_GENOME.out.fasta) emit: - genome_fasta = genome_fasta + genome_fasta = UNTAR_GENOME.out.fasta genome_fai = SAMTOOLS_FAIDX.out.fai genome_dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict - genome_dir = UNTAR_GENOME.out.untar + genome_dir = UNTAR_GENOME.out.dragen_ref } diff --git a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test index 8cb92b8..d587424 100644 --- a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test +++ b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test @@ -24,12 +24,13 @@ nextflow_workflow { } test("Validate genome untar and processing") { + options "-stub" when{ workflow{ """ input[0] = channel.of([ [id: 'genome'], - file(params.subworkflows_umcu_testdata_base_path + "prepare_ica_references/genome.tar", checkIfExists: true) + file(params.subworkflows_umcu_testdata_base_path + "prepare_ica_references/genome.tar.gz", checkIfExists: true) ]) """ } diff --git a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap index 351f20e..1bcd5fb 100644 --- a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap +++ b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap @@ -6,7 +6,7 @@ { "id": "genome" }, - "genome.fa:md5,d566f7aeef35edc9da9d38d672f34fa9" + "genome.fa:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -14,7 +14,7 @@ { "id": "genome" }, - "genome.fa.fai:md5,1211e0613e9e88446fc1b2b0222a3339" + "genome.fa.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -22,11 +22,11 @@ { "id": "genome" }, - "genome.dict:md5,b8b7b776dfdefe7badf859248af14525" + "genome.dict:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], - "timestamp": "2026-08-19T13:27:32.222553", + "timestamp": "2026-08-28T11:17:28.177762", "meta": { "nf-test": "0.9.5", "nextflow": "26.04.6" From 04800c4887719ce54d8ed0dcc15f77dfe6fb38f0 Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:29:48 +0200 Subject: [PATCH 19/24] run dragen with preprocessed genome tar --- modules/UMCUGenetics/dragen/main.nf | 17 +++------- .../UMCUGenetics/dragen/tests/main.nf.test | 32 +++++++++++++++++-- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index dc1c023..4ed4705 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -1,5 +1,4 @@ process DRAGEN { - // No container image as dragen requires specific hardware (FPGA) to run. tag "${meta.id}" label 'process_fpga' @@ -7,10 +6,10 @@ process DRAGEN { container '079623148045.dkr.ecr.eu-central-1.amazonaws.com/cp-prod/f1b7ad6a-11ac-4bc1-b705-b275ff2887ad:latest' input: - // TODO: Move ref_tar unpacking to a separate process to avoid unpacking the reference for every sample? -> added in prs branch + tuple val(meta), path(r1_fastq), path(r2_fastq) path fastq_list - path ref_tar + tuple val(meta2), path(ref_dir) path repeat_genotype_specs output: @@ -31,24 +30,18 @@ process DRAGEN { script: prefix = task.ext.prefix ?: "${meta.id}" def args = task.ext.args ?: '' - - if (repeat_genotype_specs) { - args = args + " --repeat-genotype-enable true --repeat-genotype-specs " + repeat_genotype_specs - } - + def repeat_specs = repeat_genotype_specs ? "--repeat-genotype-enable true --repeat-genotype-specs ${repeat_genotype_specs}" : "" """ - mkdir -p /scratch/reference - tar -C /scratch/reference -xf ${ref_tar} - /opt/edico/bin/dragen --partial-reconfig HMM --ignore-version-check true /opt/edico/bin/dragen --lic-instance-id-location /opt/instance-identity \\ - --ref-dir /scratch/reference/DRAGEN/9 \\ + --ref-dir ${ref_dir} \\ --fastq-list ${fastq_list} \\ --fastq-list-sample-id ${meta.id} \\ --output-file-prefix ${prefix} \\ --output-directory ./ \\ --intermediate-results-dir /scratch \\ + ${repeat_specs} \\ ${args} """ diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test b/modules/UMCUGenetics/dragen/tests/main.nf.test index bc83628..1eb366a 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test @@ -8,6 +8,31 @@ nextflow_process { tag "modules_UMCUGenetics" tag "dragen" + + setup{ + nfcoreInitialise("${launchDir}/library/") + nfcoreInstall( + "${launchDir}/library/", + [ + "samtools/faidx", + "gatk4/createsequencedictionary" + ] + ) + nfcoreLink("${launchDir}/library/", "${baseDir}/modules/") + + run("PREPARE_ICA_REFERENCES") { + script "../../../../subworkflows/UMCUGenetics/prepare_ica_references/main.nf" + workflow { + """ + input[0] = channel.of([ + [id: 'genome'], + file(params.subworkflows_umcu_testdata_base_path + "prepare_ica_references/genome.tar.gz", checkIfExists: true) + ]) + """ + } + } + } + test("dragen - stub") { options '-stub' when { @@ -19,7 +44,7 @@ nextflow_process { [] ] input[1] = [] - input[2] = [] + input[2] = PREPARE_ICA_REFERENCES.out.genome_dir input[3] = [] """ } @@ -33,5 +58,8 @@ nextflow_process { ).match() } ) } + cleanup { + nfcoreUnlink("${launchDir}/library/", "${baseDir}/modules/") + } } -} \ No newline at end of file +} From 5d8f653b95f29df5d11afd39df772ebeec05a300 Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 28 Aug 2026 12:52:52 +0200 Subject: [PATCH 20/24] remove job array param ref --- subworkflows/UMCUGenetics/bam_prs/nextflow.config | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/UMCUGenetics/bam_prs/nextflow.config b/subworkflows/UMCUGenetics/bam_prs/nextflow.config index 63e1a31..6f2cb0d 100644 --- a/subworkflows/UMCUGenetics/bam_prs/nextflow.config +++ b/subworkflows/UMCUGenetics/bam_prs/nextflow.config @@ -44,7 +44,6 @@ process { cpus = 2 memory = { 10.GB * task.attempt } time = { 30.m * task.attempt } - array = params.job_array_size ext.args = { [ "--allow-extra-chr", From d725faa60957c26b415c594b7ae28f42a786eb1c Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 28 Aug 2026 14:30:22 +0200 Subject: [PATCH 21/24] fix linting --- .../UMCUGenetics/dragen/tests/main.nf.test | 1 + .../prepare_ica_references/tests/main.nf.test | 9 +++-- .../tests/main.nf.test.snap | 35 ------------------- 3 files changed, 5 insertions(+), 40 deletions(-) delete mode 100644 subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test b/modules/UMCUGenetics/dragen/tests/main.nf.test index 1eb366a..ad8e822 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test @@ -6,6 +6,7 @@ nextflow_process { tag "modules" tag "modules_UMCUGenetics" + tag "subworkflows/prepare_ica_references" tag "dragen" diff --git a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test index d587424..acbe415 100644 --- a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test +++ b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test @@ -38,11 +38,10 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot( - workflow.out.genome_fasta, - workflow.out.genome_fai, - workflow.out.genome_dict - ).match()} + { assert path(workflow.out.genome_fasta[0][1]).exists() }, + { assert path(workflow.out.genome_fai[0][1]).exists() }, + { assert path(workflow.out.genome_dict[0][1]).exists() }, + { assert path(workflow.out.genome_dir[0][1]).exists() }, ) } diff --git a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap b/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap deleted file mode 100644 index 1bcd5fb..0000000 --- a/subworkflows/UMCUGenetics/prepare_ica_references/tests/main.nf.test.snap +++ /dev/null @@ -1,35 +0,0 @@ -{ - "Validate genome untar and processing": { - "content": [ - [ - [ - { - "id": "genome" - }, - "genome.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "genome" - }, - "genome.fa.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "genome" - }, - "genome.dict:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "timestamp": "2026-08-28T11:17:28.177762", - "meta": { - "nf-test": "0.9.5", - "nextflow": "26.04.6" - } - } -} \ No newline at end of file From f0cc61392c5eeb3db5bb9e359b995555b2629a89 Mon Sep 17 00:00:00 2001 From: Joris van Steenbrugge Date: Fri, 21 Aug 2026 14:59:34 +0200 Subject: [PATCH 22/24] Add BAM and BAI output files to dragen --- modules/UMCUGenetics/dragen/main.nf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index cdcef2b..46aa014 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -18,6 +18,8 @@ process DRAGEN { output: tuple val(meta), path("*"), emit: output tuple val(meta), path('*.csv'), emit: csv + tuple val(meta), path("${prefix}.bam"), emit: bam + tuple val(meta), path("${prefix}.bam.bai"), emit: bai tuple val(meta), path("${prefix}.wgs_coverage_metrics.csv"), optional: true, emit: wgs_coverage_metrics tuple val(meta), path("${prefix}.cnv_metrics.csv"), optional: true, emit: cnv_metrics tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics @@ -59,6 +61,7 @@ process DRAGEN { echo ${args} touch ${prefix}.bam + touch ${prefix}.bam.bai touch ${prefix}.wgs_coverage_metrics.csv touch ${prefix}.cnv_metrics.csv touch ${prefix}.mapping_metrics.csv From 46ab520766ee5ce43dca435cc634d7fe107be7cf Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:01:50 +0200 Subject: [PATCH 23/24] include bai in snapshot --- .../dragen/tests/main.nf.test.snap | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap index f18f987..9abbfab 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap @@ -9,6 +9,7 @@ }, [ "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -36,7 +37,7 @@ { "id": "sample1" }, - "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -44,7 +45,7 @@ { "id": "sample1" }, - "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ @@ -52,7 +53,7 @@ { "id": "sample1" }, - "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "5": [ @@ -60,7 +61,7 @@ { "id": "sample1" }, - "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "6": [ @@ -68,16 +69,48 @@ { "id": "sample1" }, - "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "7": [ + [ + { + "id": "sample1" + }, + "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "sample1" + }, + "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ [ "DRAGEN", "dragen", "bash: line 1: dragen: command not found" ] ], + "bai": [ + [ + { + "id": "sample1" + }, + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "sample1" + }, + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "cnv_metrics": [ [ { @@ -123,6 +156,7 @@ }, [ "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -165,10 +199,10 @@ ] } ], - "timestamp": "2026-08-18T11:08:58.003281", + "timestamp": "2026-08-21T15:01:24.781021", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.2" + "nextflow": "26.04.6" } } } \ No newline at end of file From d00aff8a8e0d9e3449f46d3b5cd7cd93fc12c8b1 Mon Sep 17 00:00:00 2001 From: Jorisvansteenbrugge <7196110+Jorisvansteenbrugge@users.noreply.github.com> Date: Fri, 28 Aug 2026 16:32:19 +0200 Subject: [PATCH 24/24] joint output bam and bai as tuple --- modules/UMCUGenetics/dragen/main.nf | 3 +- .../dragen/tests/main.nf.test.snap | 34 ++++++------------- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/modules/UMCUGenetics/dragen/main.nf b/modules/UMCUGenetics/dragen/main.nf index 46aa014..10401a7 100644 --- a/modules/UMCUGenetics/dragen/main.nf +++ b/modules/UMCUGenetics/dragen/main.nf @@ -18,8 +18,7 @@ process DRAGEN { output: tuple val(meta), path("*"), emit: output tuple val(meta), path('*.csv'), emit: csv - tuple val(meta), path("${prefix}.bam"), emit: bam - tuple val(meta), path("${prefix}.bam.bai"), emit: bai + tuple val(meta), path("${prefix}.bam"), path("${prefix}.bam.bai"), emit: bam_bai tuple val(meta), path("${prefix}.wgs_coverage_metrics.csv"), optional: true, emit: wgs_coverage_metrics tuple val(meta), path("${prefix}.cnv_metrics.csv"), optional: true, emit: cnv_metrics tuple val(meta), path("${prefix}.mapping_metrics.csv"), optional: true, emit: mapping_metrics diff --git a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap index 9abbfab..da6efd8 100644 --- a/modules/UMCUGenetics/dragen/tests/main.nf.test.snap +++ b/modules/UMCUGenetics/dragen/tests/main.nf.test.snap @@ -37,18 +37,11 @@ { "id": "sample1" }, - "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "sample1" - }, + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "4": [ + "3": [ [ { "id": "sample1" @@ -56,7 +49,7 @@ "sample1.wgs_coverage_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "5": [ + "4": [ [ { "id": "sample1" @@ -64,7 +57,7 @@ "sample1.cnv_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "6": [ + "5": [ [ { "id": "sample1" @@ -72,7 +65,7 @@ "sample1.mapping_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "7": [ + "6": [ [ { "id": "sample1" @@ -80,7 +73,7 @@ "sample1.ploidy_estimation_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "8": [ + "7": [ [ { "id": "sample1" @@ -88,29 +81,22 @@ "sample1.gvcf_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "9": [ + "8": [ [ "DRAGEN", "dragen", "bash: line 1: dragen: command not found" ] ], - "bai": [ + "bam_bai": [ [ { "id": "sample1" }, + "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e", "sample1.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "bam": [ - [ - { - "id": "sample1" - }, - "sample1.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], "cnv_metrics": [ [ { @@ -199,7 +185,7 @@ ] } ], - "timestamp": "2026-08-21T15:01:24.781021", + "timestamp": "2026-08-28T16:31:56.534107", "meta": { "nf-test": "0.9.5", "nextflow": "26.04.6"