Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: filter snvs #62

Closed
wants to merge 11 commits into from
9 changes: 9 additions & 0 deletions config/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ modules:
prealignment: "v1.1.0"
qc: "v0.3.0"
reports: "7c8b8c5"
snv_indels: "v0.6.0"
misc: "v0.1.0"
sentieon: "b002d39"

Expand Down Expand Up @@ -117,8 +118,10 @@ fastqc:
container: "docker://hydragenetics/fastqc:0.11.9"

filter_vcf:
sample_name_regex: "^([A-Za-z0-9-]+_[RT])$"
germline: "config/config_germline_filter.yaml"
cnv_hardfilter: "config/config_cnv_hardfilter.yaml"
somatic: "config/config_snv_softfilter.yaml"

fusioncatcher:
container: "docker://hydragenetics/fusioncatcher:1.33"
Expand Down Expand Up @@ -337,3 +340,9 @@ vep:
container: "docker://hydragenetics/vep:105"
vep_cache: ""
extra: "--assembly GRCh38 --check_existing --pick --sift b --polyphen b --ccds --uniprot --hgvs --symbol --numbers --domains --regulatory --canonical --protein --biotype --uniprot --tsl --appris --gene_phenotype --af --af_1kg --af_gnomad --max_af --pubmed --variant_class"

vt_decompose:
container: "docker://hydragenetics/vt:2015.11.10"

vt_normalize:
container: "docker://hydragenetics/vt:2015.11.10"
51 changes: 51 additions & 0 deletions config/config_snv_softfilter.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
filters:
af:
description: "Softfilter variants where T have AF lower than 5 percent"
expression: "FORMAT:AF:0 < 0.05"
soft_filter: "True"
soft_filter_flag: "AF_lt_0.05"
ad:
description: "Softfilter variants where T have AD lower than 3?"
expression: "FORMAT:AD:1 < 3"
soft_filter: "True"
soft_filter_flag: "AD_lt_3"
dp:
description: "Softfilter variants where dp is lower than 10x"
expression: "FORMAT:DP < 10"
soft_filter: "True"
soft_filter_flag: "DP_lt_10"
germline:
description: "Soft filter germline if >2% in any population from 1000 genomes, ESP or gnomADe"
expression: "(VEP:MAX_AF > 0.02)"
soft_filter_flag: "PopAF_0.02"
soft_filter: "True"
intron:
description: "Soft filter intronic variants except if also splice"
expression: "(exist[intron_variant, VEP:Consequence] and !exist[splice, VEP:Consequence])"
soft_filter_flag: "Intron"
soft_filter: "True"
protein_coding:
description: "Soft filter variants not deemed protein_coding"
expression: "(VEP:BIOTYPE != protein_coding)"
soft_filter_flag: "Biotype"
soft_filter: "True"
consequences:
description: "Soft filter based on consequences"
expression:
"(exist[intergenic_variant, VEP:Consequence] or exist[NMD_transcript_variant, VEP:Consequence] or
exist[non_coding_transcript_variant, VEP:Consequence] or
exist[upstream_gene_variant, VEP:Consequence] or
exist[downstream_gene_variant, VEP:Consequence] or
exist[TFBS_ablation, VEP:Consequence] or
exist[TFBS_amplification, VEP:Consequence] or
exist[TF_binding_site_variant, VEP:Consequence] or
exist[regulatory_region_ablation, VEP:Consequence] or
exist[regulatory_region_amplification, VEP:Consequence] or
exist[regulatory_region_variant, VEP:Consequence])"
soft_filter_flag: "Consequence"
soft_filter: "True"
n_ratio:
description: "Soft filter variants where normal freq is atleast 5 times bigger than tumour freq"
expression: "INFO:NA_FALSE:N_ratio > 5"
soft_filter_flag: "N_ratio_lgt_5"
soft_filter: "True"
36 changes: 18 additions & 18 deletions config/output_files.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,28 @@

