Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

284 rindas
6.8KB

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