ngs_server 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (284) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/Rakefile +2 -0
  4. data/bin/ngs_server +58 -0
  5. data/data/holder.txt +0 -0
  6. data/ext/bamtools/CMakeLists.txt +49 -0
  7. data/ext/bamtools/LICENSE +22 -0
  8. data/ext/bamtools/README +60 -0
  9. data/ext/bamtools/Tutorial_Toolkit_BamTools-1.0.pdf +0 -0
  10. data/ext/bamtools/docs/Doxyfile +1601 -0
  11. data/ext/bamtools/extconf.rb +9 -0
  12. data/ext/bamtools/src/CMakeFiles/CMakeDirectoryInformation.cmake +22 -0
  13. data/ext/bamtools/src/CMakeFiles/SharedHeaders.dir/DependInfo.cmake +13 -0
  14. data/ext/bamtools/src/CMakeFiles/SharedHeaders.dir/build.make +65 -0
  15. data/ext/bamtools/src/CMakeFiles/SharedHeaders.dir/cmake_clean.cmake +8 -0
  16. data/ext/bamtools/src/CMakeFiles/SharedHeaders.dir/depend.internal +3 -0
  17. data/ext/bamtools/src/CMakeFiles/SharedHeaders.dir/depend.make +3 -0
  18. data/ext/bamtools/src/CMakeFiles/SharedHeaders.dir/progress.make +2 -0
  19. data/ext/bamtools/src/CMakeFiles/progress.marks +1 -0
  20. data/ext/bamtools/src/CMakeLists.txt +18 -0
  21. data/ext/bamtools/src/ExportHeader.cmake +31 -0
  22. data/ext/bamtools/src/Makefile +182 -0
  23. data/ext/bamtools/src/api/BamAlignment.cpp +2432 -0
  24. data/ext/bamtools/src/api/BamAlignment.h +206 -0
  25. data/ext/bamtools/src/api/BamAux.h +456 -0
  26. data/ext/bamtools/src/api/BamConstants.h +127 -0
  27. data/ext/bamtools/src/api/BamIndex.h +79 -0
  28. data/ext/bamtools/src/api/BamMultiReader.cpp +395 -0
  29. data/ext/bamtools/src/api/BamMultiReader.h +126 -0
  30. data/ext/bamtools/src/api/BamReader.cpp +369 -0
  31. data/ext/bamtools/src/api/BamReader.h +117 -0
  32. data/ext/bamtools/src/api/BamWriter.cpp +142 -0
  33. data/ext/bamtools/src/api/BamWriter.h +63 -0
  34. data/ext/bamtools/src/api/CMakeFiles/APIHeaders.dir/DependInfo.cmake +14 -0
  35. data/ext/bamtools/src/api/CMakeFiles/APIHeaders.dir/build.make +80 -0
  36. data/ext/bamtools/src/api/CMakeFiles/APIHeaders.dir/cmake_clean.cmake +8 -0
  37. data/ext/bamtools/src/api/CMakeFiles/APIHeaders.dir/depend.internal +3 -0
  38. data/ext/bamtools/src/api/CMakeFiles/APIHeaders.dir/depend.make +3 -0
  39. data/ext/bamtools/src/api/CMakeFiles/APIHeaders.dir/progress.make +2 -0
  40. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/BamAlignment.cpp.o +0 -0
  41. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/BamMultiReader.cpp.o +0 -0
  42. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/BamReader.cpp.o +0 -0
  43. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/BamWriter.cpp.o +0 -0
  44. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/CXX.includecache +596 -0
  45. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/DependInfo.cmake +41 -0
  46. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamHeader.cpp.o +0 -0
  47. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamProgram.cpp.o +0 -0
  48. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamProgramChain.cpp.o +0 -0
  49. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamReadGroup.cpp.o +0 -0
  50. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamReadGroupDictionary.cpp.o +0 -0
  51. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamSequence.cpp.o +0 -0
  52. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/SamSequenceDictionary.cpp.o +0 -0
  53. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/build.make +675 -0
  54. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/cmake_clean.cmake +32 -0
  55. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/cmake_clean_target.cmake +3 -0
  56. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/depend.internal +295 -0
  57. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/depend.make +295 -0
  58. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/flags.make +8 -0
  59. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamHeader_p.cpp.o +0 -0
  60. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamIndexFactory_p.cpp.o +0 -0
  61. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamMultiReader_p.cpp.o +0 -0
  62. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamRandomAccessController_p.cpp.o +0 -0
  63. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamReader_p.cpp.o +0 -0
  64. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamStandardIndex_p.cpp.o +0 -0
  65. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamToolsIndex_p.cpp.o +0 -0
  66. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BamWriter_p.cpp.o +0 -0
  67. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/BgzfStream_p.cpp.o +0 -0
  68. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/SamFormatParser_p.cpp.o +0 -0
  69. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/SamFormatPrinter_p.cpp.o +0 -0
  70. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/internal/SamHeaderValidator_p.cpp.o +0 -0
  71. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/link.txt +2 -0
  72. data/ext/bamtools/src/api/CMakeFiles/BamTools-static.dir/progress.make +24 -0
  73. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/BamAlignment.cpp.o +0 -0
  74. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/BamMultiReader.cpp.o +0 -0
  75. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/BamReader.cpp.o +0 -0
  76. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/BamWriter.cpp.o +0 -0
  77. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/CXX.includecache +596 -0
  78. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/DependInfo.cmake +47 -0
  79. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamHeader.cpp.o +0 -0
  80. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamProgram.cpp.o +0 -0
  81. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamProgramChain.cpp.o +0 -0
  82. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamReadGroup.cpp.o +0 -0
  83. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamReadGroupDictionary.cpp.o +0 -0
  84. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamSequence.cpp.o +0 -0
  85. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/SamSequenceDictionary.cpp.o +0 -0
  86. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/build.make +677 -0
  87. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/cmake_clean.cmake +33 -0
  88. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/depend.internal +295 -0
  89. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/depend.make +295 -0
  90. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/flags.make +8 -0
  91. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamHeader_p.cpp.o +0 -0
  92. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamIndexFactory_p.cpp.o +0 -0
  93. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamMultiReader_p.cpp.o +0 -0
  94. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamRandomAccessController_p.cpp.o +0 -0
  95. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamReader_p.cpp.o +0 -0
  96. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamStandardIndex_p.cpp.o +0 -0
  97. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamToolsIndex_p.cpp.o +0 -0
  98. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BamWriter_p.cpp.o +0 -0
  99. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/BgzfStream_p.cpp.o +0 -0
  100. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/SamFormatParser_p.cpp.o +0 -0
  101. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/SamFormatPrinter_p.cpp.o +0 -0
  102. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/internal/SamHeaderValidator_p.cpp.o +0 -0
  103. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/link.txt +1 -0
  104. data/ext/bamtools/src/api/CMakeFiles/BamTools.dir/progress.make +24 -0
  105. data/ext/bamtools/src/api/CMakeFiles/CMakeDirectoryInformation.cmake +22 -0
  106. data/ext/bamtools/src/api/CMakeFiles/progress.marks +1 -0
  107. data/ext/bamtools/src/api/CMakeLists.txt +78 -0
  108. data/ext/bamtools/src/api/Makefile +902 -0
  109. data/ext/bamtools/src/api/SamConstants.h +95 -0
  110. data/ext/bamtools/src/api/SamHeader.cpp +184 -0
  111. data/ext/bamtools/src/api/SamHeader.h +68 -0
  112. data/ext/bamtools/src/api/SamProgram.cpp +139 -0
  113. data/ext/bamtools/src/api/SamProgram.h +61 -0
  114. data/ext/bamtools/src/api/SamProgramChain.cpp +351 -0
  115. data/ext/bamtools/src/api/SamProgramChain.h +85 -0
  116. data/ext/bamtools/src/api/SamReadGroup.cpp +221 -0
  117. data/ext/bamtools/src/api/SamReadGroup.h +68 -0
  118. data/ext/bamtools/src/api/SamReadGroupDictionary.cpp +289 -0
  119. data/ext/bamtools/src/api/SamReadGroupDictionary.h +86 -0
  120. data/ext/bamtools/src/api/SamSequence.cpp +161 -0
  121. data/ext/bamtools/src/api/SamSequence.h +60 -0
  122. data/ext/bamtools/src/api/SamSequenceDictionary.cpp +292 -0
  123. data/ext/bamtools/src/api/SamSequenceDictionary.h +88 -0
  124. data/ext/bamtools/src/api/api_global.h +21 -0
  125. data/ext/bamtools/src/api/cmake_install.cmake +122 -0
  126. data/ext/bamtools/src/api/internal/BamHeader_p.cpp +132 -0
  127. data/ext/bamtools/src/api/internal/BamHeader_p.h +71 -0
  128. data/ext/bamtools/src/api/internal/BamIndexFactory_p.cpp +112 -0
  129. data/ext/bamtools/src/api/internal/BamIndexFactory_p.h +49 -0
  130. data/ext/bamtools/src/api/internal/BamMultiMerger_p.h +297 -0
  131. data/ext/bamtools/src/api/internal/BamMultiReader_p.cpp +805 -0
  132. data/ext/bamtools/src/api/internal/BamMultiReader_p.h +103 -0
  133. data/ext/bamtools/src/api/internal/BamRandomAccessController_p.cpp +272 -0
  134. data/ext/bamtools/src/api/internal/BamRandomAccessController_p.h +93 -0
  135. data/ext/bamtools/src/api/internal/BamReader_p.cpp +380 -0
  136. data/ext/bamtools/src/api/internal/BamReader_p.h +112 -0
  137. data/ext/bamtools/src/api/internal/BamStandardIndex_p.cpp +986 -0
  138. data/ext/bamtools/src/api/internal/BamStandardIndex_p.h +236 -0
  139. data/ext/bamtools/src/api/internal/BamToolsIndex_p.cpp +641 -0
  140. data/ext/bamtools/src/api/internal/BamToolsIndex_p.h +187 -0
  141. data/ext/bamtools/src/api/internal/BamWriter_p.cpp +424 -0
  142. data/ext/bamtools/src/api/internal/BamWriter_p.h +66 -0
  143. data/ext/bamtools/src/api/internal/BgzfStream_p.cpp +438 -0
  144. data/ext/bamtools/src/api/internal/BgzfStream_p.h +108 -0
  145. data/ext/bamtools/src/api/internal/SamFormatParser_p.cpp +230 -0
  146. data/ext/bamtools/src/api/internal/SamFormatParser_p.h +61 -0
  147. data/ext/bamtools/src/api/internal/SamFormatPrinter_p.cpp +210 -0
  148. data/ext/bamtools/src/api/internal/SamFormatPrinter_p.h +60 -0
  149. data/ext/bamtools/src/api/internal/SamHeaderValidator_p.cpp +510 -0
  150. data/ext/bamtools/src/api/internal/SamHeaderValidator_p.h +101 -0
  151. data/ext/bamtools/src/api/internal/SamHeaderVersion_p.h +134 -0
  152. data/ext/bamtools/src/cmake_install.cmake +42 -0
  153. data/ext/bamtools/src/shared/bamtools_global.h +78 -0
  154. data/ext/bamtools/src/third_party/CMakeFiles/CMakeDirectoryInformation.cmake +22 -0
  155. data/ext/bamtools/src/third_party/CMakeFiles/progress.marks +1 -0
  156. data/ext/bamtools/src/third_party/CMakeLists.txt +10 -0
  157. data/ext/bamtools/src/third_party/Makefile +167 -0
  158. data/ext/bamtools/src/third_party/cmake_install.cmake +35 -0
  159. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/CMakeDirectoryInformation.cmake +22 -0
  160. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/CXX.includecache +144 -0
  161. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/DependInfo.cmake +27 -0
  162. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/build.make +157 -0
  163. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/cmake_clean.cmake +13 -0
  164. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/depend.internal +31 -0
  165. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/depend.make +31 -0
  166. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/flags.make +8 -0
  167. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/json_reader.cpp.o +0 -0
  168. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/json_value.cpp.o +0 -0
  169. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/json_writer.cpp.o +0 -0
  170. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/link.txt +1 -0
  171. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/jsoncpp.dir/progress.make +4 -0
  172. data/ext/bamtools/src/third_party/jsoncpp/CMakeFiles/progress.marks +1 -0
  173. data/ext/bamtools/src/third_party/jsoncpp/CMakeLists.txt +23 -0
  174. data/ext/bamtools/src/third_party/jsoncpp/LICENSE +55 -0
  175. data/ext/bamtools/src/third_party/jsoncpp/Makefile +263 -0
  176. data/ext/bamtools/src/third_party/jsoncpp/cmake_install.cmake +29 -0
  177. data/ext/bamtools/src/third_party/jsoncpp/json.h +15 -0
  178. data/ext/bamtools/src/third_party/jsoncpp/json_batchallocator.h +130 -0
  179. data/ext/bamtools/src/third_party/jsoncpp/json_config.h +42 -0
  180. data/ext/bamtools/src/third_party/jsoncpp/json_features.h +47 -0
  181. data/ext/bamtools/src/third_party/jsoncpp/json_forwards.h +42 -0
  182. data/ext/bamtools/src/third_party/jsoncpp/json_internalarray.inl +453 -0
  183. data/ext/bamtools/src/third_party/jsoncpp/json_internalmap.inl +612 -0
  184. data/ext/bamtools/src/third_party/jsoncpp/json_reader.cpp +870 -0
  185. data/ext/bamtools/src/third_party/jsoncpp/json_reader.h +201 -0
  186. data/ext/bamtools/src/third_party/jsoncpp/json_tool.h +93 -0
  187. data/ext/bamtools/src/third_party/jsoncpp/json_value.cpp +1701 -0
  188. data/ext/bamtools/src/third_party/jsoncpp/json_value.h +1059 -0
  189. data/ext/bamtools/src/third_party/jsoncpp/json_valueiterator.inl +297 -0
  190. data/ext/bamtools/src/third_party/jsoncpp/json_writer.cpp +819 -0
  191. data/ext/bamtools/src/third_party/jsoncpp/json_writer.h +179 -0
  192. data/ext/bamtools/src/toolkit/CMakeFiles/CMakeDirectoryInformation.cmake +25 -0
  193. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/CXX.includecache +698 -0
  194. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/DependInfo.cmake +34 -0
  195. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools.cpp.o +0 -0
  196. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_convert.cpp.o +0 -0
  197. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_count.cpp.o +0 -0
  198. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_coverage.cpp.o +0 -0
  199. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_filter.cpp.o +0 -0
  200. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_header.cpp.o +0 -0
  201. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_index.cpp.o +0 -0
  202. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_merge.cpp.o +0 -0
  203. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_random.cpp.o +0 -0
  204. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_resolve.cpp.o +0 -0
  205. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_revert.cpp.o +0 -0
  206. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_sort.cpp.o +0 -0
  207. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_split.cpp.o +0 -0
  208. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_stats.cpp.o +0 -0
  209. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/build.make +447 -0
  210. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/cmake_clean.cmake +24 -0
  211. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/depend.internal +319 -0
  212. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/depend.make +319 -0
  213. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/flags.make +8 -0
  214. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/link.txt +1 -0
  215. data/ext/bamtools/src/toolkit/CMakeFiles/bamtools_cmd.dir/progress.make +15 -0
  216. data/ext/bamtools/src/toolkit/CMakeFiles/progress.marks +1 -0
  217. data/ext/bamtools/src/toolkit/CMakeLists.txt +44 -0
  218. data/ext/bamtools/src/toolkit/Makefile +560 -0
  219. data/ext/bamtools/src/toolkit/bamtools.cpp +163 -0
  220. data/ext/bamtools/src/toolkit/bamtools_convert.cpp +888 -0
  221. data/ext/bamtools/src/toolkit/bamtools_convert.h +37 -0
  222. data/ext/bamtools/src/toolkit/bamtools_count.cpp +187 -0
  223. data/ext/bamtools/src/toolkit/bamtools_count.h +37 -0
  224. data/ext/bamtools/src/toolkit/bamtools_coverage.cpp +196 -0
  225. data/ext/bamtools/src/toolkit/bamtools_coverage.h +37 -0
  226. data/ext/bamtools/src/toolkit/bamtools_filter.cpp +911 -0
  227. data/ext/bamtools/src/toolkit/bamtools_filter.h +37 -0
  228. data/ext/bamtools/src/toolkit/bamtools_header.cpp +122 -0
  229. data/ext/bamtools/src/toolkit/bamtools_header.h +38 -0
  230. data/ext/bamtools/src/toolkit/bamtools_index.cpp +126 -0
  231. data/ext/bamtools/src/toolkit/bamtools_index.h +37 -0
  232. data/ext/bamtools/src/toolkit/bamtools_merge.cpp +221 -0
  233. data/ext/bamtools/src/toolkit/bamtools_merge.h +37 -0
  234. data/ext/bamtools/src/toolkit/bamtools_random.cpp +255 -0
  235. data/ext/bamtools/src/toolkit/bamtools_random.h +37 -0
  236. data/ext/bamtools/src/toolkit/bamtools_resolve.cpp +1396 -0
  237. data/ext/bamtools/src/toolkit/bamtools_resolve.h +42 -0
  238. data/ext/bamtools/src/toolkit/bamtools_revert.cpp +194 -0
  239. data/ext/bamtools/src/toolkit/bamtools_revert.h +37 -0
  240. data/ext/bamtools/src/toolkit/bamtools_sort.cpp +410 -0
  241. data/ext/bamtools/src/toolkit/bamtools_sort.h +37 -0
  242. data/ext/bamtools/src/toolkit/bamtools_split.cpp +551 -0
  243. data/ext/bamtools/src/toolkit/bamtools_split.h +38 -0
  244. data/ext/bamtools/src/toolkit/bamtools_stats.cpp +286 -0
  245. data/ext/bamtools/src/toolkit/bamtools_stats.h +37 -0
  246. data/ext/bamtools/src/toolkit/bamtools_tool.h +35 -0
  247. data/ext/bamtools/src/toolkit/bamtools_version.h +20 -0
  248. data/ext/bamtools/src/toolkit/bamtools_version.h.in +20 -0
  249. data/ext/bamtools/src/toolkit/cmake_install.cmake +52 -0
  250. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/CXX.includecache +250 -0
  251. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/DependInfo.cmake +29 -0
  252. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/bamtools_fasta.cpp.o +0 -0
  253. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/bamtools_options.cpp.o +0 -0
  254. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/bamtools_pileup_engine.cpp.o +0 -0
  255. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/bamtools_utilities.cpp.o +0 -0
  256. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/build.make +184 -0
  257. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/cmake_clean.cmake +14 -0
  258. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/depend.internal +40 -0
  259. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/depend.make +40 -0
  260. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/flags.make +8 -0
  261. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/link.txt +1 -0
  262. data/ext/bamtools/src/utils/CMakeFiles/BamTools-utils.dir/progress.make +5 -0
  263. data/ext/bamtools/src/utils/CMakeFiles/CMakeDirectoryInformation.cmake +23 -0
  264. data/ext/bamtools/src/utils/CMakeFiles/progress.marks +1 -0
  265. data/ext/bamtools/src/utils/CMakeLists.txt +30 -0
  266. data/ext/bamtools/src/utils/Makefile +290 -0
  267. data/ext/bamtools/src/utils/bamtools_fasta.cpp +632 -0
  268. data/ext/bamtools/src/utils/bamtools_fasta.h +47 -0
  269. data/ext/bamtools/src/utils/bamtools_filter_engine.h +552 -0
  270. data/ext/bamtools/src/utils/bamtools_filter_properties.h +195 -0
  271. data/ext/bamtools/src/utils/bamtools_filter_ruleparser.h +319 -0
  272. data/ext/bamtools/src/utils/bamtools_options.cpp +287 -0
  273. data/ext/bamtools/src/utils/bamtools_options.h +213 -0
  274. data/ext/bamtools/src/utils/bamtools_pileup_engine.cpp +327 -0
  275. data/ext/bamtools/src/utils/bamtools_pileup_engine.h +94 -0
  276. data/ext/bamtools/src/utils/bamtools_utilities.cpp +333 -0
  277. data/ext/bamtools/src/utils/bamtools_utilities.h +67 -0
  278. data/ext/bamtools/src/utils/bamtools_variant.h +128 -0
  279. data/ext/bamtools/src/utils/cmake_install.cmake +29 -0
  280. data/ext/bamtools/src/utils/utils_global.h +21 -0
  281. data/lib/ngs_server/version.rb +3 -0
  282. data/lib/ngs_server.rb +3 -0
  283. data/ngs_server.gemspec +23 -0
  284. metadata +339 -0
