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.

239 lines
6.0KB

  1. import "./tasks/variantsNorm.wdl" as variantsNorm
  2. import "./tasks/mendelian.wdl" as mendelian
  3. import "./tasks/zipIndex.wdl" as zipIndex
  4. import "./tasks/VCFrename.wdl" as VCFrename
  5. import "./tasks/mergeSister.wdl" as mergeSister
  6. import "./tasks/reformVCF.wdl" as reformVCF
  7. import "./tasks/merge.wdl" as merge
  8. import "./tasks/votes.wdl" as votes
  9. workflow {{ project_name }} {
  10. File inputSamplesFile
  11. Array[Array[File]] inputSamples = read_tsv(inputSamplesFile)
  12. File ref_dir
  13. String fasta
  14. String cluster_config
  15. String disk_size
  16. scatter (quartet in inputSamples){
  17. call variantsNorm.variantsNorm as LCL5variantsNorm{
  18. input:
  19. vcf=quartet[0],
  20. ref_dir=ref_dir,
  21. fasta=fasta,
  22. sampleName=quartet[4],
  23. cluster_config=cluster_config,
  24. disk_size=disk_size
  25. }
  26. call variantsNorm.variantsNorm as LCL6variantsNorm{
  27. input:
  28. vcf=quartet[1],
  29. ref_dir=ref_dir,
  30. fasta=fasta,
  31. sampleName=quartet[5],
  32. cluster_config=cluster_config,
  33. disk_size=disk_size
  34. }
  35. call variantsNorm.variantsNorm as LCL7variantsNorm{
  36. input:
  37. vcf=quartet[2],
  38. ref_dir=ref_dir,
  39. fasta=fasta,
  40. sampleName=quartet[6],
  41. cluster_config=cluster_config,
  42. disk_size=disk_size
  43. }
  44. call variantsNorm.variantsNorm as LCL8variantsNorm{
  45. input:
  46. vcf=quartet[3],
  47. ref_dir=ref_dir,
  48. fasta=fasta,
  49. sampleName=quartet[7],
  50. cluster_config=cluster_config,
  51. disk_size=disk_size
  52. }
  53. call mendelian.mendelian as LCL5mendelian {
  54. input:
  55. child_vcf=LCL5variantsNorm.normed_vcf,
  56. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  57. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  58. LCL7_name=quartet[6],
  59. LCL8_name=quartet[7],
  60. child_name=quartet[4],
  61. ref_dir=ref_dir,
  62. fasta=fasta,
  63. cluster_config=cluster_config,
  64. disk_size=disk_size
  65. }
  66. call mendelian.mendelian as LCL6mendelian {
  67. input:
  68. child_vcf=LCL6variantsNorm.normed_vcf,
  69. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  70. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  71. LCL7_name=quartet[6],
  72. LCL8_name=quartet[7],
  73. child_name=quartet[5],
  74. ref_dir=ref_dir,
  75. fasta=fasta,
  76. cluster_config=cluster_config,
  77. disk_size=disk_size
  78. }
  79. call zipIndex.zipIndex as LCL5zipIndex {
  80. input:
  81. vcf=LCL5mendelian.trio_vcf,
  82. sample="LCL5",
  83. family_name=quartet[8],
  84. cluster_config=cluster_config,
  85. disk_size=disk_size
  86. }
  87. call zipIndex.zipIndex as LCL6zipIndex {
  88. input:
  89. vcf=LCL6mendelian.trio_vcf,
  90. sample="LCL6",
  91. family_name=quartet[8],
  92. cluster_config=cluster_config,
  93. disk_size=disk_size
  94. }
  95. call VCFrename.VCFrename as LCL5VCFrename {
  96. input:
  97. trio_vcf_gz=LCL5zipIndex.vcf_gz,
  98. trio_vcf_idx=LCL5zipIndex.vcf_idx,
  99. mother_name=quartet[7],
  100. father_name=quartet[6],
  101. child_name=quartet[4],
  102. family_name=quartet[8],
  103. child="LCL5",
  104. cluster_config=cluster_config,
  105. disk_size=disk_size
  106. }
  107. call VCFrename.VCFrename as LCL6VCFrename {
  108. input:
  109. trio_vcf_gz=LCL6zipIndex.vcf_gz,
  110. trio_vcf_idx=LCL6zipIndex.vcf_idx,
  111. mother_name=quartet[7],
  112. father_name=quartet[6],
  113. child_name=quartet[5],
  114. family_name=quartet[8],
  115. child="LCL6",
  116. cluster_config=cluster_config,
  117. disk_size=disk_size
  118. }
  119. call mergeSister.mergeSister as mergeSister {
  120. input:
  121. LCL5_trio_vcf_gz=LCL5VCFrename.rename_trio_vcf_gz,
  122. LCL5_trio_vcf_idx=LCL5VCFrename.rename_trio_vcf_idx,
  123. LCL6_trio_vcf_gz=LCL6VCFrename.rename_trio_vcf_gz,
  124. LCL6_trio_vcf_idx=LCL6VCFrename.rename_trio_vcf_idx,
  125. family_name=quartet[8],
  126. cluster_config=cluster_config,
  127. disk_size=disk_size
  128. }
  129. call reformVCF.reformVCF as reformVCF {
  130. input:
  131. family_mendelian_info=mergeSister.family_mendelian_info,
  132. family_name=quartet[8],
  133. cluster_config=cluster_config,
  134. disk_size=disk_size
  135. }
  136. call zipIndex.zipIndex as LCL5familyzipIndex {
  137. input:
  138. vcf=reformVCF.LCL5_family_info,
  139. sample='LCL5',
  140. family_name=quartet[8],
  141. cluster_config=cluster_config,
  142. disk_size=disk_size
  143. }
  144. call zipIndex.zipIndex as LCL6familyzipIndex {
  145. input:
  146. vcf=reformVCF.LCL6_family_info,
  147. sample='LCL6',
  148. family_name=quartet[8],
  149. cluster_config=cluster_config,
  150. disk_size=disk_size
  151. }
  152. call zipIndex.zipIndex as LCL7familyzipIndex {
  153. input:
  154. vcf=reformVCF.LCL7_family_info,
  155. sample='LCL7',
  156. family_name=quartet[8],
  157. cluster_config=cluster_config,
  158. disk_size=disk_size
  159. }
  160. call zipIndex.zipIndex as LCL8familyzipIndex {
  161. input:
  162. vcf=reformVCF.LCL8_family_info,
  163. sample='LCL8',
  164. family_name=quartet[8],
  165. cluster_config=cluster_config,
  166. disk_size=disk_size
  167. }
  168. }
  169. call merge.merge as LCL5merge {
  170. input:
  171. family_vcf_gz=LCL5familyzipIndex.vcf_gz,
  172. family_vcf_idx=LCL5familyzipIndex.vcf_idx,
  173. sample="LCL5",
  174. cluster_config=cluster_config,
  175. disk_size=disk_size
  176. }
  177. call votes.votes as LCL5votes{
  178. input:
  179. merged_vcf=LCL5merge.merged_vcf,
  180. vcf_dup=LCL5merge.vcf_dup,
  181. sample='LCL5',
  182. prefix='LCL5_consensus',
  183. cluster_config=cluster_config,
  184. disk_size=disk_size
  185. }
  186. call merge.merge as LCL6merge {
  187. input:
  188. family_vcf_gz=LCL6familyzipIndex.vcf_gz,
  189. family_vcf_idx=LCL6familyzipIndex.vcf_idx,
  190. sample="LCL6",
  191. cluster_config=cluster_config,
  192. disk_size=disk_size
  193. }
  194. call votes.votes as LCL6votes {
  195. input:
  196. merged_vcf=LCL6merge.merged_vcf,
  197. vcf_dup=LCL6merge.vcf_dup,
  198. sample='LCL6',
  199. prefix='LCL6_consensus',
  200. cluster_config=cluster_config,
  201. disk_size=disk_size
  202. }
  203. call merge.merge as LCL7merge {
  204. input:
  205. family_vcf_gz=LCL7familyzipIndex.vcf_gz,
  206. family_vcf_idx=LCL7familyzipIndex.vcf_idx,
  207. sample="LCL7",
  208. cluster_config=cluster_config,
  209. disk_size=disk_size
  210. }
  211. call votes.votes as LCL7votes {
  212. input:
  213. merged_vcf=LCL7merge.merged_vcf,
  214. vcf_dup=LCL7merge.vcf_dup,
  215. sample='LCL7',
  216. prefix='LCL7_consensus',
  217. cluster_config=cluster_config,
  218. disk_size=disk_size
  219. }
  220. call merge.merge as LCL8merge {
  221. input:
  222. family_vcf_gz=LCL8familyzipIndex.vcf_gz,
  223. family_vcf_idx=LCL8familyzipIndex.vcf_idx,
  224. sample="LCL8",
  225. cluster_config=cluster_config,
  226. disk_size=disk_size
  227. }
  228. call votes.votes as LCL8votes {
  229. input:
  230. merged_vcf=LCL8merge.merged_vcf,
  231. vcf_dup=LCL8merge.vcf_dup,
  232. sample='LCL8',
  233. prefix='LCL8_consensus',
  234. cluster_config=cluster_config,
  235. disk_size=disk_size
  236. }
  237. }