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.

5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
5 년 전
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. import "./tasks/variantsNorm.wdl" as variantsNorm
  2. import "./tasks/merge_info.wdl" as merge_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/bed_annotation.wdl" as bed_annotation
  10. import "./tasks/votes.wdl" as votes
  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 mendelian.mendelian as LCL5mendelian {
  57. input:
  58. child_vcf=LCL5variantsNorm.normed_vcf,
  59. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  60. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  61. LCL7_name=quartet[6],
  62. LCL8_name=quartet[7],
  63. child_name=quartet[4],
  64. ref_dir=ref_dir,
  65. fasta=fasta,
  66. cluster_config=cluster_config,
  67. disk_size=disk_size
  68. }
  69. call mendelian.mendelian as LCL6mendelian {
  70. input:
  71. child_vcf=LCL6variantsNorm.normed_vcf,
  72. LCL7_vcf=LCL7variantsNorm.normed_vcf,
  73. LCL8_vcf=LCL8variantsNorm.normed_vcf,
  74. LCL7_name=quartet[6],
  75. LCL8_name=quartet[7],
  76. child_name=quartet[5],
  77. ref_dir=ref_dir,
  78. fasta=fasta,
  79. cluster_config=cluster_config,
  80. disk_size=disk_size
  81. }
  82. call zipIndex.zipIndex as LCL5zipIndex {
  83. input:
  84. vcf=LCL5mendelian.trio_vcf,
  85. cluster_config=cluster_config,
  86. disk_size=disk_size
  87. }
  88. call zipIndex.zipIndex as LCL6zipIndex {
  89. input:
  90. vcf=LCL6mendelian.trio_vcf,
  91. cluster_config=cluster_config,
  92. disk_size=disk_size
  93. }
  94. call VCFrename.VCFrename as LCL5VCFrename {
  95. input:
  96. trio_vcf_gz=LCL5zipIndex.vcf_gz,
  97. trio_vcf_idx=LCL5zipIndex.vcf_idx,
  98. mother_name=quartet[7],
  99. father_name=quartet[6],
  100. child_name=quartet[4],
  101. family_name=quartet[8],
  102. child="LCL5",
  103. cluster_config=cluster_config,
  104. disk_size=disk_size
  105. }
  106. call VCFrename.VCFrename as LCL6VCFrename {
  107. input:
  108. trio_vcf_gz=LCL6zipIndex.vcf_gz,
  109. trio_vcf_idx=LCL6zipIndex.vcf_idx,
  110. mother_name=quartet[7],
  111. father_name=quartet[6],
  112. child_name=quartet[5],
  113. family_name=quartet[8],
  114. child="LCL6",
  115. cluster_config=cluster_config,
  116. disk_size=disk_size
  117. }
  118. call mergeSister.mergeSister as mergeSister {
  119. input:
  120. LCL5_trio_vcf_gz=LCL5VCFrename.rename_trio_vcf_gz,
  121. LCL5_trio_vcf_idx=LCL5VCFrename.rename_trio_vcf_idx,
  122. LCL6_trio_vcf_gz=LCL6VCFrename.rename_trio_vcf_gz,
  123. LCL6_trio_vcf_idx=LCL6VCFrename.rename_trio_vcf_idx,
  124. family_name=quartet[8],
  125. cluster_config=cluster_config,
  126. disk_size=disk_size
  127. }
  128. call reformVCF.reformVCF as reformVCF {
  129. input:
  130. family_mendelian_info=mergeSister.family_mendelian_info,
  131. family_name=quartet[8],
  132. cluster_config=cluster_config,
  133. disk_size=disk_size
  134. }
  135. call merge_info.merge_info as LCL5mergeInfo {
  136. input:
  137. vcfInfo=LCL5variantsNorm.normed_txt,
  138. mendelianInfo=reformVCF.LCL5_family_info_txt,
  139. sample=quartet[4],
  140. cluster_config=cluster_config,
  141. disk_size=disk_size
  142. }
  143. call merge_info.merge_info as LCL6mergeInfo {
  144. input:
  145. vcfInfo=LCL6variantsNorm.normed_txt,
  146. mendelianInfo=reformVCF.LCL6_family_info_txt,
  147. sample=quartet[5],
  148. cluster_config=cluster_config,
  149. disk_size=disk_size
  150. }
  151. call merge_info.merge_info as LCL7mergeInfo {
  152. input:
  153. vcfInfo=LCL7variantsNorm.normed_txt,
  154. mendelianInfo=reformVCF.LCL7_family_info_txt,
  155. sample=quartet[6],
  156. cluster_config=cluster_config,
  157. disk_size=disk_size
  158. }
  159. call merge_info.merge_info as LCL8mergeInfo {
  160. input:
  161. vcfInfo=LCL8variantsNorm.normed_txt,
  162. mendelianInfo=reformVCF.LCL8_family_info_txt,
  163. sample=quartet[7],
  164. cluster_config=cluster_config,
  165. disk_size=disk_size
  166. }
  167. call zipIndex.zipIndex as LCL5allInfozipIndex {
  168. input:
  169. vcf=LCL5mergeInfo.all_info,
  170. cluster_config=cluster_config,
  171. disk_size=disk_size
  172. }
  173. call zipIndex.zipIndex as LCL6allInfozipIndex {
  174. input:
  175. vcf=LCL6mergeInfo.all_info,
  176. cluster_config=cluster_config,
  177. disk_size=disk_size
  178. }
  179. call zipIndex.zipIndex as LCL7allInfozipIndex {
  180. input:
  181. vcf=LCL7mergeInfo.all_info,
  182. cluster_config=cluster_config,
  183. disk_size=disk_size
  184. }
  185. call zipIndex.zipIndex as LCL8allInfozipIndex {
  186. input:
  187. vcf=LCL8mergeInfo.all_info,
  188. cluster_config=cluster_config,
  189. disk_size=disk_size
  190. }
  191. }
  192. ### family info merge
  193. call merge.merge as LCL5merge {
  194. input:
  195. family_vcf_gz=LCL5allInfozipIndex.vcf_gz,
  196. family_vcf_idx=LCL5allInfozipIndex.vcf_idx,
  197. sample="LCL5",
  198. cluster_config=cluster_config,
  199. disk_size=disk_size
  200. }
  201. call bed_annotation.bed_annotation as LCL5bed_annotation {
  202. input:
  203. merged_vcf_gz=LCL5merge.merged_vcf_gz,
  204. merged_vcf_idx=LCL5merge.merged_vcf_idx,
  205. repeat_bed=repeat_bed,
  206. sample='LCL5',
  207. cluster_config=cluster_config,
  208. disk_size=disk_size
  209. }
  210. call votes.votes as LCL5votes {
  211. input:
  212. repeat_annotated_vcf=LCL5bed_annotation.repeat_annotated_vcf,
  213. vcf_dup=LCL5merge.vcf_dup,
  214. sample='LCL5',
  215. prefix='LCL5',
  216. cluster_config=cluster_config,
  217. disk_size=disk_size
  218. }
  219. call merge.merge as LCL6merge {
  220. input:
  221. family_vcf_gz=LCL6allInfozipIndex.vcf_gz,
  222. family_vcf_idx=LCL6allInfozipIndex.vcf_idx,
  223. sample="LCL6",
  224. cluster_config=cluster_config,
  225. disk_size=disk_size
  226. }
  227. call bed_annotation.bed_annotation as LCL6bed_annotation {
  228. input:
  229. merged_vcf_gz=LCL6merge.merged_vcf_gz,
  230. merged_vcf_idx=LCL6merge.merged_vcf_idx,
  231. repeat_bed=repeat_bed,
  232. sample='LCL6',
  233. cluster_config=cluster_config,
  234. disk_size=disk_size
  235. }
  236. call votes.votes as LCL6votes {
  237. input:
  238. repeat_annotated_vcf=LCL6bed_annotation.repeat_annotated_vcf,
  239. vcf_dup=LCL6merge.vcf_dup,
  240. sample='LCL6',
  241. prefix='LCL6',
  242. cluster_config=cluster_config,
  243. disk_size=disk_size
  244. }
  245. call merge.merge as LCL7merge {
  246. input:
  247. family_vcf_gz=LCL7allInfozipIndex.vcf_gz,
  248. family_vcf_idx=LCL7allInfozipIndex.vcf_idx,
  249. sample="LCL7",
  250. cluster_config=cluster_config,
  251. disk_size=disk_size
  252. }
  253. call bed_annotation.bed_annotation as LCL7bed_annotation {
  254. input:
  255. merged_vcf_gz=LCL7merge.merged_vcf_gz,
  256. merged_vcf_idx=LCL7merge.merged_vcf_idx,
  257. repeat_bed=repeat_bed,
  258. sample='LCL7',
  259. cluster_config=cluster_config,
  260. disk_size=disk_size
  261. }
  262. call votes.votes as LCL7votes {
  263. input:
  264. repeat_annotated_vcf=LCL7bed_annotation.repeat_annotated_vcf,
  265. vcf_dup=LCL7merge.vcf_dup,
  266. sample='LCL7',
  267. prefix='LCL7',
  268. cluster_config=cluster_config,
  269. disk_size=disk_size
  270. }
  271. call merge.merge as LCL8merge {
  272. input:
  273. family_vcf_gz=LCL8allInfozipIndex.vcf_gz,
  274. family_vcf_idx=LCL8allInfozipIndex.vcf_idx,
  275. sample="LCL8",
  276. cluster_config=cluster_config,
  277. disk_size=disk_size
  278. }
  279. call bed_annotation.bed_annotation as LCL8bed_annotation {
  280. input:
  281. merged_vcf_gz=LCL8merge.merged_vcf_gz,
  282. merged_vcf_idx=LCL8merge.merged_vcf_idx,
  283. repeat_bed=repeat_bed,
  284. sample='LCL8',
  285. cluster_config=cluster_config,
  286. disk_size=disk_size
  287. }
  288. call votes.votes as LCL8votes {
  289. input:
  290. repeat_annotated_vcf=LCL8bed_annotation.repeat_annotated_vcf,
  291. vcf_dup=LCL8merge.vcf_dup,
  292. sample='LCL8',
  293. prefix='LCL8',
  294. cluster_config=cluster_config,
  295. disk_size=disk_size
  296. }
  297. }