@jbrowse/plugin-alignments 1.7.11 → 2.0.0

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 (289) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +192 -216
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  3. package/dist/AlignmentsFeatureDetail/index.d.ts +3 -3
  4. package/dist/AlignmentsFeatureDetail/index.js +48 -44
  5. package/dist/AlignmentsFeatureDetail/index.js.map +1 -0
  6. package/dist/AlignmentsTrack/index.js +24 -32
  7. package/dist/AlignmentsTrack/index.js.map +1 -0
  8. package/dist/BamAdapter/BamAdapter.js +345 -585
  9. package/dist/BamAdapter/BamAdapter.js.map +1 -0
  10. package/dist/BamAdapter/BamSlightlyLazyFeature.js +143 -174
  11. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  12. package/dist/BamAdapter/MismatchParser.js +340 -417
  13. package/dist/BamAdapter/MismatchParser.js.map +1 -0
  14. package/dist/BamAdapter/configSchema.js +33 -46
  15. package/dist/BamAdapter/configSchema.js.map +1 -0
  16. package/dist/BamAdapter/index.js +36 -32
  17. package/dist/BamAdapter/index.js.map +1 -0
  18. package/dist/CramAdapter/CramAdapter.js +376 -644
  19. package/dist/CramAdapter/CramAdapter.js.map +1 -0
  20. package/dist/CramAdapter/CramSlightlyLazyFeature.js +374 -439
  21. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  22. package/dist/CramAdapter/CramTestAdapters.js +169 -227
  23. package/dist/CramAdapter/CramTestAdapters.js.map +1 -0
  24. package/dist/CramAdapter/configSchema.js +28 -38
  25. package/dist/CramAdapter/configSchema.js.map +1 -0
  26. package/dist/CramAdapter/index.js +37 -32
  27. package/dist/CramAdapter/index.js.map +1 -0
  28. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +91 -93
  29. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  30. package/dist/HtsgetBamAdapter/configSchema.js +19 -29
  31. package/dist/HtsgetBamAdapter/configSchema.js.map +1 -0
  32. package/dist/HtsgetBamAdapter/index.js +44 -38
  33. package/dist/HtsgetBamAdapter/index.js.map +1 -0
  34. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +36 -65
  35. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  36. package/dist/LinearAlignmentsDisplay/index.js +22 -28
  37. package/dist/LinearAlignmentsDisplay/index.js.map +1 -0
  38. package/dist/LinearAlignmentsDisplay/models/configSchema.js +12 -23
  39. package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  40. package/dist/LinearAlignmentsDisplay/models/model.d.ts +10 -10
  41. package/dist/LinearAlignmentsDisplay/models/model.js +257 -245
  42. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -0
  43. package/dist/LinearPileupDisplay/components/ColorByModifications.js +98 -116
  44. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  45. package/dist/LinearPileupDisplay/components/ColorByTag.js +82 -91
  46. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  47. package/dist/LinearPileupDisplay/components/FilterByTag.js +156 -192
  48. package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  49. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +15 -29
  50. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  51. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +79 -93
  52. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  53. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +78 -81
  54. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  55. package/dist/LinearPileupDisplay/components/SortByTag.js +80 -88
  56. package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  57. package/dist/LinearPileupDisplay/configSchema.js +40 -42
  58. package/dist/LinearPileupDisplay/configSchema.js.map +1 -0
  59. package/dist/LinearPileupDisplay/index.js +21 -27
  60. package/dist/LinearPileupDisplay/index.js.map +1 -0
  61. package/dist/LinearPileupDisplay/model.d.ts +27 -17
  62. package/dist/LinearPileupDisplay/model.js +702 -797
  63. package/dist/LinearPileupDisplay/model.js.map +1 -0
  64. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  65. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +104 -77
  66. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  67. package/dist/LinearSNPCoverageDisplay/index.js +21 -27
  68. package/dist/LinearSNPCoverageDisplay/index.js.map +1 -0
  69. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +45 -55
  70. package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  71. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +13 -11
  72. package/dist/LinearSNPCoverageDisplay/models/model.js +257 -230
  73. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  74. package/dist/NestedFrequencyTable.js +104 -139
  75. package/dist/NestedFrequencyTable.js.map +1 -0
  76. package/dist/PileupRPC/rpcMethods.js +199 -278
  77. package/dist/PileupRPC/rpcMethods.js.map +1 -0
  78. package/dist/PileupRenderer/PileupLayoutSession.js +56 -76
  79. package/dist/PileupRenderer/PileupLayoutSession.js.map +1 -0
  80. package/dist/PileupRenderer/PileupRenderer.d.ts +4 -4
  81. package/dist/PileupRenderer/PileupRenderer.js +938 -1205
  82. package/dist/PileupRenderer/PileupRenderer.js.map +1 -0
  83. package/dist/PileupRenderer/components/PileupRendering.d.ts +1 -1
  84. package/dist/PileupRenderer/components/PileupRendering.js +173 -253
  85. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -0
  86. package/dist/PileupRenderer/configSchema.js +65 -71
  87. package/dist/PileupRenderer/configSchema.js.map +1 -0
  88. package/dist/PileupRenderer/index.js +17 -22
  89. package/dist/PileupRenderer/index.js.map +1 -0
  90. package/dist/PileupRenderer/sortUtil.js +83 -107
  91. package/dist/PileupRenderer/sortUtil.js.map +1 -0
  92. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +436 -589
  93. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  94. package/dist/SNPCoverageAdapter/configSchema.js +10 -20
  95. package/dist/SNPCoverageAdapter/configSchema.js.map +1 -0
  96. package/dist/SNPCoverageAdapter/index.js +46 -41
  97. package/dist/SNPCoverageAdapter/index.js.map +1 -0
  98. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
  99. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +265 -290
  100. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  101. package/dist/SNPCoverageRenderer/configSchema.js +30 -39
  102. package/dist/SNPCoverageRenderer/configSchema.js.map +1 -0
  103. package/dist/SNPCoverageRenderer/index.js +19 -30
  104. package/dist/SNPCoverageRenderer/index.js.map +1 -0
  105. package/dist/index.js +135 -152
  106. package/dist/index.js.map +1 -0
  107. package/dist/shared.js +84 -92
  108. package/dist/shared.js.map +1 -0
  109. package/dist/util.js +130 -121
  110. package/dist/util.js.map +1 -0
  111. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -0
  112. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +145 -0
  113. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  114. package/esm/AlignmentsFeatureDetail/index.d.ts +38 -0
  115. package/esm/AlignmentsFeatureDetail/index.js +23 -0
  116. package/esm/AlignmentsFeatureDetail/index.js.map +1 -0
  117. package/esm/AlignmentsTrack/index.d.ts +2 -0
  118. package/esm/AlignmentsTrack/index.js +23 -0
  119. package/esm/AlignmentsTrack/index.js.map +1 -0
  120. package/esm/BamAdapter/BamAdapter.d.ts +40 -0
  121. package/esm/BamAdapter/BamAdapter.js +173 -0
  122. package/esm/BamAdapter/BamAdapter.js.map +1 -0
  123. package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -0
  124. package/esm/BamAdapter/BamSlightlyLazyFeature.js +107 -0
  125. package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  126. package/esm/BamAdapter/MismatchParser.d.ts +25 -0
  127. package/esm/BamAdapter/MismatchParser.js +294 -0
  128. package/esm/BamAdapter/MismatchParser.js.map +1 -0
  129. package/esm/BamAdapter/configSchema.d.ts +2 -0
  130. package/esm/BamAdapter/configSchema.js +31 -0
  131. package/esm/BamAdapter/configSchema.js.map +1 -0
  132. package/esm/BamAdapter/index.d.ts +3 -0
  133. package/esm/BamAdapter/index.js +10 -0
  134. package/esm/BamAdapter/index.js.map +1 -0
  135. package/esm/CramAdapter/CramAdapter.d.ts +53 -0
  136. package/esm/CramAdapter/CramAdapter.js +228 -0
  137. package/esm/CramAdapter/CramAdapter.js.map +1 -0
  138. package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -0
  139. package/esm/CramAdapter/CramSlightlyLazyFeature.js +349 -0
  140. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  141. package/esm/CramAdapter/CramTestAdapters.d.ts +29 -0
  142. package/esm/CramAdapter/CramTestAdapters.js +70 -0
  143. package/esm/CramAdapter/CramTestAdapters.js.map +1 -0
  144. package/esm/CramAdapter/configSchema.d.ts +3 -0
  145. package/esm/CramAdapter/configSchema.js +26 -0
  146. package/esm/CramAdapter/configSchema.js.map +1 -0
  147. package/esm/CramAdapter/index.d.ts +3 -0
  148. package/esm/CramAdapter/index.js +11 -0
  149. package/esm/CramAdapter/index.js.map +1 -0
  150. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -0
  151. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js +27 -0
  152. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  153. package/esm/HtsgetBamAdapter/configSchema.d.ts +2 -0
  154. package/esm/HtsgetBamAdapter/configSchema.js +17 -0
  155. package/esm/HtsgetBamAdapter/configSchema.js.map +1 -0
  156. package/esm/HtsgetBamAdapter/index.d.ts +3 -0
  157. package/esm/HtsgetBamAdapter/index.js +16 -0
  158. package/esm/HtsgetBamAdapter/index.js.map +1 -0
  159. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -0
  160. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +34 -0
  161. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  162. package/esm/LinearAlignmentsDisplay/index.d.ts +2 -0
  163. package/esm/LinearAlignmentsDisplay/index.js +19 -0
  164. package/esm/LinearAlignmentsDisplay/index.js.map +1 -0
  165. package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -0
  166. package/esm/LinearAlignmentsDisplay/models/configSchema.js +12 -0
  167. package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  168. package/esm/LinearAlignmentsDisplay/models/model.d.ts +105 -0
  169. package/esm/LinearAlignmentsDisplay/models/model.js +181 -0
  170. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -0
  171. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -0
  172. package/esm/LinearPileupDisplay/components/ColorByModifications.js +71 -0
  173. package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  174. package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +9 -0
  175. package/esm/LinearPileupDisplay/components/ColorByTag.js +45 -0
  176. package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  177. package/esm/LinearPileupDisplay/components/FilterByTag.d.ts +18 -0
  178. package/esm/LinearPileupDisplay/components/FilterByTag.js +123 -0
  179. package/esm/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  180. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -0
  181. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +13 -0
  182. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  183. package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -0
  184. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js +41 -0
  185. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  186. package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -0
  187. package/esm/LinearPileupDisplay/components/SetMaxHeight.js +43 -0
  188. package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  189. package/esm/LinearPileupDisplay/components/SortByTag.d.ts +9 -0
  190. package/esm/LinearPileupDisplay/components/SortByTag.js +43 -0
  191. package/esm/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  192. package/esm/LinearPileupDisplay/configSchema.d.ts +6 -0
  193. package/esm/LinearPileupDisplay/configSchema.js +41 -0
  194. package/esm/LinearPileupDisplay/configSchema.js.map +1 -0
  195. package/esm/LinearPileupDisplay/index.d.ts +2 -0
  196. package/esm/LinearPileupDisplay/index.js +18 -0
  197. package/esm/LinearPileupDisplay/index.js.map +1 -0
  198. package/esm/LinearPileupDisplay/model.d.ts +332 -0
  199. package/esm/LinearPileupDisplay/model.js +576 -0
  200. package/esm/LinearPileupDisplay/model.js.map +1 -0
  201. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -0
  202. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +57 -0
  203. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  204. package/esm/LinearSNPCoverageDisplay/index.d.ts +2 -0
  205. package/esm/LinearSNPCoverageDisplay/index.js +18 -0
  206. package/esm/LinearSNPCoverageDisplay/index.js.map +1 -0
  207. package/esm/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -0
  208. package/esm/LinearSNPCoverageDisplay/models/configSchema.js +44 -0
  209. package/esm/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  210. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +348 -0
  211. package/esm/LinearSNPCoverageDisplay/models/model.js +185 -0
  212. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  213. package/esm/NestedFrequencyTable.d.ts +14 -0
  214. package/esm/NestedFrequencyTable.js +101 -0
  215. package/esm/NestedFrequencyTable.js.map +1 -0
  216. package/esm/PileupRPC/rpcMethods.d.ts +34 -0
  217. package/esm/PileupRPC/rpcMethods.js +70 -0
  218. package/esm/PileupRPC/rpcMethods.js.map +1 -0
  219. package/esm/PileupRenderer/PileupLayoutSession.d.ts +32 -0
  220. package/esm/PileupRenderer/PileupLayoutSession.js +32 -0
  221. package/esm/PileupRenderer/PileupLayoutSession.js.map +1 -0
  222. package/esm/PileupRenderer/PileupRenderer.d.ts +182 -0
  223. package/esm/PileupRenderer/PileupRenderer.js +830 -0
  224. package/esm/PileupRenderer/PileupRenderer.js.map +1 -0
  225. package/esm/PileupRenderer/components/PileupRendering.d.ts +23 -0
  226. package/esm/PileupRenderer/components/PileupRendering.js +138 -0
  227. package/esm/PileupRenderer/components/PileupRendering.js.map +1 -0
  228. package/esm/PileupRenderer/configSchema.d.ts +2 -0
  229. package/esm/PileupRenderer/configSchema.js +64 -0
  230. package/esm/PileupRenderer/configSchema.js.map +1 -0
  231. package/esm/PileupRenderer/index.d.ts +2 -0
  232. package/esm/PileupRenderer/index.js +12 -0
  233. package/esm/PileupRenderer/index.js.map +1 -0
  234. package/esm/PileupRenderer/sortUtil.d.ts +8 -0
  235. package/esm/PileupRenderer/sortUtil.js +80 -0
  236. package/esm/PileupRenderer/sortUtil.js.map +1 -0
  237. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -0
  238. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +259 -0
  239. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  240. package/esm/SNPCoverageAdapter/configSchema.d.ts +3 -0
  241. package/esm/SNPCoverageAdapter/configSchema.js +6 -0
  242. package/esm/SNPCoverageAdapter/configSchema.js.map +1 -0
  243. package/esm/SNPCoverageAdapter/index.d.ts +3 -0
  244. package/esm/SNPCoverageAdapter/index.js +18 -0
  245. package/esm/SNPCoverageAdapter/index.js.map +1 -0
  246. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -0
  247. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +185 -0
  248. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  249. package/esm/SNPCoverageRenderer/configSchema.d.ts +2 -0
  250. package/esm/SNPCoverageRenderer/configSchema.js +29 -0
  251. package/esm/SNPCoverageRenderer/configSchema.js.map +1 -0
  252. package/esm/SNPCoverageRenderer/index.d.ts +3 -0
  253. package/esm/SNPCoverageRenderer/index.js +14 -0
  254. package/esm/SNPCoverageRenderer/index.js.map +1 -0
  255. package/esm/index.d.ts +10 -0
  256. package/esm/index.js +91 -0
  257. package/esm/index.js.map +1 -0
  258. package/esm/shared.d.ts +25 -0
  259. package/esm/shared.js +28 -0
  260. package/esm/shared.js.map +1 -0
  261. package/esm/util.d.ts +19 -0
  262. package/esm/util.js +83 -0
  263. package/esm/util.js.map +1 -0
  264. package/package.json +19 -11
  265. package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +4 -4
  266. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +321 -397
  267. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -3
  268. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +7 -7
  269. package/src/LinearPileupDisplay/components/ColorByTag.tsx +5 -5
  270. package/src/LinearPileupDisplay/components/FilterByTag.tsx +5 -5
  271. package/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +1 -1
  272. package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +9 -9
  273. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +5 -5
  274. package/src/LinearPileupDisplay/components/SortByTag.tsx +5 -5
  275. package/src/LinearPileupDisplay/model.ts +16 -10
  276. package/src/LinearSNPCoverageDisplay/models/model.ts +25 -25
  277. package/src/PileupRenderer/PileupRenderer.tsx +54 -40
  278. package/src/PileupRenderer/components/PileupRendering.tsx +11 -11
  279. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +7 -5
  280. package/dist/AlignmentsFeatureDetail/index.test.js +0 -60
  281. package/dist/BamAdapter/BamAdapter.test.js +0 -177
  282. package/dist/BamAdapter/MismatchParser.test.js +0 -251
  283. package/dist/CramAdapter/CramAdapter.test.js +0 -138
  284. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +0 -83
  285. package/dist/LinearPileupDisplay/configSchema.test.js +0 -92
  286. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +0 -62
  287. package/dist/PileupRenderer/components/PileupRendering.test.js +0 -36
  288. package/dist/declare.d.js +0 -1
  289. package/dist/index.test.js +0 -26
