diff --git a/CHANGELOG.md b/CHANGELOG.md index 64a749b61..5422bb13f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [1934](https://github.com/nf-core/sarek/pull/1934) - Add sentieon TNscope for tumour/normal variant calling - [1938](https://github.com/nf-core/sarek/pull/1938) - Add checks for uniqueness of sample ids and lane ids - [1939](https://github.com/nf-core/sarek/pull/1939) - Modify config to add readgroups to fq2bam +- [1940](https://github.com/nf-core/sarek/pull/1940) - Add varlociraptor for variant calling - [1953](https://github.com/nf-core/sarek/pull/1953) - Update freebayes and add QUAL filtering ### Changed @@ -51,23 +52,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | `ensemblvep` | 113.0 | 113.4 | | `fastp` | 0.23.4 | 0.24.0 | | `fgbio` | 2.2.1 | 2.4.0 | -| `freebayes` | 1.3.6. | 1.3.10 | +| `freebayes` | 1.3.6 | 1.3.10 | | `gatk4` | 4.5.0.0 | 4.6.1.0 | | `mosdepth` | 0.3.8 | 0.3.10 | | `MuSE` | | 2.1.2 | | `MultiQC` | 1.25.1 | 1.30 | +| `rbt` | | 0.42.2 | | `samtools` (in `BWAMEM1_MEM`) | 1.2 | 1.21 | | `samtools` (in `BWAMEM2_MEM`) | 1.19.2 | 1.21 | | `samtools` (in `GATK4_MARKDUPLICATES`) | 1.19.2 | 1.21 | | `sentieon` | 202308.03 | 202503 | | `tabix` | 1.2 | 1.21 | +| `varlociraptor` | | 8.7.3 | | `vcflib` | | 1.0.14 | +| `yte` | | 1.9.0 | ### Parameters -| Params | Status | -| -------------------- | ------ | -| `--freebayes_filter` | New | +| Params | Status | +| ------------------------------- | ------ | +| `--freebayes_filter` | New | +| `--varlociraptor_scenario_file` | New | +| `--varlociraptor_chunk_size` | New | ### Developer section diff --git a/CITATIONS.md b/CITATIONS.md index d9e08e09e..17dcae391 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -146,6 +146,10 @@ > Eisfeldt J, Vezzi F, Olason P, et al.: TIDDIT, an efficient and comprehensive structural variant caller for massive parallel sequencing data. F1000Res. 2017 May 10;6:664. doi: 10.12688/f1000research.11168.2. eCollection 2017. PubMed PMID: 28781756; PubMed Central PMCID: PMC5521161. +- [Varlociraptor](https://pubmed.ncbi.nlm.nih.gov/32345333/) + + > Köster, J., Dijkstra, L.J., Marschall, T. et al. Varlociraptor: enhancing sensitivity and controlling false discovery rate in somatic indel discovery. Genome Biol 21, 98 (2020). https://doi.org/10.1186/s13059-020-01993-6 + - [VCFTools](https://pubmed.ncbi.nlm.nih.gov/21653522/) > Danecek P, Auton A, Abecasis G, et al.: The variant call format and VCFtools. Bioinformatics. 2011 Aug 1;27(15):2156-8. doi: 10.1093/bioinformatics/btr330. Epub 2011 Jun 7. PubMed PMID: 21653522; PubMed Central PMCID: PMC3137218. diff --git a/assets/varlociraptor_somatic_with_priors.yte.yaml b/assets/varlociraptor_somatic_with_priors.yte.yaml new file mode 100644 index 000000000..f2ee08314 --- /dev/null +++ b/assets/varlociraptor_somatic_with_priors.yte.yaml @@ -0,0 +1,34 @@ +species: + heterozygosity: 0.001 + germline-mutation-rate: 1e-3 + ploidy: + male: + all: 2 + X: 1 + Y: 1 + female: + all: 2 + X: 2 + Y: 0 + genome-size: 3.5e9 + +samples: + tumor: + sex: ?sex_string + somatic-effective-mutation-rate: 1e-6 + inheritance: + clonal: + from: normal + somatic: true + contamination: + by: normal + fraction: 0.1 + normal: + sex: ?sex_string + somatic-effective-mutation-rate: 1e-10 + +events: + somatic_tumor_high: "normal:0.0 & tumor:[0.1,1.0]" + somatic_tumor_low: "normal:0.0 & tumor:]0.0,0.1[" + somatic_normal: "normal:]0.0,0.5[" + germline: "normal:0.5 | normal:1.0" diff --git a/conf/modules/post_variant_calling.config b/conf/modules/post_variant_calling.config index cc836ed0a..3672c50af 100644 --- a/conf/modules/post_variant_calling.config +++ b/conf/modules/post_variant_calling.config @@ -84,4 +84,5 @@ process { pattern: "*.tbi" ] } + } diff --git a/conf/modules/varlociraptor.config b/conf/modules/varlociraptor.config new file mode 100644 index 000000000..a4d0e9202 --- /dev/null +++ b/conf/modules/varlociraptor.config @@ -0,0 +1,157 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. + ext.when = When to run the module. +---------------------------------------------------------------------------------------- +*/ + +// VARLOCIRAPTOR +// Everything related to varlociraptor which is chained after the variant calling step. + +process { + + // VARLOCIRAPTOR ALL + withName: 'FILL_SCENARIO_FILE' { + ext.prefix = { "${meta.id}.scenario.varlociraptor" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + // + // VCF_VARLOCIRAPTOR_GERMLINE and VCF_VARLOCIRAPTOR_TUMOR_ONLY MODULES + // + withName: 'VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES' { + ext.prefix = { "${meta.id}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'RBT_VCFSPLIT' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.split" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'VARLOCIRAPTOR_PREPROCESS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.preprocess.${meta.chunk}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_GERMLINE:VARLOCIRAPTOR_CALLVARIANTS|NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_TUMOR_ONLY:VARLOCIRAPTOR_CALLVARIANTS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.call.${meta.chunk}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_GERMLINE:SORT_CALLED_CHUNKS|NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_TUMOR_ONLY:SORT_CALLED_CHUNKS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.sort.${meta.chunk}" } + ext.args = { '--output-type z --write-index=tbi' } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_GERMLINE:MERGE_CALLED_CHUNKS|NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_TUMOR_ONLY:MERGE_CALLED_CHUNKS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.varlociraptor" } + ext.args = { '--allow-overlaps --output-type z --write-index=tbi' } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/" }, + ] + } + + // + // VCF_VARLOCIRAPTOR_SOMATIC MODULES + // + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:ALIGNMENTPROPERTIES_NORMAL' { + ext.prefix = { "${meta.normal_id}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.normal_id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:VCFSPLIT_NORMAL' { + ext.prefix = { "${meta.normal_id}.${meta.variantcaller}.split" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.normal_id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:PREPROCESS_NORMAL' { + ext.prefix = { "${meta.normal_id}.${meta.variantcaller}.preprocess.${meta.chunk}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.normal_id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:ALIGNMENTPROPERTIES_TUMOR' { + ext.prefix = { "${meta.tumor_id}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.tumor_id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:VCFSPLIT_TUMOR' { + ext.prefix = { "${meta.tumor_id}.${meta.variantcaller}.split" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.tumor_id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:PREPROCESS_TUMOR' { + ext.prefix = { "${meta.tumor_id}.${meta.variantcaller}.preprocess.${meta.chunk}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.tumor_id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:VARLOCIRAPTOR_CALLVARIANTS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.call.${meta.chunk}" } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:SORT_CALLED_CHUNKS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.sort.${meta.chunk}" } + ext.args = { '--output-type z --write-index=tbi' } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/${meta.id}/" }, + ] + } + + withName: 'NFCORE_SAREK:SAREK:POST_VARIANTCALLING:VCF_VARLOCIRAPTOR_SOMATIC:MERGE_CALLED_CHUNKS' { + ext.prefix = { "${meta.id}.${meta.variantcaller}.varlociraptor" } + ext.args = { '--allow-overlaps --output-type z --write-index=tbi' } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/varlociraptor/" }, + ] + } +} diff --git a/docs/images/sarek_subway.png b/docs/images/sarek_subway.png index 91feae503..003fdefb9 100644 Binary files a/docs/images/sarek_subway.png and b/docs/images/sarek_subway.png differ diff --git a/docs/images/sarek_subway.svg b/docs/images/sarek_subway.svg index 9065b842f..98033d9a0 100644 --- a/docs/images/sarek_subway.svg +++ b/docs/images/sarek_subway.svg @@ -7,7 +7,7 @@ viewBox="1 0 317.58899 220.24503" version="1.1" id="svg5" - inkscape:version="1.4.2 (1:1.4.2+202505120737+ebf0e940d0)" + inkscape:version="1.4 (e7c3feb1, 2024-10-09)" sodipodi:docname="sarek_subway.svg" inkscape:export-filename="sarek_subway.png" inkscape:export-xdpi="600" @@ -32,14 +32,14 @@ inkscape:pagecheckerboard="false" inkscape:document-units="mm" showgrid="true" - inkscape:zoom="0.80330742" - inkscape:cx="635.49768" - inkscape:cy="441.92297" - inkscape:window-width="1920" - inkscape:window-height="1128" + inkscape:zoom="2.3304802" + inkscape:cx="748.34361" + inkscape:cy="152.11457" + inkscape:window-width="1440" + inkscape:window-height="876" inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" + inkscape:window-y="24" + inkscape:window-maximized="0" inkscape:current-layer="layer1" width="211mm" fit-margin-top="0" @@ -1323,7 +1323,21 @@ x="92.539932" y="227.94926" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52774px;font-family:'Maven Pro';-inkscape-font-specification:'Maven Pro';text-align:center;text-anchor:middle;stroke-width:0.264583" - id="tspan6699-0">normalizenormalizevarlociraptormosdepth, samtoolsngscheckmatevariant callingExample analysis pathways +### Varlociraptor + +As varlociraptor requires to provide a set of candidate variants to consider it can be run in combination with any variant caller. + +
+Postprocessed VCF files for tumor-normal calling + +**Output directory: `{outdir}/variantcalling/varlociraptor/`** + +- `..varlociraptor.vcf.gz` and `..varlociraptor.vcf.gz.tbi` + - Final VCF with tabix index +- `/*.filled.yaml` + - YAML file containing scenario for varlociraptor calling +- `/.alignment-properties.json` + - JSON file containing alignment properties for normal sample cram (germline & somatic calling) +- `/.alignment-properties.json` + - JSON file containing alignment properties for tumor sample cram (tumor-only & somatic calling) +- `/..split.<0,1,2...>.bcf` and `/..preprocess.<0,1,2...>.bcf` + - Candidate variants split into chunks and preprocessed for calling (germline & somatic calling) +- `/..split.<0,1,2...>.bcf` and `/..preprocess.<0,1,2...>.bcf` + - Candidate variants split into chunks and preprocessed for calling (tumor-only & somatic calling) +- `/..call.<0,1,2...>.bcf`, `/..sort.<0,1,2...>.vcf.gz` and `/..sort.<0,1,2...>.vcf.gz.tbi` + - Called variants (call) and sorted variants (sort), still in chunks +
+ ### Concatenation Germline VCFs from `DeepVariant`, `FreeBayes`, `HaplotypeCaller`, `Haplotyper`, `Manta`, `bcftools mpileup`, `Strelka`, or `Tiddit` are concatenated with `bcftools concat`. The field `SOURCE` is added to the VCF header to report the variant caller. diff --git a/docs/usage.md b/docs/usage.md index 728107d76..cbb6301db 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -625,6 +625,7 @@ This list is by no means exhaustive and it will depend on the specific analysis | [CNVKit](https://cnvkit.readthedocs.io/en/stable/) | x | x | - | x | x | x | | [Control-FREEC](https://github.com/BoevaLab/FREEC) | x | x | x | - | x | x | | [MSIsensorPro](https://github.com/xjtu-omics/msisensor-pro) | x | x | x | - | - | x | +| [Varlociraptor](https://varlociraptor.github.io/landing/) | x | x | x | x | x | x | ## How to run ASCAT with whole-exome sequencing data? @@ -866,6 +867,12 @@ In particular, in cloud computing setting it is often advisable to reduce the nu For a detailed tutorial on how to create a panel-of-normals, see [here](https://gatk.broadinstitute.org/hc/en-us/articles/360035531132). +## How to customize the varlociraptor calling + +Varlociraptor allows the usage of different scenario files, a few examples can be found in the [scenario catalog](https://varlociraptor.github.io/varlociraptor-scenarios/landing/). Currently only scenarios that have information on "normal" (germline case), "normal" and "tumor" (somatic and tumor-only case) are supported. You can use your own scenario file by adding it to the run command with `--varlociraptor_scenario_file `, it is set to reasonable default (15) but more chunks might aid in accelerating your workflow run if you can run more processes in parallel. + ## Spark related issues If you have problems running processes that make use of Spark such as `MarkDuplicates`. diff --git a/main.nf b/main.nf index 6bee0c940..a8c7e7a7d 100755 --- a/main.nf +++ b/main.nf @@ -174,6 +174,10 @@ workflow NFCORE_SAREK { loci_files = PREPARE_GENOME.out.loci_files rt_file = PREPARE_GENOME.out.rt_file + // For varlociraptor get the scenario file + varlociraptor_scenario_file = params.varlociraptor_scenario_file ? Channel.fromPath(params.varlociraptor_scenario_file).collect() + : Channel.fromPath("${projectDir}/assets/varlociraptor_somatic_with_priors.yte.yaml").collect() + // Tabix indexed vcf files bcftools_annotations_tbi = params.bcftools_annotations ? params.bcftools_annotations_tbi ? Channel.fromPath(params.bcftools_annotations_tbi).collect() : PREPARE_GENOME.out.bcftools_annotations_tbi : Channel.value([]) dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : Channel.value([]) @@ -300,6 +304,7 @@ workflow NFCORE_SAREK { rt_file, sentieon_dnascope_model, snpeff_cache, + varlociraptor_scenario_file, vep_cache, vep_cache_version, vep_extra_files, diff --git a/modules.json b/modules.json index 7955b300b..dc409149c 100644 --- a/modules.json +++ b/modules.json @@ -376,6 +376,11 @@ "git_sha": "083667c2f0d3b57aa373ffa8891d04b3c839b0b4", "installed_by": ["modules"] }, + "rbt/vcfsplit": { + "branch": "master", + "git_sha": "3e5034548e2398b006a9e01fb82673ffa5c83d9f", + "installed_by": ["modules"] + }, "samblaster": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", @@ -526,6 +531,21 @@ "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["modules"] }, + "varlociraptor/callvariants": { + "branch": "master", + "git_sha": "b0a35d996f6140f18e040099c94ffc0c0f005187", + "installed_by": ["modules"] + }, + "varlociraptor/estimatealignmentproperties": { + "branch": "master", + "git_sha": "3179219c5360ba9e624f64a28b102efe0cfadc49", + "installed_by": ["modules"] + }, + "varlociraptor/preprocess": { + "branch": "master", + "git_sha": "3179219c5360ba9e624f64a28b102efe0cfadc49", + "installed_by": ["modules"] + }, "vcflib/vcffilter": { "branch": "master", "git_sha": "401ec2b2b8d0938d12ae4f9e25819e14596b8f83", @@ -535,6 +555,11 @@ "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["modules"] + }, + "yte": { + "branch": "master", + "git_sha": "3179219c5360ba9e624f64a28b102efe0cfadc49", + "installed_by": ["modules"] } } }, diff --git a/modules/nf-core/rbt/vcfsplit/environment.yml b/modules/nf-core/rbt/vcfsplit/environment.yml new file mode 100644 index 000000000..58b4e8e0c --- /dev/null +++ b/modules/nf-core/rbt/vcfsplit/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::rust-bio-tools=0.42.2" diff --git a/modules/nf-core/rbt/vcfsplit/main.nf b/modules/nf-core/rbt/vcfsplit/main.nf new file mode 100644 index 000000000..7accaf6c2 --- /dev/null +++ b/modules/nf-core/rbt/vcfsplit/main.nf @@ -0,0 +1,48 @@ +process RBT_VCFSPLIT { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/rust-bio-tools:0.42.2--h4458251_1': + 'biocontainers/rust-bio-tools:0.42.2--h4458251_1' }" + + input: + tuple val(meta), path(vcf) + val(numchunks) + + output: + tuple val(meta), path("*.bcf"), emit: bcfchunks + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def chunks = numchunks ? (numchunks - 1) : 15 + """ + rbt vcf-split \\ + ${vcf} \\ + ${prefix}.{0..${chunks}}.bcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + Rust-Bio-Tools: \$(rbt --version | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*\$/\\1/') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def chunks = numchunks ? (numchunks - 1) : 15 + def bcf_files = (0..chunks).collect { "${prefix}.${it}.bcf" }.join(' ') + """ + touch ${bcf_files} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + Rust-Bio-Tools: \$(rbt --version | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*\$/\\1/') + END_VERSIONS + """ +} diff --git a/modules/nf-core/rbt/vcfsplit/meta.yml b/modules/nf-core/rbt/vcfsplit/meta.yml new file mode 100644 index 000000000..e335dc3fe --- /dev/null +++ b/modules/nf-core/rbt/vcfsplit/meta.yml @@ -0,0 +1,60 @@ +name: "rbt_vcfsplit" +description: A tool for splitting VCF/BCF files into N equal chunks, including BND support +keywords: + - genomics + - splitting + - VCF + - BCF + - variants +tools: + - rust-bio-tools: + description: "A growing collection of fast and secure command line utilities for dealing with NGS data implemented on top of Rust-Bio." + homepage: "https://github.com/rust-bio/rust-bio-tools" + documentation: "https://github.com/rust-bio/rust-bio-tools" + tool_dev_url: "https://github.com/rust-bio/rust-bio-tools" + doi: "no DOI available" + licence: ["MIT"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - vcf: + type: file + description: VCF file with variants to be split + pattern: "*.{vcf,bcf,vcf.gz}" + ontologies: + - edam: "http://edamontology.org/format_3016" # VCF + - edam: http://edamontology.org/format_3020 # BCF + - numchunks: + type: integer + description: Number of chunks to split the VCF file into. The default is 15. + +output: + bcfchunks: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.bcf": + type: file + description: Chunks of the input VCF file, split into `numchunks` equal parts. + pattern: "*.bcf" + ontologies: + - edam: http://edamontology.org/format_3020 # BCF + versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: "http://edamontology.org/format_3750" # YAML + +authors: + - "@famosab" +maintainers: + - "@famosab" diff --git a/modules/nf-core/varlociraptor/callvariants/environment.yml b/modules/nf-core/varlociraptor/callvariants/environment.yml new file mode 100644 index 000000000..57ea8d6b0 --- /dev/null +++ b/modules/nf-core/varlociraptor/callvariants/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::varlociraptor=8.7.3 diff --git a/modules/nf-core/varlociraptor/callvariants/main.nf b/modules/nf-core/varlociraptor/callvariants/main.nf new file mode 100644 index 000000000..09123b164 --- /dev/null +++ b/modules/nf-core/varlociraptor/callvariants/main.nf @@ -0,0 +1,51 @@ +process VARLOCIRAPTOR_CALLVARIANTS { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/varlociraptor:8.7.3--ha8ac579_2': + 'biocontainers/varlociraptor:8.7.3--ha8ac579_2' }" + + input: + tuple val(meta), path(vcfs) + path (scenario) + val (scenario_aliases) + + output: + tuple val(meta), path("*.bcf"), emit: bcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}_called" + + //If we use a scenario file and if there is more than 1 vcf, then collect scenario_aliaes and vcfs to scenario_alias_0=vcf_0 scenario_alias_1=vcf_1, etc + //If we use a scenario file and if there is exactly 1 vcf, then scenario_alias=vcf + def scenario_samples = vcfs instanceof List && vcfs.size() > 1 ? [scenario_aliases,vcfs].transpose().collect{"${it[0]}=${it[1]}"}.join(' ') : "${scenario_aliases}=${vcfs}" + """ + varlociraptor call variants \\ + --output ${prefix}.bcf \\ + generic --scenario ${scenario} --obs ${scenario_samples} \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + varlociraptor: \$(echo \$(varlociraptor --version 2>&1) | sed 's/^.*varlociraptor //; s/:.*\$//' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}_called" + """ + touch ${prefix}.bcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + varlociraptor: \$(echo \$(varlociraptor --version 2>&1) | sed 's/^.*varlociraptor //; s/:.*\$//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/varlociraptor/callvariants/meta.yml b/modules/nf-core/varlociraptor/callvariants/meta.yml new file mode 100644 index 000000000..bbbd7a547 --- /dev/null +++ b/modules/nf-core/varlociraptor/callvariants/meta.yml @@ -0,0 +1,65 @@ +name: "varlociraptor_callvariants" +description: Call variants for a given scenario specified with the varlociraptor calling + grammar, preprocessed by varlociraptor preprocessing +keywords: + - observations + - variants + - calling +tools: + - "varlociraptor": + description: "Flexible, uncertainty-aware variant calling with parameter free + filtration via FDR control." + homepage: "https://varlociraptor.github.io/docs/estimating/" + documentation: "https://varlociraptor.github.io/docs/calling/" + tool_dev_url: "https://github.com/varlociraptor/varlociraptor" + doi: "10.1186/s13059-020-01993-6" + licence: ["GPL v3"] + identifier: biotools:varlociraptor +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcfs: + type: file + description: Sorted VCF/BCF file containing sample observations, Can also be + a list of files + pattern: "*.{vcf,bcf,vcf.gz}" + ontologies: + - edam: http://edamontology.org/format_3016 # VCF + - edam: http://edamontology.org/format_3020 # BCF + - scenario: + type: file + description: Yaml file containing scenario information (optional) + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - scenario_aliases: + type: list + description: List of aliases for the scenario (optional) +output: + bcf: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bcf": + type: file + description: BCF file containing sample observations + pattern: "*.bcf" + ontologies: + - edam: http://edamontology.org/format_3020 # BCF + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@FriederikeHanssen" +maintainers: + - "@FriederikeHanssen" + - "@famosab" diff --git a/modules/nf-core/varlociraptor/estimatealignmentproperties/environment.yml b/modules/nf-core/varlociraptor/estimatealignmentproperties/environment.yml new file mode 100644 index 000000000..57ea8d6b0 --- /dev/null +++ b/modules/nf-core/varlociraptor/estimatealignmentproperties/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::varlociraptor=8.7.3 diff --git a/modules/nf-core/varlociraptor/estimatealignmentproperties/main.nf b/modules/nf-core/varlociraptor/estimatealignmentproperties/main.nf new file mode 100644 index 000000000..a37104dc2 --- /dev/null +++ b/modules/nf-core/varlociraptor/estimatealignmentproperties/main.nf @@ -0,0 +1,49 @@ +process VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/varlociraptor:8.7.3--ha8ac579_2': + 'biocontainers/varlociraptor:8.7.3--ha8ac579_2' }" + + input: + tuple val(meta), path(bam), path(bai) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + + output: + tuple val(meta), path("*.alignment-properties.json"), emit: alignment_properties_json + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + varlociraptor estimate alignment-properties \\ + $fasta \\ + --bams $bam \\ + $args \\ + > ${prefix}.alignment-properties.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + varlociraptor: \$(echo \$(varlociraptor --version 2>&1) | sed 's/^.*varlociraptor //; s/:.*\$//' ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.alignment-properties.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + varlociraptor: \$(echo \$(varlociraptor --version 2>&1) | sed 's/^.*varlociraptor //; s/:.*\$//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/varlociraptor/estimatealignmentproperties/meta.yml b/modules/nf-core/varlociraptor/estimatealignmentproperties/meta.yml new file mode 100644 index 000000000..5813241a6 --- /dev/null +++ b/modules/nf-core/varlociraptor/estimatealignmentproperties/meta.yml @@ -0,0 +1,82 @@ +name: "varlociraptor_estimatealignmentproperties" +description: In order to judge about candidate indel and structural variants, Varlociraptor + needs to know about certain properties of the underlying sequencing experiment in + combination with the used read aligner. +keywords: + - estimation + - alignment + - variants +tools: + - "varlociraptor": + description: "Flexible, uncertainty-aware variant calling with parameter free + filtration via FDR control." + homepage: "https://varlociraptor.github.io/docs/estimating/" + documentation: "https://varlociraptor.github.io/docs/estimating/" + tool_dev_url: "https://github.com/varlociraptor/varlociraptor" + doi: "10.1186/s13059-020-01993-6" + licence: ["GPL v3"] + identifier: biotools:varlociraptor +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: http://edamontology.org/format_2572 # BAM + - bai: + type: file + description: Index of sorted BAM/CRAM/SAM file + pattern: "*.{bai,crai,sai}" + ontologies: + - edam: http://edamontology.org/format_3327 # BAI + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Reference fasta file + pattern: "*.{fasta}" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA + - - meta3: + type: map + description: | + Groovy Map containing reference index information + e.g. [ id:'test', single_end:false ] + - fai: + type: file + description: Index for reference fasta file (must be with samtools index) + pattern: "*.{fai}" + ontologies: [] +output: + alignment_properties_json: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.alignment-properties.json": + type: file + description: File containing alignment properties + pattern: "*.alignment-properties.json" + ontologies: + - edam: http://edamontology.org/format_3464 # JSON + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@FriederikeHanssen" +maintainers: + - "@FriederikeHanssen" + - "@famosab" diff --git a/modules/nf-core/varlociraptor/preprocess/environment.yml b/modules/nf-core/varlociraptor/preprocess/environment.yml new file mode 100644 index 000000000..57ea8d6b0 --- /dev/null +++ b/modules/nf-core/varlociraptor/preprocess/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::varlociraptor=8.7.3 diff --git a/modules/nf-core/varlociraptor/preprocess/main.nf b/modules/nf-core/varlociraptor/preprocess/main.nf new file mode 100644 index 000000000..1abff125d --- /dev/null +++ b/modules/nf-core/varlociraptor/preprocess/main.nf @@ -0,0 +1,51 @@ +process VARLOCIRAPTOR_PREPROCESS { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/varlociraptor:8.7.3--ha8ac579_2': + 'biocontainers/varlociraptor:8.7.3--ha8ac579_2' }" + + input: + tuple val(meta), path(bam), path(bai), path(candidates), path(alignment_json) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + + output: + tuple val(meta), path("*.bcf"), emit: bcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def alignment_properties_json = alignment_json ? "--alignment-properties ${alignment_json}" : "" + """ + varlociraptor preprocess variants \\ + ${fasta} \\ + ${alignment_properties_json} \\ + --bam ${bam} \\ + --candidates ${candidates} \\ + ${args} \\ + --output ${prefix}.bcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + varlociraptor: \$(echo \$(varlociraptor --version 2>&1) | sed 's/^.*varlociraptor //; s/:.*\$//' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + varlociraptor: \$(echo \$(varlociraptor --version 2>&1) | sed 's/^.*varlociraptor //; s/:.*\$//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/varlociraptor/preprocess/meta.yml b/modules/nf-core/varlociraptor/preprocess/meta.yml new file mode 100644 index 000000000..a3a95c399 --- /dev/null +++ b/modules/nf-core/varlociraptor/preprocess/meta.yml @@ -0,0 +1,94 @@ +name: "varlociraptor_preprocess" +description: Obtains per-sample observations for the actual calling process with varlociraptor + calls +keywords: + - observations + - variants + - preprocessing +tools: + - "varlociraptor": + description: | + Flexible, uncertainty-aware variant calling with parameter free + filtration via FDR control. + homepage: "https://varlociraptor.github.io/docs/estimating/" + documentation: "https://varlociraptor.github.io/docs/calling/" + tool_dev_url: "https://github.com/varlociraptor/varlociraptor" + doi: "10.1186/s13059-020-01993-6" + licence: ["GPL v3"] + identifier: biotools:varlociraptor +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: http://edamontology.org/format_2572 # BAM + - bai: + type: file + description: Index of the BAM/CRAM/SAM file + pattern: "*.{bai,crai,sai}" + ontologies: + - edam: http://edamontology.org/format_3327 # BAI + - candidates: + type: file + description: Sorted BCF/VCF file + pattern: "*.{bcf,vcf,vcf.gz}" + ontologies: + - edam: http://edamontology.org/format_3016 # VCF + - alignment_json: + type: file + description: File containing alignment properties obtained with varlociraptor/estimatealignmentproperties + pattern: "*.json" + ontologies: + - edam: http://edamontology.org/format_3464 # JSON + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Reference fasta file + pattern: "*.{fasta}" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA + - - meta3: + type: map + description: | + Groovy Map containing reference index information + e.g. [ id:'test', single_end:false ] + - fai: + type: file + description: Index for reference fasta file (must be with samtools index) + pattern: "*.{fai}" + ontologies: [] +output: + bcf: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bcf": + type: file + description: BCF file containing sample observations + pattern: "*.bcf" + ontologies: + - edam: http://edamontology.org/format_3020 # BCF + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@FriederikeHanssen" +maintainers: + - "@FriederikeHanssen" + - "@famosab" diff --git a/modules/nf-core/yte/environment.yml b/modules/nf-core/yte/environment.yml new file mode 100644 index 000000000..ad25d1700 --- /dev/null +++ b/modules/nf-core/yte/environment.yml @@ -0,0 +1,7 @@ +channels: + - conda-forge + - bioconda +dependencies: + - conda-forge::pip=25.1.1 + - pip: + - yte==1.9.0 diff --git a/modules/nf-core/yte/main.nf b/modules/nf-core/yte/main.nf new file mode 100644 index 000000000..b34ccdfd2 --- /dev/null +++ b/modules/nf-core/yte/main.nf @@ -0,0 +1,52 @@ +process YTE { + tag "$meta.id" + label 'process_single' + + // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. + conda "${moduleDir}/environment.yml" + + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/f9/f9c1bae08d5c03036185fde01db24f11173ab0d746887a3313ec00851b2fb5ae/data': + 'community.wave.seqera.io/library/pip_yte:93491093a59d72ba' }" + + input: + tuple val(meta), path(template) + path(map_file) + val(map) + + output: + tuple val(meta), path("*.yaml"), emit: rendered + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + // Use map_file if provided, otherwise use map to create key=value pairs for mapping command + def mapping_cmd = map_file ? "--variable-file ${map_file}" : "--variables " + map.collect { k, v -> "${k}=${v}" }.join(' ') + VERSION = "1.9.0" // WARN: Version information not provided by tool on CLI. Please update this string when bumping + """ + yte ${mapping_cmd} < ${template} > ${prefix}.yaml + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + yte: $VERSION + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + VERSION = "1.9.0" // WARN: Version information not provided by tool on CLI. Please update this string when bumping + """ + touch ${prefix}.yaml + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + yte: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/yte/meta.yml b/modules/nf-core/yte/meta.yml new file mode 100644 index 000000000..ecb214435 --- /dev/null +++ b/modules/nf-core/yte/meta.yml @@ -0,0 +1,62 @@ +name: yte +description: A YAML template engine with Python expressions +keywords: + - yaml + - template + - python +tools: + - yte: + description: "A YAML template engine with Python expressions" + homepage: "https://yte-template-engine.github.io/" + documentation: "https://yte-template-engine.github.io/" + tool_dev_url: "https://github.com/yte-template-engine/yte" + licence: ["MIT"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'template1' ]` + - template: + type: file + description: YTE template + pattern: "*.{yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - map_file: + type: file + description: YAML file containing a map to be used in the template + pattern: "*.{yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - map: + type: map + description: | + Groovy Map containing mapping information to be used in the template + e.g. `[ key: value ]` with key being a wildcard in the template + +output: + rendered: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.yaml": + type: file + description: Rendered YAML file + pattern: "*.yaml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + +authors: + - "@famosab" +maintainers: + - "@famosab" diff --git a/nextflow.config b/nextflow.config index e787d721a..8d2fbf430 100644 --- a/nextflow.config +++ b/nextflow.config @@ -81,6 +81,8 @@ params { sentieon_dnascope_emit_mode = 'variant' // default value for Sentieon dnascope sentieon_dnascope_pcr_indel_model = 'CONSERVATIVE' sentieon_haplotyper_emit_mode = 'variant' // default value for Sentieon haplotyper + varlociraptor_chunk_size = 15 // default chunk size for Varlociraptor + varlociraptor_scenario_file = null // scenario file to use with varlociraptor (uses default "${projectDir}/assets/varlociraptor_somatic_with_priors.yte.yaml" if set to null) wes = false // Set to true, if data is exome/targeted sequencing data. Used to use correct models in various variant callers // Annotation @@ -905,6 +907,7 @@ includeConfig 'conf/modules/strelka.config' includeConfig 'conf/modules/tiddit.config' includeConfig 'conf/modules/post_variant_calling.config' includeConfig 'conf/modules/lofreq.config' +includeConfig 'conf/modules/varlociraptor.config' //annotate includeConfig 'conf/modules/annotate.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 0eb918c32..b692174c5 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -111,7 +111,7 @@ "fa_icon": "fas fa-toolbox", "description": "Tools to use for duplicate marking, variant calling and/or for annotation.", "help_text": "Multiple tools separated with commas.\n\n**Variant Calling:**\n\nGermline variant calling can currently be performed with the following variant callers:\n- SNPs/Indels: DeepVariant, FreeBayes, GATK HaplotypeCaller, mpileup, Sentieon Haplotyper \n- Structural Variants: indexcov, Manta, TIDDIT\n- Copy-number: CNVKit\n\nTumor-only somatic variant calling can currently be performed with the following variant callers:\n- SNPs/Indels: FreeBayes, Lofreq, mpileup, Mutect2, Sentieon TNScope, Strelka\n- Structural Variants: Manta, Sentieon TNScope, TIDDIT\n- Copy-number: CNVKit, ControlFREEC\n\nSomatic variant calling can currently only be performed with the following variant callers:\n- SNPs/Indels: FreeBayes, Mutect2, Sentieon TNScope, Strelka2 \n- Structural variants: Manta, TIDDIT\n- Copy-Number: ASCAT, CNVKit, Control-FREEC, Sentieon TNScope \n- Microsatellite Instability: MSIsensorpro\n\n> **NB** Mutect2 for somatic variant calling cannot be combined with `--no_intervals`\n\n**Annotation:**\n \n- snpEff, VEP, merge (both consecutively), and bcftools annotate (needs `--bcftools_annotation`).\n\n> **NB** As Sarek will use bgzip and tabix to compress and index VCF files annotated, it expects VCF files to be sorted when starting from `--step annotate`.", - "pattern": "^((ascat|bcfann|cnvkit|controlfreec|deepvariant|freebayes|haplotypecaller|indexcov|lofreq|manta|merge|mpileup|msisensorpro|muse|mutect2|ngscheckmate|sentieon_dedup|sentieon_dnascope|sentieon_haplotyper|sentieon_tnscope|snpeff|strelka|tiddit|vep)?,?)*(? meta + [sex_string: (meta.sex == "XX" ? "female" : "male") ] } + + FILL_SCENARIO_FILE( + meta_map.combine(ch_scenario), + [], + meta_map + ) + + ch_scenario_file = FILL_SCENARIO_FILE.out.rendered + + ch_versions = ch_versions.mix(FILL_SCENARIO_FILE.out.versions) + + + // Estimate alignment properties + VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES( + ch_cram, + ch_fasta, + ch_fasta_fai + ) + + ch_versions = ch_versions.mix(VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES.out.versions) + + // + // CHUNK AND PREPROCESS GERMLINE VCF + // + RBT_VCFSPLIT( + ch_vcf, + val_num_chunks + ) + + ch_versions = ch_versions.mix(RBT_VCFSPLIT.out.versions) + + ch_chunked_tumor_vcfs = RBT_VCFSPLIT.out.bcfchunks + .transpose(by:1) + .map { meta, vcf_chunked -> + def new_meta = meta + [chunk:vcf_chunked.name.split(/\./)[-2]] + [ new_meta, vcf_chunked ] + } + + // Create a base channel for CRAM data that will be replicated for each chunk + ch_cram_base = ch_cram + .map{ meta, cram, crai -> [ meta.id, meta, cram, crai ] } + + // Create a base channel for alignment properties + ch_alignment_base = VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES.out.alignment_properties_json + .map{ meta, alignment_json -> [ meta.id, meta, alignment_json ] } + + // Now combine the chunked VCFs with the base data + ch_input_tumor_preprocess_chunked = ch_chunked_tumor_vcfs + .map{ meta, vcf -> [ meta.id, meta, vcf ] } + .combine(ch_cram_base, by: 0) // Combine by sample ID + .combine(ch_alignment_base, by: 0) // Combine by sample ID + .map{ _id, meta_vcf, vcf, meta_cram, cram, crai, _meta_alignment, alignment_json -> + def new_meta = meta_cram + [ + variantcaller: meta_vcf.variantcaller, + postprocess: 'varlociraptor', + chunk: meta_vcf.chunk + ] + [ new_meta, cram, crai, vcf, alignment_json ] + } + + VARLOCIRAPTOR_PREPROCESS( + ch_input_tumor_preprocess_chunked, + ch_fasta, + ch_fasta_fai + ) + + ch_versions = ch_versions.mix(VARLOCIRAPTOR_PREPROCESS.out.versions) + + // + // CALL VARIANTS WITH VARLOCIRAPTOR + // + + // TODO: joint varlociraptor calling of ALL germline VCFs + VARLOCIRAPTOR_CALLVARIANTS( + VARLOCIRAPTOR_PREPROCESS.out.bcf, + ch_scenario_file.map{ it -> it[1] }.first(), // scenario file + val_sampletype + ) + + ch_versions = ch_versions.mix(VARLOCIRAPTOR_CALLVARIANTS.out.versions) + + // + // SORT AND MERGE CALLED VARIANTS + // + SORT_CALLED_CHUNKS( + VARLOCIRAPTOR_CALLVARIANTS.out.bcf + ) + + ch_versions = ch_versions.mix(SORT_CALLED_CHUNKS.out.versions) + + ch_vcf_tbi_chunks = SORT_CALLED_CHUNKS.out.vcf + .join(SORT_CALLED_CHUNKS.out.tbi, failOnMismatch:true, failOnDuplicate:true) + .map{ meta, vcf, tbi -> + def new_meta = meta - meta.subMap("chunk") + [new_meta, vcf, tbi] + } + .groupTuple(size:val_num_chunks) + + MERGE_CALLED_CHUNKS( ch_vcf_tbi_chunks ) + + ch_final_vcf = MERGE_CALLED_CHUNKS.out.vcf.map{ meta, vcf -> [meta.id + meta.variantcaller, meta, vcf] } + .join( + MERGE_CALLED_CHUNKS.out.tbi.map{ meta, tbi -> [meta.id + meta.variantcaller, meta, tbi] } + ) + .map{ _id, meta_vcf, vcf, _meta_tbi, tbi -> [meta_vcf, vcf, tbi] } + + ch_versions = ch_versions.mix(MERGE_CALLED_CHUNKS.out.versions) + + emit: + vcf = ch_final_vcf + versions = ch_versions +} diff --git a/subworkflows/local/vcf_varlociraptor_somatic/main.nf b/subworkflows/local/vcf_varlociraptor_somatic/main.nf new file mode 100644 index 000000000..7a69784a1 --- /dev/null +++ b/subworkflows/local/vcf_varlociraptor_somatic/main.nf @@ -0,0 +1,206 @@ +include { BCFTOOLS_CONCAT as MERGE_CALLED_CHUNKS } from '../../../modules/nf-core/bcftools/concat' +include { BCFTOOLS_SORT as SORT_CALLED_CHUNKS } from '../../../modules/nf-core/bcftools/sort' +include { RBT_VCFSPLIT as VCFSPLIT_NORMAL } from '../../../modules/nf-core/rbt/vcfsplit' +include { RBT_VCFSPLIT as VCFSPLIT_TUMOR } from '../../../modules/nf-core/rbt/vcfsplit' +include { VARLOCIRAPTOR_CALLVARIANTS } from '../../../modules/nf-core/varlociraptor/callvariants' +include { VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES as ALIGNMENTPROPERTIES_NORMAL } from '../../../modules/nf-core/varlociraptor/estimatealignmentproperties' +include { VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES as ALIGNMENTPROPERTIES_TUMOR } from '../../../modules/nf-core/varlociraptor/estimatealignmentproperties' +include { VARLOCIRAPTOR_PREPROCESS as PREPROCESS_NORMAL } from '../../../modules/nf-core/varlociraptor/preprocess' +include { VARLOCIRAPTOR_PREPROCESS as PREPROCESS_TUMOR } from '../../../modules/nf-core/varlociraptor/preprocess' +include { YTE as FILL_SCENARIO_FILE } from '../../../modules/nf-core/yte' + +workflow VCF_VARLOCIRAPTOR_SOMATIC { + + take: + ch_cram + ch_fasta + ch_fasta_fai + ch_scenario + ch_vcf + val_num_chunks + + main: + ch_versions = Channel.empty() + Channel.value(val_num_chunks).dump(tag: "val_num_chunks") + + meta_map = ch_cram.map{ meta, _normal_cram, _normal_crai, _tumor_cram, _tumor_crai -> meta + [sex_string: (meta.sex == "XX" ? "female" : "male") ] } + + FILL_SCENARIO_FILE( + meta_map.combine(ch_scenario), + [], + meta_map + ) + + ch_scenario_file = FILL_SCENARIO_FILE.out.rendered + + ch_versions = ch_versions.mix(FILL_SCENARIO_FILE.out.versions) + + cram_normal = ch_cram.map{ meta, normal_cram, normal_crai, _tumor_cram, _tumor_crai -> [ meta, normal_cram, normal_crai ] } + cram_tumor = ch_cram.map{ meta, _normal_cram, _normal_crai, tumor_cram, tumor_crai -> [ meta, tumor_cram, tumor_crai ] } + + // Estimate alignment properties + ALIGNMENTPROPERTIES_TUMOR( + cram_normal, + ch_fasta, + ch_fasta_fai + ) + + ALIGNMENTPROPERTIES_NORMAL( + cram_tumor, + ch_fasta, + ch_fasta_fai + ) + + ch_versions = ch_versions.mix(ALIGNMENTPROPERTIES_TUMOR.out.versions) + ch_versions = ch_versions.mix(ALIGNMENTPROPERTIES_NORMAL.out.versions) + + ch_vcf.view { "ch_vcf emits: $it" } + // + // CHUNK AND PREPROCESS TUMOR VCF + // + VCFSPLIT_TUMOR( + ch_vcf, + val_num_chunks + ) + + ch_versions = ch_versions.mix(VCFSPLIT_TUMOR.out.versions) + + ch_chunked_tumor_vcfs = VCFSPLIT_TUMOR.out.bcfchunks + .transpose(by:1) + .map { meta, vcf_chunked -> + def new_meta = meta + [chunk:vcf_chunked.name.split(/\./)[-2]] + [ new_meta, vcf_chunked ] + }.dump(tag: "ch_chunked_tumor_vcfs") + + + // Create a base channel for CRAM data that will be replicated for each chunk + ch_cram_tumor_base = cram_tumor + .map{ meta, tumor_cram, tumor_crai -> [ meta.id, meta, tumor_cram, tumor_crai ] } + + // Create a base channel for alignment properties + ch_alignment_tumor_base = ALIGNMENTPROPERTIES_TUMOR.out.alignment_properties_json + .map{ meta, alignment_json -> [ meta.id, meta, alignment_json ] } + + // Now combine the chunked VCFs with the base data + ch_input_tumor_preprocess_chunked = ch_chunked_tumor_vcfs + .map{ meta, vcf -> [ meta.id, meta, vcf ] } + .combine(ch_cram_tumor_base, by: 0) // Combine by sample ID + .combine(ch_alignment_tumor_base, by: 0) // Combine by sample ID + .map{ _id, meta_vcf, vcf, meta_cram, tumor_cram, tumor_crai, _meta_alignment, alignment_json -> + def new_meta = meta_cram + [ + variantcaller: meta_vcf.variantcaller, + postprocess: 'varlociraptor', + chunk: meta_vcf.chunk + ] + [ new_meta, tumor_cram, tumor_crai, vcf, alignment_json ] + } + + PREPROCESS_TUMOR( + ch_input_tumor_preprocess_chunked, + ch_fasta, + ch_fasta_fai + ) + + ch_versions = ch_versions.mix(PREPROCESS_TUMOR.out.versions) + + // + // CHUNK AND PREPROCESS NORMAL VCF + // + + // TODO: do i need to use the germline VCF here? + VCFSPLIT_NORMAL( + ch_vcf, + val_num_chunks + ) + + ch_versions = ch_versions.mix(VCFSPLIT_NORMAL.out.versions) + + ch_chunked_normal_vcfs = VCFSPLIT_NORMAL.out.bcfchunks + .transpose(by:1) + .map { meta, vcf_chunked -> + def new_meta = meta + [chunk:vcf_chunked.name.split(/\./)[-2]] + [ new_meta, vcf_chunked ] + } + + // Create a base channel for CRAM data that will be replicated for each chunk + ch_cram_base = cram_normal + .map{ meta, normal_cram, normal_crai -> [ meta.id, meta, normal_cram, normal_crai ] } + + // Create a base channel for alignment properties + ch_alignment_base = ALIGNMENTPROPERTIES_NORMAL.out.alignment_properties_json + .map{ meta, alignment_json -> [ meta.id, meta, alignment_json ] } + + // Now combine the chunked VCFs with the base data + ch_input_normal_preprocess_chunked = ch_chunked_normal_vcfs + .map{ meta, vcf -> [ meta.id, meta, vcf ] } + .combine(ch_cram_base, by: 0) // Combine by sample ID + .combine(ch_alignment_base, by: 0) // Combine by sample ID + .map{ _id, meta_vcf, vcf, meta_cram, normal_cram, normal_crai, _meta_alignment, alignment_json -> + def new_meta = meta_cram + [ + variantcaller: meta_vcf.variantcaller, + postprocess: 'varlociraptor', + chunk: meta_vcf.chunk + ] + [ new_meta, normal_cram, normal_crai, vcf, alignment_json ] + } + + PREPROCESS_NORMAL( + ch_input_normal_preprocess_chunked, + ch_fasta, + ch_fasta_fai + ) + + ch_versions = ch_versions.mix(PREPROCESS_NORMAL.out.versions) + + // + // CALL VARIANTS WITH VARLOCIRAPTOR + // + ch_vcf_for_callvariants = PREPROCESS_NORMAL.out.bcf + .map{ meta, normal_bcf -> [ meta.id + meta.chunk + meta.variantcaller, meta, normal_bcf]} + .join(PREPROCESS_TUMOR.out.bcf + .map{ meta, tumor_bcf -> [ meta.id + meta.chunk + meta.variantcaller, meta, tumor_bcf]} + ).map{ _id, meta_normal, normal_bcf, _meta_tumor, tumor_bcf -> + [ meta_normal, [ normal_bcf, tumor_bcf ] ] + } + + VARLOCIRAPTOR_CALLVARIANTS( + ch_vcf_for_callvariants, + ch_scenario_file.map{ it -> it[1] }.first(), // scenario file + Channel.value(["normal", "tumor"]), + ) + + ch_versions = ch_versions.mix(VARLOCIRAPTOR_CALLVARIANTS.out.versions) + + // + // SORT AND MERGE CALLED VARIANTS + // + SORT_CALLED_CHUNKS( + VARLOCIRAPTOR_CALLVARIANTS.out.bcf + ) + + ch_versions = ch_versions.mix(SORT_CALLED_CHUNKS.out.versions) + + ch_vcf_tbi_chunks = SORT_CALLED_CHUNKS.out.vcf + .join(SORT_CALLED_CHUNKS.out.tbi, failOnMismatch:true, failOnDuplicate:true) + .map{ meta, vcf, tbi -> + def new_meta = meta - meta.subMap("chunk") + [new_meta, vcf, tbi] + } + .groupTuple(size:val_num_chunks) + + ch_vcf_tbi_chunks.dump(tag: "ch_vcf_tbi_chunks") + + MERGE_CALLED_CHUNKS( ch_vcf_tbi_chunks ) + + ch_final_vcf = MERGE_CALLED_CHUNKS.out.vcf.map{ meta, vcf -> [meta.id + meta.variantcaller, meta, vcf] } + .join( + MERGE_CALLED_CHUNKS.out.tbi.map{ meta, tbi -> [meta.id + meta.variantcaller, meta, tbi] } + ) + .map{ _id, meta_vcf, vcf, _meta_tbi, tbi -> [meta_vcf, vcf, tbi] } + + ch_versions = ch_versions.mix(MERGE_CALLED_CHUNKS.out.versions) + + emit: + vcf = ch_final_vcf + versions = ch_versions +} diff --git a/tests/.nftignore b/tests/.nftignore index 2b2ced931..fb69f8f63 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -38,8 +38,7 @@ reports/samtools/**/**.cram.stats reports/snpeff/*/*_snpEff.csv reports/snpeff/*/snpEff_summary.html reports/vcftools/**/*.TsTv.qual -variant_calling/**/*.vcf -variant_calling/**/*.vcf.{gz,gz.tbi} +variant_calling/**/*.{bcf,vcf,vcf.gz,vcf.gz.tbi} variant_calling/ascat/*/*.metrics.txt variant_calling/ascat/*/*.png variant_calling/cnvkit/*/*.pdf @@ -47,3 +46,4 @@ variant_calling/controlfreec/*/config.txt variant_calling/muse/*/*.MuSE.txt variant_calling/mutect2/*/*.mutect2.artifactprior.tar.gz variant_calling/tiddit/*/*.tiddit.ploidies.tab +variant_calling/varlociraptor/*/*.alignment-properties.json diff --git a/tests/csv/recal.csv b/tests/csv/recal.csv new file mode 100644 index 000000000..4f891be3b --- /dev/null +++ b/tests/csv/recal.csv @@ -0,0 +1,3 @@ +patient,sex,status,sample,lane,fastq_1,fastq_2 +HCC1395,XX,0,HCC1395N,1,s3://ngi-igenomes/test-data/sarek/SRR7890919_WES_HCC1395BL-EA_normal_1.fastq.gz,s3://ngi-igenomes/test-data/sarek/SRR7890919_WES_HCC1395BL-EA_normal_2.fastq.gz +HCC1395,XX,1,HCC1395T,1,s3://ngi-igenomes/test-data/sarek/SRR7890918_WES_HCC1395-EA_tumor_1.fastq.gz,s3://ngi-igenomes/test-data/sarek/SRR7890918_WES_HCC1395-EA_tumor_2.fastq.gz diff --git a/tests/lib/UTILS.groovy b/tests/lib/UTILS.groovy index 7531b3eff..dc160e2ac 100644 --- a/tests/lib/UTILS.groovy +++ b/tests/lib/UTILS.groovy @@ -21,6 +21,10 @@ class UTILS { // Will print the summary instead of the md5sum for vcf files def no_vcf_md5sum = args.no_vcf_md5sum + // Use this args to include varlociraptor vcf files in the assertion + // It will use the summary method to extract the vcf file content + def include_varlociraptor_vcf = args.include_varlociraptor_vcf + // stable_name: All files + folders in ${outdir}/ with a stable name def stable_name = getAllFilesFromDir(outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) // stable_content: All files in ${outdir}/ with stable content @@ -35,9 +39,12 @@ class UTILS { // txt_files: MuSE txt files def txt_files = getAllFilesFromDir(outdir, include: ['**/*.MuSE.txt']) // vcf_files: All vcf files - def vcf_files = getAllFilesFromDir(outdir, include: ['**/*.vcf{,.gz}'], ignore: ['**/test{N,T}.germline.vcf{,.gz}', '**/*.freebayes.vcf{,.gz}']) + def vcf_files = getAllFilesFromDir(outdir, include: ['**/*.vcf{,.gz}'], ignore: ['**/test{N,T}.germline.vcf{,.gz}', '**/*.freebayes.vcf{,.gz}', 'variant_calling/varlociraptor/*/*.{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}.vcf.gz', '**/*.varlociraptor.{vcf}{,.gz}']) // freebayes_unfiltered: vcf files from freebayes without quality filtering def freebayes_unfiltered = getAllFilesFromDir(outdir, include: ['**/*.freebayes.vcf.gz']) + // varlociraptor vcf + def varlociraptor_vcf = getAllFilesFromDir(outdir, include: ['**/*.varlociraptor.{vcf}{,.gz}'] ) + def assertion = [] @@ -58,6 +65,9 @@ class UTILS { assertion.add(vcf_files.isEmpty() ? 'No VCF files' : vcf_files.collect { file -> [ file.getName(), path(file.toString()).vcf.summary ] }) } else { assertion.add(vcf_files.isEmpty() ? 'No VCF files' : vcf_files.collect { file -> file.getName() + ":md5," + path(file.toString()).vcf.variantsMD5 }) + if (include_varlociraptor_vcf) { + assertion.add(varlociraptor_vcf.isEmpty() ? 'No Varlociraptor VCF files' : varlociraptor_vcf.collect { file -> file.getName() + ":summary," + path(file.toString()).vcf.summary }) + } } } @@ -128,7 +138,7 @@ class UTILS { // Number of successful tasks workflow.trace.succeeded().size(), // All assertions based on the scenario - *UTILS.get_assertion(include_freebayes_unfiltered: scenario.include_freebayes_unfiltered ,include_muse_txt: scenario.include_muse_txt, no_vcf_md5sum: scenario.no_vcf_md5sum, outdir: params.outdir, stub: scenario.stub) + *UTILS.get_assertion(include_freebayes_unfiltered: scenario.include_freebayes_unfiltered, include_muse_txt: scenario.include_muse_txt, include_varlociraptor_vcf: scenario.include_varlociraptor_vcf, no_vcf_md5sum: scenario.no_vcf_md5sum, outdir: params.outdir, stub: scenario.stub) ).match() } ) // Check stdout if specified diff --git a/tests/postprocess_varlociraptor.nf.test b/tests/postprocess_varlociraptor.nf.test new file mode 100644 index 000000000..46a4b89a6 --- /dev/null +++ b/tests/postprocess_varlociraptor.nf.test @@ -0,0 +1,89 @@ +def projectDir = new File('.').absolutePath +def modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' + +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "pipeline" + tag "pipeline_sarek" + + def test_scenario = [ + [ + name: "-profile test --tools strelka,varlociraptor --input recalibrated_germline.csv", + params: [ + input: "${projectDir}/tests/csv/3.0/recalibrated_germline.csv", + genome: null, + igenomes_ignore: true, + chr_dir: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chromosomes.tar.gz', + dbsnp: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz', + dbsnp_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz.tbi', + fasta: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', + fasta_fai: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', + germline_resource: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz', + germline_resource_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi', + intervals: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', + pon: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz', + pon_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi', + ngscheckmate_bed: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/SNP_GRCh38_hg38_wChr.bed', + nucleotides_per_second: 20, + step: 'variant_calling', + tools: 'strelka,varlociraptor', + wes: true + ], + include_varlociraptor_vcf: true + ], + [ + name: "-profile test --tools mutect2,varlociraptor --input recalibrated_somatic.csv", + params: [ + input: "${projectDir}/tests/csv/3.0/recalibrated_somatic.csv", + genome: null, + igenomes_ignore: true, + chr_dir: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chromosomes.tar.gz', + dbsnp: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz', + dbsnp_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz.tbi', + fasta: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', + fasta_fai: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', + germline_resource: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz', + germline_resource_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi', + intervals: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', + pon: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz', + pon_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi', + ngscheckmate_bed: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/SNP_GRCh38_hg38_wChr.bed', + nucleotides_per_second: 20, + step: 'variant_calling', + tools: 'mutect2,varlociraptor', + wes: true + ], + include_varlociraptor_vcf: true + ], + [ + name: "-profile test --tools mutect2,varlociraptor --input recalibrated_tumoronly.csv", + params: [ + input: "${projectDir}/tests/csv/3.0/recalibrated_tumoronly.csv", + genome: null, + igenomes_ignore: true, + chr_dir: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chromosomes.tar.gz', + dbsnp: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz', + dbsnp_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz.tbi', + fasta: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', + fasta_fai: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', + germline_resource: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz', + germline_resource_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi', + intervals: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', + pon: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz', + pon_tbi: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi', + ngscheckmate_bed: modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/SNP_GRCh38_hg38_wChr.bed', + nucleotides_per_second: 20, + step: 'variant_calling', + tools: 'mutect2,varlociraptor', + wes: true + ], + include_varlociraptor_vcf: true + ] + ] + + test_scenario.each { scenario -> + test(scenario.name, UTILS.get_test(scenario)) + } +} diff --git a/tests/postprocess_varlociraptor.nf.test.snap b/tests/postprocess_varlociraptor.nf.test.snap new file mode 100644 index 000000000..6e79c1938 --- /dev/null +++ b/tests/postprocess_varlociraptor.nf.test.snap @@ -0,0 +1,1025 @@ +{ + "-profile test --tools mutect2,varlociraptor --input recalibrated_somatic.csv": { + "content": [ + 95, + { + "ALIGNMENTPROPERTIES_NORMAL": { + "varlociraptor": "8.7.3" + }, + "ALIGNMENTPROPERTIES_TUMOR": { + "varlociraptor": "8.7.3" + }, + "BCFTOOLS_STATS": { + "bcftools": 1.21 + }, + "CALCULATECONTAMINATION": { + "gatk4": "4.6.1.0" + }, + "CREATE_INTERVALS_BED": { + "gawk": "5.1.0" + }, + "FILL_SCENARIO_FILE": { + "yte": "1.9.0" + }, + "FILTERMUTECTCALLS": { + "gatk4": "4.6.1.0" + }, + "GATHERPILEUPSUMMARIES_NORMAL": { + "gatk4": "4.6.1.0" + }, + "GATHERPILEUPSUMMARIES_TUMOR": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GETPILEUPSUMMARIES_NORMAL": { + "gatk4": "4.6.1.0" + }, + "GETPILEUPSUMMARIES_TUMOR": { + "gatk4": "4.6.1.0" + }, + "LEARNREADORIENTATIONMODEL": { + "gatk4": "4.6.1.0" + }, + "MERGEMUTECTSTATS": { + "gatk4": "4.6.1.0" + }, + "MERGE_CALLED_CHUNKS": { + "bcftools": 1.21 + }, + "MERGE_MUTECT2": { + "gatk4": "4.6.1.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.10" + }, + "MUTECT2_PAIRED": { + "gatk4": "4.6.1.0" + }, + "PREPROCESS_NORMAL": { + "varlociraptor": "8.7.3" + }, + "PREPROCESS_TUMOR": { + "varlociraptor": "8.7.3" + }, + "SAMTOOLS_STATS": { + "samtools": 1.21 + }, + "SORT_CALLED_CHUNKS": { + "bcftools": 1.21 + }, + "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { + "tabix": 1.21 + }, + "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { + "tabix": 1.21 + }, + "VARLOCIRAPTOR_CALLVARIANTS": { + "varlociraptor": "8.7.3" + }, + "VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES": { + "varlociraptor": "8.7.3" + }, + "VCFSPLIT_NORMAL": { + "Rust-Bio-Tools": "0.42.2" + }, + "VCFSPLIT_TUMOR": { + "Rust-Bio-Tools": "0.42.2" + }, + "VCFTOOLS_TSTV_COUNT": { + "vcftools": "0.1.16" + } + }, + [ + "csv", + "csv/variantcalled.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/BETA-multiqc.parquet", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_variant_depths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/llms-full.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-single.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_samtools_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/samtools-stats-dp.txt", + "multiqc/multiqc_data/samtools_alignment_plot.txt", + "multiqc/multiqc_data/vcftools_tstv_by_count.txt", + "multiqc/multiqc_data/vcftools_tstv_by_qual.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths-log.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_variant_depths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-pct.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/samtools-stats-dp.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/vcftools_tstv_by_count.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths-cnt.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths-log.png", + "multiqc/multiqc_plots/png/bcftools_stats_variant_depths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-pct.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/samtools-stats-dp.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-cnt.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-pct.png", + "multiqc/multiqc_plots/png/vcftools_tstv_by_count.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths-log.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_variant_depths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-pct.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/samtools-stats-dp.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-cnt.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-pct.svg", + "multiqc/multiqc_plots/svg/vcftools_tstv_by_count.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_sarek_software_mqc_versions.yml", + "reference", + "reference/dict", + "reports", + "reports/bcftools", + "reports/bcftools/mutect2", + "reports/bcftools/mutect2/sample4_vs_sample3", + "reports/bcftools/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.bcftools_stats.txt", + "reports/mosdepth", + "reports/mosdepth/sample3", + "reports/mosdepth/sample3/sample3.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample3/sample3.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample3/sample3.recal.mosdepth.summary.txt", + "reports/mosdepth/sample3/sample3.recal.per-base.bed.gz", + "reports/mosdepth/sample3/sample3.recal.per-base.bed.gz.csi", + "reports/mosdepth/sample3/sample3.recal.regions.bed.gz", + "reports/mosdepth/sample3/sample3.recal.regions.bed.gz.csi", + "reports/mosdepth/sample4", + "reports/mosdepth/sample4/sample4.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample4/sample4.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample4/sample4.recal.mosdepth.summary.txt", + "reports/mosdepth/sample4/sample4.recal.per-base.bed.gz", + "reports/mosdepth/sample4/sample4.recal.per-base.bed.gz.csi", + "reports/mosdepth/sample4/sample4.recal.regions.bed.gz", + "reports/mosdepth/sample4/sample4.recal.regions.bed.gz.csi", + "reports/samtools", + "reports/samtools/sample3", + "reports/samtools/sample3/sample3.recal.cram.stats", + "reports/samtools/sample4", + "reports/samtools/sample4/sample4.recal.cram.stats", + "reports/vcftools", + "reports/vcftools/mutect2", + "reports/vcftools/mutect2/sample4_vs_sample3", + "reports/vcftools/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.FILTER.summary", + "reports/vcftools/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.TsTv.count", + "reports/vcftools/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.TsTv.qual", + "variant_calling", + "variant_calling/mutect2", + "variant_calling/mutect2/sample3", + "variant_calling/mutect2/sample3/sample3.mutect2.pileups.table", + "variant_calling/mutect2/sample4", + "variant_calling/mutect2/sample4/sample4.mutect2.pileups.table", + "variant_calling/mutect2/sample4_vs_sample3", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.artifactprior.tar.gz", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.contamination.table", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.vcf.gz", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.vcf.gz.filteringStats.tsv", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.filtered.vcf.gz.tbi", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.segmentation.table", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.vcf.gz", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.vcf.gz.stats", + "variant_calling/mutect2/sample4_vs_sample3/sample4_vs_sample3.mutect2.vcf.gz.tbi", + "variant_calling/varlociraptor", + "variant_calling/varlociraptor/sample3", + "variant_calling/varlociraptor/sample3/sample3.alignment-properties.json", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.0.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.1.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.10.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.11.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.12.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.13.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.14.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.2.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.3.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.4.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.5.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.6.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.7.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.8.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.preprocess.9.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.0.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.1.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.10.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.11.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.12.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.13.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.14.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.2.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.3.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.4.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.5.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.6.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.7.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.8.bcf", + "variant_calling/varlociraptor/sample3/sample3.mutect2.split.9.bcf", + "variant_calling/varlociraptor/sample3/sample3.scenario.varlociraptor.yaml", + "variant_calling/varlociraptor/sample3/versions.yml", + "variant_calling/varlociraptor/sample4", + "variant_calling/varlociraptor/sample4/sample4.alignment-properties.json", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.0.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.1.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.10.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.11.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.12.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.13.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.14.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.2.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.3.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.4.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.5.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.6.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.7.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.8.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.preprocess.9.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.0.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.1.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.10.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.11.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.12.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.13.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.14.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.2.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.3.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.4.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.5.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.6.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.7.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.8.bcf", + "variant_calling/varlociraptor/sample4/sample4.mutect2.split.9.bcf", + "variant_calling/varlociraptor/sample4/versions.yml", + "variant_calling/varlociraptor/sample4_vs_sample3", + "variant_calling/varlociraptor/sample4_vs_sample3.mutect2.varlociraptor.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3.mutect2.varlociraptor.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.0.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.1.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.10.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.11.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.12.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.13.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.14.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.2.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.3.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.4.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.5.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.6.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.7.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.8.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.call.9.bcf", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.0.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.0.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.1.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.1.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.10.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.10.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.11.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.11.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.12.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.12.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.13.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.13.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.14.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.14.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.2.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.2.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.3.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.3.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.4.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.4.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.5.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.5.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.6.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.6.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.7.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.7.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.8.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.8.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.9.vcf.gz", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.mutect2.sort.9.vcf.gz.tbi", + "variant_calling/varlociraptor/sample4_vs_sample3/sample4_vs_sample3.scenario.varlociraptor.yaml", + "variant_calling/varlociraptor/sample4_vs_sample3/versions.yml", + "variant_calling/varlociraptor/versions.yml" + ], + [ + "mosdepth-coverage-per-contig-single.txt:md5,4ee05f71086179b42a01cd2fb450346f", + "mosdepth-cumcoverage-dist-id.txt:md5,cb7468f51b8be1230fb3ac5b130be31f", + "mosdepth_perchrom.txt:md5,4ee05f71086179b42a01cd2fb450346f", + "multiqc_citations.txt:md5,d40980f61eb64026d58102841b7f3860", + "samtools-stats-dp.txt:md5,e0a8d8867064083908a8ca1ea782d7ac", + "samtools_alignment_plot.txt:md5,f4b1a7cef760291172144a8614b4a1cd", + "sample4_vs_sample3.mutect2.filtered.bcftools_stats.txt:md5,91e802a68f9d8da14bb3dcf784f0810d", + "sample3.recal.mosdepth.global.dist.txt:md5,69e29702ef01fd8f6c7a5468fc35a16a", + "sample3.recal.mosdepth.region.dist.txt:md5,6ec49cd7d510c2eb3d9d90fdb79b783a", + "sample3.recal.mosdepth.summary.txt:md5,103098d0bf76ed82d2b87d5f242b099a", + "sample3.recal.per-base.bed.gz:md5,297f96648928d0ca5184223fb9941e7c", + "sample3.recal.per-base.bed.gz.csi:md5,c67dcd711b096eb42f43784d5eadbc0d", + "sample3.recal.regions.bed.gz:md5,314ce8d7273eff353072108aa77c327c", + "sample3.recal.regions.bed.gz.csi:md5,9cb0ad7039a3b703d16ca7d5b835c0ee", + "sample4.recal.mosdepth.global.dist.txt:md5,f2dcd00a64947c49e8e4b93c2f4fbf27", + "sample4.recal.mosdepth.region.dist.txt:md5,39005ffaac22871ffaaf19656fe69c5b", + "sample4.recal.mosdepth.summary.txt:md5,68d4b98f17361fddf73052ead34fa370", + "sample4.recal.per-base.bed.gz:md5,39a1bc436aa8546c26faedbe94cb676c", + "sample4.recal.per-base.bed.gz.csi:md5,cfb07b0ba46e8468b4342edb243536f3", + "sample4.recal.regions.bed.gz:md5,b7561bc56a955f7db0f11e67e2ec0386", + "sample4.recal.regions.bed.gz.csi:md5,393c2749068304d8545b501b9d4658e4", + "sample4_vs_sample3.mutect2.filtered.FILTER.summary:md5,b25d4d2a64f9590d0ffb119fd3adb06e", + "sample4_vs_sample3.mutect2.filtered.TsTv.count:md5,3739f24da2d2019cc4bc2821e30658eb", + "sample3.mutect2.pileups.table:md5,29388a37ebae6c6c5f868bdb7b341d26", + "sample4.mutect2.pileups.table:md5,df85ceff89be6f9a13707d9cda29dd6e", + "sample4_vs_sample3.mutect2.contamination.table:md5,46c708c943b453da89a3da08acfdb2a7", + "sample4_vs_sample3.mutect2.filtered.vcf.gz.filteringStats.tsv:md5,9ae27fbd04af1a2ea574e2ff1c3a683b", + "sample4_vs_sample3.mutect2.segmentation.table:md5,f4643d9319bde4efbfbe516d6fb13052", + "sample4_vs_sample3.mutect2.vcf.gz.stats:md5,c09dff3f145d77d4848992e244811c08", + "sample3.scenario.varlociraptor.yaml:md5,d85fd82470de636a7d97b869d6c32fbc", + "versions.yml:md5,cfadb763478505b738e236a0eb3fb584", + "versions.yml:md5,804aee4870bf376179cfaf10cdc4f827", + "sample4_vs_sample3.scenario.varlociraptor.yaml:md5,d85fd82470de636a7d97b869d6c32fbc", + "versions.yml:md5,be36486a80466a8b21425e920f0485e2", + "versions.yml:md5,2f207639ad85b335bd648a600b1d1fb7" + ], + "No BAM files", + "No CRAM files", + [ + "sample4_vs_sample3.mutect2.filtered.vcf.gz:md5,39a1cec1e8040924e280606b1c2e98bf", + "sample4_vs_sample3.mutect2.vcf.gz:md5,7418ed45a029394253817a5eb7149334" + ], + [ + "sample4_vs_sample3.mutect2.varlociraptor.vcf.gz:summary,VcfFile [chromosomes=[chr21], sampleCount=2, variantCount=40, phased=true, phasedAutodetect=false]" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-07-24T16:35:52.735251832" + }, + "-profile test --tools mutect2,varlociraptor --input recalibrated_tumoronly.csv": { + "content": [ + 71, + { + "BCFTOOLS_STATS": { + "bcftools": 1.21 + }, + "CALCULATECONTAMINATION": { + "gatk4": "4.6.1.0" + }, + "CREATE_INTERVALS_BED": { + "gawk": "5.1.0" + }, + "FILL_SCENARIO_FILE": { + "yte": "1.9.0" + }, + "FILTERMUTECTCALLS": { + "gatk4": "4.6.1.0" + }, + "GATHERPILEUPSUMMARIES": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GETPILEUPSUMMARIES": { + "gatk4": "4.6.1.0" + }, + "LEARNREADORIENTATIONMODEL": { + "gatk4": "4.6.1.0" + }, + "MERGEMUTECTSTATS": { + "gatk4": "4.6.1.0" + }, + "MERGE_CALLED_CHUNKS": { + "bcftools": 1.21 + }, + "MERGE_MUTECT2": { + "gatk4": "4.6.1.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.10" + }, + "MUTECT2": { + "gatk4": "4.6.1.0" + }, + "RBT_VCFSPLIT": { + "Rust-Bio-Tools": "0.42.2" + }, + "SAMTOOLS_STATS": { + "samtools": 1.21 + }, + "SORT_CALLED_CHUNKS": { + "bcftools": 1.21 + }, + "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { + "tabix": 1.21 + }, + "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { + "tabix": 1.21 + }, + "VARLOCIRAPTOR_CALLVARIANTS": { + "varlociraptor": "8.7.3" + }, + "VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES": { + "varlociraptor": "8.7.3" + }, + "VARLOCIRAPTOR_PREPROCESS": { + "varlociraptor": "8.7.3" + }, + "VCFTOOLS_TSTV_COUNT": { + "vcftools": "0.1.16" + } + }, + [ + "csv", + "csv/variantcalled.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/BETA-multiqc.parquet", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_variant_depths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/llms-full.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-single.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_samtools_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/samtools-stats-dp.txt", + "multiqc/multiqc_data/samtools_alignment_plot.txt", + "multiqc/multiqc_data/vcftools_tstv_by_count.txt", + "multiqc/multiqc_data/vcftools_tstv_by_qual.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths-log.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_variant_depths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-pct.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/samtools-stats-dp.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/vcftools_tstv_by_count.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths-cnt.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths-log.png", + "multiqc/multiqc_plots/png/bcftools_stats_variant_depths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-pct.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/samtools-stats-dp.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-cnt.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-pct.png", + "multiqc/multiqc_plots/png/vcftools_tstv_by_count.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths-log.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_variant_depths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-pct.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/samtools-stats-dp.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-cnt.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-pct.svg", + "multiqc/multiqc_plots/svg/vcftools_tstv_by_count.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_sarek_software_mqc_versions.yml", + "reference", + "reference/dict", + "reports", + "reports/bcftools", + "reports/bcftools/mutect2", + "reports/bcftools/mutect2/sample2", + "reports/bcftools/mutect2/sample2/sample2.mutect2.filtered.bcftools_stats.txt", + "reports/mosdepth", + "reports/mosdepth/sample2", + "reports/mosdepth/sample2/sample2.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample2/sample2.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample2/sample2.recal.mosdepth.summary.txt", + "reports/mosdepth/sample2/sample2.recal.per-base.bed.gz", + "reports/mosdepth/sample2/sample2.recal.per-base.bed.gz.csi", + "reports/mosdepth/sample2/sample2.recal.regions.bed.gz", + "reports/mosdepth/sample2/sample2.recal.regions.bed.gz.csi", + "reports/samtools", + "reports/samtools/sample2", + "reports/samtools/sample2/sample2.recal.cram.stats", + "reports/vcftools", + "reports/vcftools/mutect2", + "reports/vcftools/mutect2/sample2", + "reports/vcftools/mutect2/sample2/sample2.mutect2.filtered.FILTER.summary", + "reports/vcftools/mutect2/sample2/sample2.mutect2.filtered.TsTv.count", + "reports/vcftools/mutect2/sample2/sample2.mutect2.filtered.TsTv.qual", + "variant_calling", + "variant_calling/mutect2", + "variant_calling/mutect2/sample2", + "variant_calling/mutect2/sample2/sample2.mutect2.artifactprior.tar.gz", + "variant_calling/mutect2/sample2/sample2.mutect2.contamination.table", + "variant_calling/mutect2/sample2/sample2.mutect2.filtered.vcf.gz", + "variant_calling/mutect2/sample2/sample2.mutect2.filtered.vcf.gz.filteringStats.tsv", + "variant_calling/mutect2/sample2/sample2.mutect2.filtered.vcf.gz.tbi", + "variant_calling/mutect2/sample2/sample2.mutect2.pileups.table", + "variant_calling/mutect2/sample2/sample2.mutect2.segmentation.table", + "variant_calling/mutect2/sample2/sample2.mutect2.vcf.gz", + "variant_calling/mutect2/sample2/sample2.mutect2.vcf.gz.stats", + "variant_calling/mutect2/sample2/sample2.mutect2.vcf.gz.tbi", + "variant_calling/varlociraptor", + "variant_calling/varlociraptor/sample2", + "variant_calling/varlociraptor/sample2.mutect2.varlociraptor.vcf.gz", + "variant_calling/varlociraptor/sample2.mutect2.varlociraptor.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.alignment-properties.json", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.0.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.1.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.10.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.11.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.12.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.13.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.14.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.2.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.3.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.4.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.5.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.6.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.7.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.8.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.call.9.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.0.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.1.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.10.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.11.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.12.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.13.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.14.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.2.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.3.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.4.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.5.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.6.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.7.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.8.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.preprocess.9.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.0.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.0.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.1.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.1.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.10.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.10.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.11.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.11.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.12.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.12.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.13.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.13.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.14.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.14.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.2.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.2.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.3.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.3.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.4.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.4.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.5.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.5.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.6.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.6.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.7.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.7.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.8.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.8.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.9.vcf.gz", + "variant_calling/varlociraptor/sample2/sample2.mutect2.sort.9.vcf.gz.tbi", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.0.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.1.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.10.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.11.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.12.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.13.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.14.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.2.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.3.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.4.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.5.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.6.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.7.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.8.bcf", + "variant_calling/varlociraptor/sample2/sample2.mutect2.split.9.bcf", + "variant_calling/varlociraptor/sample2/sample2.scenario.varlociraptor.yaml", + "variant_calling/varlociraptor/sample2/versions.yml", + "variant_calling/varlociraptor/versions.yml" + ], + [ + "mosdepth-coverage-per-contig-single.txt:md5,1f24f2f40467234c410a8bda544a8aae", + "mosdepth-cumcoverage-dist-id.txt:md5,1036ea76acae803f591fd99838a8eded", + "mosdepth_perchrom.txt:md5,1f24f2f40467234c410a8bda544a8aae", + "multiqc_citations.txt:md5,d40980f61eb64026d58102841b7f3860", + "samtools-stats-dp.txt:md5,6618ece77181051a58275f504f67ea5b", + "samtools_alignment_plot.txt:md5,6136e5e1d072f166f280fb79424c392f", + "sample2.mutect2.filtered.bcftools_stats.txt:md5,5327cede1f3ad2139945607f66264928", + "sample2.recal.mosdepth.global.dist.txt:md5,f2dcd00a64947c49e8e4b93c2f4fbf27", + "sample2.recal.mosdepth.region.dist.txt:md5,39005ffaac22871ffaaf19656fe69c5b", + "sample2.recal.mosdepth.summary.txt:md5,68d4b98f17361fddf73052ead34fa370", + "sample2.recal.per-base.bed.gz:md5,39a1bc436aa8546c26faedbe94cb676c", + "sample2.recal.per-base.bed.gz.csi:md5,cfb07b0ba46e8468b4342edb243536f3", + "sample2.recal.regions.bed.gz:md5,b7561bc56a955f7db0f11e67e2ec0386", + "sample2.recal.regions.bed.gz.csi:md5,393c2749068304d8545b501b9d4658e4", + "sample2.mutect2.filtered.FILTER.summary:md5,276c858391322083833a42e04fe3554d", + "sample2.mutect2.filtered.TsTv.count:md5,fe3ff1f0c2ead72f037552727438e00a", + "sample2.mutect2.contamination.table:md5,46c708c943b453da89a3da08acfdb2a7", + "sample2.mutect2.filtered.vcf.gz.filteringStats.tsv:md5,d4bfaf449c12bbf4dbda370bbb26074c", + "sample2.mutect2.pileups.table:md5,df85ceff89be6f9a13707d9cda29dd6e", + "sample2.mutect2.segmentation.table:md5,f4643d9319bde4efbfbe516d6fb13052", + "sample2.mutect2.vcf.gz.stats:md5,3cc40a35727af6c5223fb45678f3f172", + "sample2.scenario.varlociraptor.yaml:md5,d85fd82470de636a7d97b869d6c32fbc", + "versions.yml:md5,5801f6b93715e00746dfcc63d089237e", + "versions.yml:md5,89014799369389411a683a1d4a7a06c7" + ], + "No BAM files", + "No CRAM files", + [ + "sample2.mutect2.filtered.vcf.gz:md5,245acd4882f96f2b60e63b7fce4cbc5", + "sample2.mutect2.vcf.gz:md5,a53450657afc33f2a7b87fd75bf24267" + ], + [ + "sample2.mutect2.varlociraptor.vcf.gz:summary,VcfFile [chromosomes=[chr21], sampleCount=2, variantCount=1258, phased=true, phasedAutodetect=false]" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-07-24T15:20:03.509919221" + }, + "-profile test --tools strelka,varlociraptor --input recalibrated_germline.csv": { + "content": [ + 65, + { + "BCFTOOLS_STATS": { + "bcftools": 1.21 + }, + "CREATE_INTERVALS_BED": { + "gawk": "5.1.0" + }, + "FILL_SCENARIO_FILE": { + "yte": "1.9.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "MERGE_CALLED_CHUNKS": { + "bcftools": 1.21 + }, + "MERGE_STRELKA": { + "gatk4": "4.6.1.0" + }, + "MERGE_STRELKA_GENOME": { + "gatk4": "4.6.1.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.10" + }, + "RBT_VCFSPLIT": { + "Rust-Bio-Tools": "0.42.2" + }, + "SAMTOOLS_STATS": { + "samtools": 1.21 + }, + "SORT_CALLED_CHUNKS": { + "bcftools": 1.21 + }, + "STRELKA_SINGLE": { + "strelka": "2.9.10" + }, + "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { + "tabix": 1.21 + }, + "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { + "tabix": 1.21 + }, + "VARLOCIRAPTOR_CALLVARIANTS": { + "varlociraptor": "8.7.3" + }, + "VARLOCIRAPTOR_ESTIMATEALIGNMENTPROPERTIES": { + "varlociraptor": "8.7.3" + }, + "VARLOCIRAPTOR_PREPROCESS": { + "varlociraptor": "8.7.3" + }, + "VCFTOOLS_TSTV_COUNT": { + "vcftools": "0.1.16" + } + }, + [ + "csv", + "csv/variantcalled.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/BETA-multiqc.parquet", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/llms-full.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-single.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_samtools_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/samtools-stats-dp.txt", + "multiqc/multiqc_data/samtools_alignment_plot.txt", + "multiqc/multiqc_data/vcftools_tstv_by_count.txt", + "multiqc/multiqc_data/vcftools_tstv_by_qual.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths-log.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-pct.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/samtools-stats-dp.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/vcftools_tstv_by_count.pdf", + "multiqc/multiqc_plots/pdf/vcftools_tstv_by_qual.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths-cnt.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths-log.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-pct.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/samtools-stats-dp.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-cnt.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-pct.png", + "multiqc/multiqc_plots/png/vcftools_tstv_by_count.png", + "multiqc/multiqc_plots/png/vcftools_tstv_by_qual.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths-log.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-pct.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/samtools-stats-dp.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-cnt.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-pct.svg", + "multiqc/multiqc_plots/svg/vcftools_tstv_by_count.svg", + "multiqc/multiqc_plots/svg/vcftools_tstv_by_qual.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_sarek_software_mqc_versions.yml", + "reference", + "reference/dict", + "reports", + "reports/bcftools", + "reports/bcftools/strelka", + "reports/bcftools/strelka/sample1", + "reports/bcftools/strelka/sample1/sample1.strelka.variants.bcftools_stats.txt", + "reports/mosdepth", + "reports/mosdepth/sample1", + "reports/mosdepth/sample1/sample1.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample1/sample1.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample1/sample1.recal.mosdepth.summary.txt", + "reports/mosdepth/sample1/sample1.recal.per-base.bed.gz", + "reports/mosdepth/sample1/sample1.recal.per-base.bed.gz.csi", + "reports/mosdepth/sample1/sample1.recal.regions.bed.gz", + "reports/mosdepth/sample1/sample1.recal.regions.bed.gz.csi", + "reports/samtools", + "reports/samtools/sample1", + "reports/samtools/sample1/sample1.recal.cram.stats", + "reports/vcftools", + "reports/vcftools/strelka", + "reports/vcftools/strelka/sample1", + "reports/vcftools/strelka/sample1/sample1.strelka.variants.FILTER.summary", + "reports/vcftools/strelka/sample1/sample1.strelka.variants.TsTv.count", + "reports/vcftools/strelka/sample1/sample1.strelka.variants.TsTv.qual", + "variant_calling", + "variant_calling/strelka", + "variant_calling/strelka/sample1", + "variant_calling/strelka/sample1/sample1.strelka.genome.vcf.gz", + "variant_calling/strelka/sample1/sample1.strelka.genome.vcf.gz.tbi", + "variant_calling/strelka/sample1/sample1.strelka.variants.vcf.gz", + "variant_calling/strelka/sample1/sample1.strelka.variants.vcf.gz.tbi", + "variant_calling/varlociraptor", + "variant_calling/varlociraptor/sample1", + "variant_calling/varlociraptor/sample1.strelka.varlociraptor.vcf.gz", + "variant_calling/varlociraptor/sample1.strelka.varlociraptor.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.alignment-properties.json", + "variant_calling/varlociraptor/sample1/sample1.scenario.varlociraptor.yaml", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.0.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.1.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.10.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.11.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.12.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.13.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.14.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.2.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.3.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.4.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.5.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.6.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.7.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.8.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.call.9.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.0.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.1.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.10.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.11.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.12.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.13.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.14.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.2.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.3.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.4.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.5.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.6.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.7.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.8.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.preprocess.9.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.0.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.0.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.1.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.1.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.10.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.10.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.11.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.11.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.12.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.12.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.13.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.13.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.14.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.14.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.2.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.2.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.3.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.3.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.4.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.4.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.5.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.5.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.6.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.6.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.7.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.7.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.8.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.8.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.9.vcf.gz", + "variant_calling/varlociraptor/sample1/sample1.strelka.sort.9.vcf.gz.tbi", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.0.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.1.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.10.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.11.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.12.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.13.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.14.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.2.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.3.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.4.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.5.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.6.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.7.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.8.bcf", + "variant_calling/varlociraptor/sample1/sample1.strelka.split.9.bcf", + "variant_calling/varlociraptor/sample1/versions.yml", + "variant_calling/varlociraptor/versions.yml" + ], + [ + "mosdepth-coverage-per-contig-single.txt:md5,04d9eccc248633a38fb253bc70fb8d62", + "mosdepth-cumcoverage-dist-id.txt:md5,b7016944a8325bef2c0ed542246acfa9", + "mosdepth_perchrom.txt:md5,04d9eccc248633a38fb253bc70fb8d62", + "multiqc_citations.txt:md5,d40980f61eb64026d58102841b7f3860", + "samtools-stats-dp.txt:md5,41d36c1a8413d565788a1a364b467606", + "samtools_alignment_plot.txt:md5,35f8fd2a557568b2237193f46afbab5c", + "sample1.strelka.variants.bcftools_stats.txt:md5,7d091579d450a6f6d6e6ed9795dce0cb", + "sample1.recal.mosdepth.global.dist.txt:md5,69e29702ef01fd8f6c7a5468fc35a16a", + "sample1.recal.mosdepth.region.dist.txt:md5,6ec49cd7d510c2eb3d9d90fdb79b783a", + "sample1.recal.mosdepth.summary.txt:md5,103098d0bf76ed82d2b87d5f242b099a", + "sample1.recal.per-base.bed.gz:md5,297f96648928d0ca5184223fb9941e7c", + "sample1.recal.per-base.bed.gz.csi:md5,c67dcd711b096eb42f43784d5eadbc0d", + "sample1.recal.regions.bed.gz:md5,314ce8d7273eff353072108aa77c327c", + "sample1.recal.regions.bed.gz.csi:md5,9cb0ad7039a3b703d16ca7d5b835c0ee", + "sample1.strelka.variants.FILTER.summary:md5,2048a5de0201a6052c988a0189979a5f", + "sample1.strelka.variants.TsTv.count:md5,c5b7a8eda2526d899098439ae4c06a49", + "sample1.scenario.varlociraptor.yaml:md5,d85fd82470de636a7d97b869d6c32fbc", + "versions.yml:md5,a63bc0b16651b27b86c46544841882b2", + "versions.yml:md5,727660c1a65c2574d554bd2d299d0ecd" + ], + "No BAM files", + "No CRAM files", + [ + "sample1.strelka.genome.vcf.gz:md5,9f77528d7bb6c4b2c09eacf71a716439", + "sample1.strelka.variants.vcf.gz:md5,5af34e7b632f604dc7a224f977fc2898" + ], + [ + "sample1.strelka.varlociraptor.vcf.gz:summary,VcfFile [chromosomes=[chr21], sampleCount=2, variantCount=53245, phased=true, phasedAutodetect=false]" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-07-24T15:13:34.919176149" + } +} \ No newline at end of file diff --git a/workflows/sarek/main.nf b/workflows/sarek/main.nf index 429ee3c7d..7b3778d9f 100644 --- a/workflows/sarek/main.nf +++ b/workflows/sarek/main.nf @@ -99,6 +99,7 @@ workflow SAREK { rt_file sentieon_dnascope_model snpeff_cache + varlociraptor_scenario_file vep_cache vep_cache_version vep_extra_files @@ -398,12 +399,20 @@ workflow SAREK { ) // POST VARIANTCALLING - POST_VARIANTCALLING(BAM_VARIANT_CALLING_GERMLINE_ALL.out.vcf_all, + POST_VARIANTCALLING(params.tools, + cram_variant_calling_status_normal, + BAM_VARIANT_CALLING_GERMLINE_ALL.out.vcf_all, + cram_variant_calling_tumor_only, BAM_VARIANT_CALLING_TUMOR_ONLY_ALL.out.vcf_all, + cram_variant_calling_pair, BAM_VARIANT_CALLING_SOMATIC_ALL.out.vcf_all, fasta, + fasta_fai, params.concatenate_vcfs, - params.normalize_vcfs) + params.normalize_vcfs, + params.varlociraptor_chunk_size, + varlociraptor_scenario_file + ) // Gather vcf files for annotation and QC vcf_to_annotate = Channel.empty()