Germline & Somatic short variant discovery (SNVs + Indels) for WGS & WES.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

workflow.wdl 13KB

4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
4 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. import "./tasks/mapping.wdl" as mapping
  2. import "./tasks/Metrics.wdl" as Metrics
  3. import "./tasks/Dedup.wdl" as Dedup
  4. import "./tasks/deduped_Metrics.wdl" as deduped_Metrics
  5. import "./tasks/Realigner.wdl" as Realigner
  6. import "./tasks/BQSR.wdl" as BQSR
  7. import "./tasks/Haplotyper.wdl" as Haplotyper
  8. import "./tasks/corealigner.wdl" as corealigner
  9. import "./tasks/TNseq.wdl" as TNseq
  10. import "./tasks/TNscope.wdl" as TNscope
  11. import "./tasks/somatic.wdl" as somatic
  12. import "./tasks/processSomatic.wdl" as processSomatic
  13. import "./tasks/somaticFilter.wdl" as somaticFilter
  14. import "./tasks/annovar.wdl" as annovar
  15. import "./tasks/vcf2maf.wdl" as vcf2maf
  16. workflow {{ project_name }} {
  17. String sample_id
  18. File tumor_fastq_1
  19. File tumor_fastq_2
  20. File normal_fastq_1
  21. File normal_fastq_2
  22. String SENTIEON_INSTALL_DIR
  23. String SENTIEON_LICENSE
  24. String sentieon_docker
  25. String varscan_docker
  26. String annovar_docker
  27. String maftools_docker
  28. File ref_dir
  29. String fasta
  30. File dbmills_dir
  31. String db_mills
  32. File dbsnp_dir
  33. String dbsnp
  34. File germline_resource
  35. File? regions
  36. File database
  37. String disk_size
  38. String cluster_config
  39. Boolean set_pon
  40. File? pon_vcf
  41. File? cosmic_dir
  42. String? cosmic_vcf
  43. Boolean germline
  44. Boolean tnseq
  45. Boolean tnscope
  46. Boolean varscan
  47. call mapping.mapping as tumor_mapping {
  48. input:
  49. group=sample_id + '_tumor',
  50. sample=sample_id + '_tumor',
  51. fastq_1=tumor_fastq_1,
  52. fastq_2=tumor_fastq_2,
  53. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  54. SENTIEON_LICENSE=SENTIEON_LICENSE,
  55. pl="ILLUMINAL",
  56. fasta=fasta,
  57. ref_dir=ref_dir,
  58. docker=sentieon_docker,
  59. disk_size=disk_size,
  60. cluster_config=cluster_config
  61. }
  62. call Metrics.Metrics as tumor_Metrics {
  63. input:
  64. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  65. SENTIEON_LICENSE=SENTIEON_LICENSE,
  66. fasta=fasta,
  67. ref_dir=ref_dir,
  68. sorted_bam=tumor_mapping.sorted_bam,
  69. sorted_bam_index=tumor_mapping.sorted_bam_index,
  70. sample=sample_id + '_tumor',
  71. docker=sentieon_docker,
  72. disk_size=disk_size,
  73. cluster_config=cluster_config
  74. }
  75. call Dedup.Dedup as tumor_Dedup {
  76. input:
  77. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  78. SENTIEON_LICENSE=SENTIEON_LICENSE,
  79. sorted_bam=tumor_mapping.sorted_bam,
  80. sorted_bam_index=tumor_mapping.sorted_bam_index,
  81. sample=sample_id + '_tumor',
  82. docker=sentieon_docker,
  83. disk_size=disk_size,
  84. cluster_config=cluster_config
  85. }
  86. call deduped_Metrics.deduped_Metrics as tumor_deduped_Metrics {
  87. input:
  88. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  89. SENTIEON_LICENSE=SENTIEON_LICENSE,
  90. fasta=fasta,
  91. ref_dir=ref_dir,
  92. Dedup_bam=tumor_Dedup.Dedup_bam,
  93. Dedup_bam_index=tumor_Dedup.Dedup_bam_index,
  94. sample=sample_id + '_tumor',
  95. docker=sentieon_docker,
  96. disk_size=disk_size,
  97. cluster_config=cluster_config
  98. }
  99. call Realigner.Realigner as tumor_Realigner {
  100. input:
  101. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  102. SENTIEON_LICENSE=SENTIEON_LICENSE,
  103. fasta=fasta,
  104. ref_dir=ref_dir,
  105. Dedup_bam=tumor_Dedup.Dedup_bam,
  106. Dedup_bam_index=tumor_Dedup.Dedup_bam_index,
  107. db_mills=db_mills,
  108. dbmills_dir=dbmills_dir,
  109. sample=sample_id + '_tumor',
  110. docker=sentieon_docker,
  111. disk_size=disk_size,
  112. regions=regions,
  113. cluster_config=cluster_config
  114. }
  115. call BQSR.BQSR as tumor_BQSR {
  116. input:
  117. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  118. SENTIEON_LICENSE=SENTIEON_LICENSE,
  119. fasta=fasta,
  120. ref_dir=ref_dir,
  121. realigned_bam=tumor_Realigner.realigner_bam,
  122. realigned_bam_index=tumor_Realigner.realigner_bam_index,
  123. db_mills=db_mills,
  124. dbmills_dir=dbmills_dir,
  125. dbsnp=dbsnp,
  126. dbsnp_dir=dbsnp_dir,
  127. sample=sample_id + '_tumor',
  128. regions=regions,
  129. docker=sentieon_docker,
  130. disk_size=disk_size,
  131. cluster_config=cluster_config
  132. }
  133. call mapping.mapping as normal_mapping {
  134. input:
  135. group=sample_id + '_normal',
  136. sample=sample_id + '_normal',
  137. fastq_1=normal_fastq_1,
  138. fastq_2=normal_fastq_2,
  139. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  140. SENTIEON_LICENSE=SENTIEON_LICENSE,
  141. pl="ILLUMINAL",
  142. fasta=fasta,
  143. ref_dir=ref_dir,
  144. docker=sentieon_docker,
  145. disk_size=disk_size,
  146. cluster_config=cluster_config
  147. }
  148. call Metrics.Metrics as normal_Metrics {
  149. input:
  150. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  151. SENTIEON_LICENSE=SENTIEON_LICENSE,
  152. fasta=fasta,
  153. ref_dir=ref_dir,
  154. sorted_bam=normal_mapping.sorted_bam,
  155. sorted_bam_index=normal_mapping.sorted_bam_index,
  156. sample=sample_id + '_normal',
  157. docker=sentieon_docker,
  158. disk_size=disk_size,
  159. cluster_config=cluster_config
  160. }
  161. call Dedup.Dedup as normal_Dedup {
  162. input:
  163. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  164. SENTIEON_LICENSE=SENTIEON_LICENSE,
  165. sorted_bam=normal_mapping.sorted_bam,
  166. sorted_bam_index=normal_mapping.sorted_bam_index,
  167. sample=sample_id + '_normal',
  168. docker=sentieon_docker,
  169. disk_size=disk_size,
  170. cluster_config=cluster_config
  171. }
  172. call deduped_Metrics.deduped_Metrics as normal_deduped_Metrics {
  173. input:
  174. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  175. SENTIEON_LICENSE=SENTIEON_LICENSE,
  176. fasta=fasta,
  177. ref_dir=ref_dir,
  178. Dedup_bam=normal_Dedup.Dedup_bam,
  179. Dedup_bam_index=normal_Dedup.Dedup_bam_index,
  180. sample=sample_id + '_normal',
  181. docker=sentieon_docker,
  182. disk_size=disk_size,
  183. cluster_config=cluster_config
  184. }
  185. call Realigner.Realigner as normal_Realigner {
  186. input:
  187. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  188. SENTIEON_LICENSE=SENTIEON_LICENSE,
  189. fasta=fasta,
  190. ref_dir=ref_dir,
  191. Dedup_bam=normal_Dedup.Dedup_bam,
  192. Dedup_bam_index=normal_Dedup.Dedup_bam_index,
  193. db_mills=db_mills,
  194. dbmills_dir=dbmills_dir,
  195. sample=sample_id + '_normal',
  196. docker=sentieon_docker,
  197. disk_size=disk_size,
  198. regions=regions,
  199. cluster_config=cluster_config
  200. }
  201. call BQSR.BQSR as normal_BQSR {
  202. input:
  203. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  204. SENTIEON_LICENSE=SENTIEON_LICENSE,
  205. fasta=fasta,
  206. ref_dir=ref_dir,
  207. realigned_bam=normal_Realigner.realigner_bam,
  208. realigned_bam_index=normal_Realigner.realigner_bam_index,
  209. db_mills=db_mills,
  210. dbmills_dir=dbmills_dir,
  211. dbsnp=dbsnp,
  212. dbsnp_dir=dbsnp_dir,
  213. sample=sample_id + '_normal',
  214. regions=regions,
  215. docker=sentieon_docker,
  216. disk_size=disk_size,
  217. cluster_config=cluster_config
  218. }
  219. if (germline) {
  220. call Haplotyper.Haplotyper as Haplotyper {
  221. input:
  222. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  223. SENTIEON_LICENSE=SENTIEON_LICENSE,
  224. sample=sample_id + '_normal',
  225. fasta=fasta,
  226. ref_dir=ref_dir,
  227. recaled_bam=normal_BQSR.recaled_bam,
  228. recaled_bam_index=normal_BQSR.recaled_bam_index,
  229. dbsnp=dbsnp,
  230. dbsnp_dir=dbsnp_dir,
  231. regions=regions,
  232. docker=sentieon_docker,
  233. disk_size=disk_size,
  234. cluster_config=cluster_config
  235. }
  236. }
  237. if (tnseq) {
  238. call TNseq.TNseq as TNseq {
  239. input:
  240. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  241. SENTIEON_LICENSE=SENTIEON_LICENSE,
  242. sample=sample_id,
  243. normal_recaled_bam=normal_BQSR.recaled_bam,
  244. normal_recaled_bam_index=normal_BQSR.recaled_bam_index,
  245. normal_recal_table=normal_BQSR.recal_table,
  246. tumor_recaled_bam=tumor_BQSR.recaled_bam,
  247. tumor_recaled_bam_index=tumor_BQSR.recaled_bam_index,
  248. tumor_recal_table=tumor_BQSR.recal_table,
  249. normal_name=sample_id + "_normal",
  250. tumor_name=sample_id + "_tumor",
  251. fasta=fasta,
  252. ref_dir=ref_dir,
  253. regions=regions,
  254. dbsnp=dbsnp,
  255. dbsnp_dir=dbsnp_dir,
  256. set_pon=set_pon,
  257. pon_vcf=pon_vcf,
  258. docker=sentieon_docker,
  259. cluster_config=cluster_config,
  260. disk_size=disk_size
  261. }
  262. call annovar.annovar as TNseq_annovar {
  263. input:
  264. sample=sample_id,
  265. vcf=TNseq.TNseq_vcf,
  266. database=database,
  267. docker=annovar_docker,
  268. cluster_config=cluster_config,
  269. disk_size=disk_size
  270. }
  271. }
  272. if (tnscope) {
  273. call TNscope.TNscope as TNscope {
  274. input:
  275. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  276. SENTIEON_LICENSE=SENTIEON_LICENSE,
  277. fasta=fasta,
  278. ref_dir=ref_dir,
  279. regions=regions,
  280. normal_recaled_bam=normal_BQSR.recaled_bam,
  281. normal_recaled_bam_index=normal_BQSR.recaled_bam_index,
  282. normal_recal_table=normal_BQSR.recal_table,
  283. tumor_recaled_bam=tumor_BQSR.recaled_bam,
  284. tumor_recaled_bam_index=tumor_BQSR.recaled_bam_index,
  285. tumor_recal_table=tumor_BQSR.recal_table,
  286. dbsnp=dbsnp,
  287. dbsnp_dir=dbsnp_dir,
  288. set_pon=set_pon,
  289. pon_vcf=pon_vcf,
  290. cosmic_vcf=cosmic_vcf,
  291. cosmic_dir=cosmic_dir,
  292. tumor_name=sample_id + "_tumor",
  293. normal_name=sample_id + "_normal",
  294. docker=sentieon_docker,
  295. sample=sample_id,
  296. disk_size=disk_size,
  297. cluster_config=cluster_config
  298. }
  299. call annovar.annovar as TNscope_annovar {
  300. input:
  301. sample=sample_id,
  302. vcf=TNscope.TNscope_vcf,
  303. database=database,
  304. docker=annovar_docker,
  305. cluster_config=cluster_config,
  306. disk_size=disk_size
  307. }
  308. }
  309. if (varscan) {
  310. call somatic.somatic as somatic {
  311. input:
  312. sample=sample_id,
  313. tumor_bam=tumor_BQSR.recaled_bam,
  314. tumor_bam_index=tumor_BQSR.recaled_bam_index,
  315. normal_bam=normal_BQSR.recaled_bam,
  316. normal_bam_index=normal_BQSR.recaled_bam_index,
  317. ref_dir=ref_dir,
  318. fasta=fasta,
  319. docker=varscan_docker,
  320. disk_size=disk_size,
  321. cluster_config=cluster_config
  322. }
  323. call processSomatic.processSomatic as processSomatic {
  324. input:
  325. sample=sample_id,
  326. varscan_snp=somatic.varscan_snp,
  327. varscan_indel=somatic.varscan_indel,
  328. docker=varscan_docker,
  329. disk_size=disk_size,
  330. cluster_config=cluster_config
  331. }
  332. call somaticFilter.somaticFilter as somaticFilter {
  333. input:
  334. sample=sample_id,
  335. varscan_snp_somatic_hc=processSomatic.varscan_snp_somatic_hc,
  336. varscan_snp_germline_hc=processSomatic.varscan_snp_germline_hc,
  337. varscan_snp_loh_hc=processSomatic.varscan_snp_loh_hc,
  338. varscan_indel_somatic_hc=processSomatic.varscan_indel_somatic_hc,
  339. varscan_indel_germline_hc=processSomatic.varscan_indel_germline_hc,
  340. varscan_indel_loh_hc=processSomatic.varscan_indel_loh_hc,
  341. varscan_indel=somatic.varscan_indel,
  342. docker=varscan_docker,
  343. disk_size=disk_size,
  344. cluster_config=cluster_config
  345. }
  346. call annovar.annovar as snp_somatic_annovar {
  347. input:
  348. sample=sample_id,
  349. vcf=somaticFilter.varscan_snp_somatic_filter,
  350. database=database,
  351. docker=annovar_docker,
  352. cluster_config=cluster_config,
  353. disk_size=disk_size
  354. }
  355. call vcf2maf.vcf2maf as snp_somatic_vcf2maf {
  356. input:
  357. sample=sample_id,
  358. multianno_txt=snp_somatic_annovar.multianno_txt,
  359. docker=maftools_docker,
  360. cluster_config=cluster_config,
  361. disk_size=disk_size
  362. }
  363. call annovar.annovar as snp_loh_annovar {
  364. input:
  365. sample=sample_id,
  366. vcf=somaticFilter.varscan_snp_loh_filter,
  367. database=database,
  368. docker=annovar_docker,
  369. cluster_config=cluster_config,
  370. disk_size=disk_size
  371. }
  372. call annovar.annovar as indel_somatic_annovar {
  373. input:
  374. sample=sample_id,
  375. vcf=somaticFilter.varscan_indel_somatic_filter,
  376. database=database,
  377. docker=annovar_docker,
  378. cluster_config=cluster_config,
  379. disk_size=disk_size
  380. }
  381. call annovar.annovar as indel_loh_annovar {
  382. input:
  383. sample=sample_id,
  384. vcf=somaticFilter.varscan_indel_loh_filter,
  385. database=database,
  386. docker=annovar_docker,
  387. cluster_config=cluster_config,
  388. disk_size=disk_size
  389. }
  390. }
  391. }
  392. }