@@ -0,0 +1,510 @@
1
+ // ***************************************************************************
2
+ // SamHeaderValidator.cpp (c) 2010 Derek Barnett
3
+ // Marth Lab, Department of Biology, Boston College
4
+ // ---------------------------------------------------------------------------
5
+ // Last modified: 18 April 2011 (DB)
6
+ // ---------------------------------------------------------------------------
7
+ // Provides functionality for validating SamHeader data
8
+ // ***************************************************************************
9
+
10
+ #include <api/SamConstants.h>
11
+ #include <api/SamHeader.h>
12
+ #include <api/internal/SamHeaderValidator_p.h>
13
+ #include <api/internal/SamHeaderVersion_p.h>
14
+ using namespace BamTools;
15
+ using namespace BamTools::Internal;
16
+
17
+ #include <cctype>
18
+ #include <iostream>
19
+ #include <set>
20
+ #include <sstream>
21
+ using namespace std;
22
+
23
+ namespace BamTools {
24
+ namespace Internal {
25
+
26
+ bool caseInsensitiveCompare(const string& lhs, const string& rhs) {
27
+
28
+ // can omit checking chars if lengths not equal
29
+ const int lhsLength = lhs.length();
30
+ const int rhsLength = rhs.length();
31
+ if ( lhsLength != rhsLength )
32
+ return false;
33
+
34
+ // do *basic* toupper checks on each string char's
35
+ for ( int i = 0; i < lhsLength; ++i ) {
36
+ if ( toupper( (int)lhs.at(i)) != toupper( (int)rhs.at(i)) )
37
+ return false;
38
+ }
39
+
40
+ // otherwise OK
41
+ return true;
42
+ }
43
+
44
+ } // namespace Internal
45
+ } // namespace BamTools
46
+
47
+ // ------------------------------------------------------------------------
48
+ // Allow validation rules to vary, as needed, between SAM header versions
49
+ //
50
+ // use SAM_VERSION_X_Y to tag important changes
51
+ //
52
+ // Together, they will allow for comparisons like:
53
+ // if ( m_version < SAM_VERSION_2_0 ) {
54
+ // // use some older rule
55
+ // else
56
+ // // use rule introduced with version 2.0
57
+
58
+ static const SamHeaderVersion SAM_VERSION_1_0 = SamHeaderVersion(1,0);
59
+ static const SamHeaderVersion SAM_VERSION_1_1 = SamHeaderVersion(1,1);
60
+ static const SamHeaderVersion SAM_VERSION_1_2 = SamHeaderVersion(1,2);
61
+ static const SamHeaderVersion SAM_VERSION_1_3 = SamHeaderVersion(1,3);
62
+ static const SamHeaderVersion SAM_VERSION_1_4 = SamHeaderVersion(1,4);
63
+
64
+ // TODO: This functionality is currently unused.
65
+ // Make validation "version-aware."
66
+ //
67
+ // ------------------------------------------------------------------------
68
+
69
+ const string SamHeaderValidator::ERROR_PREFIX = "ERROR: ";
70
+ const string SamHeaderValidator::WARN_PREFIX = "WARNING: ";
71
+ const string SamHeaderValidator::NEWLINE = "\n";
72
+
73
+ SamHeaderValidator::SamHeaderValidator(const SamHeader& header)
74
+ : m_header(header)
75
+ { }
76
+
77
+ SamHeaderValidator::~SamHeaderValidator(void) { }
78
+
79
+ bool SamHeaderValidator::Validate(bool verbose) {
80
+
81
+ // validate header components
82
+ bool isValid = true;
83
+ isValid &= ValidateMetadata();
84
+ isValid &= ValidateSequenceDictionary();
85
+ isValid &= ValidateReadGroupDictionary();
86
+ isValid &= ValidateProgramChain();
87
+
88
+ // report errors if desired
89
+ if ( verbose ) {
90
+ PrintErrorMessages();
91
+ PrintWarningMessages();
92
+ }
93
+
94
+ // return validation status
95
+ return isValid;
96
+ }
97
+
98
+ bool SamHeaderValidator::ValidateMetadata(void) {
99
+ bool isValid = true;
100
+ isValid &= ValidateVersion();
101
+ isValid &= ValidateSortOrder();
102
+ isValid &= ValidateGroupOrder();
103
+ return isValid;
104
+ }
105
+
106
+ bool SamHeaderValidator::ValidateVersion(void) {
107
+
108
+ const string& version = m_header.Version;
109
+
110
+ // warn if version not present
111
+ if ( version.empty() ) {
112
+ AddWarning("Version (VN) missing. Not required, but strongly recommended");
113
+ return true;
114
+ }
115
+
116
+ // invalid if version does not contain a period
117
+ const size_t periodFound = version.find(Constants::SAM_PERIOD);
118
+ if ( periodFound == string::npos ) {
119
+ AddError("Invalid version (VN) format: " + version);
120
+ return false;
121
+ }
122
+
123
+ // invalid if major version is empty or contains non-digits
124
+ const string majorVersion = version.substr(0, periodFound);
125
+ if ( majorVersion.empty() || !ContainsOnlyDigits(majorVersion) ) {
126
+ AddError("Invalid version (VN) format: " + version);
127
+ return false;
128
+ }
129
+
130
+ // invalid if major version is empty or contains non-digits
131
+ const string minorVersion = version.substr(periodFound + 1);
132
+ if ( minorVersion.empty() || !ContainsOnlyDigits(minorVersion) ) {
133
+ AddError("Invalid version (VN) format: " + version);
134
+ return false;
135
+ }
136
+
137
+ // TODO: check if version is not just syntactically OK,
138
+ // but is also a valid SAM version ( 1.0 .. CURRENT )
139
+
140
+ // all checked out this far, then version is OK
141
+ return true;
142
+ }
143
+
144
+ // assumes non-empty input string
145
+ bool SamHeaderValidator::ContainsOnlyDigits(const string& s) {
146
+ const size_t nonDigitPosition = s.find_first_not_of(Constants::SAM_DIGITS);
147
+ return ( nonDigitPosition == string::npos ) ;
148
+ }
149
+
150
+ bool SamHeaderValidator::ValidateSortOrder(void) {
151
+
152
+ const string& sortOrder = m_header.SortOrder;
153
+
154
+ // warn if sort order not present
155
+ if ( sortOrder.empty() ) {
156
+ AddWarning("Sort order (SO) missing. Not required, but strongly recommended");
157
+ return true;
158
+ }
159
+
160
+ // if sort order is valid keyword
161
+ if ( sortOrder == Constants::SAM_HD_SORTORDER_COORDINATE ||
162
+ sortOrder == Constants::SAM_HD_SORTORDER_QUERYNAME ||
163
+ sortOrder == Constants::SAM_HD_SORTORDER_UNSORTED
164
+ )
165
+ {
166
+ return true;
167
+ }
168
+
169
+ // otherwise
170
+ AddError("Invalid sort order (SO): " + sortOrder);
171
+ return false;
172
+ }
173
+
174
+ bool SamHeaderValidator::ValidateGroupOrder(void) {
175
+
176
+ const string& groupOrder = m_header.GroupOrder;
177
+
178
+ // if no group order, no problem, just return OK
179
+ if ( groupOrder.empty() )
180
+ return true;
181
+
182
+ // if group order is valid keyword
183
+ if ( groupOrder == Constants::SAM_HD_GROUPORDER_NONE ||
184
+ groupOrder == Constants::SAM_HD_GROUPORDER_QUERY ||
185
+ groupOrder == Constants::SAM_HD_GROUPORDER_REFERENCE
186
+ )
187
+ {
188
+ return true;
189
+ }
190
+
191
+ // otherwise
192
+ AddError("Invalid group order (GO): " + groupOrder);
193
+ return false;
194
+ }
195
+
196
+ bool SamHeaderValidator::ValidateSequenceDictionary(void) {
197
+
198
+ bool isValid = true;
199
+
200
+ // check for unique sequence names
201
+ isValid &= ContainsUniqueSequenceNames();
202
+
203
+ // iterate over sequences
204
+ const SamSequenceDictionary& sequences = m_header.Sequences;
205
+ SamSequenceConstIterator seqIter = sequences.ConstBegin();
206
+ SamSequenceConstIterator seqEnd = sequences.ConstEnd();
207
+ for ( ; seqIter != seqEnd; ++seqIter ) {
208
+ const SamSequence& seq = (*seqIter);
209
+ isValid &= ValidateSequence(seq);
210
+ }
211
+
212
+ // return validation state
213
+ return isValid;
214
+ }
215
+
216
+ bool SamHeaderValidator::ContainsUniqueSequenceNames(void) {
217
+
218
+ bool isValid = true;
219
+ set<string> sequenceNames;
220
+ set<string>::iterator nameIter;
221
+
222
+ // iterate over sequences
223
+ const SamSequenceDictionary& sequences = m_header.Sequences;
224
+ SamSequenceConstIterator seqIter = sequences.ConstBegin();
225
+ SamSequenceConstIterator seqEnd = sequences.ConstEnd();
226
+ for ( ; seqIter != seqEnd; ++seqIter ) {
227
+ const SamSequence& seq = (*seqIter);
228
+
229
+ // lookup sequence name
230
+ const string& name = seq.Name;
231
+ nameIter = sequenceNames.find(name);
232
+
233
+ // error if found (duplicate entry)
234
+ if ( nameIter != sequenceNames.end() ) {
235
+ AddError("Sequence name (SN): " + name + " is not unique");
236
+ isValid = false;
237
+ }
238
+
239
+ // otherwise ok, store name
240
+ sequenceNames.insert(name);
241
+ }
242
+
243
+ // return validation state
244
+ return isValid;
245
+ }
246
+
247
+ bool SamHeaderValidator::ValidateSequence(const SamSequence& seq) {
248
+ bool isValid = true;
249
+ isValid &= CheckNameFormat(seq.Name);
250
+ isValid &= CheckLengthInRange(seq.Length);
251
+ return isValid;
252
+ }
253
+
254
+ bool SamHeaderValidator::CheckNameFormat(const string& name) {
255
+
256
+ // invalid if name is empty
257
+ if ( name.empty() ) {
258
+ AddError("Sequence entry (@SQ) is missing SN tag");
259
+ return false;
260
+ }
261
+
262
+ // invalid if first character is a reserved char
263
+ const char firstChar = name.at(0);
264
+ if ( firstChar == Constants::SAM_EQUAL || firstChar == Constants::SAM_STAR ) {
265
+ AddError("Invalid sequence name (SN): " + name);
266
+ return false;
267
+ }
268
+ // otherwise OK
269
+ return true;
270
+ }
271
+
272
+ bool SamHeaderValidator::CheckLengthInRange(const string& length) {
273
+
274
+ // invalid if empty
275
+ if ( length.empty() ) {
276
+ AddError("Sequence entry (@SQ) is missing LN tag");
277
+ return false;
278
+ }
279
+
280
+ // convert string length to numeric
281
+ stringstream lengthStream(length);
282
+ unsigned int sequenceLength;
283
+ lengthStream >> sequenceLength;
284
+
285
+ // invalid if length outside accepted range
286
+ if ( sequenceLength < Constants::SAM_SQ_LENGTH_MIN || sequenceLength > Constants::SAM_SQ_LENGTH_MAX ) {
287
+ AddError("Sequence length (LN): " + length + " out of range");
288
+ return false;
289
+ }
290
+
291
+ // otherwise OK
292
+ return true;
293
+ }
294
+
295
+ bool SamHeaderValidator::ValidateReadGroupDictionary(void) {
296
+
297
+ bool isValid = true;
298
+
299
+ // check for unique read group IDs & platform units
300
+ isValid &= ContainsUniqueIDsAndPlatformUnits();
301
+
302
+ // iterate over read groups
303
+ const SamReadGroupDictionary& readGroups = m_header.ReadGroups;
304
+ SamReadGroupConstIterator rgIter = readGroups.ConstBegin();
305
+ SamReadGroupConstIterator rgEnd = readGroups.ConstEnd();
306
+ for ( ; rgIter != rgEnd; ++rgIter ) {
307
+ const SamReadGroup& rg = (*rgIter);
308
+ isValid &= ValidateReadGroup(rg);
309
+ }
310
+
311
+ // return validation state
312
+ return isValid;
313
+ }
314
+
315
+ bool SamHeaderValidator::ContainsUniqueIDsAndPlatformUnits(void) {
316
+
317
+ bool isValid = true;
318
+ set<string> readGroupIds;
319
+ set<string> platformUnits;
320
+ set<string>::iterator idIter;
321
+ set<string>::iterator puIter;
322
+
323
+ // iterate over sequences
324
+ const SamReadGroupDictionary& readGroups = m_header.ReadGroups;
325
+ SamReadGroupConstIterator rgIter = readGroups.ConstBegin();
326
+ SamReadGroupConstIterator rgEnd = readGroups.ConstEnd();
327
+ for ( ; rgIter != rgEnd; ++rgIter ) {
328
+ const SamReadGroup& rg = (*rgIter);
329
+
330
+ // --------------------------------
331
+ // check for unique ID
332
+
333
+ // lookup read group ID
334
+ const string& id = rg.ID;
335
+ idIter = readGroupIds.find(id);
336
+
337
+ // error if found (duplicate entry)
338
+ if ( idIter != readGroupIds.end() ) {
339
+ AddError("Read group ID (ID): " + id + " is not unique");
340
+ isValid = false;
341
+ }
342
+
343
+ // otherwise ok, store id
344
+ readGroupIds.insert(id);
345
+
346
+ // --------------------------------
347
+ // check for unique platform unit
348
+
349
+ // lookup platform unit
350
+ const string& pu = rg.PlatformUnit;
351
+ puIter = platformUnits.find(pu);
352
+
353
+ // error if found (duplicate entry)
354
+ if ( puIter != platformUnits.end() ) {
355
+ AddError("Platform unit (PU): " + pu + " is not unique");
356
+ isValid = false;
357
+ }
358
+
359
+ // otherwise ok, store platform unit
360
+ platformUnits.insert(pu);
361
+ }
362
+
363
+ // return validation state
364
+ return isValid;
365
+ }
366
+
367
+ bool SamHeaderValidator::ValidateReadGroup(const SamReadGroup& rg) {
368
+ bool isValid = true;
369
+ isValid &= CheckReadGroupID(rg.ID);
370
+ isValid &= CheckSequencingTechnology(rg.SequencingTechnology);
371
+ return isValid;
372
+ }
373
+
374
+ bool SamHeaderValidator::CheckReadGroupID(const string& id) {
375
+
376
+ // invalid if empty
377
+ if ( id.empty() ) {
378
+ AddError("Read group entry (@RG) is missing ID tag");
379
+ return false;
380
+ }
381
+
382
+ // otherwise OK
383
+ return true;
384
+ }
385
+
386
+ bool SamHeaderValidator::CheckSequencingTechnology(const string& technology) {
387
+
388
+ // if no technology provided, no problem, just return OK
389
+ if ( technology.empty() )
390
+ return true;
391
+
392
+ // if technology is valid keyword
393
+ if ( caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_CAPILLARY) ||
394
+ caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_HELICOS) ||
395
+ caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_ILLUMINA) ||
396
+ caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_IONTORRENT) ||
397
+ caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_LS454) ||
398
+ caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_PACBIO) ||
399
+ caseInsensitiveCompare(technology, Constants::SAM_RG_SEQTECHNOLOGY_SOLID)
400
+ )
401
+ {
402
+ return true;
403
+ }
404
+
405
+ // otherwise
406
+ AddError("Invalid read group sequencing platform (PL): " + technology);
407
+ return false;
408
+ }
409
+
410
+ bool SamHeaderValidator::ValidateProgramChain(void) {
411
+ bool isValid = true;
412
+ isValid &= ContainsUniqueProgramIds();
413
+ isValid &= ValidatePreviousProgramIds();
414
+ return isValid;
415
+ }
416
+
417
+ bool SamHeaderValidator::ContainsUniqueProgramIds(void) {
418
+
419
+ bool isValid = true;
420
+ set<string> programIds;
421
+ set<string>::iterator pgIdIter;
422
+
423
+ // iterate over program records
424
+ const SamProgramChain& programs = m_header.Programs;
425
+ SamProgramConstIterator pgIter = programs.ConstBegin();
426
+ SamProgramConstIterator pgEnd = programs.ConstEnd();
427
+ for ( ; pgIter != pgEnd; ++pgIter ) {
428
+ const SamProgram& pg = (*pgIter);
429
+
430
+ // lookup program ID
431
+ const string& pgId = pg.ID;
432
+ pgIdIter = programIds.find(pgId);
433
+
434
+ // error if found (duplicate entry)
435
+ if ( pgIdIter != programIds.end() ) {
436
+ AddError("Program ID (ID): " + pgId + " is not unique");
437
+ isValid = false;
438
+ }
439
+
440
+ // otherwise ok, store ID
441
+ programIds.insert(pgId);
442
+ }
443
+
444
+ // return validation state
445
+ return isValid;
446
+ }
447
+
448
+ bool SamHeaderValidator::ValidatePreviousProgramIds(void) {
449
+
450
+ bool isValid = true;
451
+
452
+ // iterate over program records
453
+ const SamProgramChain& programs = m_header.Programs;
454
+ SamProgramConstIterator pgIter = programs.ConstBegin();
455
+ SamProgramConstIterator pgEnd = programs.ConstEnd();
456
+ for ( ; pgIter != pgEnd; ++pgIter ) {
457
+ const SamProgram& pg = (*pgIter);
458
+
459
+ // ignore record for validation if PreviousProgramID is empty
460
+ const string& ppId = pg.PreviousProgramID;
461
+ if ( ppId.empty() )
462
+ continue;
463
+
464
+ // see if program "chain" contains an entry for ppId
465
+ if ( !programs.Contains(ppId) ) {
466
+ AddError("PreviousProgramID (PP): " + ppId + " is not a known ID");
467
+ isValid = false;
468
+ }
469
+ }
470
+
471
+ // return validation state
472
+ return isValid;
473
+ }
474
+ void SamHeaderValidator::AddError(const string& message) {
475
+ m_errorMessages.push_back(ERROR_PREFIX + message + NEWLINE);
476
+ }
477
+
478
+ void SamHeaderValidator::AddWarning(const string& message) {
479
+ m_warningMessages.push_back(WARN_PREFIX + message + NEWLINE);
480
+ }
481
+
482
+ void SamHeaderValidator::PrintErrorMessages(void) {
483
+
484
+ // skip if no error messages
485
+ if ( m_errorMessages.empty() ) return;
486
+
487
+ // print error header line
488
+ cerr << "* SAM header has " << m_errorMessages.size() << " errors:" << endl;
489
+
490
+ // print each error message
491
+ vector<string>::const_iterator errorIter = m_errorMessages.begin();
492
+ vector<string>::const_iterator errorEnd = m_errorMessages.end();
493
+ for ( ; errorIter != errorEnd; ++errorIter )
494
+ cerr << (*errorIter);
495
+ }
496
+
497
+ void SamHeaderValidator::PrintWarningMessages(void) {
498
+
499
+ // skip if no warning messages
500
+ if ( m_warningMessages.empty() ) return;
501
+
502
+ // print warning header line
503
+ cerr << "* SAM header has " << m_warningMessages.size() << " warnings:" << endl;
504
+
505
+ // print each warning message
506
+ vector<string>::const_iterator warnIter = m_warningMessages.begin();
507
+ vector<string>::const_iterator warnEnd = m_warningMessages.end();
508
+ for ( ; warnIter != warnEnd; ++warnIter )
509
+ cerr << (*warnIter);
510
+ }
@@ -0,0 +1,101 @@
1
+ // ***************************************************************************
2
+ // SamHeaderValidator.h (c) 2010 Derek Barnett
3
+ // Marth Lab, Department of Biology, Boston College
4
+ // ---------------------------------------------------------------------------
5
+ // Last modified: 13 January 2011 (DB)
6
+ // ---------------------------------------------------------------------------
7
+ // Provides functionality for validating SamHeader data
8
+ // ***************************************************************************
9
+
10
+ #ifndef SAM_HEADER_VALIDATOR_P_H
11
+ #define SAM_HEADER_VALIDATOR_P_H
12
+
13
+ // -------------
14
+ // W A R N I N G
15
+ // -------------
16
+ //
17
+ // This file is not part of the BamTools API. It exists purely as an
18
+ // implementation detail. This header file may change from version to version
19
+ // without notice, or even be removed.
20
+ //
21
+ // We mean it.
22
+
23
+ #include <string>
24
+ #include <vector>
25
+
26
+ namespace BamTools {
27
+
28
+ class SamHeader;
29
+ class SamReadGroup;
30
+ class SamSequence;
31
+
32
+ namespace Internal {
33
+
34
+ class SamHeaderValidator {
35
+
36
+ // ctor & dtor
37
+ public:
38
+ SamHeaderValidator(const SamHeader& header);
39
+ ~SamHeaderValidator(void);
40
+
41
+ // SamHeaderValidator interface
42
+ public:
43
+ // validates SamHeader data, returns true/false accordingly
44
+ // prints error & warning messages to stderr when @verbose is true
45
+ bool Validate(bool verbose = false);
46
+
47
+ // internal methods
48
+ private:
49
+
50
+ // validate header metadata
51
+ bool ValidateMetadata(void);
52
+ bool ValidateVersion(void);
53
+ bool ContainsOnlyDigits(const std::string& s);
54
+ bool ValidateSortOrder(void);
55
+ bool ValidateGroupOrder(void);
56
+
57
+ // validate sequence dictionary
58
+ bool ValidateSequenceDictionary(void);
59
+ bool ContainsUniqueSequenceNames(void);
60
+ bool CheckNameFormat(const std::string& name);
61
+ bool ValidateSequence(const SamSequence& seq);
62
+ bool CheckLengthInRange(const std::string& length);
63
+
64
+ // validate read group dictionary
65
+ bool ValidateReadGroupDictionary(void);
66
+ bool ContainsUniqueIDsAndPlatformUnits(void);
67
+ bool ValidateReadGroup(const SamReadGroup& rg);
68
+ bool CheckReadGroupID(const std::string& id);
69
+ bool CheckSequencingTechnology(const std::string& technology);
70
+
71
+ // validate program data
72
+ bool ValidateProgramChain(void);
73
+ bool ContainsUniqueProgramIds(void);
74
+ bool ValidatePreviousProgramIds(void);
75
+
76
+ // error reporting
77
+ void AddError(const std::string& message);
78
+ void AddWarning(const std::string& message);
79
+ void PrintErrorMessages(void);
80
+ void PrintWarningMessages(void);
81
+
82
+ // data members
83
+ private:
84
+
85
+ // SamHeader being validated
86
+ const SamHeader& m_header;
87
+
88
+ // error reporting helpers
89
+ static const std::string ERROR_PREFIX;
90
+ static const std::string WARN_PREFIX;
91
+ static const std::string NEWLINE;
92
+
93
+ // error reporting messages
94
+ std::vector<std::string> m_errorMessages;
95
+ std::vector<std::string> m_warningMessages;
96
+ };
97
+
98
+ } // namespace Internal
99
+ } // namespace BamTools
100
+
101
+ #endif // SAM_HEADER_VALIDATOR_P_H