ngs_server 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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