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.

421 lines
11KB

  1. import "./tasks/variantsNorm.wdl" as variantsNorm
  2. import "./tasks/extract_info.wdl" as extract_info
  3. import "./tasks/mendelian.wdl" as mendelian
  4. import "./tasks/zipIndex.wdl" as zipIndex
  5. import "./tasks/VCFrename.wdl" as VCFrename
  6. import "./tasks/mergeSister.wdl" as mergeSister
  7. import "./tasks/reformVCF.wdl" as reformVCF
  8. import "./tasks/merge.wdl" as merge
  9. import "./tasks/votes.wdl" as votes
  10. import "./tasks/bed_annotation.wdl" as bed_annotation
  11. import "./tasks/mergeVCFInfo.wdl" as mergeVCFInfo
  12. import "./tasks/VCFinfo.wdl" as VCFinfo
  13. import "./tasks/final_result.wdl" as FinalResult
  14. workflow {{ project_name }} {
  15. File inputSamplesFile
  16. Array[Array[File]] inputSamples = read_tsv(inputSamplesFile)
  17. File ref_dir
  18. File repeat_bed
  19. String fasta
  20. String cluster_config
  21. String disk_size
  22. scatter (quartet in inputSamples){
  23. call variantsNorm.variantsNorm as LCL5variantsNorm{
  24. input:
  25. vcf=quartet[0],
  26. ref_dir=ref_dir,
  27. fasta=fasta,
  28. sampleName=quartet[4],
  29. cluster_config=cluster_config,
  30. disk_size=disk_size
  31. }
  32. call variantsNorm.variantsNorm as LCL6variantsNorm{
  33. input:
  34. vcf=quartet[1],
  35. ref_dir=ref_dir,
  36. fasta=fasta,
  37. sampleName=quartet[5],
  38. cluster_config=cluster_config,
  39. disk_size=disk_size
  40. }
  41. call variantsNorm.variantsNorm as LCL7variantsNorm{
  42. input:
  43. vcf=quartet[2],
  44. ref_dir=ref_dir,
  45. fasta=fasta,
  46. sampleName=quartet[6],
  47. cluster_config=cluster_config,
  48. disk_size=disk_size
  49. }
  50. call variantsNorm.variantsNorm as LCL8variantsNorm{
  51. input:
  52. vcf=quartet[3],
  53. ref_dir=ref_dir,
  54. fasta=fasta,
  55. sampleName=quartet[7],
  56. cluster_config=cluster_config,
  57. disk_size=disk_size
  58. }
  59. call extract_info.extract_info as LCL5extract_info {
  60. input:
  61. normed_vcf=LCL5variantsNorm.normed_vcf,
  62. sampleName=quartet[4],
  63. cluster_config=cluster_config,
  64. disk_size=disk_size
  65. }
  66. call extract_info.extract_info as LCL6extract_info {
  67. input:
  68. normed_vcf=LCL6variantsNorm.normed_vcf,
  69. sampleName=quartet[5],
  70. cluster_config=cluster_config,
  71. disk_size=disk_size
  72. }
  73. call extract_info.extract_info as LCL7extract_info {
  74. input:
  75. normed_vcf=LCL7variantsNorm.normed_vcf,
  76. sampleName=quartet[6],
  77. cluster_config=cluster_config,
  78. disk_size=disk_size
  79. }
  80. call extract_info.extract_info as LCL8extract_info {
  81. input:
  82. normed_vcf=LCL8variantsNorm.normed_vcf,
  83. sampleName=quartet[8],
  84. cluster_config=cluster_config,
  85. disk_size=disk_size
  86. }
  87. call zipIndex.zipIndex as LCL5normZip{
  88. input:
  89. vcf=LCL5extract_info.vcf_info,
  90. cluster_config=cluster_config,
  91. disk_size=disk_size
  92. }
  93. call zipIndex.zipIndex as LCL6normZip{
  94. input:
  95. vcf=LCL6extract_info.vcf_info,
  96. cluster_config=cluster_config,
  97. disk_size=disk_size
  98. }
  99. call zipIndex.zipIndex as LCL7normZip{
  100. input:
  101. vcf=LCL7extract_info.vcf_info,
  102. cluster_config=cluster_config,
  103. disk_size=disk_size
  104. }
  105. call zipIndex.zipIndex as LCL8normZip{
  106. input:
  107. vcf=LCL8extract_info.vcf_info,
  108. cluster_config=cluster_config,
  109. disk_size=disk_size
  110. }
  111. call mendelian.mendelian as LCL5mendelian {
  112. input:
  113. child_vcf=LCL5variantsNorm.normed_vcf,
  114. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  115. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  116. LCL7_name=quartet[6],
  117. LCL8_name=quartet[7],
  118. child_name=quartet[4],
  119. ref_dir=ref_dir,
  120. fasta=fasta,
  121. cluster_config=cluster_config,
  122. disk_size=disk_size
  123. }
  124. call mendelian.mendelian as LCL6mendelian {
  125. input:
  126. child_vcf=LCL6variantsNorm.normed_vcf,
  127. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  128. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  129. LCL7_name=quartet[6],
  130. LCL8_name=quartet[7],
  131. child_name=quartet[5],
  132. ref_dir=ref_dir,
  133. fasta=fasta,
  134. cluster_config=cluster_config,
  135. disk_size=disk_size
  136. }
  137. call zipIndex.zipIndex as LCL5zipIndex {
  138. input:
  139. vcf=LCL5mendelian.trio_vcf,
  140. cluster_config=cluster_config,
  141. disk_size=disk_size
  142. }
  143. call zipIndex.zipIndex as LCL6zipIndex {
  144. input:
  145. vcf=LCL6mendelian.trio_vcf,
  146. cluster_config=cluster_config,
  147. disk_size=disk_size
  148. }
  149. call VCFrename.VCFrename as LCL5VCFrename {
  150. input:
  151. trio_vcf_gz=LCL5zipIndex.vcf_gz,
  152. trio_vcf_idx=LCL5zipIndex.vcf_idx,
  153. mother_name=quartet[7],
  154. father_name=quartet[6],
  155. child_name=quartet[4],
  156. family_name=quartet[8],
  157. child="LCL5",
  158. cluster_config=cluster_config,
  159. disk_size=disk_size
  160. }
  161. call VCFrename.VCFrename as LCL6VCFrename {
  162. input:
  163. trio_vcf_gz=LCL6zipIndex.vcf_gz,
  164. trio_vcf_idx=LCL6zipIndex.vcf_idx,
  165. mother_name=quartet[7],
  166. father_name=quartet[6],
  167. child_name=quartet[5],
  168. family_name=quartet[8],
  169. child="LCL6",
  170. cluster_config=cluster_config,
  171. disk_size=disk_size
  172. }
  173. call mergeSister.mergeSister as mergeSister {
  174. input:
  175. LCL5_trio_vcf_gz=LCL5VCFrename.rename_trio_vcf_gz,
  176. LCL5_trio_vcf_idx=LCL5VCFrename.rename_trio_vcf_idx,
  177. LCL6_trio_vcf_gz=LCL6VCFrename.rename_trio_vcf_gz,
  178. LCL6_trio_vcf_idx=LCL6VCFrename.rename_trio_vcf_idx,
  179. family_name=quartet[8],
  180. cluster_config=cluster_config,
  181. disk_size=disk_size
  182. }
  183. call reformVCF.reformVCF as reformVCF {
  184. input:
  185. family_mendelian_info=mergeSister.family_mendelian_info,
  186. family_name=quartet[8],
  187. cluster_config=cluster_config,
  188. disk_size=disk_size
  189. }
  190. call zipIndex.zipIndex as LCL5familyzipIndex {
  191. input:
  192. vcf=reformVCF.LCL5_family_info,
  193. cluster_config=cluster_config,
  194. disk_size=disk_size
  195. }
  196. call zipIndex.zipIndex as LCL6familyzipIndex {
  197. input:
  198. vcf=reformVCF.LCL6_family_info,
  199. cluster_config=cluster_config,
  200. disk_size=disk_size
  201. }
  202. call zipIndex.zipIndex as LCL7familyzipIndex {
  203. input:
  204. vcf=reformVCF.LCL7_family_info,
  205. cluster_config=cluster_config,
  206. disk_size=disk_size
  207. }
  208. call zipIndex.zipIndex as LCL8familyzipIndex {
  209. input:
  210. vcf=reformVCF.LCL8_family_info,
  211. cluster_config=cluster_config,
  212. disk_size=disk_size
  213. }
  214. }
  215. ### family info merge
  216. call merge.merge as LCL5merge {
  217. input:
  218. family_vcf_gz=LCL5familyzipIndex.vcf_gz,
  219. family_vcf_idx=LCL5familyzipIndex.vcf_idx,
  220. sample="LCL5",
  221. cluster_config=cluster_config,
  222. disk_size=disk_size
  223. }
  224. call votes.votes as LCL5votes{
  225. input:
  226. merged_vcf=LCL5merge.merged_vcf,
  227. vcf_dup=LCL5merge.vcf_dup,
  228. sample='LCL5',
  229. prefix='LCL5_consensus',
  230. cluster_config=cluster_config,
  231. disk_size=disk_size
  232. }
  233. call merge.merge as LCL6merge {
  234. input:
  235. family_vcf_gz=LCL6familyzipIndex.vcf_gz,
  236. family_vcf_idx=LCL6familyzipIndex.vcf_idx,
  237. sample="LCL6",
  238. cluster_config=cluster_config,
  239. disk_size=disk_size
  240. }
  241. call votes.votes as LCL6votes {
  242. input:
  243. merged_vcf=LCL6merge.merged_vcf,
  244. vcf_dup=LCL6merge.vcf_dup,
  245. sample='LCL6',
  246. prefix='LCL6_consensus',
  247. cluster_config=cluster_config,
  248. disk_size=disk_size
  249. }
  250. call merge.merge as LCL7merge {
  251. input:
  252. family_vcf_gz=LCL7familyzipIndex.vcf_gz,
  253. family_vcf_idx=LCL7familyzipIndex.vcf_idx,
  254. sample="LCL7",
  255. cluster_config=cluster_config,
  256. disk_size=disk_size
  257. }
  258. call votes.votes as LCL7votes {
  259. input:
  260. merged_vcf=LCL7merge.merged_vcf,
  261. vcf_dup=LCL7merge.vcf_dup,
  262. sample='LCL7',
  263. prefix='LCL7_consensus',
  264. cluster_config=cluster_config,
  265. disk_size=disk_size
  266. }
  267. call merge.merge as LCL8merge {
  268. input:
  269. family_vcf_gz=LCL8familyzipIndex.vcf_gz,
  270. family_vcf_idx=LCL8familyzipIndex.vcf_idx,
  271. sample="LCL8",
  272. cluster_config=cluster_config,
  273. disk_size=disk_size
  274. }
  275. call votes.votes as LCL8votes {
  276. input:
  277. merged_vcf=LCL8merge.merged_vcf,
  278. vcf_dup=LCL8merge.vcf_dup,
  279. sample='LCL8',
  280. prefix='LCL8_consensus',
  281. cluster_config=cluster_config,
  282. disk_size=disk_size
  283. }
  284. ### vcf original information
  285. call mergeVCFInfo.mergeVCFInfo as LCL5mergeVCF {
  286. input:
  287. vcf_gz=LCL5normZip.vcf_gz,
  288. vcf_idx=LCL5normZip.vcf_idx,
  289. sample='LCL5',
  290. cluster_config=cluster_config,
  291. disk_size=disk_size
  292. }
  293. call bed_annotation.bed_annotation as LCL5bedAnnotation {
  294. input:
  295. merged_vcf=LCL5mergeVCF.merged_vcf,
  296. merged_vcf_idx=LCL5mergeVCF.merged_vcf_idx,
  297. repeat_bed=repeat_bed,
  298. sample='LCL5',
  299. cluster_config=cluster_config,
  300. disk_size=disk_size
  301. }
  302. call VCFinfo.VCFinfo as LCL5allSampleReform {
  303. input:
  304. repeat_annotated_vcf=LCL5bedAnnotation.repeat_annotated_vcf,
  305. sample='LCL5',
  306. cluster_config=cluster_config,
  307. disk_size=disk_size
  308. }
  309. call FinalResult.FinalResult as LCL5FinalResult {
  310. input:
  311. extracted_info=LCL5allSampleReform.extracted_info,
  312. annotated_txt=LCL5votes.annotated_txt,
  313. prefix='LCL5',
  314. sample='LCL5',
  315. cluster_config=cluster_config,
  316. disk_size=disk_size,
  317. }
  318. call mergeVCFInfo.mergeVCFInfo as LCL6mergeVCF {
  319. input:
  320. vcf_gz=LCL6normZip.vcf_gz,
  321. vcf_idx=LCL6normZip.vcf_idx,
  322. sample='LCL6',
  323. cluster_config=cluster_config,
  324. disk_size=disk_size
  325. }
  326. call bed_annotation.bed_annotation as LCL6bedAnnotation {
  327. input:
  328. merged_vcf=LCL6mergeVCF.merged_vcf,
  329. merged_vcf_idx=LCL6mergeVCF.merged_vcf_idx,
  330. repeat_bed=repeat_bed,
  331. sample='LCL6',
  332. cluster_config=cluster_config,
  333. disk_size=disk_size
  334. }
  335. call VCFinfo.VCFinfo as LCL6allSampleReform {
  336. input:
  337. repeat_annotated_vcf=LCL6bedAnnotation.repeat_annotated_vcf,
  338. sample='LCL6',
  339. cluster_config=cluster_config,
  340. disk_size=disk_size
  341. }
  342. call FinalResult.FinalResult as LCL6FinalResult {
  343. input:
  344. extracted_info=LCL6allSampleReform.extracted_info,
  345. annotated_txt=LCL6votes.annotated_txt,
  346. prefix='LCL6',
  347. sample='LCL6',
  348. cluster_config=cluster_config,
  349. disk_size=disk_size,
  350. }
  351. call mergeVCFInfo.mergeVCFInfo as LCL7mergeVCF {
  352. input:
  353. vcf_gz=LCL7normZip.vcf_gz,
  354. vcf_idx=LCL7normZip.vcf_idx,
  355. sample='LCL7',
  356. cluster_config=cluster_config,
  357. disk_size=disk_size
  358. }
  359. call bed_annotation.bed_annotation as LCL7bedAnnotation {
  360. input:
  361. merged_vcf=LCL7mergeVCF.merged_vcf,
  362. merged_vcf_idx=LCL7mergeVCF.merged_vcf_idx,
  363. repeat_bed=repeat_bed,
  364. sample='LCL7',
  365. cluster_config=cluster_config,
  366. disk_size=disk_size
  367. }
  368. call VCFinfo.VCFinfo as LCL7allSampleReform {
  369. input:
  370. repeat_annotated_vcf=LCL7bedAnnotation.repeat_annotated_vcf,
  371. sample='LCL7',
  372. cluster_config=cluster_config,
  373. disk_size=disk_size
  374. }
  375. call FinalResult.FinalResult as LCL7FinalResult {
  376. input:
  377. extracted_info=LCL7allSampleReform.extracted_info,
  378. annotated_txt=LCL7votes.annotated_txt,
  379. prefix='LCL7',
  380. sample='LCL7',
  381. cluster_config=cluster_config,
  382. disk_size=disk_size,
  383. }
  384. call mergeVCFInfo.mergeVCFInfo as LCL8mergeVCF {
  385. input:
  386. vcf_gz=LCL8normZip.vcf_gz,
  387. vcf_idx=LCL8normZip.vcf_idx,
  388. sample='LCL8',
  389. cluster_config=cluster_config,
  390. disk_size=disk_size
  391. }
  392. call bed_annotation.bed_annotation as LCL8bedAnnotation {
  393. input:
  394. merged_vcf=LCL8mergeVCF.merged_vcf,
  395. merged_vcf_idx=LCL8mergeVCF.merged_vcf_idx,
  396. repeat_bed=repeat_bed,
  397. sample='LCL8',
  398. cluster_config=cluster_config,
  399. disk_size=disk_size
  400. }
  401. call VCFinfo.VCFinfo as LCL8allSampleReform {
  402. input:
  403. repeat_annotated_vcf=LCL8bedAnnotation.repeat_annotated_vcf,
  404. sample='LCL8',
  405. cluster_config=cluster_config,
  406. disk_size=disk_size
  407. }
  408. call FinalResult.FinalResult as LCL8FinalResult {
  409. input:
  410. extracted_info=LCL8allSampleReform.extracted_info,
  411. annotated_txt=LCL8votes.annotated_txt,
  412. prefix='LCL8',
  413. sample='LCL8',
  414. cluster_config=cluster_config,
  415. disk_size=disk_size,
  416. }
  417. }