"Results/{sample}/Cram/{sample}_{type}.crumble.cram": {"name": "_results_cram", "file": "compression/crumble/{sample}_{type}.crumble.cram", "types": ["T", "N"]},
"Results/{sample}/Cram/{sample}_{type}.crumble.cram.crai": {"name": "_results_crai", "file": "compression/crumble/{sample}_{type}.crumble.cram.crai", "types": ["T", "N"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.vcf.gz": {"name": "_results_vcf_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.vcf.gz.tbi": {"name": "_results_tbi_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.all.vcf.gz": {"name": "_results_vcf_all_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.all.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.all.vcf.gz.tbi": {"name": "_results_tbi_all_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.all.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.aml.vcf.gz": {"name": "_results_vcf_aml_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.aml.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.aml.vcf.gz.tbi": {"name": "_results_tbi_aml_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.aml.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.tm.vcf.gz": {"name": "_results_vcf_tm_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.tm.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.tm.vcf.gz.tbi": {"name": "_results_tbi_tm_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.tm.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.vcf.gz": {"name": "_results_vcf_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.vcf.gz.tbi": {"name": "_results_tbi_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.all.vcf.gz": {"name": "_results_vcf_all_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.all.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.all.vcf.gz.tbi": {"name": "_results_tbi_all_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.all.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.aml.vcf.gz": {"name": "_results_vcf_aml_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.aml.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.aml.vcf.gz.tbi": {"name": "_results_tbi_aml_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.aml.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.tm.vcf.gz": {"name": "_results_vcf_tm_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.tm.vcf.gz", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.vep.tm.vcf.gz.tbi": {"name": "_results_tbi_tm_t", "file": "parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.tm.vcf.gz.tbi", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_T.xlsx": {"name": "_results_xlsx_t", "file": "export_to_xlsx/t/{sample}_T.snvs.xlsx", "types": ["T"]},

"Results/{sample}/SNV_indels/{sample}_TN.vep.vcf.gz": {"name": "_results_vcf_tn", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.vcf.gz.tbi": {"name": "_results_tbi_tn", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.all.vcf.gz": {"name": "_results_vcf_all", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.all.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.all.vcf.gz.tbi": {"name": "_results_tbi_all", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.all.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.aml.vcf.gz": {"name": "_results_vcf_aml", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.aml.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.aml.vcf.gz.tbi": {"name": "_results_tbi_aml", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.aml.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.tm.vcf.gz": {"name": "_results_vcf_tm", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.tm.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.tm.vcf.gz.tbi": {"name": "_results_tbi_tm", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.tm.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.vcf.gz": {"name": "_results_vcf_tn", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.vcf.gz.tbi": {"name": "_results_tbi_tn", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.all.vcf.gz": {"name": "_results_vcf_all", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.all.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.all.vcf.gz.tbi": {"name": "_results_tbi_all", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.all.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.aml.vcf.gz": {"name": "_results_vcf_aml", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.aml.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.aml.vcf.gz.tbi": {"name": "_results_tbi_aml", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.aml.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.tm.vcf.gz": {"name": "_results_vcf_tm", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.tm.vcf.gz", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.vep.tm.vcf.gz.tbi": {"name": "_results_tbi_tm", "file": "parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.tm.vcf.gz.tbi", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_TN.xlsx": {"name": "_results_xlsx_tn", "file": "export_to_xlsx/tn/{sample}.snvs.xlsx", "types": ["TN"]},

"Results/{sample}/SNV_indels/{sample}_mutectcaller_T.all.tsv": {"name": "_results_tsv_all_t", "file": "tsv_files/{sample}_mutectcaller_t.all.tsv", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_mutectcaller_T.aml.tsv": {"name": "_results_tsv_aml_t", "file": "tsv_files/{sample}_mutectcaller_t.aml.tsv", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_mutectcaller_T.all.tsv": {"name": "_results_tsv_all_t", "file": "tsv_files/{sample}_T_mutectcaller_t.all.tsv", "types": ["T"]},
"Results/{sample}/SNV_indels/{sample}_mutectcaller_T.aml.tsv": {"name": "_results_tsv_aml_t", "file": "tsv_files/{sample}_T_mutectcaller_t.aml.tsv", "types": ["T"]},

"Results/{sample}/SNV_indels/{sample}_mutectcaller_TN.all.tsv": {"name": "_results_tsv_all", "file": "tsv_files/{sample}_mutectcaller_tn.all.tsv", "types": ["TN"]},
"Results/{sample}/SNV_indels/{sample}_mutectcaller_TN.aml.tsv": {"name": "_results_tsv_aml", "file": "tsv_files/{sample}_mutectcaller_tn.aml.tsv", "types": ["TN"]},
Expand Down
21 changes: 21 additions & 0 deletions docs/softwares.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,24 @@ Introduction to export_to_xlsx
#### Resources settings (`resources.yaml`)

#RESOURCESSCHEMA__export_to_xlsx#

## [annotate_normal_ratio](url_to_tool)
Introduction to annotate_normal_ratio

### :snake: Rule

#SNAKEMAKE_RULE_SOURCE__annotate__annotate_normal_ratio#

#### :left_right_arrow: input / output files

#SNAKEMAKE_RULE_TABLE__annotate__annotate_normal_ratio#

### :wrench: Configuration

#### Software settings (`config.yaml`)

#CONFIGSCHEMA__annotate_normal_ratio#

#### Resources settings (`resources.yaml`)

#RESOURCESSCHEMA__annotate_normal_ratio#
99 changes: 61 additions & 38 deletions workflow/Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ __license__ = "GPL-3"


include: "rules/common.smk"
include: "rules/annotate.smk"
include: "rules/cnvkit.smk"
include: "rules/cnvkit_table.smk"
include: "rules/dux4_rearrangements.smk"
Expand Down Expand Up @@ -96,40 +97,21 @@ use rule * from annotation as annotation_*

use rule vep from annotation as annotation_vep with:
input:
vcf="parabricks/pbrun_mutectcaller_tn/{sample}.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_tn/{sample}.vcf.gz.tbi",
vcf="parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vcf.gz.tbi",
cache=config["vep"]["vep_cache"],
fasta=config["reference"]["fasta"],
output:
vcf=temp("parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf"),
vcf=temp("parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vep.vcf"),
log:
"parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf.log",
"parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vep.vcf.log",
benchmark:
repeat(
"parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf.benchmark.tsv",
"parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vep.vcf.benchmark.tsv",
config.get("vep", {}).get("benchmark_repeats", 1),
)
message:
"{rule}: Annotate {wildcards.sample}.vcf"


use rule vep from annotation as annotation_vep_t with:
input:
vcf="parabricks/pbrun_mutectcaller_t/{sample}_T.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_t/{sample}_T.vcf.gz.tbi",
cache=config["vep"]["vep_cache"],
fasta=config["reference"]["fasta"],
output:
vcf=temp("parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf"),
log:
"parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf.log",
benchmark:
repeat(
"parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf.benchmark.tsv",
config.get("vep", {}).get("benchmark_repeats", 1),
)
message:
"{rule}: Annotate {wildcards.sample}_T.vcf"
"{rule}: Annotate {input.vcf} with vep"


use rule simple_sv_annotation from annotation as annotation_simple_sv_annotation_tn with:
Expand All @@ -147,7 +129,7 @@ use rule simple_sv_annotation from annotation as annotation_simple_sv_annotation
config.get("snpeff", {}).get("benchmark_repeats", 1),
)
message:
"{rule}: Annotate cnv_sv/manta_run_workflow_tn/{wildcards.sample}/results/variants/somaticSV.snpeff.vcf.gz"
"{rule}: Annotate {input.vcf}"


use rule simple_sv_annotation from annotation as annotation_simple_sv_annotation_t with:
Expand Down Expand Up @@ -324,18 +306,18 @@ use rule filter_vcf from filtering as filtering_filter_vcf

use rule bcftools_filter_include_region from filtering as filtering_bcftools_filter_include_region_snv_t with:
input:
vcf="parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_t/{sample}_T.vep.vcf.gz.tbi",
vcf="parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.vcf.gz.tbi",
output:
vcf=temp("parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.{bed}.vcf"),
vcf=temp("parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.{bed}.vcf"),
params:
filter=lambda wildcards: "-R %s" % config["bcftools_SNV"][wildcards.bed],
extra=config.get("bcftools_SNV", {}).get("extra", ""),
log:
"parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.{bed}.vcf.log",
"parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.{bed}.vcf.log",
benchmark:
repeat(
"parabricks/pbrun_mutectcaller_t/{sample}_T.vep.include.{bed}.vcf.benchmark.tsv",
"parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vep.filter.somatic.include.{bed}.vcf.benchmark.tsv",
config.get("bcftools_SNV", {}).get("benchmark_repeats", 1),
)
message:
Expand All @@ -344,18 +326,18 @@ use rule bcftools_filter_include_region from filtering as filtering_bcftools_fil

use rule bcftools_filter_include_region from filtering as filtering_bcftools_filter_include_region_snv_tn with:
input:
vcf="parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_tn/{sample}.vep.vcf.gz.tbi",
vcf="parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.vcf.gz",
tabix="parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.vcf.gz.tbi",
output:
vcf=temp("parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.{bed}.vcf"),
vcf=temp("parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.{bed}.vcf"),
params:
filter=lambda wildcards: "-R %s" % config["bcftools_SNV"][wildcards.bed],
extra=config.get("bcftools_SNV", {}).get("extra", ""),
log:
"parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.{bed}.vcf.log",
"parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.{bed}.vcf.log",
benchmark:
repeat(
"parabricks/pbrun_mutectcaller_tn/{sample}.vep.include.{bed}.vcf.benchmark.tsv",
"parabricks/pbrun_mutectcaller_tn/{sample}.normalized.vep.ratio.filter.somatic.include.{bed}.vcf.benchmark.tsv",
config.get("bcftools_SNV", {}).get("benchmark_repeats", 1),
)
message:
Expand Down Expand Up @@ -556,9 +538,9 @@ if aligner == "bwa_sentieon":

use rule peddy from qc as qc_peddy with:
input:
vcf="parabricks/pbrun_mutectcaller_t/{sample}_T.vcf.gz",
vcf="parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vcf.gz",
ped="qc/peddy/{sample}.peddy.fam",
tbi="parabricks/pbrun_mutectcaller_t/{sample}_T.vcf.gz.tbi",
tbi="parabricks/pbrun_mutectcaller_t/{sample}_T.normalized.vcf.gz.tbi",
output:
ped=temp("qc/peddy/{sample}/peddy.peddy.ped"),
ped_check=temp("qc/peddy/{sample}/peddy.ped_check.csv"),
Expand Down Expand Up @@ -712,6 +694,47 @@ use rule cnv_html_report from reports as reports_cnv_html_report with:
tc_method="pathology",


module snv_indels:
snakefile:
github(
"hydra-genetics/snv_indels",
path="workflow/Snakefile",
tag=config["modules"]["snv_indels"],
)
config:
config


use rule vt_decompose from snv_indels as snv_indels_vt_decompose with:
input:
vcf="parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.vcf.gz",
tbi="parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.vcf.gz.tbi",
output:
vcf=temp("parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.decomposed.vcf.gz"),
log:
"parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.decomposed.vcf.gz.log",
benchmark:
repeat(
"parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.decomposed.vcf.gz.benchmark.tsv",
config.get("vt_decompose", {}).get("benchmark_repeats", 1),
)


use rule vt_normalize from snv_indels as snv_indels_vt_normalize with:
input:
vcf="parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.decomposed.vcf.gz",
ref=config["reference"]["fasta"],
output:
vcf="parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vcf.gz",
log:
"parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vcf.gz.log",
benchmark:
repeat(
"parabricks/pbrun_mutectcaller_{analysis}/{sample_type}.normalized.vcf.gz.benchmark.tsv",
config.get("vt_normalize", {}).get("benchmark_repeats", 1),
)


module misc:
snakefile:
github("hydra-genetics/misc", path="workflow/Snakefile", tag=config["modules"]["misc"])
Expand Down
Loading
Loading