ngs_server 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. data/bin/ngs_server +72 -50
  2. data/ext/bamtools/extconf.rb +3 -3
  3. data/ext/vcftools/Makefile +28 -0
  4. data/ext/vcftools/README.txt +36 -0
  5. data/ext/vcftools/cpp/.svn/all-wcprops +125 -0
  6. data/ext/vcftools/cpp/.svn/dir-prop-base +6 -0
  7. data/ext/vcftools/cpp/.svn/entries +708 -0
  8. data/ext/vcftools/cpp/.svn/text-base/Makefile.svn-base +46 -0
  9. data/ext/vcftools/cpp/.svn/text-base/dgeev.cpp.svn-base +146 -0
  10. data/ext/vcftools/cpp/.svn/text-base/dgeev.h.svn-base +43 -0
  11. data/ext/vcftools/cpp/.svn/text-base/output_log.cpp.svn-base +79 -0
  12. data/ext/vcftools/cpp/.svn/text-base/output_log.h.svn-base +34 -0
  13. data/ext/vcftools/cpp/.svn/text-base/parameters.cpp.svn-base +535 -0
  14. data/ext/vcftools/cpp/.svn/text-base/parameters.h.svn-base +154 -0
  15. data/ext/vcftools/cpp/.svn/text-base/vcf_entry.cpp.svn-base +497 -0
  16. data/ext/vcftools/cpp/.svn/text-base/vcf_entry.h.svn-base +190 -0
  17. data/ext/vcftools/cpp/.svn/text-base/vcf_entry_getters.cpp.svn-base +421 -0
  18. data/ext/vcftools/cpp/.svn/text-base/vcf_entry_setters.cpp.svn-base +482 -0
  19. data/ext/vcftools/cpp/.svn/text-base/vcf_file.cpp.svn-base +495 -0
  20. data/ext/vcftools/cpp/.svn/text-base/vcf_file.h.svn-base +184 -0
  21. data/ext/vcftools/cpp/.svn/text-base/vcf_file_diff.cpp.svn-base +1282 -0
  22. data/ext/vcftools/cpp/.svn/text-base/vcf_file_filters.cpp.svn-base +1215 -0
  23. data/ext/vcftools/cpp/.svn/text-base/vcf_file_format_convert.cpp.svn-base +1138 -0
  24. data/ext/vcftools/cpp/.svn/text-base/vcf_file_index.cpp.svn-base +171 -0
  25. data/ext/vcftools/cpp/.svn/text-base/vcf_file_output.cpp.svn-base +3012 -0
  26. data/ext/vcftools/cpp/.svn/text-base/vcftools.cpp.svn-base +107 -0
  27. data/ext/vcftools/cpp/.svn/text-base/vcftools.h.svn-base +25 -0
  28. data/ext/vcftools/cpp/Makefile +46 -0
  29. data/ext/vcftools/cpp/dgeev.cpp +146 -0
  30. data/ext/vcftools/cpp/dgeev.h +43 -0
  31. data/ext/vcftools/cpp/output_log.cpp +79 -0
  32. data/ext/vcftools/cpp/output_log.h +34 -0
  33. data/ext/vcftools/cpp/parameters.cpp +535 -0
  34. data/ext/vcftools/cpp/parameters.h +154 -0
  35. data/ext/vcftools/cpp/vcf_entry.cpp +497 -0
  36. data/ext/vcftools/cpp/vcf_entry.h +190 -0
  37. data/ext/vcftools/cpp/vcf_entry_getters.cpp +421 -0
  38. data/ext/vcftools/cpp/vcf_entry_setters.cpp +482 -0
  39. data/ext/vcftools/cpp/vcf_file.cpp +495 -0
  40. data/ext/vcftools/cpp/vcf_file.h +184 -0
  41. data/ext/vcftools/cpp/vcf_file_diff.cpp +1282 -0
  42. data/ext/vcftools/cpp/vcf_file_filters.cpp +1215 -0
  43. data/ext/vcftools/cpp/vcf_file_format_convert.cpp +1138 -0
  44. data/ext/vcftools/cpp/vcf_file_index.cpp +171 -0
  45. data/ext/vcftools/cpp/vcf_file_output.cpp +3012 -0
  46. data/ext/vcftools/cpp/vcftools.cpp +107 -0
  47. data/ext/vcftools/cpp/vcftools.h +25 -0
  48. data/ext/vcftools/examples/.svn/all-wcprops +185 -0
  49. data/ext/vcftools/examples/.svn/dir-prop-base +6 -0
  50. data/ext/vcftools/examples/.svn/entries +1048 -0
  51. data/ext/vcftools/examples/.svn/prop-base/perl-api-1.pl.svn-base +5 -0
  52. data/ext/vcftools/examples/.svn/text-base/annotate-test.vcf.svn-base +37 -0
  53. data/ext/vcftools/examples/.svn/text-base/annotate.out.svn-base +23 -0
  54. data/ext/vcftools/examples/.svn/text-base/annotate.txt.svn-base +7 -0
  55. data/ext/vcftools/examples/.svn/text-base/annotate2.out.svn-base +52 -0
  56. data/ext/vcftools/examples/.svn/text-base/annotate3.out.svn-base +23 -0
  57. data/ext/vcftools/examples/.svn/text-base/cmp-test-a-3.3.vcf.svn-base +12 -0
  58. data/ext/vcftools/examples/.svn/text-base/cmp-test-a.vcf.svn-base +12 -0
  59. data/ext/vcftools/examples/.svn/text-base/cmp-test-b-3.3.vcf.svn-base +12 -0
  60. data/ext/vcftools/examples/.svn/text-base/cmp-test-b.vcf.svn-base +12 -0
  61. data/ext/vcftools/examples/.svn/text-base/cmp-test.out.svn-base +53 -0
  62. data/ext/vcftools/examples/.svn/text-base/concat-a.vcf.svn-base +21 -0
  63. data/ext/vcftools/examples/.svn/text-base/concat-b.vcf.svn-base +13 -0
  64. data/ext/vcftools/examples/.svn/text-base/concat-c.vcf.svn-base +19 -0
  65. data/ext/vcftools/examples/.svn/text-base/concat.out.svn-base +39 -0
  66. data/ext/vcftools/examples/.svn/text-base/invalid-4.0.vcf.svn-base +31 -0
  67. data/ext/vcftools/examples/.svn/text-base/isec-n2-test.vcf.out.svn-base +19 -0
  68. data/ext/vcftools/examples/.svn/text-base/merge-test-a.vcf.svn-base +17 -0
  69. data/ext/vcftools/examples/.svn/text-base/merge-test-b.vcf.svn-base +17 -0
  70. data/ext/vcftools/examples/.svn/text-base/merge-test-c.vcf.svn-base +15 -0
  71. data/ext/vcftools/examples/.svn/text-base/merge-test.vcf.out.svn-base +31 -0
  72. data/ext/vcftools/examples/.svn/text-base/perl-api-1.pl.svn-base +46 -0
  73. data/ext/vcftools/examples/.svn/text-base/query-test.out.svn-base +6 -0
  74. data/ext/vcftools/examples/.svn/text-base/shuffle-test.vcf.svn-base +12 -0
  75. data/ext/vcftools/examples/.svn/text-base/subset.SNPs.out.svn-base +10 -0
  76. data/ext/vcftools/examples/.svn/text-base/subset.indels.out.svn-base +18 -0
  77. data/ext/vcftools/examples/.svn/text-base/subset.vcf.svn-base +21 -0
  78. data/ext/vcftools/examples/.svn/text-base/valid-3.3.vcf.svn-base +30 -0
  79. data/ext/vcftools/examples/.svn/text-base/valid-4.0.vcf.stats.svn-base +104 -0
  80. data/ext/vcftools/examples/.svn/text-base/valid-4.0.vcf.svn-base +34 -0
  81. data/ext/vcftools/examples/.svn/text-base/valid-4.1.vcf.svn-base +37 -0
  82. data/ext/vcftools/examples/annotate-test.vcf +37 -0
  83. data/ext/vcftools/examples/annotate.out +23 -0
  84. data/ext/vcftools/examples/annotate.txt +7 -0
  85. data/ext/vcftools/examples/annotate2.out +52 -0
  86. data/ext/vcftools/examples/annotate3.out +23 -0
  87. data/ext/vcftools/examples/cmp-test-a-3.3.vcf +12 -0
  88. data/ext/vcftools/examples/cmp-test-a.vcf +12 -0
  89. data/ext/vcftools/examples/cmp-test-b-3.3.vcf +12 -0
  90. data/ext/vcftools/examples/cmp-test-b.vcf +12 -0
  91. data/ext/vcftools/examples/cmp-test.out +53 -0
  92. data/ext/vcftools/examples/concat-a.vcf +21 -0
  93. data/ext/vcftools/examples/concat-b.vcf +13 -0
  94. data/ext/vcftools/examples/concat-c.vcf +19 -0
  95. data/ext/vcftools/examples/concat.out +39 -0
  96. data/ext/vcftools/examples/invalid-4.0.vcf +31 -0
  97. data/ext/vcftools/examples/isec-n2-test.vcf.out +19 -0
  98. data/ext/vcftools/examples/merge-test-a.vcf +17 -0
  99. data/ext/vcftools/examples/merge-test-b.vcf +17 -0
  100. data/ext/vcftools/examples/merge-test-c.vcf +15 -0
  101. data/ext/vcftools/examples/merge-test.vcf.out +31 -0
  102. data/ext/vcftools/examples/perl-api-1.pl +46 -0
  103. data/ext/vcftools/examples/query-test.out +6 -0
  104. data/ext/vcftools/examples/shuffle-test.vcf +12 -0
  105. data/ext/vcftools/examples/subset.SNPs.out +10 -0
  106. data/ext/vcftools/examples/subset.indels.out +18 -0
  107. data/ext/vcftools/examples/subset.vcf +21 -0
  108. data/ext/vcftools/examples/valid-3.3.vcf +30 -0
  109. data/ext/vcftools/examples/valid-4.0.vcf +34 -0
  110. data/ext/vcftools/examples/valid-4.0.vcf.stats +104 -0
  111. data/ext/vcftools/examples/valid-4.1.vcf +37 -0
  112. data/ext/vcftools/extconf.rb +2 -0
  113. data/ext/vcftools/perl/.svn/all-wcprops +149 -0
  114. data/ext/vcftools/perl/.svn/entries +844 -0
  115. data/ext/vcftools/perl/.svn/prop-base/fill-aa.svn-base +5 -0
  116. data/ext/vcftools/perl/.svn/prop-base/fill-an-ac.svn-base +5 -0
  117. data/ext/vcftools/perl/.svn/prop-base/fill-ref-md5.svn-base +5 -0
  118. data/ext/vcftools/perl/.svn/prop-base/tab-to-vcf.svn-base +5 -0
  119. data/ext/vcftools/perl/.svn/prop-base/test.t.svn-base +5 -0
  120. data/ext/vcftools/perl/.svn/prop-base/vcf-annotate.svn-base +5 -0
  121. data/ext/vcftools/perl/.svn/prop-base/vcf-compare.svn-base +5 -0
  122. data/ext/vcftools/perl/.svn/prop-base/vcf-concat.svn-base +5 -0
  123. data/ext/vcftools/perl/.svn/prop-base/vcf-convert.svn-base +5 -0
  124. data/ext/vcftools/perl/.svn/prop-base/vcf-fix-newlines.svn-base +5 -0
  125. data/ext/vcftools/perl/.svn/prop-base/vcf-isec.svn-base +5 -0
  126. data/ext/vcftools/perl/.svn/prop-base/vcf-merge.svn-base +5 -0
  127. data/ext/vcftools/perl/.svn/prop-base/vcf-query.svn-base +5 -0
  128. data/ext/vcftools/perl/.svn/prop-base/vcf-shuffle-cols.svn-base +5 -0
  129. data/ext/vcftools/perl/.svn/prop-base/vcf-sort.svn-base +5 -0
  130. data/ext/vcftools/perl/.svn/prop-base/vcf-stats.svn-base +5 -0
  131. data/ext/vcftools/perl/.svn/prop-base/vcf-subset.svn-base +5 -0
  132. data/ext/vcftools/perl/.svn/prop-base/vcf-to-tab.svn-base +5 -0
  133. data/ext/vcftools/perl/.svn/prop-base/vcf-validator.svn-base +5 -0
  134. data/ext/vcftools/perl/.svn/text-base/ChangeLog.svn-base +84 -0
  135. data/ext/vcftools/perl/.svn/text-base/FaSlice.pm.svn-base +214 -0
  136. data/ext/vcftools/perl/.svn/text-base/Makefile.svn-base +12 -0
  137. data/ext/vcftools/perl/.svn/text-base/Vcf.pm.svn-base +2853 -0
  138. data/ext/vcftools/perl/.svn/text-base/VcfStats.pm.svn-base +681 -0
  139. data/ext/vcftools/perl/.svn/text-base/fill-aa.svn-base +103 -0
  140. data/ext/vcftools/perl/.svn/text-base/fill-an-ac.svn-base +56 -0
  141. data/ext/vcftools/perl/.svn/text-base/fill-ref-md5.svn-base +204 -0
  142. data/ext/vcftools/perl/.svn/text-base/tab-to-vcf.svn-base +92 -0
  143. data/ext/vcftools/perl/.svn/text-base/test.t.svn-base +376 -0
  144. data/ext/vcftools/perl/.svn/text-base/vcf-annotate.svn-base +1099 -0
  145. data/ext/vcftools/perl/.svn/text-base/vcf-compare.svn-base +1193 -0
  146. data/ext/vcftools/perl/.svn/text-base/vcf-concat.svn-base +310 -0
  147. data/ext/vcftools/perl/.svn/text-base/vcf-convert.svn-base +180 -0
  148. data/ext/vcftools/perl/.svn/text-base/vcf-fix-newlines.svn-base +97 -0
  149. data/ext/vcftools/perl/.svn/text-base/vcf-isec.svn-base +660 -0
  150. data/ext/vcftools/perl/.svn/text-base/vcf-merge.svn-base +577 -0
  151. data/ext/vcftools/perl/.svn/text-base/vcf-query.svn-base +272 -0
  152. data/ext/vcftools/perl/.svn/text-base/vcf-shuffle-cols.svn-base +89 -0
  153. data/ext/vcftools/perl/.svn/text-base/vcf-sort.svn-base +79 -0
  154. data/ext/vcftools/perl/.svn/text-base/vcf-stats.svn-base +160 -0
  155. data/ext/vcftools/perl/.svn/text-base/vcf-subset.svn-base +206 -0
  156. data/ext/vcftools/perl/.svn/text-base/vcf-to-tab.svn-base +112 -0
  157. data/ext/vcftools/perl/.svn/text-base/vcf-validator.svn-base +145 -0
  158. data/ext/vcftools/perl/ChangeLog +84 -0
  159. data/ext/vcftools/perl/FaSlice.pm +214 -0
  160. data/ext/vcftools/perl/Makefile +12 -0
  161. data/ext/vcftools/perl/Vcf.pm +2853 -0
  162. data/ext/vcftools/perl/VcfStats.pm +681 -0
  163. data/ext/vcftools/perl/fill-aa +103 -0
  164. data/ext/vcftools/perl/fill-an-ac +56 -0
  165. data/ext/vcftools/perl/fill-ref-md5 +204 -0
  166. data/ext/vcftools/perl/tab-to-vcf +92 -0
  167. data/ext/vcftools/perl/test.t +376 -0
  168. data/ext/vcftools/perl/vcf-annotate +1099 -0
  169. data/ext/vcftools/perl/vcf-compare +1193 -0
  170. data/ext/vcftools/perl/vcf-concat +310 -0
  171. data/ext/vcftools/perl/vcf-convert +180 -0
  172. data/ext/vcftools/perl/vcf-fix-newlines +97 -0
  173. data/ext/vcftools/perl/vcf-isec +660 -0
  174. data/ext/vcftools/perl/vcf-merge +577 -0
  175. data/ext/vcftools/perl/vcf-query +286 -0
  176. data/ext/vcftools/perl/vcf-shuffle-cols +89 -0
  177. data/ext/vcftools/perl/vcf-sort +79 -0
  178. data/ext/vcftools/perl/vcf-stats +160 -0
  179. data/ext/vcftools/perl/vcf-subset +206 -0
  180. data/ext/vcftools/perl/vcf-to-tab +112 -0
  181. data/ext/vcftools/perl/vcf-validator +145 -0
  182. data/ext/vcftools/website/.svn/all-wcprops +41 -0
  183. data/ext/vcftools/website/.svn/entries +238 -0
  184. data/ext/vcftools/website/.svn/prop-base/VCF-poster.pdf.svn-base +5 -0
  185. data/ext/vcftools/website/.svn/prop-base/favicon.ico.svn-base +5 -0
  186. data/ext/vcftools/website/.svn/prop-base/favicon.png.svn-base +5 -0
  187. data/ext/vcftools/website/.svn/text-base/Makefile.svn-base +6 -0
  188. data/ext/vcftools/website/.svn/text-base/README.svn-base +2 -0
  189. data/ext/vcftools/website/.svn/text-base/VCF-poster.pdf.svn-base +0 -0
  190. data/ext/vcftools/website/.svn/text-base/default.css.svn-base +250 -0
  191. data/ext/vcftools/website/.svn/text-base/favicon.ico.svn-base +0 -0
  192. data/ext/vcftools/website/.svn/text-base/favicon.png.svn-base +0 -0
  193. data/ext/vcftools/website/Makefile +6 -0
  194. data/ext/vcftools/website/README +2 -0
  195. data/ext/vcftools/website/VCF-poster.pdf +0 -0
  196. data/ext/vcftools/website/default.css +250 -0
  197. data/ext/vcftools/website/favicon.ico +0 -0
  198. data/ext/vcftools/website/favicon.png +0 -0
  199. data/ext/vcftools/website/img/.svn/all-wcprops +53 -0
  200. data/ext/vcftools/website/img/.svn/entries +300 -0
  201. data/ext/vcftools/website/img/.svn/prop-base/bg.gif.svn-base +5 -0
  202. data/ext/vcftools/website/img/.svn/prop-base/bgcode.gif.svn-base +5 -0
  203. data/ext/vcftools/website/img/.svn/prop-base/bgcontainer.gif.svn-base +5 -0
  204. data/ext/vcftools/website/img/.svn/prop-base/bgul.gif.svn-base +5 -0
  205. data/ext/vcftools/website/img/.svn/prop-base/header.gif.svn-base +5 -0
  206. data/ext/vcftools/website/img/.svn/prop-base/li.gif.svn-base +5 -0
  207. data/ext/vcftools/website/img/.svn/prop-base/quote.gif.svn-base +5 -0
  208. data/ext/vcftools/website/img/.svn/prop-base/search.gif.svn-base +5 -0
  209. data/ext/vcftools/website/img/.svn/text-base/bg.gif.svn-base +0 -0
  210. data/ext/vcftools/website/img/.svn/text-base/bgcode.gif.svn-base +0 -0
  211. data/ext/vcftools/website/img/.svn/text-base/bgcontainer.gif.svn-base +0 -0
  212. data/ext/vcftools/website/img/.svn/text-base/bgul.gif.svn-base +0 -0
  213. data/ext/vcftools/website/img/.svn/text-base/header.gif.svn-base +0 -0
  214. data/ext/vcftools/website/img/.svn/text-base/li.gif.svn-base +0 -0
  215. data/ext/vcftools/website/img/.svn/text-base/quote.gif.svn-base +0 -0
  216. data/ext/vcftools/website/img/.svn/text-base/search.gif.svn-base +0 -0
  217. data/ext/vcftools/website/img/bg.gif +0 -0
  218. data/ext/vcftools/website/img/bgcode.gif +0 -0
  219. data/ext/vcftools/website/img/bgcontainer.gif +0 -0
  220. data/ext/vcftools/website/img/bgul.gif +0 -0
  221. data/ext/vcftools/website/img/header.gif +0 -0
  222. data/ext/vcftools/website/img/li.gif +0 -0
  223. data/ext/vcftools/website/img/quote.gif +0 -0
  224. data/ext/vcftools/website/img/search.gif +0 -0
  225. data/ext/vcftools/website/src/.svn/all-wcprops +53 -0
  226. data/ext/vcftools/website/src/.svn/entries +300 -0
  227. data/ext/vcftools/website/src/.svn/text-base/docs.inc.svn-base +202 -0
  228. data/ext/vcftools/website/src/.svn/text-base/index.inc.svn-base +52 -0
  229. data/ext/vcftools/website/src/.svn/text-base/index.php.svn-base +80 -0
  230. data/ext/vcftools/website/src/.svn/text-base/license.inc.svn-base +27 -0
  231. data/ext/vcftools/website/src/.svn/text-base/links.inc.svn-base +13 -0
  232. data/ext/vcftools/website/src/.svn/text-base/options.inc.svn-base +654 -0
  233. data/ext/vcftools/website/src/.svn/text-base/perl_module.inc.svn-base +249 -0
  234. data/ext/vcftools/website/src/.svn/text-base/specs.inc.svn-base +18 -0
  235. data/ext/vcftools/website/src/docs.inc +202 -0
  236. data/ext/vcftools/website/src/index.inc +52 -0
  237. data/ext/vcftools/website/src/index.php +80 -0
  238. data/ext/vcftools/website/src/license.inc +27 -0
  239. data/ext/vcftools/website/src/links.inc +13 -0
  240. data/ext/vcftools/website/src/options.inc +654 -0
  241. data/ext/vcftools/website/src/perl_module.inc +249 -0
  242. data/ext/vcftools/website/src/specs.inc +18 -0
  243. data/lib/config.ru +9 -0
  244. data/lib/ngs_server/add.rb +9 -0
  245. data/lib/ngs_server/version.rb +1 -1
  246. data/lib/ngs_server.rb +55 -3
  247. data/ngs_server.gemspec +5 -2
  248. metadata +296 -6
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,5 @@
1
+ K 14
2
+ svn:executable
3
+ V 1
4
+ *
5
+ END
@@ -0,0 +1,84 @@
1
+ 2011-04-04 14:00 petr.danecek@sanger
2
+ * VCFtools now support VCFv4.1
3
+ * fill-ref-md5: New tool backfilling sequence MD5s into VCF header
4
+ * Renamed merge-vcf, compare-vcf etc. to consistent naming vcf-merge, vcf-compare
5
+ * vcf-merge: Now merging also GL and other Number=[AG] tags
6
+ * vcf-compare: Comparing indel haplotypes
7
+
8
+ 2011-02-21 12:31 petr.danecek@sanger
9
+ * vcf-stats: new -s option to speed up parsing when stats computed for selected samples only
10
+ * merge-vcf: allow to merge arbitrary chunks; -c option now deprecated, use -r instead
11
+ * compare-vcf: change in output format and more detailed comparison
12
+
13
+ 2011-02-17 17:36 petr.danecek@sanger
14
+ * vcf-stats: allow querying stats of individual samples
15
+
16
+ 2011-02-16 12:07 petr.danecek@sanger
17
+ * vcf-stats: major revision
18
+ * vcf-annotate: more filtering options
19
+
20
+ 2011-02-04 14:43 petr
21
+ * merge-vcf: if possible, calculate AC,AN even for sites without genotypes
22
+
23
+ 2011-02-03 15:04 petr
24
+ * merge-vcf: fixed a bug introduced by the previous fix.
25
+
26
+ 2011-02-02 21:02 petr
27
+ * merge-vcf: fixed a bug in merging indel ALTs. Only VCFs without samples were affected.
28
+
29
+ 2011-01-28 15:38 petr
30
+ * vcf-subset: new option for printing rows with calls private to the subset group
31
+
32
+ 2011-01-24 13:38 petr
33
+ * Vcf.pm: uppercase floating point number expressions (such as
34
+ 1.0382033E-6) now pass validation
35
+
36
+ 2011-01-20 08:28 petr
37
+ * vcf-concat: print header also for empty VCFs with the -s option
38
+
39
+ 2011-01-04 08:59 petr
40
+ * vcf-isec, vcf-sort, Vcf.pm: replaced "zcat" by "gunzip -c"
41
+
42
+ 2010-12-22 14:18 petr
43
+ * vcf-annotate: New --SnpCluster option
44
+ * Vcf.pm: new sub add_filter()
45
+
46
+ 2010-12-15 13:44 petr
47
+ * vcf-isec: By default output records from all files with unique positions
48
+ (duplicate records from the same file still should be printed). With the -o
49
+ switch, only positions from the left-most file will be printed.
50
+
51
+ 2010-12-09 14:48 petr
52
+ * query-vcf: Output 'True' for Flag tags when present and . when absent
53
+ * vcf-annotate: Fix: the command line eats quotes when they are not escaped
54
+
55
+ 2010-12-08 12:06 petr
56
+ * Vcf.pm: throw an error when tabix fails.
57
+ * query-vcf: enable streaming of files when region is not specified.
58
+
59
+ 2010-12-02 11:53 petr
60
+ * Vcf.pm: allow ALT alleles which are not present in samples
61
+ * vcf-isec: Multiple files can be created simultaneously with all possible
62
+ isec combinations. Suitable for Venn Diagram analysis.
63
+ * merge-vcf: Do not remove ALT alleles if no samples are present
64
+ * merge-vcf: Do FILTER merging more intelligently.
65
+ * merge-vcf: Join the QUAL column: use average value weighted by the number of samples.
66
+
67
+ 2010-11-28 08:34 petr
68
+ * vcf-concat: Partial sort
69
+ * vcf-validator: Added -u option
70
+ * VcfStats.pm: dump_counts
71
+
72
+ 2010-11-27 13:04 petr
73
+ * vcf-subset: Filter variants by type
74
+
75
+ 2010-11-26 09:08 petr
76
+ * vcf-annotate: Added possibility to read header descriptions from a file
77
+
78
+ 2010-11-24 13:25 petr
79
+ * Fix in Vcf.pm:fill_ref_alt_mapping. VCF files processed with merge-vcf were
80
+ affected when containing IDs in the ALT column.
81
+
82
+ 2010-11-23 13:12 petr
83
+ * Major revamp of Vcf.pm to allow better inheritance. Problems likely.
84
+
@@ -0,0 +1,214 @@
1
+ # Author: petr.danecek@sanger
2
+ #
3
+
4
+ =head1 NAME
5
+
6
+ FaSlice.pm. Module for cached access to fasta sequences, employs samtools faidx.
7
+
8
+ =head1 SYNOPSIS
9
+
10
+ use FaSlice;
11
+
12
+ my $fa = FaSlice->new(file=>'ref.fa');
13
+ $fa->get_base(1,12345);
14
+ $fa->get_slice(1,12345,54321);
15
+
16
+ =cut
17
+
18
+
19
+ package FaSlice;
20
+
21
+ use strict;
22
+ use warnings;
23
+ use Carp;
24
+
25
+ =head2 new
26
+
27
+ About : Creates new FaSlice object.
28
+ Usage : my $fa = FaSlice->new(file=>'ref.fa');
29
+ Args : file .. the fasta file
30
+ oob .. out-of-bounds requests: one of 'throw' (throws), 'N' (fills the missing bases by Ns), or '' (returns empty string, default)
31
+ size .. size of the cached chunk read by samtools faidx (1_000_000)
32
+
33
+ =cut
34
+
35
+ sub new
36
+ {
37
+ my ($class,@args) = @_;
38
+ my $self = @args ? {@args} : {};
39
+ bless $self, ref($class) || $class;
40
+ if ( !$$self{file} ) { $self->throw("Missing the parameter file\n"); }
41
+ $$self{chr} = undef;
42
+ $$self{from} = undef;
43
+ $$self{to} = undef;
44
+ if ( !$$self{size} ) { $$self{size}=1_000_000; }
45
+ $$self{ncache_missed} = 0;
46
+ $$self{nqueries} = 0;
47
+ if ( !exists($$self{oob}) ) { $$self{oob}=''; }
48
+ if ( $$self{oob} ne '' && $$self{oob} ne 'throw' && $$self{oob} ne 'N' ) { $self->throw("The value of oob not recognised: [$$self{oob}]"); }
49
+ $self->chromosome_naming($$self{file});
50
+ return $self;
51
+ }
52
+
53
+ sub throw
54
+ {
55
+ my ($self,@msg) = @_;
56
+ confess(@msg);
57
+ }
58
+
59
+ sub cmd
60
+ {
61
+ my ($self,$cmd) = @_;
62
+ my @out = `$cmd`;
63
+ if ( $? )
64
+ {
65
+ my @msg = ();
66
+ push @msg, qq[The command "$cmd" returned non-zero status $?];
67
+ if ( $! )
68
+ {
69
+ push @msg, ": $!\n";
70
+ }
71
+ else
72
+ {
73
+ push @msg, ".\n";
74
+ }
75
+ if ( scalar @out )
76
+ {
77
+ push @msg, @out;
78
+ }
79
+ $self->throw(@msg);
80
+ }
81
+ return (@out);
82
+ }
83
+
84
+ # Read the first file of the fasta file and make a guess: Are all chromosomes
85
+ # names as 'chr1','chr2',etc or just '1','2',...?
86
+ # Future TODO: more robust chromosome name mapping?
87
+ sub chromosome_naming
88
+ {
89
+ my ($self,$fa_file) = @_;
90
+ open(my $fh,'<',"$fa_file.fai") or $self->throw("$fa_file.fai: $!");
91
+ my $line=<$fh>;
92
+ if ( !($line=~/^(chr)?\S+\t/) ) { chomp($line); $self->throw("FIXME: the sequence names not in '>(chr)?\\S+' format [$line] ... $fa_file.fai\n"); }
93
+ close($fh);
94
+ $$self{chr_naming} = defined $1 ? $1 : '';
95
+ }
96
+
97
+
98
+ sub read_chunk
99
+ {
100
+ my ($self,$chr,$pos) = @_;
101
+ $$self{chr} = $chr;
102
+ $chr =~ s/^chr//;
103
+ $chr = $$self{chr_naming}.$chr;
104
+ my $to = $pos + $$self{size};
105
+ my $cmd = "samtools faidx $$self{file} $chr:$pos-$to";
106
+ my @out = $self->cmd($cmd) or $self->throw("$cmd: $!");
107
+ my $line = shift(@out);
108
+ if ( !($line=~/^>$chr:(\d+)-(\d+)/) ) { $self->throw("Could not parse: $line"); }
109
+ $$self{from} = $1;
110
+ my $chunk = '';
111
+ while ($line=shift(@out))
112
+ {
113
+ chomp($line);
114
+ $chunk .= $line;
115
+ }
116
+ $$self{to} = $$self{from} + length($chunk) - 1;
117
+ $$self{chunk} = $chunk;
118
+ $$self{ncache_missed}++;
119
+ return;
120
+ }
121
+
122
+ =head2 get_base
123
+
124
+ About : Retrieves base at the given chromosome and position
125
+ Usage : my $fa = FaSlice->new(file=>'ref.fa'); $fa->get_base(1,12345);
126
+ Args : chromosome
127
+ 1-based coordinate
128
+
129
+ =cut
130
+
131
+ sub get_base
132
+ {
133
+ my ($self,$chr,$pos) = @_;
134
+ if ( !$$self{chr} || $chr ne $$self{chr} || $pos<$$self{from} || $pos>$$self{to} )
135
+ {
136
+ $self->read_chunk($chr,$pos);
137
+ }
138
+ $$self{nqueries}++;
139
+ my $idx = $pos - $$self{from};
140
+ if ( $$self{from}>$$self{to} )
141
+ {
142
+ if ( $$self{oob} eq '' ) { return ''; }
143
+ elsif ( $$self{oob} eq 'N' ) { return 'N'; }
144
+ $self->throw("No such site $chr:$pos in $$self{file}\n");
145
+ }
146
+ return substr($$self{chunk},$idx,1);
147
+ }
148
+
149
+
150
+ =head2 get_slice
151
+
152
+ About : Retrieves region
153
+ Usage : my $fa = FaSlice->new(file=>'ref.fa'); $fa->get_base(1,12345,54321);
154
+ Args : chromosome
155
+ 1-based coordinate
156
+
157
+ =cut
158
+
159
+ sub get_slice
160
+ {
161
+ my ($self,$chr,$from,$to) = @_;
162
+ if ( $to-$from >= $$self{size} ) { $self->throw("Too big region requested, $from-$to >= $$self{size}\n"); }
163
+ if ( $from>$to ) { $self->throw("Expected $from>$to\n"); }
164
+ if ( !$$self{chr} || $chr ne $$self{chr} || $from<$$self{from} || $to>$$self{to} )
165
+ {
166
+ $self->read_chunk($chr,$from);
167
+ }
168
+ $$self{nqueries}++;
169
+
170
+ if ( $$self{from}>$$self{to} || $$self{from}>$from || $$self{to}<$to )
171
+ {
172
+ if ( $$self{oob} eq 'throw' ) { $self->throw("The region out of bounds $chr:$from-$to in $$self{file}\n"); }
173
+ elsif ( $$self{oob} eq '' ) { return ''; }
174
+
175
+ if ( $$self{from}>$$self{to} ) { return 'N' x ($to-$from+1); }
176
+ if ( $$self{from}>$to ) { $self->throw("FIXME: this shouldn't happen $chr:$from-$to .. $$self{from},$$self{to} .. $$self{file}"); }
177
+
178
+ my $lfill = '';
179
+ my $rfill = '';
180
+ if ( $$self{from}>$from ) { $lfill = 'N' x ($$self{from}-$from); $from=$$self{from}; }
181
+ if ( $$self{to}<$to ) { $rfill = 'N' x ($to-$$self{to}); $to=$$self{to}; }
182
+ return $lfill . substr($$self{chunk},$from-$$self{from},$to-$from+1) . $rfill;
183
+ }
184
+ return substr($$self{chunk},$from-$$self{from},$to-$from+1);
185
+ }
186
+
187
+
188
+ # http://www.illumina.com/documents/products/technotes/technote_topbot.pdf
189
+ sub illumina_alleles_TOP_to_ref
190
+ {
191
+ my ($self,$a1,$a2,$chr,$pos,$ref) = @_;
192
+ my %map = (A=>'T', C=>'G', G=>'C', T=>'A');
193
+ my %top = (
194
+ A=>{A=>-2,C=> 1,G=> 1,T=>-1},
195
+ C=>{A=> 1,C=>-2,G=>-1,T=> 0},
196
+ G=>{A=> 1,C=>-1,G=>-2,T=> 0},
197
+ T=>{A=>-1,C=> 0,G=> 0,T=>-2} );
198
+
199
+ my $stat = $top{$a1}{$a2};
200
+ if ( $stat==-2 ) { $self->throw("Expected two different bases, got $a1 and $a2.\n"); }
201
+ if ( $stat==-1 )
202
+ {
203
+ # Now we should do the sequence walking to see if the reference is TOP or BOT,
204
+ # but we do not this in ill-to-vcf: C/G would become G/C and A/T would become T/A.
205
+ return ($a1,$a2);
206
+ }
207
+ if ( $stat==0 ) { $self->throw("Expected Illumina TOP, got $a1 and $a2.\n"); }
208
+ if ( $ref eq $a1 or $ref eq $a2 ) { return ($a1,$a2); }
209
+ return ($map{$a1},$map{$a2});
210
+ }
211
+
212
+
213
+ 1;
214
+
@@ -0,0 +1,12 @@
1
+
2
+ BIN = vcf-compare fill-aa vcf-annotate vcf-merge vcf-isec vcf-stats vcf-to-tab fill-an-ac \
3
+ vcf-query vcf-convert vcf-subset vcf-validator vcf-concat vcf-sort
4
+ MOD = FaSlice.pm Vcf.pm
5
+
6
+ install:
7
+ @for i in $(BIN); do cp $(CURDIR)/$$i $(BINDIR)/$$i; done; \
8
+ for i in $(MOD); do cp $(CURDIR)/$$i $(MODDIR)/$$i; done;
9
+
10
+ clean:
11
+ @for i in $(BIN); do rm -f $(BINDIR)/$$i; done; \
12
+ for i in $(MOD); do rm -f $(MODDIR)/$$i; done;