You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 line
2.9KB

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