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

140 行
3.2KB

  1. import "./tasks/split_gvcf_files.wdl" as split_gvcf_files
  2. import "./tasks/GVCFtyper.wdl" as GVCFtyper
  3. import "./tasks/benchmark.wdl" as benchmark
  4. import "./tasks/filtered.wdl" as filtered
  5. import "./tasks/mendelian.wdl" as mendelian
  6. import "./tasks/merge_mendelian.wdl" as merge_mendelian
  7. import "./tasks/quartet_mendelian.wdl" as quartet_mendelian
  8. import "./tasks/D5_D6.wdl" as D5_D6
  9. import "./tasks/merge_family.wdl" as merge_family
  10. workflow {{ project_name }} {
  11. Array[File] gvcf
  12. Array[File] gvcf_idx
  13. String BENCHMARKdocker
  14. String MENDELIANdocker
  15. String DIYdocker
  16. String SENTIEON_INSTALL_DIR
  17. String SENTIEONdocker
  18. String fasta
  19. File ref_dir
  20. File benchmarking_dir
  21. File del_bed
  22. String project
  23. String disk_size
  24. String BIGcluster_config
  25. String SMALLcluster_config
  26. call GVCFtyper.GVCFtyper as GVCFtyper {
  27. input:
  28. ref_dir=ref_dir,
  29. SENTIEON_INSTALL_DIR=SENTIEON_INSTALL_DIR,
  30. fasta=fasta,
  31. vcf=gvcf,
  32. vcf_idx=gvcf_idx,
  33. project=project,
  34. docker=SENTIEONdocker,
  35. cluster_config=BIGcluster_config,
  36. disk_size=disk_size
  37. }
  38. call split_gvcf_files.split_gvcf_files as split_gvcf_files {
  39. input:
  40. merged_gvcf=GVCFtyper.merged_gvcf,
  41. docker=DIYdocker,
  42. project=project,
  43. cluster_config=SMALLcluster_config,
  44. disk_size=disk_size
  45. }
  46. Array[File] single_gvcf = split_gvcf_files.splited_vcf
  47. scatter (idx in range(length(single_gvcf))) {
  48. call benchmark.benchmark as benchmark {
  49. input:
  50. vcf=single_gvcf[idx],
  51. benchmarking_dir=benchmarking_dir,
  52. ref_dir=ref_dir,
  53. fasta=fasta,
  54. docker=BENCHMARKdocker,
  55. cluster_config=BIGcluster_config,
  56. disk_size=disk_size,
  57. }
  58. }
  59. Boolean sister_tag = read_boolean(split_gvcf_files.sister_tag)
  60. Boolean quartet_tag = read_boolean(split_gvcf_files.quartet_tag)
  61. if (sister_tag) {
  62. call D5_D6.D5_D6 as D5_D6 {
  63. input:
  64. splited_vcf=split_gvcf_files.splited_vcf,
  65. project=project,
  66. docker=DIYdocker,
  67. cluster_config=SMALLcluster_config,
  68. disk_size=disk_size,
  69. }
  70. }
  71. if (quartet_tag) {
  72. call merge_family.merge_family as merge_family {
  73. input:
  74. splited_vcf=split_gvcf_files.splited_vcf,
  75. project=project,
  76. docker=DIYdocker,
  77. cluster_config=SMALLcluster_config,
  78. disk_size=disk_size,
  79. }
  80. Array[File] family_vcfs = merge_family.family_vcf
  81. scatter (idx in range(length(family_vcfs))) {
  82. call filtered.filtered as filtered {
  83. input:
  84. raw_vcf=family_vcfs[idx],
  85. del_bed=del_bed,
  86. docker=BENCHMARKdocker,
  87. cluster_config=BIGcluster_config,
  88. disk_size=disk_size
  89. }
  90. call mendelian.mendelian as mendelian {
  91. input:
  92. family_vcf=filtered.noDEL_vcf,
  93. ref_dir=ref_dir,
  94. fasta=fasta,
  95. docker=MENDELIANdocker,
  96. cluster_config=BIGcluster_config,
  97. disk_size=disk_size
  98. }
  99. call merge_mendelian.merge_mendelian as merge_mendelian {
  100. input:
  101. D5_trio_vcf=mendelian.D5_trio_vcf,
  102. D6_trio_vcf=mendelian.D6_trio_vcf,
  103. family_vcf=family_vcfs[idx],
  104. docker=DIYdocker,
  105. cluster_config=SMALLcluster_config,
  106. disk_size=disk_size
  107. }
  108. }
  109. call quartet_mendelian.quartet_mendelian as quartet_mendelian {
  110. input:
  111. project_mendelian_summary=merge_mendelian.project_mendelian_summary,
  112. project=project,
  113. docker=DIYdocker,
  114. cluster_config=SMALLcluster_config,
  115. disk_size=disk_size
  116. }
  117. }
  118. }