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