-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathStrelka2.wdl
195 lines (165 loc) · 5.36 KB
/
Strelka2.wdl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
## Strelka2 workflow
## Requirements
## Bam: tumor if run in tumor mode, normal Required
## runMode: "Tumour" or "Germline"
## runGerm: Do you want to run Germline (if in tumor mode?)
## strelka_config file: See
## bed file (.gz & .gz.tbi) of regions to profile
## test removal of config file
version 1.0
workflow Strelka2FullWorkflow {
input {
File refFasta
File refFastaIdx
File? tumorBam
File? tumorBamIdx
File normalBam
File normalBamIdx
File? callRegionsBED
File? callRegionsBEDTBI
Int? threads
String pairName
File? strelka_config
String runMode ="Tumour" ## or "Germline"
Boolean runGerm = true
}
Int tumorBam_size=ceil(size(tumorBamIdx, "GB")+ size(tumorBam, "GB"))
Int normalBam_size=ceil(size(normalBamIdx, "GB")+ size(normalBam, "GB"))
Int refFasta_size=ceil(size(refFastaIdx, "GB")+ size(refFasta, "GB"))
if (runMode=="Tumour"){
call Strelka2SomaticTask {
input:
refFasta=refFasta,
refFastaIdx=refFastaIdx,
tumorBam=tumorBam,
tumorBamIdx=tumorBamIdx,
normalBam=normalBam,
normalBamIdx=normalBamIdx,
callRegionsBED=callRegionsBED,
callRegionsBEDTBI=callRegionsBEDTBI,
tumorBam_size=tumorBam_size,
normalBam_size=normalBam_size,
refFasta_size=refFasta_size,
name=pairName,
config=strelka_config,
defthreads=threads
}
}
if (runMode=="Germline" || runGerm){
call Strelka2GermlineTask {
input:
refFasta=refFasta,
refFastaIdx=refFastaIdx,
normalBam=normalBam,
normalBamIdx=normalBamIdx,
normalBam_size=normalBam_size,
refFasta_size=refFasta_size,
callRegionsBED=callRegionsBED,
callRegionsBEDTBI=callRegionsBEDTBI,
normalBam_size=normalBam_size,
refFasta_size=refFasta_size,
name=pairName,
threads=threads
}
}
output {
File? strelkaGermlineVCF=Strelka2GermlineTask.strelkaGermlineVCF
File? strelka2SomaticSNVs = Strelka2SomaticTask.strelka2SomaticSNVs
File? strelka2SomaticIndels = Strelka2SomaticTask.strelka2SomaticIndels
}
}
task Strelka2SomaticTask {
input {
# TASK INPUT PARAMS
File? tumorBam
File? tumorBamIdx
File normalBam
File normalBamIdx
File refFasta
File refFastaIdx
File? config
File? callRegionsBED
File? callRegionsBEDTBI
String name
String tmpDIR = "strelkaTMP_" + name
# FILE SIZE
Int tumorBam_size
Int normalBam_size
Int refFasta_size
Int? defthreads ="4"
# RUNTIME INPUT PARAMS
String preemptible ="1"
String diskGB_boot = "15"
String diskGB_buffer ="20"
String machine_memoryGB ="25"
String cpu ="1"
}
# DEFAULT VALUES
Int diskGB = ceil(tumorBam_size + normalBam_size + refFasta_size + diskGB_buffer)
command {
set -euxo pipefail
mkdir ${tmpDIR} && /usr/local/bin/configureStrelkaSomaticWorkflow.py \
--normalBam ${normalBam} \
--tumorBam ${tumorBam} \
--referenceFasta ${refFasta} \
--exome \
--runDir ${tmpDIR} ${"--callRegions " + callRegionsBED} && \
${tmpDIR}/runWorkflow.py -m local -j ${defthreads} && \
mv ${tmpDIR}/results/variants/somatic.snvs.vcf.gz ${name}.strelka.somatic.snvs.vcf.gz && \
mv ${tmpDIR}/results/variants/somatic.indels.vcf.gz ${name}.strelka.somatic.indels.vcf.gz
}
runtime {
docker : "erictdawson/strelka2:2021-Jan-12"
bootDiskSizeGb : diskGB_boot
preemptible : preemptible
cpu : cpu
disks : "local-disk ${diskGB} HDD"
memory : machine_memoryGB + "GB"
}
output {
File strelka2SomaticSNVs = "${name}.strelka2.somatic.snvs.vcf.gz"
File strelka2SomaticIndels = "${name}.strelka2.somatic.indels.vcf.gz"
}
}
task Strelka2GermlineTask{
input {
File refFasta
File refFastaIdx
File normalBam
File normalBamIdx
File? callRegionsBED
File? callRegionsBEDTBI
Int? threads ="4"
String name
String tmpDIR = "strelkaTMP_" + name
Int normalBam_size
Int refFasta_size
String preemptible ="1"
String diskGB_boot = "15"
String diskGB_buffer ="20"
String machine_memoryGB ="25"
String cpu ="1"
}
# COMPUTE DISK SIZE
Int diskGB = ceil(normalBam_size + refFasta_size + diskGB_buffer)
command {
mkdir ${tmpDIR} && /usr/local/bin/configureStrelkaGermlineWorkflow.py \
--bam ${normalBam} \
--referenceFasta ${refFasta} \
--exome ${"--callRegions " + callRegionsBED} && \
--runDir ${tmpDIR} && \
${tmpDIR}/runWorkflow.py -m local -j ${threads} && \
mv ${tmpDIR}/results/variants/variants.vcf.gz ${name}.strelka.germline.vcf.gz
}
runtime {
docker : "erictdawson/strelka2:2021-Jan-12"
bootDiskSizeGb : diskGB_boot
preemptible : preemptible
cpu : cpu
disks : "local-disk ${diskGB} HDD"
memory : machine_memoryGB + "GB"
}
output {
File strelkaGermlineVCF = "${name}.strelka.germline.vcf.gz"
}
}