Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

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