Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

316 lines
8.0KB

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