Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

workflow.wdl 9.0KB

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