From d0928c7ea4ae4af287c960450befa9996e356f7a Mon Sep 17 00:00:00 2001 From: Ksenia Lavrichenko Date: Fri, 9 Oct 2026 08:40:17 +0200 Subject: [PATCH 1/2] sniffles: add forced calling (--genotype-vcf) as an optional input Generated by Claude --- modules/nf-core/sniffles/main.nf | 7 +- modules/nf-core/sniffles/meta.yml | 8 +- modules/nf-core/sniffles/tests/main.nf.test | 132 +++- .../nf-core/sniffles/tests/main.nf.test.snap | 567 ++++++++++++++++++ .../nf-core/sniffles/tests/nextflow.config | 5 +- 5 files changed, 707 insertions(+), 12 deletions(-) diff --git a/modules/nf-core/sniffles/main.nf b/modules/nf-core/sniffles/main.nf index 4dd17e660530..c3a76ad45f33 100644 --- a/modules/nf-core/sniffles/main.nf +++ b/modules/nf-core/sniffles/main.nf @@ -8,7 +8,7 @@ process SNIFFLES { : 'community.wave.seqera.io/library/sniffles:2.8.1--b8c26c44b42620c5' }" input: - tuple val(meta), path(input), path(index) + tuple val(meta), path(input), path(index), path(genotype_vcf) tuple val(meta2), path(fasta) tuple val(meta3), path(tandem_file) val(vcf_output) @@ -31,13 +31,18 @@ process SNIFFLES { def tandem_repeats = tandem_file ? "--tandem-repeats ${tandem_file}" : '' def vcf = vcf_output ? "--vcf ${prefix}.vcf.gz": '' def snf = snf_output ? "--snf ${prefix}.snf": '' + // Sniffles reads the sites file as plain text, a gzipped one is decompressed first (fritzsedlazeck/Sniffles#613) + def decompress = genotype_vcf && genotype_vcf.name.endsWith('.gz') ? "gzip -dc ${genotype_vcf} > ${prefix}.sites.vcf" : '' + def genotype = genotype_vcf ? "--genotype-vcf ${genotype_vcf.name.endsWith('.gz') ? prefix + '.sites.vcf' : genotype_vcf}" : '' """ + $decompress sniffles \\ --input $input \\ $reference \\ -t $task.cpus \\ $tandem_repeats \\ + $genotype \\ $vcf \\ $snf \\ $args diff --git a/modules/nf-core/sniffles/meta.yml b/modules/nf-core/sniffles/meta.yml index c20aae086905..7d37b6988dfb 100644 --- a/modules/nf-core/sniffles/meta.yml +++ b/modules/nf-core/sniffles/meta.yml @@ -1,5 +1,5 @@ name: sniffles -description: structural-variant calling with sniffles +description: structural-variant calling and genotyping of known structural variants (forced calling with --genotype-vcf) with sniffles. As of Sniffles 2.8.1 the genotyping output carries one more value per sample than the FORMAT declares (fritzsedlazeck/Sniffles#615). keywords: - sniffles - structural-variant calling @@ -30,6 +30,12 @@ input: description: Index of BAM/CAM file pattern: "*.{bai,crai}" ontologies: [] + - genotype_vcf: + type: file + description: Optional VCF of known structural variants to genotype in the input BAM/CRAM (forced calling), plain or gzipped. Use an empty list (`[]`) for regular SV calling. + pattern: "*.{vcf,vcf.gz}" + ontologies: + - edam: http://edamontology.org/format_3016 - - meta2: type: map description: | diff --git a/modules/nf-core/sniffles/tests/main.nf.test b/modules/nf-core/sniffles/tests/main.nf.test index a7f57f1a3a59..cb6d1dc601ca 100644 --- a/modules/nf-core/sniffles/tests/main.nf.test +++ b/modules/nf-core/sniffles/tests/main.nf.test @@ -8,6 +8,7 @@ nextflow_process { tag "modules" tag "modules_nfcore" tag "sniffles" + tag "gunzip" test("homo_sapiens - [bam, bai], fasta, [], true, false") { @@ -17,7 +18,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -52,7 +54,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -85,7 +88,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -121,7 +125,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -162,7 +167,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -194,7 +200,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -226,7 +233,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -258,7 +266,8 @@ nextflow_process { input[0] = [ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + [] ] input[1] = [ [ id:'genome' ], @@ -283,4 +292,111 @@ nextflow_process { } + test("homo_sapiens - nanopore [bam, bai, vcf.gz], [], [], true, false - genotype") { + + when { + process { + """ + input[0] = [ + [ id:'hg002' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_genotype.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_genotype.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_sites.vcf.gz', checkIfExists: true) + ] + input[1] = [[], []] + input[2] = [[], []] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.findAll { key, val -> key.startsWith("versions") }, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip.findAll { line -> !line.startsWith("##genotype") }, + ).match() } + ) + } + + } + + test("homo_sapiens - nanopore [bam, bai, vcf], [], [], true, false - genotype") { + + setup { + run("GUNZIP") { + script "../../gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'sites' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_sites.vcf.gz', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = channel.of([ + [ id:'hg002' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_genotype.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_genotype.bam.bai', checkIfExists: true) + ]).combine(GUNZIP.out.gunzip.map { _meta, vcf -> vcf }) + input[1] = [[], []] + input[2] = [[], []] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.findAll { key, val -> key.startsWith("versions") }, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip.findAll { line -> !line.startsWith("##genotype") }, + ).match() } + ) + } + + } + + test("homo_sapiens - nanopore [bam, bai, vcf.gz], [], [], true, false - genotype - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'hg002' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_genotype.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_genotype.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/HG002_ont_sv_genotype/HG002_ont_sv_sites.vcf.gz', checkIfExists: true) + ] + input[1] = [[], []] + input[2] = [[], []] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + + } + } diff --git a/modules/nf-core/sniffles/tests/main.nf.test.snap b/modules/nf-core/sniffles/tests/main.nf.test.snap index a0651d807c66..e11c10fed216 100644 --- a/modules/nf-core/sniffles/tests/main.nf.test.snap +++ b/modules/nf-core/sniffles/tests/main.nf.test.snap @@ -41,6 +41,308 @@ "nextflow": "26.04.6" } }, + "homo_sapiens - nanopore [bam, bai, vcf.gz], [], [], true, false - genotype - stub": { + "content": [ + { + "snf": [ + + ], + "tbi": [ + [ + { + "id": "hg002" + }, + "hg002_genotyped.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "hg002" + }, + "hg002_genotyped.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions_sniffles": [ + [ + "SNIFFLES", + "sniffles", + "2.8.1" + ] + ] + } + ], + "timestamp": "2026-10-09T06:44:34.190557113", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } + }, + "homo_sapiens - nanopore [bam, bai, vcf.gz], [], [], true, false - genotype": { + "content": [ + { + "versions_sniffles": [ + [ + "SNIFFLES", + "sniffles", + "2.8.1" + ] + ] + }, + "hg002_genotyped.vcf.gz.tbi", + [ + "##fileformat=VCFv4.1", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tHG002", + "chr2\t71691476\tSniffles2.DEL.9E7S1:HG002_sniffles_reheader|Sniffles2.DEL.9A4S1:HG003_sniffles_reheader|Sniffles2.DEL.948S1:HG004_sniffles_reheader\tTTGTCTGCTGGTGTTTTTGAGAGATTACACACACACACACACCATTTTCTGCTCCTTTTCCAGGGCTGTGTGGATAGTCCAGGATGGGGTGA\tT\t.\tPASS\tSVTYPE=DEL;SVLEN=-91;END=71691567\tGT:GQ:DR:DV\t0/1:57:8:8:.", + "chr2\t71691485\tseverus_DEL5090:HG002_severus_reheader|severus_DEL4930:HG003_severus_reheader|severus_DEL4855:HG004_severus_reheader\tN\t\t.\tPASS\tSVTYPE=DEL;SVLEN=90;END=71691575\tGT:GQ:DR:DV\t0/1:57:8:8:.", + "chr2\t71691501\tDB11254:HG002_debreak_reheader|DB11408:HG003_debreak_reheader|DB11357:HG004_debreak_reheader\tN\t\t.\tPASS\tEND=71691591;CHR2=chr2;SVLEN=91;SVTYPE=DEL\tGT:GQ:DR:DV\t0/1:57:8:8:.", + "chr7\t107418983\tSniffles2.INV.BBCS6:HG002_sniffles_reheader|Sniffles2.INV.B1FS6:HG003_sniffles_reheader|Sniffles2.INV.AF3S6:HG004_sniffles_reheader:sniffles|DB20893:HG002_debreak_reheader|DB21039:HG003_debreak_reheader|DB20996:HG004_debreak_reheader:debreak|severus_INV9727:HG002_severus_reheader|severus_INV9357:HG003_severus_reheader|severus_INV9428:HG004_severus_reheader:severus\tC\t\t.\tPASS\tSVTYPE=INV;SVLEN=3349;END=107422332;CHR2=chr7\tGT:GQ:DR:DV\t1/1:9:3:14:.", + "chr7\t107418984\tSniffles2.BND.140DS6:HG002_sniffles_reheader|Sniffles2.BND.140FS6:HG002_sniffles_reheader|Sniffles2.BND.1952S6:HG003_sniffles_reheader|Sniffles2.BND.1954S6:HG003_sniffles_reheader|Sniffles2.BND.12EES6:HG004_sniffles_reheader|Sniffles2.BND.12F1S6:HG004_sniffles_reheader|Sniffles2.BND.12F2S6:HG004_sniffles_reheader\tA\t[chr7:107422334[A\t.\tPASS\tSVTYPE=BND;CHR2=chr7\tGT:GQ:DR:DV\t0/1:8:2:4:.", + "chr9\t90884156\tseverus_INS23502\tN\tATATATATATACACATACGTGTATATATATACACACATACACATACGTGTATATATACACACATACACATACGTGTATATATACACACATACACATACGTGTATATATACACGC\t.\tPASS\tSVTYPE=INS;SVLEN=112\tGT:GQ:DR:DV\t1/1:47:0:17:.", + "chr9\t90884250\tSniffles2.INS.2AFS8:HG002_sniffles_reheader|Sniffles2.INS.290S8:HG003_sniffles_reheader|Sniffles2.INS.27ES8:HG004_sniffles_reheader:sniffles|DB23148:HG002_debreak_reheader|DB23351:HG003_debreak_reheader|DB23301:HG004_debreak_reheader:debreak|DB23302:debreak\tC\tCATACACATACGTGTATATATACACATACACATACACATACGTGTATATATACACATACACATACACATACGTGTATATATACACACATATACACATACACATACGTGTATATATACACACATATACACATACGTGTATATATATACACATATACACATACGTGTATATATACACACAT\t.\tPASS\tSVTYPE=INS;SVLEN=178;END=90884250;CHR2=chr9\tGT:GQ:DR:DV\t1/1:47:0:17:.", + "chr9\t90884463\tSniffles2.INS.291S8\tG\tGTGTACATGCACATATATACACACACATATGTGTACATGCACATATATACACATACACATATGTGTACATGCACATATATACACATACACATA\t.\tPASS\tSVTYPE=INS;SVLEN=92;END=90884463\tGT:GQ:DR:DV\t1/1:47:0:17:.", + "chr9\t90884616\tSniffles2.INS.27FS8\tT\tTACACATATGTGTACATGTACATATATACACATACACATATGTGTACATGTACATATATACAC\t.\tPASS\tSVTYPE=INS;SVLEN=62;END=90884616\tGT:GQ:DR:DV\t0/0:34:16:1:.", + "chr9\t90884683\tseverus_INS23503:HG002_severus_reheader|severus_INS22991:HG003_severus_reheader\tN\tATACACATGTGTACATGCACATATATACACATACCACCCATATATAATCCACATATATATGTACATATGTGTATATATACATATATATACACATATATATGTATATATACACATATGTGAATATGTATATATGTGTATGTACATATGTGTATATGTATATATACATATATACACATATGTGTATATACACATATATACATACACATATGTCTATACATATATACATGTGCACATATGTATATATATACATATATACATATACACATGTGTATATACATATATACATATACACCTATGTGTATATATAACACATATATACATATATATATATATCACACATATATACACCTATGTGTATATATAACACATATATACACCTATGTATATATACATATATATACATATACACATATATATATATAGACAC\t.\tPASS\tSVTYPE=INS;SVLEN=435\tGT:GQ:DR:DV\t0/1:42:10:7:.", + "chr9\t90884800\tDB23149:HG002_debreak_reheader|DB23352:HG003_debreak_reheader:debreak|severus_INS23123:severus\tN\t\t.\tPASS\tEND=90884800;CHR2=chr9;SVLEN=337;SVTYPE=INS\tGT:GQ:DR:DV\t0/1:54:8:9:.", + "chr9\t90884880\tSniffles2.INS.2B0S8:HG002_sniffles_reheader|Sniffles2.INS.293S8:HG003_sniffles_reheader|Sniffles2.INS.281S8:HG004_sniffles_reheader|Sniffles2.INS.280S8:HG004_sniffles_reheader:sniffles|DB23303:debreak\tT\tTACACATATGTGTACATATGTGTATATATACATATATATACACATATATATGTATATATACACATATGTGAATATGTATATATGTGTTATATATACACATATGTGTATATGTATATATACATATATACACATATGTGTATATACACATATATACATATACACATATGTGTATATACATATATACATATACACATATGTGTATATATACATATATACATATACACATATGTGTATATATACATATATACATATACACCTATGTGTATATATAACACATATATACACCTATGTGTATATATAACACATATATACACCTATGTGTATATATAACACATATATACACCTATGTGTATATATACATATATACATATACACATATGTGTATATATA\t.\tPASS\tSVTYPE=INS;SVLEN=389;END=90884880;CHR2=chr9\tGT:GQ:DR:DV\t0/1:54:8:9:.", + "chr18\t57787400\tSniffles2.DEL.47ES11:HG002_sniffles_reheader|Sniffles2.DEL.448S11:HG003_sniffles_reheader|Sniffles2.DEL.47FS11:HG004_sniffles_reheader\tGCACTGCGGGAGGAGCTCCATCTAGAACACTGCGGGAGGAGCTCCATCTAGAA\tG\t.\tPASS\tSVTYPE=DEL;SVLEN=-52;END=57787452\tGT:GQ:DR:DV\t1/1:41:0:15:.", + "chr18\t57787402\tseverus_DEL4309:HG002_severus_reheader|severus_DEL4141:HG003_severus_reheader|severus_DEL4114:HG004_severus_reheader\tN\t\t.\tPASS\tSVTYPE=DEL;SVLEN=53;END=57787455\tGT:GQ:DR:DV\t1/1:41:0:15:.", + "chr18\t57787413\tDB9486:HG002_debreak_reheader|DB9598:HG003_debreak_reheader|DB9601:HG004_debreak_reheader\tN\t\t.\tPASS\tEND=57787463;CHR2=chr18;SVLEN=51;SVTYPE=DEL\tGT:GQ:DR:DV\t1/1:41:0:15:." + ] + ], + "timestamp": "2026-10-09T06:44:26.568842349", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } + }, "homo_sapiens - [bam, bai], fasta, [], true, false": { "content": [ { @@ -279,6 +581,271 @@ "nextflow": "26.04.6" } }, + "homo_sapiens - nanopore [bam, bai, vcf], [], [], true, false - genotype": { + "content": [ + { + "versions_sniffles": [ + [ + "SNIFFLES", + "sniffles", + "2.8.1" + ] + ] + }, + "hg002_genotyped.vcf.gz.tbi", + [ + "##fileformat=VCFv4.1", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tHG002", + "chr2\t71691476\tSniffles2.DEL.9E7S1:HG002_sniffles_reheader|Sniffles2.DEL.9A4S1:HG003_sniffles_reheader|Sniffles2.DEL.948S1:HG004_sniffles_reheader\tTTGTCTGCTGGTGTTTTTGAGAGATTACACACACACACACACCATTTTCTGCTCCTTTTCCAGGGCTGTGTGGATAGTCCAGGATGGGGTGA\tT\t.\tPASS\tSVTYPE=DEL;SVLEN=-91;END=71691567\tGT:GQ:DR:DV\t0/1:57:8:8:.", + "chr2\t71691485\tseverus_DEL5090:HG002_severus_reheader|severus_DEL4930:HG003_severus_reheader|severus_DEL4855:HG004_severus_reheader\tN\t\t.\tPASS\tSVTYPE=DEL;SVLEN=90;END=71691575\tGT:GQ:DR:DV\t0/1:57:8:8:.", + "chr2\t71691501\tDB11254:HG002_debreak_reheader|DB11408:HG003_debreak_reheader|DB11357:HG004_debreak_reheader\tN\t\t.\tPASS\tEND=71691591;CHR2=chr2;SVLEN=91;SVTYPE=DEL\tGT:GQ:DR:DV\t0/1:57:8:8:.", + "chr7\t107418983\tSniffles2.INV.BBCS6:HG002_sniffles_reheader|Sniffles2.INV.B1FS6:HG003_sniffles_reheader|Sniffles2.INV.AF3S6:HG004_sniffles_reheader:sniffles|DB20893:HG002_debreak_reheader|DB21039:HG003_debreak_reheader|DB20996:HG004_debreak_reheader:debreak|severus_INV9727:HG002_severus_reheader|severus_INV9357:HG003_severus_reheader|severus_INV9428:HG004_severus_reheader:severus\tC\t\t.\tPASS\tSVTYPE=INV;SVLEN=3349;END=107422332;CHR2=chr7\tGT:GQ:DR:DV\t1/1:9:3:14:.", + "chr7\t107418984\tSniffles2.BND.140DS6:HG002_sniffles_reheader|Sniffles2.BND.140FS6:HG002_sniffles_reheader|Sniffles2.BND.1952S6:HG003_sniffles_reheader|Sniffles2.BND.1954S6:HG003_sniffles_reheader|Sniffles2.BND.12EES6:HG004_sniffles_reheader|Sniffles2.BND.12F1S6:HG004_sniffles_reheader|Sniffles2.BND.12F2S6:HG004_sniffles_reheader\tA\t[chr7:107422334[A\t.\tPASS\tSVTYPE=BND;CHR2=chr7\tGT:GQ:DR:DV\t0/1:8:2:4:.", + "chr9\t90884156\tseverus_INS23502\tN\tATATATATATACACATACGTGTATATATATACACACATACACATACGTGTATATATACACACATACACATACGTGTATATATACACACATACACATACGTGTATATATACACGC\t.\tPASS\tSVTYPE=INS;SVLEN=112\tGT:GQ:DR:DV\t1/1:47:0:17:.", + "chr9\t90884250\tSniffles2.INS.2AFS8:HG002_sniffles_reheader|Sniffles2.INS.290S8:HG003_sniffles_reheader|Sniffles2.INS.27ES8:HG004_sniffles_reheader:sniffles|DB23148:HG002_debreak_reheader|DB23351:HG003_debreak_reheader|DB23301:HG004_debreak_reheader:debreak|DB23302:debreak\tC\tCATACACATACGTGTATATATACACATACACATACACATACGTGTATATATACACATACACATACACATACGTGTATATATACACACATATACACATACACATACGTGTATATATACACACATATACACATACGTGTATATATATACACATATACACATACGTGTATATATACACACAT\t.\tPASS\tSVTYPE=INS;SVLEN=178;END=90884250;CHR2=chr9\tGT:GQ:DR:DV\t1/1:47:0:17:.", + "chr9\t90884463\tSniffles2.INS.291S8\tG\tGTGTACATGCACATATATACACACACATATGTGTACATGCACATATATACACATACACATATGTGTACATGCACATATATACACATACACATA\t.\tPASS\tSVTYPE=INS;SVLEN=92;END=90884463\tGT:GQ:DR:DV\t1/1:47:0:17:.", + "chr9\t90884616\tSniffles2.INS.27FS8\tT\tTACACATATGTGTACATGTACATATATACACATACACATATGTGTACATGTACATATATACAC\t.\tPASS\tSVTYPE=INS;SVLEN=62;END=90884616\tGT:GQ:DR:DV\t0/0:34:16:1:.", + "chr9\t90884683\tseverus_INS23503:HG002_severus_reheader|severus_INS22991:HG003_severus_reheader\tN\tATACACATGTGTACATGCACATATATACACATACCACCCATATATAATCCACATATATATGTACATATGTGTATATATACATATATATACACATATATATGTATATATACACATATGTGAATATGTATATATGTGTATGTACATATGTGTATATGTATATATACATATATACACATATGTGTATATACACATATATACATACACATATGTCTATACATATATACATGTGCACATATGTATATATATACATATATACATATACACATGTGTATATACATATATACATATACACCTATGTGTATATATAACACATATATACATATATATATATATCACACATATATACACCTATGTGTATATATAACACATATATACACCTATGTATATATACATATATATACATATACACATATATATATATAGACAC\t.\tPASS\tSVTYPE=INS;SVLEN=435\tGT:GQ:DR:DV\t0/1:42:10:7:.", + "chr9\t90884800\tDB23149:HG002_debreak_reheader|DB23352:HG003_debreak_reheader:debreak|severus_INS23123:severus\tN\t\t.\tPASS\tEND=90884800;CHR2=chr9;SVLEN=337;SVTYPE=INS\tGT:GQ:DR:DV\t0/1:54:8:9:.", + "chr9\t90884880\tSniffles2.INS.2B0S8:HG002_sniffles_reheader|Sniffles2.INS.293S8:HG003_sniffles_reheader|Sniffles2.INS.281S8:HG004_sniffles_reheader|Sniffles2.INS.280S8:HG004_sniffles_reheader:sniffles|DB23303:debreak\tT\tTACACATATGTGTACATATGTGTATATATACATATATATACACATATATATGTATATATACACATATGTGAATATGTATATATGTGTTATATATACACATATGTGTATATGTATATATACATATATACACATATGTGTATATACACATATATACATATACACATATGTGTATATACATATATACATATACACATATGTGTATATATACATATATACATATACACATATGTGTATATATACATATATACATATACACCTATGTGTATATATAACACATATATACACCTATGTGTATATATAACACATATATACACCTATGTGTATATATAACACATATATACACCTATGTGTATATATACATATATACATATACACATATGTGTATATATA\t.\tPASS\tSVTYPE=INS;SVLEN=389;END=90884880;CHR2=chr9\tGT:GQ:DR:DV\t0/1:54:8:9:.", + "chr18\t57787400\tSniffles2.DEL.47ES11:HG002_sniffles_reheader|Sniffles2.DEL.448S11:HG003_sniffles_reheader|Sniffles2.DEL.47FS11:HG004_sniffles_reheader\tGCACTGCGGGAGGAGCTCCATCTAGAACACTGCGGGAGGAGCTCCATCTAGAA\tG\t.\tPASS\tSVTYPE=DEL;SVLEN=-52;END=57787452\tGT:GQ:DR:DV\t1/1:41:0:15:.", + "chr18\t57787402\tseverus_DEL4309:HG002_severus_reheader|severus_DEL4141:HG003_severus_reheader|severus_DEL4114:HG004_severus_reheader\tN\t\t.\tPASS\tSVTYPE=DEL;SVLEN=53;END=57787455\tGT:GQ:DR:DV\t1/1:41:0:15:.", + "chr18\t57787413\tDB9486:HG002_debreak_reheader|DB9598:HG003_debreak_reheader|DB9601:HG004_debreak_reheader\tN\t\t.\tPASS\tEND=57787463;CHR2=chr18;SVLEN=51;SVTYPE=DEL\tGT:GQ:DR:DV\t1/1:41:0:15:." + ] + ], + "timestamp": "2026-10-09T06:46:04.541702127", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } + }, "homo_sapiens - [bam, bai], fasta, [], true, true -stub": { "content": [ { diff --git a/modules/nf-core/sniffles/tests/nextflow.config b/modules/nf-core/sniffles/tests/nextflow.config index 06e383629653..3b867134c29c 100644 --- a/modules/nf-core/sniffles/tests/nextflow.config +++ b/modules/nf-core/sniffles/tests/nextflow.config @@ -1,5 +1,6 @@ process { withName: 'SNIFFLES' { - ext.args = '--minsupport 1 --no-qc --mapq 0' - } + ext.args = { genotype_vcf ? '' : '--minsupport 1 --no-qc --mapq 0' } + ext.prefix = { genotype_vcf ? "${meta.id}_genotyped" : meta.id } + } } From c0d4b44eb35202d9ef8b2e0246448314c69f48dd Mon Sep 17 00:00:00 2001 From: Ksenia Lavrichenko Date: Fri, 9 Oct 2026 10:40:02 +0200 Subject: [PATCH 2/2] sniffles: remove the Sniffles#615 note from the meta.yml description Generated by Claude --- modules/nf-core/sniffles/meta.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/sniffles/meta.yml b/modules/nf-core/sniffles/meta.yml index 7d37b6988dfb..f580a3528fcf 100644 --- a/modules/nf-core/sniffles/meta.yml +++ b/modules/nf-core/sniffles/meta.yml @@ -1,5 +1,5 @@ name: sniffles -description: structural-variant calling and genotyping of known structural variants (forced calling with --genotype-vcf) with sniffles. As of Sniffles 2.8.1 the genotyping output carries one more value per sample than the FORMAT declares (fritzsedlazeck/Sniffles#615). +description: structural-variant calling and genotyping of known structural variants (forced calling with --genotype-vcf) with sniffles. keywords: - sniffles - structural-variant calling