No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

workflow.wdl 8.3KB

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