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.

275 lines
6.5KB

  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_gVCF.wdl" as Haplotyper_gVCF
  8. import "./tasks/GVCFtyper.wdl" as GVCFtyper
  9. import "./tasks/split_gvcf_files.wdl" as split_gvcf_files
  10. import "./tasks/benchmark.wdl" as benchmark
  11. import "./tasks/multiqc.wdl" as multiqc
  12. import "./tasks/mendelian.wdl" as mendelian
  13. import "./tasks/merge_mendelian.wdl" as merge_mendelian
  14. import "./tasks/quartet_mendelian.wdl" as quartet_mendelian
  15. import "./tasks/fastqc.wdl" as fastqc
  16. import "./tasks/fastqscreen.wdl" as fastqscreen
  17. import "./tasks/qualimap.wdl" as qualimap
  18. import "./tasks/extract_multiqc.wdl" as extract_multiqc
  19. workflow {{ project_name }} {
  20. File inputSamplesFile
  21. Array[Array[File]] inputSamples = read_tsv(inputSamplesFile)
  22. String SENTIEON_INSTALL_DIR
  23. String SENTIEONdocker
  24. String FASTQCdocker
  25. String FASTQSCREENdocker
  26. String QUALIMAPdocker
  27. String BENCHMARKdocker
  28. String MENDELIANdocker
  29. String DIYdocker
  30. String fasta
  31. File ref_dir
  32. File dbmills_dir
  33. String db_mills
  34. File dbsnp_dir
  35. String dbsnp
  36. File screen_ref_dir
  37. File fastq_screen_conf
  38. File benchmarking_dir
  39. String project
  40. String disk_size
  41. String BIGcluster_config
  42. String SMALLcluster_config
  43. scatter (quartet in inputSamples){
  44. call mapping.mapping as mapping {
  45. input:
  46. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  47. group=quartet[2],
  48. sample=quartet[2],
  49. pl="ILLUMINAL",
  50. fasta=fasta,
  51. ref_dir=ref_dir,
  52. fastq_1=quartet[0],
  53. fastq_2=quartet[1],
  54. docker=SENTIEONdocker,
  55. disk_size=disk_size,
  56. cluster_config=BIGcluster_config
  57. }
  58. call fastqc.fastqc as fastqc {
  59. input:
  60. read1=quartet[0],
  61. read2=quartet[1],
  62. docker=FASTQCdocker,
  63. cluster_config=BIGcluster_config,
  64. disk_size=disk_size
  65. }
  66. call fastqscreen.fastq_screen as fastqscreen {
  67. input:
  68. read1=quartet[0],
  69. read2=quartet[1],
  70. screen_ref_dir=screen_ref_dir,
  71. fastq_screen_conf=fastq_screen_conf,
  72. docker=FASTQSCREENdocker,
  73. cluster_config=BIGcluster_config,
  74. disk_size=disk_size
  75. }
  76. call Metrics.Metrics as Metrics {
  77. input:
  78. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  79. fasta=fasta,
  80. ref_dir=ref_dir,
  81. sorted_bam=mapping.sorted_bam,
  82. sorted_bam_index=mapping.sorted_bam_index,
  83. sample=quartet[2],
  84. docker=SENTIEONdocker,
  85. disk_size=disk_size,
  86. cluster_config=BIGcluster_config
  87. }
  88. call Dedup.Dedup as Dedup {
  89. input:
  90. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  91. sorted_bam=mapping.sorted_bam,
  92. sorted_bam_index=mapping.sorted_bam_index,
  93. sample=quartet[2],
  94. docker=SENTIEONdocker,
  95. disk_size=disk_size,
  96. cluster_config=BIGcluster_config
  97. }
  98. call qualimap.qualimap as qualimap {
  99. input:
  100. bam=Dedup.Dedup_bam,
  101. bai=Dedup.Dedup_bam_index,
  102. docker=QUALIMAPdocker,
  103. cluster_config=BIGcluster_config,
  104. disk_size=disk_size
  105. }
  106. call deduped_Metrics.deduped_Metrics as deduped_Metrics {
  107. input:
  108. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  109. fasta=fasta,
  110. ref_dir=ref_dir,
  111. Dedup_bam=Dedup.Dedup_bam,
  112. Dedup_bam_index=Dedup.Dedup_bam_index,
  113. sample=quartet[2],
  114. docker=SENTIEONdocker,
  115. disk_size=disk_size,
  116. cluster_config=BIGcluster_config
  117. }
  118. call Realigner.Realigner as Realigner {
  119. input:
  120. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  121. fasta=fasta,
  122. ref_dir=ref_dir,
  123. Dedup_bam=Dedup.Dedup_bam,
  124. Dedup_bam_index=Dedup.Dedup_bam_index,
  125. db_mills=db_mills,
  126. dbmills_dir=dbmills_dir,
  127. sample=quartet[2],
  128. docker=SENTIEONdocker,
  129. disk_size=disk_size,
  130. cluster_config=BIGcluster_config
  131. }
  132. call BQSR.BQSR as BQSR {
  133. input:
  134. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  135. fasta=fasta,
  136. ref_dir=ref_dir,
  137. realigned_bam=Realigner.realigner_bam,
  138. realigned_bam_index=Realigner.realigner_bam_index,
  139. db_mills=db_mills,
  140. dbmills_dir=dbmills_dir,
  141. dbsnp=dbsnp,
  142. dbsnp_dir=dbsnp_dir,
  143. sample=quartet[2],
  144. docker=SENTIEONdocker,
  145. disk_size=disk_size,
  146. cluster_config=BIGcluster_config
  147. }
  148. call Haplotyper_gVCF.Haplotyper_gVCF as Haplotyper_gVCF {
  149. input:
  150. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  151. fasta=fasta,
  152. ref_dir=ref_dir,
  153. recaled_bam=BQSR.recaled_bam,
  154. recaled_bam_index=BQSR.recaled_bam_index,
  155. sample=quartet[2],
  156. docker=SENTIEONdocker,
  157. disk_size=disk_size,
  158. cluster_config=BIGcluster_config
  159. }
  160. }
  161. call GVCFtyper.GVCFtyper as GVCFtyper {
  162. input:
  163. ref_dir=ref_dir,
  164. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  165. fasta=fasta,
  166. vcf=Haplotyper_gVCF.vcf,
  167. vcf_idx=Haplotyper_gVCF.vcf_idx,
  168. project=project,
  169. docker=SENTIEONdocker,
  170. cluster_config=BIGcluster_config,
  171. disk_size=disk_size
  172. }
  173. call split_gvcf_files.split_gvcf_files as split_gvcf_files {
  174. input:
  175. gvcf=GVCFtyper.gvcf,
  176. docker=BENCHMARKdocker,
  177. project=project,
  178. cluster_config=SMALLcluster_config,
  179. disk_size=disk_size
  180. }
  181. Array[File] single_gvcf = split_gvcf_files.splited_vcf
  182. scatter (idx in range(length(single_gvcf))) {
  183. call benchmark.benchmark as benchmark {
  184. input:
  185. vcf=single_gvcf[idx],
  186. benchmarking_dir=benchmarking_dir,
  187. ref_dir=ref_dir,
  188. fasta=fasta,
  189. docker=BENCHMARKdocker,
  190. cluster_config=BIGcluster_config,
  191. disk_size=disk_size,
  192. }
  193. }
  194. call multiqc.multiqc as multiqc {
  195. input:
  196. read1_zip=fastqc.read1_zip,
  197. read2_zip=fastqc.read2_zip,
  198. txt1=fastqscreen.txt1,
  199. txt2=fastqscreen.txt2,
  200. zip=qualimap.zip,
  201. summary=benchmark.summary,
  202. cluster_config=SMALLcluster_config,
  203. disk_size=disk_size
  204. }
  205. call extract_multiqc.extract_multiqc as extract_multiqc {
  206. input:
  207. fastqc_qualimap=multiqc.fastqc_qualimap,
  208. fastqc=multiqc.fastqc,
  209. fastqscreen=multiqc.fastqscreen,
  210. hap=multiqc.hap,
  211. docker=DIYdocker,
  212. cluster_config=SMALLcluster_config,
  213. disk_size=disk_size
  214. }
  215. Array[File] family_vcfs = split_gvcf_files.family_vcf
  216. scatter (idx in range(length(family_vcfs))) {
  217. call mendelian.mendelian as mendelian {
  218. input:
  219. family_vcf=family_vcfs[idx],
  220. ref_dir=ref_dir,
  221. fasta=fasta,
  222. docker=MENDELIANdocker,
  223. cluster_config=BIGcluster_config,
  224. disk_size=disk_size
  225. }
  226. call merge_mendelian.merge_mendelian as merge_mendelian {
  227. input:
  228. D5_trio_vcf=mendelian.D5_trio_vcf,
  229. D6_trio_vcf=mendelian.D6_trio_vcf,
  230. family_vcf=family_vcfs[idx],
  231. docker=DIYdocker,
  232. cluster_config=SMALLcluster_config,
  233. disk_size=disk_size
  234. }
  235. }
  236. call quartet_mendelian.quartet_mendelian as quartet_mendelian {
  237. input:
  238. project_mendelian_summary=merge_mendelian.project_mendelian_summary,
  239. project=project,
  240. docker=DIYdocker,
  241. cluster_config=SMALLcluster_config,
  242. disk_size=disk_size
  243. }
  244. }