Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

298 lines
7.4KB

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