您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

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