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.

257 lines
6.3KB

  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/corealigner.wdl" as corealigner
  8. import "./tasks/PON.wdl" as PON
  9. import "./tasks/TNseq.wdl" as TNseq
  10. import "./tasks/TNscope.wdl" as TNscope
  11. import "./tasks/annovar.wdl" as annovar
  12. import "./tasks/vcf2maf.wdl" as vcf2maf
  13. workflow {{ project_name }} {
  14. String sample
  15. File fastq_1
  16. File fastq_2
  17. File? normal_recaled_bam
  18. File? normal_recaled_bam_index
  19. String type
  20. String SENTIEON_INSTALL_DIR
  21. String SENTIEON_LICENSE
  22. String sentieon_docker
  23. String annovar_docker
  24. String maftools_docker
  25. File ref_dir
  26. String fasta
  27. File dbmills_dir
  28. String db_mills
  29. File dbsnp_dir
  30. String dbsnp
  31. File regions
  32. String disk_size
  33. String cluster_config
  34. Boolean set_pon
  35. File? pon_vcf
  36. File? cosmic_dir
  37. String? cosmic_vcf
  38. Boolean set_annovar
  39. File? database
  40. Boolean set_vcf2maf
  41. call mapping.mapping as mapping {
  42. input:
  43. group=sample + '_' + type,
  44. sample=sample + '_' + type,
  45. fastq_1=fastq_1,
  46. fastq_2=fastq_2,
  47. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  48. SENTIEON_LICENSE=SENTIEON_LICENSE,
  49. pl="ILLUMINAL",
  50. fasta=fasta,
  51. ref_dir=ref_dir,
  52. docker=sentieon_docker,
  53. disk_size=disk_size,
  54. cluster_config=cluster_config
  55. }
  56. call Metrics.Metrics as Metrics {
  57. input:
  58. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  59. SENTIEON_LICENSE=SENTIEON_LICENSE,
  60. fasta=fasta,
  61. ref_dir=ref_dir,
  62. sorted_bam=mapping.sorted_bam,
  63. sorted_bam_index=mapping.sorted_bam_index,
  64. sample=sample + '_' + type,
  65. docker=sentieon_docker,
  66. disk_size=disk_size,
  67. cluster_config=cluster_config
  68. }
  69. call Dedup.Dedup as Dedup {
  70. input:
  71. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  72. SENTIEON_LICENSE=SENTIEON_LICENSE,
  73. sorted_bam=mapping.sorted_bam,
  74. sorted_bam_index=mapping.sorted_bam_index,
  75. sample=sample + '_' + type,
  76. docker=sentieon_docker,
  77. disk_size=disk_size,
  78. cluster_config=cluster_config
  79. }
  80. call deduped_Metrics.deduped_Metrics as deduped_Metrics {
  81. input:
  82. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  83. SENTIEON_LICENSE=SENTIEON_LICENSE,
  84. fasta=fasta,
  85. ref_dir=ref_dir,
  86. Dedup_bam=Dedup.Dedup_bam,
  87. Dedup_bam_index=Dedup.Dedup_bam_index,
  88. sample=sample + '_' + type,
  89. docker=sentieon_docker,
  90. disk_size=disk_size,
  91. cluster_config=cluster_config
  92. }
  93. call Realigner.Realigner as Realigner {
  94. input:
  95. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  96. SENTIEON_LICENSE=SENTIEON_LICENSE,
  97. fasta=fasta,
  98. ref_dir=ref_dir,
  99. Dedup_bam=Dedup.Dedup_bam,
  100. Dedup_bam_index=Dedup.Dedup_bam_index,
  101. db_mills=db_mills,
  102. dbmills_dir=dbmills_dir,
  103. sample=sample + '_' + type,
  104. docker=sentieon_docker,
  105. disk_size=disk_size,
  106. regions=regions,
  107. cluster_config=cluster_config
  108. }
  109. call BQSR.BQSR as BQSR {
  110. input:
  111. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  112. SENTIEON_LICENSE=SENTIEON_LICENSE,
  113. fasta=fasta,
  114. ref_dir=ref_dir,
  115. realigned_bam=Realigner.realigner_bam,
  116. realigned_bam_index=Realigner.realigner_bam_index,
  117. db_mills=db_mills,
  118. dbmills_dir=dbmills_dir,
  119. dbsnp=dbsnp,
  120. dbsnp_dir=dbsnp_dir,
  121. sample=sample + '_' + type,
  122. regions=regions,
  123. docker=sentieon_docker,
  124. disk_size=disk_size,
  125. cluster_config=cluster_config
  126. }
  127. if (set_pon && type == "normal") {
  128. call PON.PON as PON {
  129. input:
  130. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  131. SENTIEON_LICENSE=SENTIEON_LICENSE,
  132. sample=sample,
  133. fasta=fasta,
  134. ref_dir=ref_dir,
  135. normal_recaled_bam=BQSR.recaled_bam,
  136. normal_recaled_bam_index=BQSR.recaled_bam_index,
  137. cosmic_vcf=cosmic_vcf,
  138. cosmic_dir=cosmic_dir,
  139. dbsnp=dbsnp,
  140. dbsnp_dir=dbsnp_dir,
  141. docker=sentieon_docker,
  142. disk_size=disk_size,
  143. cluster_config=cluster_config
  144. }
  145. }
  146. if (type == "tumor" && defined(normal_recaled_bam)) {
  147. call corealigner.corealigner as corealigner {
  148. input:
  149. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  150. SENTIEON_LICENSE=SENTIEON_LICENSE,
  151. fasta=fasta,
  152. ref_dir=ref_dir,
  153. sample=sample,
  154. docker=sentieon_docker,
  155. db_mills=db_mills,
  156. dbmills_dir=dbmills_dir,
  157. dbsnp=dbsnp,
  158. dbsnp_dir=dbsnp_dir,
  159. tumor_recaled_bam=BQSR.recaled_bam,
  160. tumor_recaled_bam_index=BQSR.recaled_bam_index,
  161. normal_recaled_bam=normal_recaled_bam,
  162. normal_recaled_bam_index=normal_recaled_bam_index,
  163. disk_size=disk_size,
  164. cluster_config=cluster_config
  165. }
  166. }
  167. if (type == "tumor") {
  168. call TNseq.TNseq as TNseq {
  169. input:
  170. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  171. SENTIEON_LICENSE=SENTIEON_LICENSE,
  172. fasta=fasta,
  173. ref_dir=ref_dir,
  174. corealigner_bam=corealigner.corealigner_bam,
  175. corealigner_bam_index=corealigner.corealigner_bam_index,
  176. tumor_recaled_bam=BQSR.recaled_bam,
  177. tumor_recaled_bam_index=BQSR.recaled_bam_index,
  178. dbsnp=dbsnp,
  179. dbsnp_dir=dbsnp_dir,
  180. set_pon=set_pon,
  181. pon_vcf=pon_vcf,
  182. cosmic_vcf=cosmic_vcf,
  183. cosmic_dir=cosmic_dir,
  184. tumor_name=sample + "_tumor",
  185. normal_name=sample + "_normal",
  186. docker=sentieon_docker,
  187. sample=sample,
  188. disk_size=disk_size,
  189. cluster_config=cluster_config
  190. }
  191. call TNscope.TNscope as TNscope {
  192. input:
  193. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  194. SENTIEON_LICENSE=SENTIEON_LICENSE,
  195. fasta=fasta,
  196. ref_dir=ref_dir,
  197. corealigner_bam=corealigner.corealigner_bam,
  198. corealigner_bam_index=corealigner.corealigner_bam_index,
  199. tumor_recaled_bam=BQSR.recaled_bam,
  200. tumor_recaled_bam_index=BQSR.recaled_bam_index,
  201. dbsnp=dbsnp,
  202. dbsnp_dir=dbsnp_dir,
  203. set_pon=set_pon,
  204. pon_vcf=pon_vcf,
  205. cosmic_vcf=cosmic_vcf,
  206. cosmic_dir=cosmic_dir,
  207. tumor_name=sample + "_tumor",
  208. normal_name=sample + "_normal",
  209. docker=sentieon_docker,
  210. sample=sample,
  211. disk_size=disk_size,
  212. cluster_config=cluster_config
  213. }
  214. }
  215. if (set_annovar && defined(TNscope.TNscope_vcf) && defined(TNseq.TNseq_vcf)){
  216. call annovar.annovar as annovar {
  217. input:
  218. docker=annovar_docker,
  219. database=database,
  220. TNscope_vcf=TNscope.TNscope_vcf,
  221. TNseq_vcf=TNseq.TNseq_vcf,
  222. sample=sample,
  223. cluster_config=cluster_config,
  224. disk_size=disk_size
  225. }
  226. if (set_vcf2maf){
  227. call vcf2maf.vcf2maf as vcf2maf {
  228. input:
  229. docker=maftools_docker,
  230. multianno_TNscope_txt=annovar.multianno_TNscope_txt,
  231. multianno_TNseq_txt=annovar.multianno_TNseq_txt,
  232. sample=sample,
  233. cluster_config=cluster_config,
  234. disk_size=disk_size
  235. }
  236. }
  237. }
  238. }