diff --git a/modules/nf-core/deepvariant/README.md b/modules/nf-core/deepvariant/README.md index 4b3ed086899..9f6358236e9 100644 --- a/modules/nf-core/deepvariant/README.md +++ b/modules/nf-core/deepvariant/README.md @@ -32,20 +32,7 @@ These module subcommands incorporate the individual steps of the DeepVariant pip ## makeexamples This process imports the data used for calling, and thus decides what information is available to the -deep neural network. It's important to import the correct channels for the model you want to use. - -The script `run_deepvariant` (not used in the subworkflow) does this automatically. You can refer to -the implementation in the DeepVariant repo: - -https://github.com/google/deepvariant/blob/bf9ed7e6de97cf6c8381694cb996317a740625ad/scripts/run_deepvariant.py#L367 - -For WGS and WES models you need to enable the `insert_size` channel. Specify the following in the config: - -``` -withName: "DEEPVARIANT_MAKEEXAMPLES" { - ext.args = '--channels "insert_size"' -} -``` +deep neural network. It's important to use the correct settings for the model you want to use for each step. The script [`run_deepvariant.py`](https://github.com/google/deepvariant/blob/r1.8/scripts/run_deepvariant.py) does this automatically. To figure out the flags needed for each model, you can run `run_deepvariant.py` while adding `dry_run=true`, to print out the command used for each step, as described [here](https://github.com/google/deepvariant/blob/r1.8/docs/deepvariant-pacbio-model-case-study.md). ## callvariants diff --git a/modules/nf-core/deepvariant/callvariants/main.nf b/modules/nf-core/deepvariant/callvariants/main.nf index 668b51ae4cc..f3c54dd17e8 100644 --- a/modules/nf-core/deepvariant/callvariants/main.nf +++ b/modules/nf-core/deepvariant/callvariants/main.nf @@ -4,7 +4,7 @@ process DEEPVARIANT_CALLVARIANTS { label 'process_high' //Conda is not supported at the moment - container "nf-core/deepvariant:1.6.1" + container "docker.io/google/deepvariant:1.8.0" input: tuple val(meta), path(make_examples_tfrecords) diff --git a/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap b/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap index 8f04ede70eb..7bb2156bcd8 100644 --- a/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap +++ b/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "versions": { "content": [ [ - "versions.yml:md5,5ff99ffba1e56e4e919d3dfc2d0f3cbb" + "versions.yml:md5,384f8c54b3d1b03f7bdb583cb3c93e5c" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nextflow": "24.10.3" }, - "timestamp": "2024-08-09T16:38:47.927241" + "timestamp": "2025-01-08T10:33:45.081424542" }, "homo_sapiens-wgs-call_variants_tfrecords-filenames": { "content": [ @@ -34,7 +34,7 @@ ] ], "1": [ - "versions.yml:md5,5ff99ffba1e56e4e919d3dfc2d0f3cbb" + "versions.yml:md5,384f8c54b3d1b03f7bdb583cb3c93e5c" ], "call_variants_tfrecords": [ [ @@ -46,14 +46,14 @@ ] ], "versions": [ - "versions.yml:md5,5ff99ffba1e56e4e919d3dfc2d0f3cbb" + "versions.yml:md5,384f8c54b3d1b03f7bdb583cb3c93e5c" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nextflow": "24.10.3" }, - "timestamp": "2024-08-13T21:07:17.335788301" + "timestamp": "2025-01-08T10:07:27.993998742" } } \ No newline at end of file diff --git a/modules/nf-core/deepvariant/callvariants/tests/nextflow.config b/modules/nf-core/deepvariant/callvariants/tests/nextflow.config index 590aa060237..68aec144553 100644 --- a/modules/nf-core/deepvariant/callvariants/tests/nextflow.config +++ b/modules/nf-core/deepvariant/callvariants/tests/nextflow.config @@ -6,6 +6,6 @@ process { } process { withName: "DEEPVARIANT_MAKEEXAMPLES" { - ext.args = '--channels "insert_size"' + ext.args = '--checkpoint "/opt/models/wgs" --call_small_model_examples --small_model_indel_gq_threshold "30" --small_model_snp_gq_threshold "25" --small_model_vaf_context_window_size "51" --trained_small_model_path "/opt/smallmodels/wgs"' } } diff --git a/modules/nf-core/deepvariant/main.nf b/modules/nf-core/deepvariant/main.nf index 12c9366bb7b..427de3c9cd5 100644 --- a/modules/nf-core/deepvariant/main.nf +++ b/modules/nf-core/deepvariant/main.nf @@ -16,7 +16,7 @@ process DEEPVARIANT { tag "$meta.id" label 'process_high' - container "nf-core/deepvariant:1.6.1" + container "docker.io/google/deepvariant:1.8.0" input: tuple val(meta), path(input), path(index), path(intervals) diff --git a/modules/nf-core/deepvariant/makeexamples/main.nf b/modules/nf-core/deepvariant/makeexamples/main.nf index 022d0bf2808..f31f275c39c 100644 --- a/modules/nf-core/deepvariant/makeexamples/main.nf +++ b/modules/nf-core/deepvariant/makeexamples/main.nf @@ -3,7 +3,7 @@ process DEEPVARIANT_MAKEEXAMPLES { label 'process_high' //Conda is not supported at the moment - container "nf-core/deepvariant:1.6.1" + container "docker.io/google/deepvariant:1.8.0" input: tuple val(meta), path(input), path(index), path(intervals) @@ -15,6 +15,7 @@ process DEEPVARIANT_MAKEEXAMPLES { output: tuple val(meta), path("${prefix}.examples.tfrecord-*-of-*.gz{,.example_info.json}"), emit: examples tuple val(meta), path("${prefix}.gvcf.tfrecord-*-of-*.gz"), emit: gvcf + tuple val(meta), path("${prefix}_call_variant_outputs.examples.tfrecord-*-of-*.gz", arity: "0..*"), emit: small_model_calls path "versions.yml", emit: versions when: diff --git a/modules/nf-core/deepvariant/makeexamples/meta.yml b/modules/nf-core/deepvariant/makeexamples/meta.yml index 6fb9f1b8143..6ae792f6ea8 100644 --- a/modules/nf-core/deepvariant/makeexamples/meta.yml +++ b/modules/nf-core/deepvariant/makeexamples/meta.yml @@ -88,6 +88,15 @@ output: type: list description: | Tuple containing sample metadata and the GVCF data in tfrecord format + - small_model_calls: + - meta: + type: list + description: | + Tuple containing sample metadata + - '${prefix}_call_variant_outputs.examples.tfrecord-*-of-*.gz", arity: "0..*': + type: list + description: | + Optional variant calls from the small model, if enabled, in tfrecord format - versions: - versions.yml: type: file diff --git a/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test index d46dbe6d57c..3b303217c04 100644 --- a/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test +++ b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test @@ -46,13 +46,13 @@ nextflow_process { { assert process.out.examples.get(0).get(0) == [ id:'test', single_end:false ] }, { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, { assert process.out.examples.get(0).get(1).size() == 4 }, - { assert snapshot( // Check examples (tfrecord / json) file name list + { assert snapshot( // Check examples (tfrecord / json) file name list file(process.out.examples.get(0).get(1).get(0)).name, file(process.out.examples.get(0).get(1).get(1)).name, file(process.out.examples.get(0).get(1).get(2)).name, file(process.out.examples.get(0).get(1).get(3)).name, ).match("test1-exaamples-filenames")}, - + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, { assert process.out.gvcf.get(0).get(1).size() == 2 }, { assert snapshot( // Check gvcf file name list @@ -154,7 +154,7 @@ nextflow_process { { assert process.out.examples.get(0).get(0) == [ id:'test', single_end:false ] }, // The test is always run with 2 cpus { assert process.out.examples.get(0).get(1).size() == 4 }, - { assert snapshot( // Check examples (tfrecord / json) file name list + { assert snapshot( // Check examples (tfrecord / json) file name list file(process.out.examples.get(0).get(1).get(0)).name, file(process.out.examples.get(0).get(1).get(1)).name, file(process.out.examples.get(0).get(1).get(2)).name, @@ -173,7 +173,7 @@ nextflow_process { } test("stub") { - + options "-stub" when { @@ -208,13 +208,13 @@ nextflow_process { assertAll( { assert process.success }, { assert process.out.examples.get(0).get(1).size() == 4 }, - { assert snapshot( // Check examples (tfrecord / json) file name list + { assert snapshot( // Check examples (tfrecord / json) file name list file(process.out.examples.get(0).get(1).get(0)).name, file(process.out.examples.get(0).get(1).get(1)).name, file(process.out.examples.get(0).get(1).get(2)).name, file(process.out.examples.get(0).get(1).get(3)).name, ).match("test4-examples-filenames")}, - + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, { assert process.out.gvcf.get(0).get(1).size() == 2 }, { assert snapshot( // Check gvcf file name list @@ -225,4 +225,4 @@ nextflow_process { } } -} +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap index 24182c54a0b..ee5659c3964 100644 --- a/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap +++ b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap @@ -10,6 +10,18 @@ }, "timestamp": "2024-09-04T16:09:47.885995" }, + "test3-versions": { + "content": [ + [ + "versions.yml:md5,2bfe7f3902fb3d9e2dc1d97dc6347c9c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-08T10:34:31.031697972" + }, "test2-examples-filenames": { "content": [ "test.examples.tfrecord-00000-of-00002.gz", @@ -26,14 +38,27 @@ "test2-versions": { "content": [ [ - "versions.yml:md5,842dca9323f25aa3cfd67789d18e7e33" + "versions.yml:md5,2bfe7f3902fb3d9e2dc1d97dc6347c9c" ] ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-08T10:34:17.998740352" + }, + "test1-exaamples-filenames": { + "content": [ + "test.examples.tfrecord-00000-of-00002.gz", + "test.examples.tfrecord-00000-of-00002.gz.example_info.json", + "test.examples.tfrecord-00001-of-00002.gz", + "test.examples.tfrecord-00001-of-00002.gz.example_info.json" + ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-08-09T16:39:28.960959" + "timestamp": "2024-09-04T16:09:47.874585" }, "test4-examples-filenames": { "content": [ @@ -51,14 +76,25 @@ "test1-versions": { "content": [ [ - "versions.yml:md5,842dca9323f25aa3cfd67789d18e7e33" + "versions.yml:md5,2bfe7f3902fb3d9e2dc1d97dc6347c9c" ] ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-08T10:34:04.940271042" + }, + "test3-gvcf-filenames": { + "content": [ + "test.gvcf.tfrecord-00000-of-00002.gz", + "test.gvcf.tfrecord-00001-of-00002.gz" + ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-08-09T16:39:13.57526" + "timestamp": "2024-09-04T16:10:17.714443" }, "test3-examples-filenames": { "content": [ @@ -94,41 +130,5 @@ "nextflow": "24.04.4" }, "timestamp": "2024-09-04T16:10:27.423442" - }, - "test3-versions": { - "content": [ - [ - "versions.yml:md5,842dca9323f25aa3cfd67789d18e7e33" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-09T16:39:44.83616" - }, - "test1-exaamples-filenames": { - "content": [ - "test.examples.tfrecord-00000-of-00002.gz", - "test.examples.tfrecord-00000-of-00002.gz.example_info.json", - "test.examples.tfrecord-00001-of-00002.gz", - "test.examples.tfrecord-00001-of-00002.gz.example_info.json" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-04T16:09:47.874585" - }, - "test3-gvcf-filenames": { - "content": [ - "test.gvcf.tfrecord-00000-of-00002.gz", - "test.gvcf.tfrecord-00001-of-00002.gz" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-04T16:10:17.714443" } } \ No newline at end of file diff --git a/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config b/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config index 5f071fcb34b..6811fe48d9b 100644 --- a/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config +++ b/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config @@ -1,6 +1,6 @@ process { withName: "DEEPVARIANT_MAKEEXAMPLES" { - ext.args = '--channels "insert_size"' cpus = 2 // The number of output files is determined by cpus - keep it the same for tests + ext.args = '--checkpoint "/opt/models/wgs" --call_small_model_examples --small_model_indel_gq_threshold "30" --small_model_snp_gq_threshold "25" --small_model_vaf_context_window_size "51" --trained_small_model_path "/opt/smallmodels/wgs"' } } diff --git a/modules/nf-core/deepvariant/postprocessvariants/main.nf b/modules/nf-core/deepvariant/postprocessvariants/main.nf index 90e8563deb6..badd23ae678 100644 --- a/modules/nf-core/deepvariant/postprocessvariants/main.nf +++ b/modules/nf-core/deepvariant/postprocessvariants/main.nf @@ -3,10 +3,10 @@ process DEEPVARIANT_POSTPROCESSVARIANTS { label 'process_medium' //Conda is not supported at the moment - container "nf-core/deepvariant:1.6.1" + container "docker.io/google/deepvariant:1.8.0" input: - tuple val(meta), path(variant_calls_tfrecord_files), path(gvcf_tfrecords) + tuple val(meta), path(variant_calls_tfrecord_files), path(gvcf_tfrecords), path(small_model_calls), path(intervals) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) tuple val(meta4), path(gzi) @@ -30,6 +30,7 @@ process DEEPVARIANT_POSTPROCESSVARIANTS { def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" + def regions = intervals ? "--regions ${intervals}" : "" def variant_calls_tfrecord_name = variant_calls_tfrecord_files[0].name.replaceFirst(/-\d{5}-of-\d{5}/, "") def gvcf_matcher = gvcf_tfrecords[0].baseName =~ /^(.+)-\d{5}-of-(\d{5})$/ @@ -41,6 +42,22 @@ process DEEPVARIANT_POSTPROCESSVARIANTS { // Reconstruct the logical name - ${tfrecord_name}.examples.tfrecord@${task.cpus}.gz def gvcf_tfrecords_logical_name = "${gvcf_tfrecord_name}@${gvcf_shardCount}.gz" + // The following block determines whether the small model was used, and if so, adds the variant calls from it + // to the argument --small_model_cvo_records. + def small_model_arg = "" + def small_model_calls_copy = small_model_calls // Create a copy of the process-level variable so it can be used inside the if{} + if (small_model_calls_copy) { + def small_model_matcher = (small_model_calls_copy[0].baseName =~ /^(.+)-\d{5}-of-(\d{5})$/) + if (!small_model_matcher.matches()) { + throw new IllegalArgumentException("tfrecord baseName '" + small_model_calls_copy[0].baseName + "' doesn't match the expected pattern") + } + def small_model_tfrecord_name = small_model_matcher[0][1] + def small_model_shardCount = small_model_matcher[0][2] + // Reconstruct the logical name. Example: test_call_variant_outputs.examples.tfrecord@12.gz + def small_model_tfrecords_logical_name = "${small_model_tfrecord_name}@${small_model_shardCount}.gz" + small_model_arg = "--small_model_cvo_records ${small_model_tfrecords_logical_name}" + } + """ /opt/deepvariant/bin/postprocess_variants \\ ${args} \\ @@ -49,6 +66,7 @@ process DEEPVARIANT_POSTPROCESSVARIANTS { --outfile "${prefix}.vcf.gz" \\ --nonvariant_site_tfrecord_path "${gvcf_tfrecords_logical_name}" \\ --gvcf_outfile "${prefix}.g.vcf.gz" \\ + ${regions} ${small_model_arg} \\ --cpus $task.cpus cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/deepvariant/postprocessvariants/meta.yml b/modules/nf-core/deepvariant/postprocessvariants/meta.yml index 132a5263226..caee500fc96 100644 --- a/modules/nf-core/deepvariant/postprocessvariants/meta.yml +++ b/modules/nf-core/deepvariant/postprocessvariants/meta.yml @@ -31,6 +31,15 @@ input: description: | Sharded tfrecord file from DEEPVARIANT_MAKEEXAMPLES with the coverage information used for GVCF output pattern: "*.gz" + - small_model_calls: + type: file + description: | + Sharded tfrecord file from DEEPVARIANT_MAKEEXAMPLES with variant calls from the small model + pattern: "*.gz" + - intervals: + type: file + description: Interval file for targeted regions + pattern: "*.bed" - - meta2: type: map description: | diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test index e4e9b5570c2..ef9110b0e06 100644 --- a/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test @@ -22,7 +22,8 @@ nextflow_process { [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - [] + [], + ] input[1] = [ [ id:'genome'], @@ -56,7 +57,10 @@ nextflow_process { input[0] = DEEPVARIANT_CALLVARIANTS.out.call_variants_tfrecords.join( DEEPVARIANT_MAKEEXAMPLES.out.gvcf, failOnMismatch: true - ) + ).join( + DEEPVARIANT_MAKEEXAMPLES.out.small_model_calls, + failOnMismatch: true + ).map { meta, tf, gvcf, small_model_calls -> [ meta, tf, gvcf, small_model_calls, [] ] } input[1] = [ [ id:'genome'], file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) @@ -82,7 +86,7 @@ nextflow_process { test("homo_sapiens - wgs - stub") { options "-stub" - + when { process { """ @@ -91,6 +95,7 @@ nextflow_process { [], [], [], + [], ] input[1] = [ [ id:'genome'], diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap index 5a29c624e50..25f8c77cc1d 100644 --- a/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap @@ -39,7 +39,7 @@ ] ], "4": [ - "versions.yml:md5,37f0e454a6983de82f7a93eb39849985" + "versions.yml:md5,50b8f9cdd2072594c18345c57aa0c81d" ], "gvcf": [ [ @@ -78,15 +78,15 @@ ] ], "versions": [ - "versions.yml:md5,37f0e454a6983de82f7a93eb39849985" + "versions.yml:md5,50b8f9cdd2072594c18345c57aa0c81d" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nextflow": "24.10.3" }, - "timestamp": "2024-08-09T16:40:38.231189" + "timestamp": "2025-01-08T10:08:20.388765647" }, "homo_sapiens - wgs": { "content": [ @@ -97,7 +97,7 @@ "id": "test", "single_end": false }, - "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ] ], "1": [ @@ -106,7 +106,7 @@ "id": "test", "single_end": false }, - "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ] ], "2": [ @@ -115,7 +115,7 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ] ], "3": [ @@ -124,11 +124,11 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ] ], "4": [ - "versions.yml:md5,b1d5ddb90c4a59a1a3fdace9dcc8445c" + "versions.yml:md5,a5f0cf2f9a03036ffdd389c5e24f3865" ], "gvcf": [ [ @@ -136,7 +136,7 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ] ], "gvcf_tbi": [ @@ -145,7 +145,7 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ] ], "vcf": [ @@ -154,7 +154,7 @@ "id": "test", "single_end": false }, - "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ] ], "vcf_tbi": [ @@ -163,18 +163,18 @@ "id": "test", "single_end": false }, - "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ] ], "versions": [ - "versions.yml:md5,b1d5ddb90c4a59a1a3fdace9dcc8445c" + "versions.yml:md5,a5f0cf2f9a03036ffdd389c5e24f3865" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-08-09T16:46:15.793662" + "timestamp": "2025-02-19T13:32:50.529983365" } } \ No newline at end of file diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config b/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config index 070b4892f86..b8f3f47abe0 100644 --- a/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config @@ -5,6 +5,6 @@ process { } process { withName: "DEEPVARIANT_MAKEEXAMPLES" { - ext.args = '--channels "insert_size"' + ext.args = '--checkpoint "/opt/models/wgs" --call_small_model_examples --small_model_indel_gq_threshold "30" --small_model_snp_gq_threshold "25" --small_model_vaf_context_window_size "51" --trained_small_model_path "/opt/smallmodels/wgs"' } } diff --git a/modules/nf-core/deepvariant/rundeepvariant/main.nf b/modules/nf-core/deepvariant/rundeepvariant/main.nf index aec18907646..41338f28cf0 100644 --- a/modules/nf-core/deepvariant/rundeepvariant/main.nf +++ b/modules/nf-core/deepvariant/rundeepvariant/main.nf @@ -3,6 +3,7 @@ process DEEPVARIANT_RUNDEEPVARIANT { label 'process_high' // FIXME Conda is not supported at the moment + // https://github.com/bioconda/bioconda-recipes/pull/45214#issuecomment-1890937836 // BUG https://github.com/nf-core/modules/issues/1754 // BUG https://github.com/bioconda/bioconda-recipes/issues/30310 container "docker.io/google/deepvariant:1.8.0" diff --git a/subworkflows/nf-core/deepvariant/main.nf b/subworkflows/nf-core/deepvariant/main.nf index f383770819a..23d739ec9cf 100644 --- a/subworkflows/nf-core/deepvariant/main.nf +++ b/subworkflows/nf-core/deepvariant/main.nf @@ -22,10 +22,19 @@ workflow DEEPVARIANT { // Input to postprocessing step needs both the gvcfs from MAKEEXAMPLES and the variant // calls from CALLVARIANTS. Joining on meta, which is assumed to be unique. + ch_intervals = ch_input.map { meta, input, index, intervals -> [ meta, intervals ] } + ch_postproc_input = DEEPVARIANT_CALLVARIANTS.out.call_variants_tfrecords.join( DEEPVARIANT_MAKEEXAMPLES.out.gvcf, failOnMismatch: true + ).join( + DEEPVARIANT_MAKEEXAMPLES.out.small_model_calls, + failOnMismatch: true + ).join( + ch_intervals, + failOnMismatch: true ) + DEEPVARIANT_POSTPROCESSVARIANTS( ch_postproc_input, ch_fasta, diff --git a/subworkflows/nf-core/deepvariant/meta.yml b/subworkflows/nf-core/deepvariant/meta.yml index 6321fc24c66..bd459a629da 100644 --- a/subworkflows/nf-core/deepvariant/meta.yml +++ b/subworkflows/nf-core/deepvariant/meta.yml @@ -74,3 +74,4 @@ authors: maintainers: - "@abhi18av" - "@ramprasadn" + - "@fa2k" diff --git a/subworkflows/nf-core/deepvariant/tests/deepvariant-workflow-and-process-equality-tester.nf b/subworkflows/nf-core/deepvariant/tests/deepvariant-workflow-and-process-equality-tester.nf new file mode 100644 index 00000000000..83a16d553d9 --- /dev/null +++ b/subworkflows/nf-core/deepvariant/tests/deepvariant-workflow-and-process-equality-tester.nf @@ -0,0 +1,22 @@ +include { DEEPVARIANT_RUNDEEPVARIANT } from '../../../../modules/nf-core/deepvariant/rundeepvariant/main' +include { DEEPVARIANT } from '../main' + +workflow DEEPVARIANT_WORKFLOW_AND_PROCESS_EQUALITY_TESTER { + take: + ch_input // channel: [ val(meta), path(input), path(index), path(intervals)] + ch_fasta // channel: [ val(meta2), path(fasta) ] + ch_fai // channel: [ val(meta3), path(fail) ] + ch_gzi // channel: [ val(meta4), path(gzi) ] + ch_par_bed // channel: [ val(meta5), path(par_bed) ] + + main: + + DEEPVARIANT(ch_input, ch_fasta, ch_fai, ch_gzi, ch_par_bed) + DEEPVARIANT_RUNDEEPVARIANT(ch_input, ch_fasta, ch_fai, ch_gzi, ch_par_bed) + + emit: + wf_vcf = DEEPVARIANT.out.vcf + pc_vcf = DEEPVARIANT_RUNDEEPVARIANT.out.vcf + wf_gvcf = DEEPVARIANT.out.gvcf + pc_gvcf = DEEPVARIANT_RUNDEEPVARIANT.out.gvcf +} diff --git a/subworkflows/nf-core/deepvariant/tests/disable-small-model.conf b/subworkflows/nf-core/deepvariant/tests/disable-small-model.conf new file mode 100644 index 00000000000..eb1b53bcf80 --- /dev/null +++ b/subworkflows/nf-core/deepvariant/tests/disable-small-model.conf @@ -0,0 +1,8 @@ +process { + withName: "DEEPVARIANT_MAKEEXAMPLES" { + ext.args = '--checkpoint "/opt/models/wgs"' + } + withName: "DEEPVARIANT_CALLVARIANTS" { + ext.args = '--checkpoint "/opt/models/wgs"' + } +} diff --git a/subworkflows/nf-core/deepvariant/tests/equality.nf.test b/subworkflows/nf-core/deepvariant/tests/equality.nf.test new file mode 100644 index 00000000000..bb5c964534e --- /dev/null +++ b/subworkflows/nf-core/deepvariant/tests/equality.nf.test @@ -0,0 +1,63 @@ + +nextflow_workflow { + + name "Compare subworkflow DEEPVARIANT to the process DEEPVARIANT_RUNDEEPVARIANT" + script "./deepvariant-workflow-and-process-equality-tester.nf" + config "./nextflow.config" + workflow "DEEPVARIANT_WORKFLOW_AND_PROCESS_EQUALITY_TESTER" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/deepvariant" + + tag "deepvariant" + tag "deepvariant/makeexamples" + tag "deepvariant/callvariants" + tag "deepvariant/postprocessvariants" + tag "deepvariant/rundeepvariant" + + test("ensure that the subworkflow and DEEPVARIANT_RUNDEEPVARIANT have the same output") { + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ], + [ + [ id:'test2', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + ) + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert path(workflow.out.wf_vcf.get(0).get(1)).md5 == path(workflow.out.pc_vcf.get(0).get(1)).md5 }, + { assert path(workflow.out.wf_gvcf.get(0).get(1)).md5 == path(workflow.out.pc_gvcf.get(0).get(1)).md5 }, + ) + } + } +} diff --git a/subworkflows/nf-core/deepvariant/tests/main.nf.test b/subworkflows/nf-core/deepvariant/tests/main.nf.test index 4195d4730e7..d6a0aeba51b 100644 --- a/subworkflows/nf-core/deepvariant/tests/main.nf.test +++ b/subworkflows/nf-core/deepvariant/tests/main.nf.test @@ -102,4 +102,51 @@ nextflow_workflow { } } + test("homo_sapiens - disable small model - cram - fasta - fai") { + + config "./disable-small-model.conf" + + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ], + [ + [ id:'test2', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + ) + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/deepvariant/tests/main.nf.test.snap b/subworkflows/nf-core/deepvariant/tests/main.nf.test.snap index 08105c1b0f0..6de2ffcfa2a 100644 --- a/subworkflows/nf-core/deepvariant/tests/main.nf.test.snap +++ b/subworkflows/nf-core/deepvariant/tests/main.nf.test.snap @@ -1,4 +1,153 @@ { + "homo_sapiens - disable small model - cram - fasta - fai": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz:md5,c624820a37cc7261d233099311e1b6fd" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.vcf.gz:md5,3d416ba29f0c1402bffb8d9cdf349454" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.tbi:md5,a2edf6cfe771bb8c3683eba30a469538" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.vcf.gz.tbi:md5,d62c78e1bde3752cc2ba70bfab3b1565" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,28b76b57ed2c9798394c7a6faf5806b0" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.g.vcf.gz:md5,8345bef1b2885ac80bf5fdbb4b493ee7" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz.tbi:md5,3259f930681559bbc022ddb986d00a26" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.g.vcf.gz.tbi:md5,b63959a8fb4513273e3e53e3a8864614" + ] + ], + "4": [ + "versions.yml:md5,328e2f6462a2b9a5b4c291d2ea2acbae", + "versions.yml:md5,3ee8fb91cc070d641058839976671aa3", + "versions.yml:md5,c4510740784482ca098220df79ba3f3e" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,28b76b57ed2c9798394c7a6faf5806b0" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.g.vcf.gz:md5,8345bef1b2885ac80bf5fdbb4b493ee7" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz.tbi:md5,3259f930681559bbc022ddb986d00a26" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.g.vcf.gz.tbi:md5,b63959a8fb4513273e3e53e3a8864614" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz:md5,c624820a37cc7261d233099311e1b6fd" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.vcf.gz:md5,3d416ba29f0c1402bffb8d9cdf349454" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.tbi:md5,a2edf6cfe771bb8c3683eba30a469538" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.vcf.gz.tbi:md5,d62c78e1bde3752cc2ba70bfab3b1565" + ] + ], + "versions": [ + "versions.yml:md5,328e2f6462a2b9a5b4c291d2ea2acbae", + "versions.yml:md5,3ee8fb91cc070d641058839976671aa3", + "versions.yml:md5,c4510740784482ca098220df79ba3f3e" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-14T11:39:48.642006757" + }, "homo_sapiens - different samples and regions - cram - fasta - fai": { "content": [ { @@ -8,14 +157,14 @@ "id": "test", "single_end": false }, - "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz:md5,5c36d104b2eb6e410788990928667b93" + "test2.vcf.gz:md5,f5a97576e312c3b8351db9c0bfba3e1e" ] ], "1": [ @@ -24,14 +173,14 @@ "id": "test", "single_end": false }, - "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz.tbi:md5,5451379c05fa59498b2b8aafcb18c9eb" + "test2.vcf.gz.tbi:md5,d642d6b583407c0f373b451907dba52d" ] ], "2": [ @@ -40,14 +189,14 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz:md5,2aefd9545ffefe9af0730dc4ffc5f638" + "test2.g.vcf.gz:md5,c01c7d5565ca73141c3d085f120a27d0" ] ], "3": [ @@ -56,20 +205,20 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz.tbi:md5,58d2e7fa7cf98d56fd734db6d59f8489" + "test2.g.vcf.gz.tbi:md5,d7e823b70c58ef3d02bfcf1706bf36a6" ] ], "4": [ - "versions.yml:md5,5e6e7451f9819e2e0c33ad0d1b22d3b3", - "versions.yml:md5,c9c9c7000dc16bcb7e3107e7333481de", - "versions.yml:md5,cb2f0f2fe645633ed7d6528999bde458" + "versions.yml:md5,328e2f6462a2b9a5b4c291d2ea2acbae", + "versions.yml:md5,3ee8fb91cc070d641058839976671aa3", + "versions.yml:md5,c4510740784482ca098220df79ba3f3e" ], "gvcf": [ [ @@ -77,14 +226,14 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz:md5,2aefd9545ffefe9af0730dc4ffc5f638" + "test2.g.vcf.gz:md5,c01c7d5565ca73141c3d085f120a27d0" ] ], "gvcf_tbi": [ @@ -93,14 +242,14 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz.tbi:md5,58d2e7fa7cf98d56fd734db6d59f8489" + "test2.g.vcf.gz.tbi:md5,d7e823b70c58ef3d02bfcf1706bf36a6" ] ], "vcf": [ @@ -109,14 +258,14 @@ "id": "test", "single_end": false }, - "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz:md5,5c36d104b2eb6e410788990928667b93" + "test2.vcf.gz:md5,f5a97576e312c3b8351db9c0bfba3e1e" ] ], "vcf_tbi": [ @@ -125,28 +274,28 @@ "id": "test", "single_end": false }, - "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz.tbi:md5,5451379c05fa59498b2b8aafcb18c9eb" + "test2.vcf.gz.tbi:md5,d642d6b583407c0f373b451907dba52d" ] ], "versions": [ - "versions.yml:md5,5e6e7451f9819e2e0c33ad0d1b22d3b3", - "versions.yml:md5,c9c9c7000dc16bcb7e3107e7333481de", - "versions.yml:md5,cb2f0f2fe645633ed7d6528999bde458" + "versions.yml:md5,328e2f6462a2b9a5b4c291d2ea2acbae", + "versions.yml:md5,3ee8fb91cc070d641058839976671aa3", + "versions.yml:md5,c4510740784482ca098220df79ba3f3e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-08-16T16:20:06.112232952" + "timestamp": "2025-01-14T11:25:55.004429932" }, "homo_sapiens - two inputs - bam - fasta - fai": { "content": [ @@ -157,14 +306,14 @@ "id": "test", "single_end": false }, - "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test2.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ] ], "1": [ @@ -173,14 +322,14 @@ "id": "test", "single_end": false }, - "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test2.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ] ], "2": [ @@ -189,14 +338,14 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test2.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ] ], "3": [ @@ -205,20 +354,20 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test2.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ] ], "4": [ - "versions.yml:md5,5e6e7451f9819e2e0c33ad0d1b22d3b3", - "versions.yml:md5,c9c9c7000dc16bcb7e3107e7333481de", - "versions.yml:md5,cb2f0f2fe645633ed7d6528999bde458" + "versions.yml:md5,328e2f6462a2b9a5b4c291d2ea2acbae", + "versions.yml:md5,3ee8fb91cc070d641058839976671aa3", + "versions.yml:md5,c4510740784482ca098220df79ba3f3e" ], "gvcf": [ [ @@ -226,14 +375,14 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + "test2.g.vcf.gz:md5,6251a87945e530ca61a989d7187d89dc" ] ], "gvcf_tbi": [ @@ -242,14 +391,14 @@ "id": "test", "single_end": false }, - "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ], [ { "id": "test2", "single_end": false }, - "test2.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + "test2.g.vcf.gz.tbi:md5,32ca0d6713b96ed4ce07c79421bb04a9" ] ], "vcf": [ @@ -258,14 +407,14 @@ "id": "test", "single_end": false }, - "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + "test2.vcf.gz:md5,cf14200d683c17a6e433bb076d487fee" ] ], "vcf_tbi": [ @@ -274,27 +423,27 @@ "id": "test", "single_end": false }, - "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ], [ { "id": "test2", "single_end": false }, - "test2.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + "test2.vcf.gz.tbi:md5,e9bcd1d1f5280e0d76ed8fd31f27bd59" ] ], "versions": [ - "versions.yml:md5,5e6e7451f9819e2e0c33ad0d1b22d3b3", - "versions.yml:md5,c9c9c7000dc16bcb7e3107e7333481de", - "versions.yml:md5,cb2f0f2fe645633ed7d6528999bde458" + "versions.yml:md5,328e2f6462a2b9a5b4c291d2ea2acbae", + "versions.yml:md5,3ee8fb91cc070d641058839976671aa3", + "versions.yml:md5,c4510740784482ca098220df79ba3f3e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-08-16T16:18:03.021031138" + "timestamp": "2025-01-14T11:25:18.166014632" } } \ No newline at end of file diff --git a/subworkflows/nf-core/deepvariant/tests/nextflow.config b/subworkflows/nf-core/deepvariant/tests/nextflow.config index be9854791fb..ad76d4ec4fd 100644 --- a/subworkflows/nf-core/deepvariant/tests/nextflow.config +++ b/subworkflows/nf-core/deepvariant/tests/nextflow.config @@ -1,8 +1,14 @@ process { withName: "DEEPVARIANT_MAKEEXAMPLES" { - ext.args = '--channels "insert_size"' + ext.args = '--checkpoint "/opt/models/wgs" --call_small_model_examples --small_model_indel_gq_threshold "30" --small_model_snp_gq_threshold "25" --small_model_vaf_context_window_size "51" --trained_small_model_path "/opt/smallmodels/wgs"' } withName: "DEEPVARIANT_CALLVARIANTS" { ext.args = '--checkpoint "/opt/models/wgs"' } + + // This configures RUNDEEPVARIANT, which is used as a reference for the correct test output + withName: DEEPVARIANT_RUNDEEPVARIANT { + ext.args = '--model_type=WGS ' + ext.prefix = { "${meta.id}_out" } + } }