Skip to content

Commit 3df840b

Browse files
🚧 exome/panel genotyping (#53)
* 🚧 restrucutre genotyping wf * 🚧 rework fitlering and defaults * 🚧 rework hardfiltering 🐛 fix typos 🧹 cleanup unused tools 🧹 return old output name * 🔧 update snv ports for genotyping * update docker table (#56) Co-authored-by: dmiller15 <[email protected]> * 📚 update docs for genotype filtering (#57) * 📚 update docs for genotype filtering * 📚 clarify docs --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 22bc391 commit 3df840b

22 files changed

+709
-350
lines changed

docs/GATK_GERMLINE_README.md

+46-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,51 @@
11
# Kids First DRC Single Sample Genotyping Workflow
22
Kids First Data Resource Center Single Sample Genotyping Workflow. This workflow closely mirrors the [Kids First DRC Joint Genotyping Workflow](https://github.com/kids-first/kf-jointgenotyping-workflow/blob/master/workflow/kfdrc-jointgenotyping-refinement-workflow.cwl).
3-
While the Joint Genotyping Workflow is meant to be used with trios, this workflow is meant for processing single samples.
4-
The key difference in this pipeline is a change in filtering between when the final VCF is gathered by GATK GatherVcfCloud and when it is annotated by VEP bcftools (see [Kids First DRC Germline SNV Annotation Workflow docs](https://github.com/kids-first/kf-annotation-tools/blob/v1.1.0/docs/GERMLINE_SNV_ANNOT_README.md) ).
5-
Unlike the Joint Genotyping Workflow, a germline-oriented [GATK hard filtering process](https://gatk.broadinstitute.org/hc/en-us/articles/360035890471-Hard-filtering-germline-short-variants) is performed and CalculateGenotypePosteriors has been removed.
6-
While somatic samples can be run through this workflow, be wary that the filtering process is specifically tuned for germline data.
3+
4+
While the Joint Genotyping Workflow is meant to be used with whole genome
5+
sequenced trios, this workflow is meant for processing single samples from any
6+
sequencing experiment. The key difference between the different approaches is
7+
the filtering process.
8+
9+
While non-germline samples can be run through this workflow, be wary that the
10+
filtering process (VQSR/Hard Filtering) is specifically tuned for germline
11+
data. We strongly recommend manually adjusting this process to fit your data.
12+
See the available `vqsr_` and `hardfilter_` options.
13+
14+
## GATK Genotype Site-Level Filtering
15+
16+
Coming out of the GATK Genotyping process, site-level filtering must be done to
17+
remove variants that might adversely affect downstream analysis.
18+
19+
GATK provides many different approaches to filtering:
20+
- Variant Quality Score Recalibration (VQSR)
21+
- CNNScoreVariants/NVScoreVariants
22+
- Variant Extract-Train-Score (VETS)
23+
- Hard Filtering
24+
25+
The first three are all complex, model-based approaches that attempt to infer
26+
cutoff points based on the data provided. Hard Filtering involves manually setting
27+
thresholds and removing variants that fail to meet those thresholds. For this
28+
workflow, we only make use of VQSR and Hard Filtering at this time.
29+
30+
VQSR, being a model based approach, needs sufficient data to construct that
31+
model. Normally in the joint filtering context, this means having hundreds of
32+
samples. According to the documentation: "it is not suitable for some
33+
small-scale experiments, such as targeted gene panels or exome studies with
34+
fewer than 30 exomes." Therefore, VQSR is only activated in this workflow when
35+
the input gVCFs for this workflow come from whole genome sequencing experiments
36+
or when the user provides 30 or more exome gVCFs. The 30+ samples will be jointly
37+
genotpyed and that genotyped VCF will be provided to VQSR.
38+
39+
Hard Filtering is really only constrained by having sufficient depth. In the
40+
case of exome and targeted sequencing, the depths are more than sufficient. Our
41+
current approach for hard filtering mirrors the default approach outlined in
42+
the GATK documentation. However as they point out, "You absolutely SHOULD
43+
expect to have to evaluate your results critically and TRY AGAIN with some
44+
parameter adjustments until you find the settings that are right for your
45+
data." As such, the workflow also allows you to provide your own hard filters
46+
to replace the defaults in this workflow.
47+
48+
## Running the Workflow
749

850
If you would like to run this workflow using the CAVATICA public app, a basic primer on running public apps can be found [here](https://www.notion.so/d3b/Starting-From-Scratch-Running-Cavatica-af5ebb78c38a4f3190e32e67b4ce12bb).
951
Alternatively, if you'd like to run it locally using `cwltool`, a basic primer on that can be found [here](https://www.notion.so/d3b/Starting-From-Scratch-Running-CWLtool-b8dbbde2dc7742e4aff290b0a878344d) and combined with app-specific info from the readme below.

docs/dockers_gatk_genotyping.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ bcftools_concat.cwl|pgc-images.sbgenomics.com/d3b-bixu/vcfutils:latest
77
bcftools_filter_vcf.cwl|pgc-images.sbgenomics.com/d3b-bixu/bcftools:1.20
88
bcftools_strip_ann.cwl|pgc-images.sbgenomics.com/d3b-bixu/vcfutils:latest
99
echtvar_anno.cwl|pgc-images.sbgenomics.com/d3b-bixu/echtvar:0.2.0
10+
filtering_defaults.cwl|None
1011
gatk_applyrecalibration.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
1112
gatk_gatherfinalvcf.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
1213
gatk_gathertranches.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
1314
gatk_gathervcfs.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
14-
gatk_import_genotype_filtergvcf_merge.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
15+
gatk_genomicsdbimport_genotypegvcfs.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
1516
gatk_indelsvariantrecalibrator.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
17+
gatk_makesitesonlyvcf.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
1618
gatk_selectvariants.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.2.0.0R
1719
gatk_snpsvariantrecalibratorcreatemodel.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
1820
gatk_snpsvariantrecalibratorscattered.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0

docs/dockers_germline_variant.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ echtvar_anno.cwl|pgc-images.sbgenomics.com/d3b-bixu/echtvar:0.2.0
2424
expression_create_index_array.cwl|None
2525
expression_transpose_two_dimension_array.cwl|None
2626
file_to_file_array.cwl|None
27+
filtering_defaults.cwl|None
2728
freebayes.cwl|staphb/freebayes:1.3.6
2829
gatk_applyrecalibration.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
2930
gatk_bedtointervallist.cwl|broadinstitute/gatk:4.4.0.0
@@ -32,12 +33,13 @@ gatk_determinegermlinecontigploidy_case.cwl|broadinstitute/gatk:4.2.0.0
3233
gatk_gatherfinalvcf.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
3334
gatk_gathertranches.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
3435
gatk_gathervcfs.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
36+
gatk_genomicsdbimport_genotypegvcfs.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
3537
gatk_germlinecnvcaller_case.cwl|broadinstitute/gatk:4.2.0.0
3638
gatk_haplotypecaller.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.beta.1-3.5
37-
gatk_import_genotype_filtergvcf_merge.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
3839
gatk_indelsvariantrecalibrator.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
3940
gatk_intervallisttobed.cwl|broadinstitute/gatk:4.4.0.0
4041
gatk_intervallisttools.cwl|broadinstitute/gatk:4.4.0.0
42+
gatk_makesitesonlyvcf.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.0.12.0
4143
gatk_mergevcfs.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.1.1.0
4244
gatk_postprocessgermlinecnvcalls.cwl|broadinstitute/gatk:4.2.0.0
4345
gatk_preprocessintervals.cwl|pgc-images.sbgenomics.com/d3b-bixu/gatk:4.2.0.0R

subworkflows/kfdrc-gatk-hardfiltering.cwl

+28-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
cwlVersion: v1.0
1+
cwlVersion: v1.2
22
class: Workflow
33
id: kfdrc-gatk-hardfiltering
4+
requirements:
5+
- class: StepInputExpressionRequirement
6+
- class: InlineJavascriptRequirement
47
doc: |-
58
This workflow performs manual site-level variant filtration on an input VCF using the generic hard-filtering thresholds and example commands in the
69
[documentation from Broad](https://gatk.broadinstitute.org/hc/en-us/articles/360035531112--How-to-Filter-variants-either-with-VQSR-or-by-hard-filtering#2).
@@ -9,11 +12,17 @@ doc: |-
912
Finally the VCFs are merged back together using bcftools concat and returned.
1013

1114
inputs:
12-
input_vcf: {type: 'File', secondaryFiles: [.tbi], doc: "Input VCF containing INDEL and SNP variants"}
15+
input_vcf: {type: 'File', secondaryFiles: [{pattern: '.tbi', required: true}], doc: "Input VCF containing INDEL and SNP variants"}
1316
output_basename: {type: 'string', doc: "String value to use as the base for the filename of the output"}
17+
snp_hardfilters: {type: 'string', doc: "String value of hardfilters to set for SNPs in input_vcf" }
18+
indel_hardfilters: {type: 'string', doc: "String value of hardfilters to set for INDELs in input_vcf" }
19+
snp_filtration_extra_args: {type: 'string?', doc: "Any extra arguments for SNP VariantFiltration" }
20+
indel_filtration_extra_args: {type: 'string?', doc: "Any extra arguments for INDEL VariantFiltration" }
21+
filtration_cpu: { type: 'int?', doc: "CPUs to allocate to GATK VariantFiltration" }
22+
filtration_ram: { type: 'int?', doc: "GB of RAM to allocate to GATK VariantFiltration" }
1423

1524
outputs:
16-
hardfiltered_vcf: {type: 'File', outputSource: bcftools_concat_snps_indels/output}
25+
hardfiltered_vcf: {type: 'File', secondaryFiles: [{pattern: '.tbi', required: true}], outputSource: bcftools_concat_snps_indels/output}
1726

1827
steps:
1928
gatk_selectvariants_snps:
@@ -34,15 +43,27 @@ steps:
3443
run: ../tools/gatk_variantfiltration.cwl
3544
in:
3645
input_vcf: gatk_selectvariants_snps/output
37-
output_basename: output_basename
38-
selection: {valueFrom: "SNP"}
46+
output_basename:
47+
source: output_basename
48+
valueFrom: |
49+
$(self).snp.filtered
50+
variant_filters: snp_hardfilters
51+
extra_args: snp_filtration_extra_args
52+
max_memory: filtration_ram
53+
cpu: filtration_cpu
3954
out: [output]
4055
gatk_variantfiltration_indels:
4156
run: ../tools/gatk_variantfiltration.cwl
4257
in:
4358
input_vcf: gatk_selectvariants_indels/output
44-
output_basename: output_basename
45-
selection: {valueFrom: "INDEL"}
59+
output_basename:
60+
source: output_basename
61+
valueFrom: |
62+
$(self).indel.filtered
63+
variant_filters: indel_hardfilters
64+
extra_args: indel_filtration_extra_args
65+
max_memory: filtration_ram
66+
cpu: filtration_cpu
4667
out: [output]
4768
bcftools_concat_snps_indels:
4869
run: ../tools/bcftools_concat.cwl

subworkflows/kfdrc-gatk-vqsr.cwl

+177
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
cwlVersion: v1.2
2+
class: Workflow
3+
id: kfdrc-gatk-vqsr
4+
doc: |-
5+
GATK workflow for Variant Quality Score Recalibration (VQSR)
6+
requirements:
7+
- class: ScatterFeatureRequirement
8+
- class: InlineJavascriptRequirement
9+
- class: StepInputExpressionRequirement
10+
11+
inputs:
12+
genotyped_vcfs: {type: 'File[]', secondaryFiles: [{pattern: '.tbi', required: true}], doc: "Input VCF that has been jointly genotyped"}
13+
output_basename: {type: 'string', doc: "String value to use as the base for the filename of the output"}
14+
15+
axiomPoly_resource_vcf: {type: File, secondaryFiles: [{pattern: '.tbi', required: true}], doc: 'Axiom_Exome_Plus.genotypes.all_populations.poly.hg38.vcf.gz',
16+
"sbg:suggestedValue": {class: File, path: 60639016357c3a53540ca7c7, name: Axiom_Exome_Plus.genotypes.all_populations.poly.hg38.vcf.gz,
17+
secondaryFiles: [{class: File, path: 6063901d357c3a53540ca81b, name: Axiom_Exome_Plus.genotypes.all_populations.poly.hg38.vcf.gz.tbi}]}}
18+
dbsnp_vcf: {type: File, secondaryFiles: [{pattern: '.idx', required: true}], doc: 'Homo_sapiens_assembly38.dbsnp138.vcf', "sbg:suggestedValue": {
19+
class: File, path: 6063901f357c3a53540ca84b, name: Homo_sapiens_assembly38.dbsnp138.vcf, secondaryFiles: [{class: File, path: 6063901e357c3a53540ca834,
20+
name: Homo_sapiens_assembly38.dbsnp138.vcf.idx}]}}
21+
hapmap_resource_vcf: {type: File, secondaryFiles: [{pattern: '.tbi', required: true}], doc: 'Hapmap genotype SNP input vcf', "sbg:suggestedValue": {
22+
class: File, path: 60639016357c3a53540ca7be, name: hapmap_3.3.hg38.vcf.gz, secondaryFiles: [{class: File, path: 60639016357c3a53540ca7c5,
23+
name: hapmap_3.3.hg38.vcf.gz.tbi}]}}
24+
mills_resource_vcf: {type: File, secondaryFiles: [{pattern: '.tbi', required: true}], doc: 'Mills_and_1000G_gold_standard.indels.hg38.vcf.gz',
25+
"sbg:suggestedValue": {class: File, path: 6063901a357c3a53540ca7f3, name: Mills_and_1000G_gold_standard.indels.hg38.vcf.gz, secondaryFiles: [
26+
{class: File, path: 6063901c357c3a53540ca806, name: Mills_and_1000G_gold_standard.indels.hg38.vcf.gz.tbi}]}}
27+
omni_resource_vcf: {type: File, secondaryFiles: [{pattern: '.tbi', required: true}], doc: '1000G_omni2.5.hg38.vcf.gz', "sbg:suggestedValue": {
28+
class: File, path: 6063901e357c3a53540ca835, name: 1000G_omni2.5.hg38.vcf.gz, secondaryFiles: [{class: File, path: 60639016357c3a53540ca7b1,
29+
name: 1000G_omni2.5.hg38.vcf.gz.tbi}]}}
30+
one_thousand_genomes_resource_vcf: {type: File, secondaryFiles: [{pattern: '.tbi', required: true}], doc: '1000G_phase1.snps.high_confidence.hg38.vcf.gz,
31+
high confidence snps', "sbg:suggestedValue": {class: File, path: 6063901c357c3a53540ca80f, name: 1000G_phase1.snps.high_confidence.hg38.vcf.gz,
32+
secondaryFiles: [{class: File, path: 6063901e357c3a53540ca845, name: 1000G_phase1.snps.high_confidence.hg38.vcf.gz.tbi}]}}
33+
snp_max_gaussians: {type: 'int?', doc: "Interger value for max gaussians in SNP VariantRecalibration. If a dataset gives fewer variants
34+
than the expected scale, the number of Gaussians for training should be turned down. Lowering the max-Gaussians forces the program
35+
to group variants into a smaller number of clusters, which results in more variants per cluster."}
36+
indel_max_gaussians: {type: 'int?', doc: "Interger value for max gaussians in INDEL VariantRecalibration. If a dataset gives fewer
37+
variants than the expected scale, the number of Gaussians for training should be turned down. Lowering the max-Gaussians forces
38+
the program to group variants into a smaller number of clusters, which results in more variants per cluster."}
39+
snp_tranches: { type: 'string[]', doc: "The levels of truth sensitivity at which to slice the SNP recalibration data, in percent." }
40+
snp_annotations: { type: 'string[]', doc: "The names of the annotations which should used for SNP recalibration calculations." }
41+
indel_tranches: { type: 'string[]', doc: "The levels of truth sensitivity at which to slice the INDEL recalibration data, in percent." }
42+
indel_annotations: { type: 'string[]', doc: "The names of the annotations which should used for INDEL recalibration calculations." }
43+
snp_ts_filter_level: { type: 'float', doc: "The truth sensitivity level at which to start filtering SNP data" }
44+
indel_ts_filter_level: { type: 'float', doc: "The truth sensitivity level at which to start filtering INDEL data" }
45+
46+
# Resource Control
47+
snp_model_cpu: { type: 'int?', doc: "CPUs to allocate to VariantRecalibrator for SNP model creation." }
48+
snp_model_ram: { type: 'int?', doc: "GB of RAM to allocate to VariantRecalibrator for SNP model creation." }
49+
indel_recal_cpu: { type: 'int?', doc: "CPUs to allocate to VariantRecalibrator for INDEL recalibration." }
50+
indel_recal_ram: { type: 'int?', doc: "GB of RAM to allocate to VariantRecalibrator for INDEL recalibration." }
51+
snp_recal_cpu: { type: 'int?', doc: "CPUs to allocate to VariantRecalibrator for scattered SNP recalibration." }
52+
snp_recal_ram: { type: 'int?', doc: "GB of RAM to allocate to VariantRecalibrator for scattered SNP recalibration." }
53+
gathertranche_cpu: { type: 'int?', doc: "CPUs to allocate to GatherTranches." }
54+
gathertranche_ram: { type: 'int?', doc: "GB of RAM to allocate to GatherTranches." }
55+
apply_cpu: { type: 'int?', doc: "CPUs to allocate to ApplyVQSR for INDELs and SNPs." }
56+
apply_ram: { type: 'int?', doc: "GB of RAM to allocate to ApplyVQSR for INDELs and SNPs." }
57+
gathervcf_cpu: { type: 'int?', doc: "CPUs to allocate to GatherVcfsCloud." }
58+
gathervcf_ram: { type: 'int?', doc: "GB of RAM to allocate to GatherVcfsCloud." }
59+
60+
outputs:
61+
recalibrated_vcf: { type: 'File', secondaryFiles: [.tbi], outputSource: gatk_gatherfinalvcf/output }
62+
63+
steps:
64+
gatk_filter_excesshet:
65+
run: ../tools/gatk_variantfiltration.cwl
66+
scatter: [input_vcf]
67+
hints:
68+
- class: 'sbg:AWSInstanceType'
69+
value: m5.4xlarge
70+
in:
71+
input_vcf: genotyped_vcfs
72+
output_basename:
73+
valueFrom: 'excesshet_filtered'
74+
variant_filters:
75+
valueFrom: '--filter-expression "ExcessHet > 54.69" --filter-name ExcessHet'
76+
out: [output]
77+
gatk_makesitesonlyvcf:
78+
run: ../tools/gatk_makesitesonlyvcf.cwl
79+
scatter: [input_vcf]
80+
hints:
81+
- class: 'sbg:AWSInstanceType'
82+
value: m5.4xlarge
83+
in:
84+
input_vcf: gatk_filter_excesshet/output
85+
output_filename:
86+
valueFrom: 'sites_only.variant_filtered.vcf.gz'
87+
out: [sites_vcf]
88+
gatk_gathervcfs:
89+
run: ../tools/gatk_gathervcfs.cwl
90+
in:
91+
input_vcfs: gatk_makesitesonlyvcf/sites_vcf
92+
out: [output]
93+
gatk_snpsvariantrecalibratorcreatemodel:
94+
run: ../tools/gatk_snpsvariantrecalibratorcreatemodel.cwl
95+
in:
96+
dbsnp_resource_vcf: dbsnp_vcf
97+
hapmap_resource_vcf: hapmap_resource_vcf
98+
omni_resource_vcf: omni_resource_vcf
99+
one_thousand_genomes_resource_vcf: one_thousand_genomes_resource_vcf
100+
sites_only_variant_filtered_vcf: gatk_gathervcfs/output
101+
max_gaussians: snp_max_gaussians
102+
tranche: snp_tranches
103+
annotations: snp_annotations
104+
cpu: snp_model_cpu
105+
ram: snp_model_ram
106+
out: [model_report]
107+
gatk_indelsvariantrecalibrator:
108+
run: ../tools/gatk_indelsvariantrecalibrator.cwl
109+
in:
110+
axiomPoly_resource_vcf: axiomPoly_resource_vcf
111+
dbsnp_resource_vcf: dbsnp_vcf
112+
mills_resource_vcf: mills_resource_vcf
113+
sites_only_variant_filtered_vcf: gatk_gathervcfs/output
114+
max_gaussians: indel_max_gaussians
115+
tranche: indel_tranches
116+
annotations: indel_annotations
117+
cpu: indel_recal_cpu
118+
ram: indel_recal_ram
119+
out: [recalibration, tranches]
120+
gatk_snpsvariantrecalibratorscattered:
121+
run: ../tools/gatk_snpsvariantrecalibratorscattered.cwl
122+
scatter: [sites_only_variant_filtered_vcf]
123+
hints:
124+
- class: 'sbg:AWSInstanceType'
125+
value: r5.2xlarge
126+
in:
127+
sites_only_variant_filtered_vcf: gatk_filter_excesshet/output
128+
model_report: gatk_snpsvariantrecalibratorcreatemodel/model_report
129+
hapmap_resource_vcf: hapmap_resource_vcf
130+
omni_resource_vcf: omni_resource_vcf
131+
one_thousand_genomes_resource_vcf: one_thousand_genomes_resource_vcf
132+
dbsnp_resource_vcf: dbsnp_vcf
133+
max_gaussians: snp_max_gaussians
134+
tranche: snp_tranches
135+
annotations: snp_annotations
136+
cpu: snp_recal_cpu
137+
ram: snp_recal_ram
138+
out: [recalibration, tranches]
139+
gatk_gathertranches:
140+
run: ../tools/gatk_gathertranches.cwl
141+
hints:
142+
- class: 'sbg:AWSInstanceType'
143+
value: r5.2xlarge
144+
in:
145+
tranches: gatk_snpsvariantrecalibratorscattered/tranches
146+
cpu: gathertranche_cpu
147+
ram: gathertranche_ram
148+
out: [output]
149+
gatk_applyrecalibration:
150+
run: ../tools/gatk_applyrecalibration.cwl
151+
scatter: [input_vcf, snps_recalibration]
152+
scatterMethod: dotproduct
153+
hints:
154+
- class: 'sbg:AWSInstanceType'
155+
value: r5.2xlarge
156+
in:
157+
indels_recalibration: gatk_indelsvariantrecalibrator/recalibration
158+
indels_tranches: gatk_indelsvariantrecalibrator/tranches
159+
input_vcf: gatk_filter_excesshet/output
160+
snps_recalibration: gatk_snpsvariantrecalibratorscattered/recalibration
161+
snps_tranches: gatk_gathertranches/output
162+
snp_ts_filter_level: snp_ts_filter_level
163+
indel_ts_filter_level: indel_ts_filter_level
164+
cpu: apply_cpu
165+
ram: apply_ram
166+
out: [recalibrated_vcf]
167+
gatk_gatherfinalvcf:
168+
run: ../tools/gatk_gatherfinalvcf.cwl
169+
in:
170+
input_vcfs: gatk_applyrecalibration/recalibrated_vcf
171+
output_basename: output_basename
172+
cpu: gathervcf_cpu
173+
ram: gathervcf_ram
174+
out: [output]
175+
176+
$namespaces:
177+
sbg: https://sevenbridges.com

0 commit comments

Comments
 (0)