@@ -1,446 +1,369 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.cigarToMismatches = cigarToMismatches;
9
- exports.getMismatches = getMismatches;
10
- exports.getModificationPositions = getModificationPositions;
11
- exports.getModificationTypes = getModificationTypes;
12
- exports.getNextRefPos = getNextRefPos;
13
- exports.mdToMismatches = mdToMismatches;
14
- exports.parseCigar = parseCigar;
15
-
16
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
- var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
19
-
20
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
21
-
22
- var _util = require("@jbrowse/core/util");
23
-
24
- var _marked = /*#__PURE__*/_regenerator.default.mark(getNextRefPos);
25
-
2
+ var __generator = (this && this.__generator) || function (thisArg, body) {
3
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
5
+ function verb(n) { return function (v) { return step([n, v]); }; }
6
+ function step(op) {
7
+ if (f) throw new TypeError("Generator is already executing.");
8
+ while (_) try {
9
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
10
+ if (y = 0, t) op = [op[0] & 2, t.value];
11
+ switch (op[0]) {
12
+ case 0: case 1: t = op; break;
13
+ case 4: _.label++; return { value: op[1], done: false };
14
+ case 5: _.label++; y = op[1]; op = [0]; continue;
15
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
16
+ default:
17
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
18
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
19
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
20
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
21
+ if (t[2]) _.ops.pop();
22
+ _.trys.pop(); continue;
23
+ }
24
+ op = body.call(thisArg, _);
25
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
26
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
27
+ }
28
+ };
29
+ var __read = (this && this.__read) || function (o, n) {
30
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
31
+ if (!m) return o;
32
+ var i = m.call(o), r, ar = [], e;
33
+ try {
34
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
35
+ }
36
+ catch (error) { e = { error: error }; }
37
+ finally {
38
+ try {
39
+ if (r && !r.done && (m = i["return"])) m.call(i);
40
+ }
41
+ finally { if (e) throw e.error; }
42
+ }
43
+ return ar;
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.getModificationTypes = exports.getModificationPositions = exports.getNextRefPos = exports.getMismatches = exports.mdToMismatches = exports.cigarToMismatches = exports.parseCigar = void 0;
47
+ var util_1 = require("@jbrowse/core/util");
26
48
  var mdRegex = new RegExp(/(\d+|\^[a-z]+|[a-z])/gi);
27
49
  var modificationRegex = new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/);
28
-
29
50
  function parseCigar(cigar) {
30
- return (cigar || '').split(/([MIDNSHPX=])/);
51
+ return (cigar || '').split(/([MIDNSHPX=])/);
31
52
  }
32
-
53
+ exports.parseCigar = parseCigar;
33
54
  function cigarToMismatches(ops, seq, ref, qual) {
34
- var roffset = 0; // reference offset
35
-
36
- var soffset = 0; // seq offset
37
-
38
- var mismatches = [];
39
- var hasRefAndSeq = ref && seq;
40
-
41
- for (var i = 0; i < ops.length; i += 2) {
42
- var len = +ops[i];
43
- var op = ops[i + 1];
44
-
45
- if (op === 'M' || op === '=' || op === 'E') {
46
- if (hasRefAndSeq) {
47
- for (var j = 0; j < len; j++) {
48
- if ( // @ts-ignore in the full yarn build of the repo, this says that object is possibly undefined for some reason, ignored
49
- seq[soffset + j].toUpperCase() !== ref[roffset + j].toUpperCase()) {
55
+ var roffset = 0; // reference offset
56
+ var soffset = 0; // seq offset
57
+ var mismatches = [];
58
+ var hasRefAndSeq = ref && seq;
59
+ for (var i = 0; i < ops.length; i += 2) {
60
+ var len = +ops[i];
61
+ var op = ops[i + 1];
62
+ if (op === 'M' || op === '=' || op === 'E') {
63
+ if (hasRefAndSeq) {
64
+ for (var j = 0; j < len; j++) {
65
+ if (
66
+ // @ts-ignore in the full yarn build of the repo, this says that object is possibly undefined for some reason, ignored
67
+ seq[soffset + j].toUpperCase() !== ref[roffset + j].toUpperCase()) {
68
+ mismatches.push({
69
+ start: roffset + j,
70
+ type: 'mismatch',
71
+ base: seq[soffset + j],
72
+ altbase: ref[roffset + j],
73
+ length: 1,
74
+ });
75
+ }
76
+ }
77
+ }
78
+ soffset += len;
79
+ }
80
+ if (op === 'I') {
50
81
  mismatches.push({
51
- start: roffset + j,
52
- type: 'mismatch',
53
- base: seq[soffset + j],
54
- altbase: ref[roffset + j],
55
- length: 1
82
+ start: roffset,
83
+ type: 'insertion',
84
+ base: "".concat(len),
85
+ length: 0,
56
86
  });
57
- }
87
+ soffset += len;
88
+ }
89
+ else if (op === 'D') {
90
+ mismatches.push({
91
+ start: roffset,
92
+ type: 'deletion',
93
+ base: '*',
94
+ length: len,
95
+ });
96
+ }
97
+ else if (op === 'N') {
98
+ mismatches.push({
99
+ start: roffset,
100
+ type: 'skip',
101
+ base: 'N',
102
+ length: len,
103
+ });
104
+ }
105
+ else if (op === 'X') {
106
+ var r = seq.slice(soffset, soffset + len);
107
+ var q = (qual === null || qual === void 0 ? void 0 : qual.slice(soffset, soffset + len)) || [];
108
+ for (var j = 0; j < len; j++) {
109
+ mismatches.push({
110
+ start: roffset + j,
111
+ type: 'mismatch',
112
+ base: r[j],
113
+ qual: q[j],
114
+ length: 1,
115
+ });
116
+ }
117
+ soffset += len;
118
+ }
119
+ else if (op === 'H') {
120
+ mismatches.push({
121
+ start: roffset,
122
+ type: 'hardclip',
123
+ base: "H".concat(len),
124
+ cliplen: len,
125
+ length: 1,
126
+ });
127
+ }
128
+ else if (op === 'S') {
129
+ mismatches.push({
130
+ start: roffset,
131
+ type: 'softclip',
132
+ base: "S".concat(len),
133
+ cliplen: len,
134
+ length: 1,
135
+ });
136
+ soffset += len;
137
+ }
138
+ if (op !== 'I' && op !== 'S' && op !== 'H') {
139
+ roffset += len;
58
140
  }
59
- }
60
-
61
- soffset += len;
62
- }
63
-
64
- if (op === 'I') {
65
- mismatches.push({
66
- start: roffset,
67
- type: 'insertion',
68
- base: "".concat(len),
69
- length: 0
70
- });
71
- soffset += len;
72
- } else if (op === 'D') {
73
- mismatches.push({
74
- start: roffset,
75
- type: 'deletion',
76
- base: '*',
77
- length: len
78
- });
79
- } else if (op === 'N') {
80
- mismatches.push({
81
- start: roffset,
82
- type: 'skip',
83
- base: 'N',
84
- length: len
85
- });
86
- } else if (op === 'X') {
87
- var r = seq.slice(soffset, soffset + len);
88
- var q = (qual === null || qual === void 0 ? void 0 : qual.slice(soffset, soffset + len)) || [];
89
-
90
- for (var _j = 0; _j < len; _j++) {
91
- mismatches.push({
92
- start: roffset + _j,
93
- type: 'mismatch',
94
- base: r[_j],
95
- qual: q[_j],
96
- length: 1
97
- });
98
- }
99
-
100
- soffset += len;
101
- } else if (op === 'H') {
102
- mismatches.push({
103
- start: roffset,
104
- type: 'hardclip',
105
- base: "H".concat(len),
106
- cliplen: len,
107
- length: 1
108
- });
109
- } else if (op === 'S') {
110
- mismatches.push({
111
- start: roffset,
112
- type: 'softclip',
113
- base: "S".concat(len),
114
- cliplen: len,
115
- length: 1
116
- });
117
- soffset += len;
118
- }
119
-
120
- if (op !== 'I' && op !== 'S' && op !== 'H') {
121
- roffset += len;
122
141
  }
123
- }
124
-
125
- return mismatches;
142
+ return mismatches;
126
143
  }
144
+ exports.cigarToMismatches = cigarToMismatches;
127
145
  /**
128
146
  * parse a SAM MD tag to find mismatching bases of the template versus the reference
129
147
  * @returns array of mismatches and their positions
130
148
  */
131
-
132
-
133
149
  function mdToMismatches(mdstring, ops, cigarMismatches, seq, qual) {
134
- var mismatchRecords = [];
135
- var curr = {
136
- start: 0,
137
- base: '',
138
- length: 0,
139
- type: 'mismatch'
140
- };
141
- var skips = cigarMismatches.filter(function (cigar) {
142
- return cigar.type === 'skip';
143
- });
144
- var lastCigar = 0;
145
- var lastTemplateOffset = 0;
146
- var lastRefOffset = 0;
147
- var lastSkipPos = 0; // convert a position on the reference sequence to a position
148
- // on the template sequence, taking into account hard and soft
149
- // clipping of reads
150
-
151
- function nextRecord() {
152
- mismatchRecords.push(curr); // get a new mismatch record ready
153
-
154
- curr = {
155
- start: curr.start + curr.length,
156
- length: 0,
157
- base: '',
158
- type: 'mismatch'
159
- };
160
- }
161
-
162
- function getTemplateCoordLocal(refCoord) {
163
- var templateOffset = lastTemplateOffset;
164
- var refOffset = lastRefOffset;
165
-
166
- for (var i = lastCigar; i < ops.length && refOffset <= refCoord; i += 2, lastCigar = i) {
167
- var len = +ops[i];
168
- var op = ops[i + 1];
169
-
170
- if (op === 'S' || op === 'I') {
171
- templateOffset += len;
172
- } else if (op === 'D' || op === 'P' || op === 'N') {
173
- refOffset += len;
174
- } else if (op !== 'H') {
175
- templateOffset += len;
176
- refOffset += len;
177
- }
150
+ var mismatchRecords = [];
151
+ var curr = { start: 0, base: '', length: 0, type: 'mismatch' };
152
+ var skips = cigarMismatches.filter(function (cigar) { return cigar.type === 'skip'; });
153
+ var lastCigar = 0;
154
+ var lastTemplateOffset = 0;
155
+ var lastRefOffset = 0;
156
+ var lastSkipPos = 0;
157
+ // convert a position on the reference sequence to a position
158
+ // on the template sequence, taking into account hard and soft
159
+ // clipping of reads
160
+ function nextRecord() {
161
+ mismatchRecords.push(curr);
162
+ // get a new mismatch record ready
163
+ curr = {
164
+ start: curr.start + curr.length,
165
+ length: 0,
166
+ base: '',
167
+ type: 'mismatch',
168
+ };
169
+ }
170
+ function getTemplateCoordLocal(refCoord) {
171
+ var templateOffset = lastTemplateOffset;
172
+ var refOffset = lastRefOffset;
173
+ for (var i = lastCigar; i < ops.length && refOffset <= refCoord; i += 2, lastCigar = i) {
174
+ var len = +ops[i];
175
+ var op = ops[i + 1];
176
+ if (op === 'S' || op === 'I') {
177
+ templateOffset += len;
178
+ }
179
+ else if (op === 'D' || op === 'P' || op === 'N') {
180
+ refOffset += len;
181
+ }
182
+ else if (op !== 'H') {
183
+ templateOffset += len;
184
+ refOffset += len;
185
+ }
186
+ }
187
+ lastTemplateOffset = templateOffset;
188
+ lastRefOffset = refOffset;
189
+ return templateOffset - (refOffset - refCoord);
178
190
  }
179
-
180
- lastTemplateOffset = templateOffset;
181
- lastRefOffset = refOffset;
182
- return templateOffset - (refOffset - refCoord);
183
- } // now actually parse the MD string
184
-
185
-
186
- var md = mdstring.match(mdRegex) || [];
187
-
188
- for (var i = 0; i < md.length; i++) {
189
- var token = md[i];
190
- var num = +token;
191
-
192
- if (!Number.isNaN(num)) {
193
- curr.start += num;
194
- } else if (token.startsWith('^')) {
195
- curr.start += token.length - 1;
196
- } else {
197
- // mismatch
198
- for (var j = 0; j < token.length; j += 1) {
199
- curr.length = 1;
200
-
201
- while (lastSkipPos < skips.length) {
202
- var mismatch = skips[lastSkipPos];
203
-
204
- if (curr.start >= mismatch.start) {
205
- curr.start += mismatch.length;
206
- lastSkipPos++;
207
- } else {
208
- break;
209
- }
191
+ // now actually parse the MD string
192
+ var md = mdstring.match(mdRegex) || [];
193
+ for (var i = 0; i < md.length; i++) {
194
+ var token = md[i];
195
+ var num = +token;
196
+ if (!Number.isNaN(num)) {
197
+ curr.start += num;
210
198
  }
211
-
212
- var s = getTemplateCoordLocal(curr.start);
213
- curr.base = seq[s] || 'X';
214
- var qualScore = qual === null || qual === void 0 ? void 0 : qual[s];
215
-
216
- if (qualScore) {
217
- curr.qual = qualScore;
199
+ else if (token.startsWith('^')) {
200
+ curr.start += token.length - 1;
201
+ }
202
+ else {
203
+ // mismatch
204
+ for (var j = 0; j < token.length; j += 1) {
205
+ curr.length = 1;
206
+ while (lastSkipPos < skips.length) {
207
+ var mismatch = skips[lastSkipPos];
208
+ if (curr.start >= mismatch.start) {
209
+ curr.start += mismatch.length;
210
+ lastSkipPos++;
211
+ }
212
+ else {
213
+ break;
214
+ }
215
+ }
216
+ var s = getTemplateCoordLocal(curr.start);
217
+ curr.base = seq[s] || 'X';
218
+ var qualScore = qual === null || qual === void 0 ? void 0 : qual[s];
219
+ if (qualScore) {
220
+ curr.qual = qualScore;
221
+ }
222
+ curr.altbase = token;
223
+ nextRecord();
224
+ }
218
225
  }
219
-
220
- curr.altbase = token;
221
- nextRecord();
222
- }
223
226
  }
224
- }
225
-
226
- return mismatchRecords;
227
+ return mismatchRecords;
227
228
  }
228
-
229
+ exports.mdToMismatches = mdToMismatches;
229
230
  function getMismatches(cigar, md, seq, ref, qual) {
230
- var mismatches = [];
231
- var ops = parseCigar(cigar); // parse the CIGAR tag if it has one
232
-
233
- if (cigar) {
234
- mismatches = mismatches.concat(cigarToMismatches(ops, seq, ref, qual));
235
- } // now let's look for CRAM or MD mismatches
236
-
237
-
238
- if (md) {
239
- mismatches = mismatches.concat(mdToMismatches(md, ops, mismatches, seq, qual));
240
- }
241
-
242
- return mismatches;
243
- } // get relative reference sequence positions for positions given relative to
231
+ var mismatches = [];
232
+ var ops = parseCigar(cigar);
233
+ // parse the CIGAR tag if it has one
234
+ if (cigar) {
235
+ mismatches = mismatches.concat(cigarToMismatches(ops, seq, ref, qual));
236
+ }
237
+ // now let's look for CRAM or MD mismatches
238
+ if (md) {
239
+ mismatches = mismatches.concat(mdToMismatches(md, ops, mismatches, seq, qual));
240
+ }
241
+ return mismatches;
242
+ }
243
+ exports.getMismatches = getMismatches;
244
+ // get relative reference sequence positions for positions given relative to
244
245
  // the read sequence
245
-
246
-
247
246
  function getNextRefPos(cigarOps, positions) {
248
- var readPos, refPos, currPos, i, len, op, _i, _i2;
249
-
250
- return _regenerator.default.wrap(function getNextRefPos$(_context) {
251
- while (1) {
252
- switch (_context.prev = _context.next) {
253
- case 0:
254
- readPos = 0;
255
- refPos = 0;
256
- currPos = 0;
257
- i = 0;
258
-
259
- case 4:
260
- if (!(i < cigarOps.length && currPos < positions.length)) {
261
- _context.next = 31;
262
- break;
263
- }
264
-
265
- len = +cigarOps[i];
266
- op = cigarOps[i + 1];
267
-
268
- if (!(op === 'S' || op === 'I')) {
269
- _context.next = 12;
270
- break;
271
- }
272
-
273
- for (_i = 0; _i < len && currPos < positions.length; _i++) {
274
- if (positions[currPos] === readPos + _i) {
275
- currPos++;
276
- }
277
- }
278
-
279
- readPos += len;
280
- _context.next = 28;
281
- break;
282
-
283
- case 12:
284
- if (!(op === 'D' || op === 'N')) {
285
- _context.next = 16;
286
- break;
287
- }
288
-
289
- refPos += len;
290
- _context.next = 28;
291
- break;
292
-
293
- case 16:
294
- if (!(op === 'M' || op === 'X' || op === '=')) {
295
- _context.next = 28;
296
- break;
297
- }
298
-
299
- _i2 = 0;
300
-
301
- case 18:
302
- if (!(_i2 < len && currPos < positions.length)) {
303
- _context.next = 26;
304
- break;
305
- }
306
-
307
- if (!(positions[currPos] === readPos + _i2)) {
308
- _context.next = 23;
309
- break;
310
- }
311
-
312
- _context.next = 22;
313
- return refPos + _i2;
314
-
315
- case 22:
316
- currPos++;
317
-
318
- case 23:
319
- _i2++;
320
- _context.next = 18;
321
- break;
322
-
323
- case 26:
324
- readPos += len;
325
- refPos += len;
326
-
327
- case 28:
328
- i += 2;
329
- _context.next = 4;
330
- break;
331
-
332
- case 31:
333
- case "end":
334
- return _context.stop();
335
- }
336
- }
337
- }, _marked);
247
+ var readPos, refPos, currPos, i, len, op, i_1, i_2;
248
+ return __generator(this, function (_a) {
249
+ switch (_a.label) {
250
+ case 0:
251
+ readPos = 0;
252
+ refPos = 0;
253
+ currPos = 0;
254
+ i = 0;
255
+ _a.label = 1;
256
+ case 1:
257
+ if (!(i < cigarOps.length && currPos < positions.length)) return [3 /*break*/, 9];
258
+ len = +cigarOps[i];
259
+ op = cigarOps[i + 1];
260
+ if (!(op === 'S' || op === 'I')) return [3 /*break*/, 2];
261
+ for (i_1 = 0; i_1 < len && currPos < positions.length; i_1++) {
262
+ if (positions[currPos] === readPos + i_1) {
263
+ currPos++;
264
+ }
265
+ }
266
+ readPos += len;
267
+ return [3 /*break*/, 8];
268
+ case 2:
269
+ if (!(op === 'D' || op === 'N')) return [3 /*break*/, 3];
270
+ refPos += len;
271
+ return [3 /*break*/, 8];
272
+ case 3:
273
+ if (!(op === 'M' || op === 'X' || op === '=')) return [3 /*break*/, 8];
274
+ i_2 = 0;
275
+ _a.label = 4;
276
+ case 4:
277
+ if (!(i_2 < len && currPos < positions.length)) return [3 /*break*/, 7];
278
+ if (!(positions[currPos] === readPos + i_2)) return [3 /*break*/, 6];
279
+ return [4 /*yield*/, refPos + i_2];
280
+ case 5:
281
+ _a.sent();
282
+ currPos++;
283
+ _a.label = 6;
284
+ case 6:
285
+ i_2++;
286
+ return [3 /*break*/, 4];
287
+ case 7:
288
+ readPos += len;
289
+ refPos += len;
290
+ _a.label = 8;
291
+ case 8:
292
+ i += 2;
293
+ return [3 /*break*/, 1];
294
+ case 9: return [2 /*return*/];
295
+ }
296
+ });
338
297
  }
339
-
298
+ exports.getNextRefPos = getNextRefPos;
340
299
  function getModificationPositions(mm, fseq, fstrand) {
341
- var seq = fstrand === -1 ? (0, _util.revcom)(fseq) : fseq;
342
- var mods = mm.split(';').filter(function (mod) {
343
- return !!mod;
344
- });
345
- var result = [];
346
-
347
- for (var i = 0; i < mods.length; i++) {
348
- var mod = mods[i];
349
-
350
- var _mod$split = mod.split(','),
351
- _mod$split2 = (0, _toArray2.default)(_mod$split),
352
- basemod = _mod$split2[0],
353
- skips = _mod$split2.slice(1); // regexes based on parse_mm.pl from hts-specs
354
-
355
-
356
- var matches = basemod.match(modificationRegex);
357
-
358
- if (!matches) {
359
- throw new Error('bad format for MM tag');
360
- }
361
-
362
- var _matches = (0, _slicedToArray2.default)(matches, 4),
363
- base = _matches[1],
364
- strand = _matches[2],
365
- typestr = _matches[3]; // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so
366
- // split, and they can also be chemical codes (ChEBI) e.g. C+16061
367
-
368
-
369
- var types = typestr.split(/(\d+|.)/).filter(function (f) {
370
- return !!f;
371
- });
372
-
373
- if (strand === '-') {
374
- console.warn('unsupported negative strand modifications'); // make sure to return a somewhat matching type even in this case
375
-
376
- result.push({
377
- type: 'unsupported',
378
- positions: []
379
- });
380
- } // this logic also based on parse_mm.pl from hts-specs is that in the
381
- // sequence of the read, if we have a modification type e.g. C+m;2 and a
382
- // sequence ACGTACGTAC we skip the two instances of C and go to the last
383
- // C
384
-
385
-
386
- for (var j = 0; j < types.length; j++) {
387
- var type = types[j];
388
- var _i3 = 0;
389
- var positions = [];
390
-
391
- for (var k = 0; k < skips.length; k++) {
392
- var delta = +skips[k];
393
-
394
- do {
395
- if (base === 'N' || base === seq[_i3]) {
396
- delta--;
397
- }
398
-
399
- _i3++;
400
- } while (delta >= 0 && _i3 < seq.length);
401
-
402
- var temp = _i3 - 1;
403
- positions.push(fstrand === -1 ? seq.length - 1 - temp : temp);
404
- }
405
-
406
- if (fstrand === -1) {
407
- positions.sort(function (a, b) {
408
- return a - b;
409
- });
410
- }
411
-
412
- result.push({
413
- type: type,
414
- positions: positions
415
- });
300
+ var seq = fstrand === -1 ? (0, util_1.revcom)(fseq) : fseq;
301
+ var mods = mm.split(';').filter(function (mod) { return !!mod; });
302
+ var result = [];
303
+ for (var i = 0; i < mods.length; i++) {
304
+ var mod = mods[i];
305
+ var _a = __read(mod.split(',')), basemod = _a[0], skips = _a.slice(1);
306
+ // regexes based on parse_mm.pl from hts-specs
307
+ var matches = basemod.match(modificationRegex);
308
+ if (!matches) {
309
+ throw new Error('bad format for MM tag');
310
+ }
311
+ var _b = __read(matches, 4), base = _b[1], strand = _b[2], typestr = _b[3];
312
+ // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so
313
+ // split, and they can also be chemical codes (ChEBI) e.g. C+16061
314
+ var types = typestr.split(/(\d+|.)/).filter(function (f) { return !!f; });
315
+ if (strand === '-') {
316
+ console.warn('unsupported negative strand modifications');
317
+ // make sure to return a somewhat matching type even in this case
318
+ result.push({ type: 'unsupported', positions: [] });
319
+ }
320
+ // this logic also based on parse_mm.pl from hts-specs is that in the
321
+ // sequence of the read, if we have a modification type e.g. C+m;2 and a
322
+ // sequence ACGTACGTAC we skip the two instances of C and go to the last
323
+ // C
324
+ for (var j = 0; j < types.length; j++) {
325
+ var type = types[j];
326
+ var i_3 = 0;
327
+ var positions = [];
328
+ for (var k = 0; k < skips.length; k++) {
329
+ var delta = +skips[k];
330
+ do {
331
+ if (base === 'N' || base === seq[i_3]) {
332
+ delta--;
333
+ }
334
+ i_3++;
335
+ } while (delta >= 0 && i_3 < seq.length);
336
+ var temp = i_3 - 1;
337
+ positions.push(fstrand === -1 ? seq.length - 1 - temp : temp);
338
+ }
339
+ if (fstrand === -1) {
340
+ positions.sort(function (a, b) { return a - b; });
341
+ }
342
+ result.push({
343
+ type: type,
344
+ positions: positions,
345
+ });
346
+ }
416
347
  }
417
- }
418
-
419
- return result;
348
+ return result;
420
349
  }
421
-
350
+ exports.getModificationPositions = getModificationPositions;
422
351
  function getModificationTypes(mm) {
423
- var mods = mm.split(';');
424
- return mods.filter(function (mod) {
425
- return !!mod;
426
- }).map(function (mod) {
427
- var _mod$split3 = mod.split(','),
428
- _mod$split4 = (0, _slicedToArray2.default)(_mod$split3, 1),
429
- basemod = _mod$split4[0];
430
-
431
- var matches = basemod.match(modificationRegex);
432
-
433
- if (!matches) {
434
- throw new Error('bad format for MM tag');
435
- }
436
-
437
- var _matches2 = (0, _slicedToArray2.default)(matches, 4),
438
- typestr = _matches2[3]; // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so
439
- // split, and they can also be chemical codes (ChEBI) e.g. C+16061
440
-
441
-
442
- return typestr.split(/(\d+|.)/).filter(function (f) {
443
- return !!f;
444
- });
445
- }).flat();
446
- }
352
+ var mods = mm.split(';');
353
+ return mods
354
+ .filter(function (mod) { return !!mod; })
355
+ .map(function (mod) {
356
+ var _a = __read(mod.split(','), 1), basemod = _a[0];
357
+ var matches = basemod.match(modificationRegex);
358
+ if (!matches) {
359
+ throw new Error('bad format for MM tag');
360
+ }
361
+ var _b = __read(matches, 4), typestr = _b[3];
362
+ // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so
363
+ // split, and they can also be chemical codes (ChEBI) e.g. C+16061
364
+ return typestr.split(/(\d+|.)/).filter(function (f) { return !!f; });
365
+ })
366
+ .flat();
367
+ }
368
+ exports.getModificationTypes = getModificationTypes;
369
+ //# sourceMappingURL=MismatchParser.js.map