Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

326 lines
8.2KB

  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. import "./tasks/bed_annotation.wdl" as bed_annotation
  10. import "./tasks/mergeVCFInfo.wdl" as mergeVCFInfo
  11. workflow {{ project_name }} {
  12. File inputSamplesFile
  13. Array[Array[File]] inputSamples = read_tsv(inputSamplesFile)
  14. File ref_dir
  15. File repeat_bed
  16. String fasta
  17. String cluster_config
  18. String disk_size
  19. scatter (quartet in inputSamples){
  20. call variantsNorm.variantsNorm as LCL5variantsNorm{
  21. input:
  22. vcf=quartet[0],
  23. ref_dir=ref_dir,
  24. fasta=fasta,
  25. sampleName=quartet[4],
  26. cluster_config=cluster_config,
  27. disk_size=disk_size
  28. }
  29. call variantsNorm.variantsNorm as LCL6variantsNorm{
  30. input:
  31. vcf=quartet[1],
  32. ref_dir=ref_dir,
  33. fasta=fasta,
  34. sampleName=quartet[5],
  35. cluster_config=cluster_config,
  36. disk_size=disk_size
  37. }
  38. call variantsNorm.variantsNorm as LCL7variantsNorm{
  39. input:
  40. vcf=quartet[2],
  41. ref_dir=ref_dir,
  42. fasta=fasta,
  43. sampleName=quartet[6],
  44. cluster_config=cluster_config,
  45. disk_size=disk_size
  46. }
  47. call variantsNorm.variantsNorm as LCL8variantsNorm{
  48. input:
  49. vcf=quartet[3],
  50. ref_dir=ref_dir,
  51. fasta=fasta,
  52. sampleName=quartet[7],
  53. cluster_config=cluster_config,
  54. disk_size=disk_size
  55. }
  56. call zipIndex.zipIndex as LCL5normZip{
  57. input:
  58. vcf=LCL5variantsNorm.normed_vcf,
  59. cluster_config=cluster_config,
  60. disk_size=disk_size
  61. }
  62. call zipIndex.zipIndex as LCL6normZip{
  63. input:
  64. vcf=LCL6variantsNorm.normed_vcf,
  65. cluster_config=cluster_config,
  66. disk_size=disk_size
  67. }
  68. call zipIndex.zipIndex as LCL7normZip{
  69. input:
  70. vcf=LCL7variantsNorm.normed_vcf,
  71. cluster_config=cluster_config,
  72. disk_size=disk_size
  73. }
  74. call zipIndex.zipIndex as LCL8normZip{
  75. input:
  76. vcf=LCL8variantsNorm.normed_vcf,
  77. cluster_config=cluster_config,
  78. disk_size=disk_size
  79. }
  80. call mendelian.mendelian as LCL5mendelian {
  81. input:
  82. child_vcf=LCL5variantsNorm.normed_vcf,
  83. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  84. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  85. LCL7_name=quartet[6],
  86. LCL8_name=quartet[7],
  87. child_name=quartet[4],
  88. ref_dir=ref_dir,
  89. fasta=fasta,
  90. cluster_config=cluster_config,
  91. disk_size=disk_size
  92. }
  93. call mendelian.mendelian as LCL6mendelian {
  94. input:
  95. child_vcf=LCL6variantsNorm.normed_vcf,
  96. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  97. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  98. LCL7_name=quartet[6],
  99. LCL8_name=quartet[7],
  100. child_name=quartet[5],
  101. ref_dir=ref_dir,
  102. fasta=fasta,
  103. cluster_config=cluster_config,
  104. disk_size=disk_size
  105. }
  106. call zipIndex.zipIndex as LCL5zipIndex {
  107. input:
  108. vcf=LCL5mendelian.trio_vcf,
  109. cluster_config=cluster_config,
  110. disk_size=disk_size
  111. }
  112. call zipIndex.zipIndex as LCL6zipIndex {
  113. input:
  114. vcf=LCL6mendelian.trio_vcf,
  115. cluster_config=cluster_config,
  116. disk_size=disk_size
  117. }
  118. call VCFrename.VCFrename as LCL5VCFrename {
  119. input:
  120. trio_vcf_gz=LCL5zipIndex.vcf_gz,
  121. trio_vcf_idx=LCL5zipIndex.vcf_idx,
  122. mother_name=quartet[7],
  123. father_name=quartet[6],
  124. child_name=quartet[4],
  125. family_name=quartet[8],
  126. child="LCL5",
  127. cluster_config=cluster_config,
  128. disk_size=disk_size
  129. }
  130. call VCFrename.VCFrename as LCL6VCFrename {
  131. input:
  132. trio_vcf_gz=LCL6zipIndex.vcf_gz,
  133. trio_vcf_idx=LCL6zipIndex.vcf_idx,
  134. mother_name=quartet[7],
  135. father_name=quartet[6],
  136. child_name=quartet[5],
  137. family_name=quartet[8],
  138. child="LCL6",
  139. cluster_config=cluster_config,
  140. disk_size=disk_size
  141. }
  142. call mergeSister.mergeSister as mergeSister {
  143. input:
  144. LCL5_trio_vcf_gz=LCL5VCFrename.rename_trio_vcf_gz,
  145. LCL5_trio_vcf_idx=LCL5VCFrename.rename_trio_vcf_idx,
  146. LCL6_trio_vcf_gz=LCL6VCFrename.rename_trio_vcf_gz,
  147. LCL6_trio_vcf_idx=LCL6VCFrename.rename_trio_vcf_idx,
  148. family_name=quartet[8],
  149. cluster_config=cluster_config,
  150. disk_size=disk_size
  151. }
  152. call reformVCF.reformVCF as reformVCF {
  153. input:
  154. family_mendelian_info=mergeSister.family_mendelian_info,
  155. family_name=quartet[8],
  156. cluster_config=cluster_config,
  157. disk_size=disk_size
  158. }
  159. call zipIndex.zipIndex as LCL5familyzipIndex {
  160. input:
  161. vcf=reformVCF.LCL5_family_info,
  162. cluster_config=cluster_config,
  163. disk_size=disk_size
  164. }
  165. call zipIndex.zipIndex as LCL6familyzipIndex {
  166. input:
  167. vcf=reformVCF.LCL6_family_info,
  168. cluster_config=cluster_config,
  169. disk_size=disk_size
  170. }
  171. call zipIndex.zipIndex as LCL7familyzipIndex {
  172. input:
  173. vcf=reformVCF.LCL7_family_info,
  174. cluster_config=cluster_config,
  175. disk_size=disk_size
  176. }
  177. call zipIndex.zipIndex as LCL8familyzipIndex {
  178. input:
  179. vcf=reformVCF.LCL8_family_info,
  180. cluster_config=cluster_config,
  181. disk_size=disk_size
  182. }
  183. }
  184. ### family info merge
  185. call merge.merge as LCL5merge {
  186. input:
  187. family_vcf_gz=LCL5familyzipIndex.vcf_gz,
  188. family_vcf_idx=LCL5familyzipIndex.vcf_idx,
  189. sample="LCL5",
  190. cluster_config=cluster_config,
  191. disk_size=disk_size
  192. }
  193. call votes.votes as LCL5votes{
  194. input:
  195. merged_vcf=LCL5merge.merged_vcf,
  196. vcf_dup=LCL5merge.vcf_dup,
  197. sample='LCL5',
  198. prefix='LCL5_consensus',
  199. cluster_config=cluster_config,
  200. disk_size=disk_size
  201. }
  202. call merge.merge as LCL6merge {
  203. input:
  204. family_vcf_gz=LCL6familyzipIndex.vcf_gz,
  205. family_vcf_idx=LCL6familyzipIndex.vcf_idx,
  206. sample="LCL6",
  207. cluster_config=cluster_config,
  208. disk_size=disk_size
  209. }
  210. call votes.votes as LCL6votes {
  211. input:
  212. merged_vcf=LCL6merge.merged_vcf,
  213. vcf_dup=LCL6merge.vcf_dup,
  214. sample='LCL6',
  215. prefix='LCL6_consensus',
  216. cluster_config=cluster_config,
  217. disk_size=disk_size
  218. }
  219. call merge.merge as LCL7merge {
  220. input:
  221. family_vcf_gz=LCL7familyzipIndex.vcf_gz,
  222. family_vcf_idx=LCL7familyzipIndex.vcf_idx,
  223. sample="LCL7",
  224. cluster_config=cluster_config,
  225. disk_size=disk_size
  226. }
  227. call votes.votes as LCL7votes {
  228. input:
  229. merged_vcf=LCL7merge.merged_vcf,
  230. vcf_dup=LCL7merge.vcf_dup,
  231. sample='LCL7',
  232. prefix='LCL7_consensus',
  233. cluster_config=cluster_config,
  234. disk_size=disk_size
  235. }
  236. call merge.merge as LCL8merge {
  237. input:
  238. family_vcf_gz=LCL8familyzipIndex.vcf_gz,
  239. family_vcf_idx=LCL8familyzipIndex.vcf_idx,
  240. sample="LCL8",
  241. cluster_config=cluster_config,
  242. disk_size=disk_size
  243. }
  244. call votes.votes as LCL8votes {
  245. input:
  246. merged_vcf=LCL8merge.merged_vcf,
  247. vcf_dup=LCL8merge.vcf_dup,
  248. sample='LCL8',
  249. prefix='LCL8_consensus',
  250. cluster_config=cluster_config,
  251. disk_size=disk_size
  252. }
  253. ### vcf original information
  254. call mergeVCFInfo.mergeVCFInfo as LCL5mergeVCF {
  255. input:
  256. vcf_gz=LCL5normZip.vcf_gz,
  257. vcf_idx=LCL5normZip.vcf_idx,
  258. sample='LCL5',
  259. cluster_config=cluster_config,
  260. disk_size=disk_size
  261. }
  262. call bed_annotation.bed_annotation as LCL5bedAnnotation {
  263. input:
  264. merged_vcf=LCL5mergeVCF.merged_vcf,
  265. merged_vcf_idx=LCL5mergeVCF.merged_vcf_idx,
  266. repeat_bed=repeat_bed,
  267. sample='LCL5',
  268. cluster_config=cluster_config,
  269. disk_size=disk_size
  270. }
  271. call mergeVCFInfo.mergeVCFInfo as LCL6mergeVCF {
  272. input:
  273. vcf_gz=LCL6normZip.vcf_gz,
  274. vcf_idx=LCL6normZip.vcf_idx,
  275. sample='LCL6',
  276. cluster_config=cluster_config,
  277. disk_size=disk_size
  278. }
  279. call bed_annotation.bed_annotation as LCL6bedAnnotation {
  280. input:
  281. merged_vcf=LCL6mergeVCF.merged_vcf,
  282. merged_vcf_idx=LCL6mergeVCF.merged_vcf_idx,
  283. repeat_bed=repeat_bed,
  284. sample='LCL6',
  285. cluster_config=cluster_config,
  286. disk_size=disk_size
  287. }
  288. call mergeVCFInfo.mergeVCFInfo as LCL7mergeVCF {
  289. input:
  290. vcf_gz=LCL7normZip.vcf_gz,
  291. vcf_idx=LCL7normZip.vcf_idx,
  292. sample='LCL7',
  293. cluster_config=cluster_config,
  294. disk_size=disk_size
  295. }
  296. call bed_annotation.bed_annotation as LCL7bedAnnotation {
  297. input:
  298. merged_vcf=LCL7mergeVCF.merged_vcf,
  299. merged_vcf_idx=LCL7mergeVCF.merged_vcf_idx,
  300. repeat_bed=repeat_bed,
  301. sample='LCL7',
  302. cluster_config=cluster_config,
  303. disk_size=disk_size
  304. }
  305. call mergeVCFInfo.mergeVCFInfo as LCL8mergeVCF {
  306. input:
  307. vcf_gz=LCL8normZip.vcf_gz,
  308. vcf_idx=LCL8normZip.vcf_idx,
  309. sample='LCL8',
  310. cluster_config=cluster_config,
  311. disk_size=disk_size
  312. }
  313. call bed_annotation.bed_annotation as LCL8bedAnnotation {
  314. input:
  315. merged_vcf=LCL8mergeVCF.merged_vcf,
  316. merged_vcf_idx=LCL8mergeVCF.merged_vcf_idx,
  317. repeat_bed=repeat_bed,
  318. sample='LCL8',
  319. cluster_config=cluster_config,
  320. disk_size=disk_size
  321. }
  322. }