@gmod/bam 1.1.17 → 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 (83) hide show
  1. package/CHANGELOG.md +65 -25
  2. package/README.md +108 -57
  3. package/dist/bai.d.ts +34 -15
  4. package/dist/bai.js +180 -273
  5. package/dist/bai.js.map +1 -1
  6. package/dist/bamFile.d.ts +33 -27
  7. package/dist/bamFile.js +353 -572
  8. package/dist/bamFile.js.map +1 -1
  9. package/dist/chunk.d.ts +4 -8
  10. package/dist/chunk.js +13 -21
  11. package/dist/chunk.js.map +1 -1
  12. package/dist/csi.d.ts +74 -10
  13. package/dist/csi.js +157 -256
  14. package/dist/csi.js.map +1 -1
  15. package/dist/errors.js +12 -57
  16. package/dist/errors.js.map +1 -1
  17. package/dist/htsget.d.ts +5 -8
  18. package/dist/htsget.js +120 -209
  19. package/dist/htsget.js.map +1 -1
  20. package/dist/index.d.ts +5 -6
  21. package/dist/index.js +11 -11
  22. package/dist/index.js.map +1 -1
  23. package/dist/indexFile.d.ts +0 -6
  24. package/dist/indexFile.js +3 -77
  25. package/dist/indexFile.js.map +1 -1
  26. package/dist/nullIndex.d.ts +7 -0
  27. package/dist/nullIndex.js +33 -0
  28. package/dist/nullIndex.js.map +1 -0
  29. package/dist/record.d.ts +2 -2
  30. package/dist/record.js +200 -193
  31. package/dist/record.js.map +1 -1
  32. package/dist/sam.js +12 -10
  33. package/dist/sam.js.map +1 -1
  34. package/dist/util.d.ts +13 -1
  35. package/dist/util.js +55 -58
  36. package/dist/util.js.map +1 -1
  37. package/dist/virtualOffset.js +13 -20
  38. package/dist/virtualOffset.js.map +1 -1
  39. package/esm/bai.d.ts +34 -15
  40. package/esm/bai.js +86 -91
  41. package/esm/bai.js.map +1 -1
  42. package/esm/bamFile.d.ts +33 -27
  43. package/esm/bamFile.js +124 -120
  44. package/esm/bamFile.js.map +1 -1
  45. package/esm/chunk.d.ts +4 -8
  46. package/esm/chunk.js +2 -8
  47. package/esm/chunk.js.map +1 -1
  48. package/esm/csi.d.ts +74 -10
  49. package/esm/csi.js +85 -93
  50. package/esm/csi.js.map +1 -1
  51. package/esm/htsget.d.ts +5 -8
  52. package/esm/htsget.js +68 -43
  53. package/esm/htsget.js.map +1 -1
  54. package/esm/index.d.ts +5 -6
  55. package/esm/index.js +5 -6
  56. package/esm/index.js.map +1 -1
  57. package/esm/indexFile.d.ts +0 -6
  58. package/esm/indexFile.js +0 -22
  59. package/esm/indexFile.js.map +1 -1
  60. package/esm/nullIndex.d.ts +7 -0
  61. package/esm/nullIndex.js +16 -0
  62. package/esm/nullIndex.js.map +1 -0
  63. package/esm/record.d.ts +2 -2
  64. package/esm/record.js +34 -24
  65. package/esm/record.js.map +1 -1
  66. package/esm/sam.js +9 -7
  67. package/esm/sam.js.map +1 -1
  68. package/esm/util.d.ts +13 -1
  69. package/esm/util.js +40 -14
  70. package/esm/util.js.map +1 -1
  71. package/package.json +19 -20
  72. package/src/bai.ts +99 -102
  73. package/src/bamFile.ts +174 -198
  74. package/src/chunk.ts +6 -20
  75. package/src/csi.ts +102 -111
  76. package/src/htsget.ts +81 -61
  77. package/src/index.ts +5 -7
  78. package/src/indexFile.ts +0 -27
  79. package/src/nullIndex.ts +18 -0
  80. package/src/record.ts +34 -24
  81. package/src/sam.ts +9 -7
  82. package/src/util.ts +54 -13
  83. package/src/declare.d.ts +0 -2
package/dist/bai.js CHANGED
@@ -1,30 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -34,271 +8,204 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
35
9
  });
36
10
  };
37
- var __generator = (this && this.__generator) || function (thisArg, body) {
38
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
- function verb(n) { return function (v) { return step([n, v]); }; }
41
- function step(op) {
42
- if (f) throw new TypeError("Generator is already executing.");
43
- while (_) try {
44
- 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;
45
- if (y = 0, t) op = [op[0] & 2, t.value];
46
- switch (op[0]) {
47
- case 0: case 1: t = op; break;
48
- case 4: _.label++; return { value: op[1], done: false };
49
- case 5: _.label++; y = op[1]; op = [0]; continue;
50
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
- default:
52
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
- if (t[2]) _.ops.pop();
57
- _.trys.pop(); continue;
58
- }
59
- op = body.call(thisArg, _);
60
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
- }
63
- };
64
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
65
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
66
13
  };
67
14
  Object.defineProperty(exports, "__esModule", { value: true });
68
- var long_1 = __importDefault(require("long"));
69
- var virtualOffset_1 = require("./virtualOffset");
70
- var chunk_1 = __importDefault(require("./chunk"));
71
- var indexFile_1 = __importDefault(require("./indexFile"));
72
- var util_1 = require("./util");
73
- var BAI_MAGIC = 21578050; // BAI\1
15
+ const virtualOffset_1 = require("./virtualOffset");
16
+ const chunk_1 = __importDefault(require("./chunk"));
17
+ const util_1 = require("./util");
18
+ const indexFile_1 = __importDefault(require("./indexFile"));
19
+ const BAI_MAGIC = 21578050; // BAI\1
74
20
  function roundDown(n, multiple) {
75
21
  return n - (n % multiple);
76
22
  }
77
23
  function roundUp(n, multiple) {
78
24
  return n - (n % multiple) + multiple;
79
25
  }
80
- var BAI = /** @class */ (function (_super) {
81
- __extends(BAI, _super);
82
- function BAI() {
83
- return _super !== null && _super.apply(this, arguments) || this;
84
- }
85
- BAI.prototype.parsePseudoBin = function (bytes, offset) {
86
- var lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 16, offset + 24), true));
87
- return { lineCount: lineCount };
88
- };
89
- BAI.prototype.lineCount = function (refId, opts) {
90
- if (opts === void 0) { opts = {}; }
91
- return __awaiter(this, void 0, void 0, function () {
92
- var prom, index, ret;
93
- return __generator(this, function (_a) {
94
- switch (_a.label) {
95
- case 0: return [4 /*yield*/, this.parse(opts)];
96
- case 1:
97
- prom = _a.sent();
98
- index = prom.indices[refId];
99
- if (!index) {
100
- return [2 /*return*/, -1];
101
- }
102
- ret = index.stats || {};
103
- return [2 /*return*/, ret.lineCount === undefined ? -1 : ret.lineCount];
104
- }
105
- });
26
+ function reg2bins(beg, end) {
27
+ end -= 1;
28
+ return [
29
+ [0, 0],
30
+ [1 + (beg >> 26), 1 + (end >> 26)],
31
+ [9 + (beg >> 23), 9 + (end >> 23)],
32
+ [73 + (beg >> 20), 73 + (end >> 20)],
33
+ [585 + (beg >> 17), 585 + (end >> 17)],
34
+ [4681 + (beg >> 14), 4681 + (end >> 14)],
35
+ ];
36
+ }
37
+ class BAI extends indexFile_1.default {
38
+ lineCount(refId, opts) {
39
+ var _a, _b;
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const indexData = yield this.parse(opts);
42
+ return ((_b = (_a = indexData.indices[refId]) === null || _a === void 0 ? void 0 : _a.stats) === null || _b === void 0 ? void 0 : _b.lineCount) || 0;
106
43
  });
107
- };
108
- BAI.prototype.fetchBai = function (opts) {
109
- var _this = this;
110
- if (opts === void 0) { opts = {}; }
111
- if (!this.baiP) {
112
- this.baiP = this.filehandle.readFile(opts).catch(function (e) {
113
- _this.baiP = undefined;
114
- throw e;
115
- });
116
- }
117
- return this.baiP;
118
- };
44
+ }
119
45
  // fetch and parse the index
120
- BAI.prototype._parse = function () {
121
- return __awaiter(this, void 0, void 0, function () {
122
- var data, bytes, depth, binLimit, currOffset, i, binCount, stats, binIndex, j, bin, chunkCount, chunks, k, u, v, linearCount, linearIndex, k;
123
- return __generator(this, function (_a) {
124
- switch (_a.label) {
125
- case 0:
126
- data = { bai: true, maxBlockSize: 1 << 16 };
127
- return [4 /*yield*/, this.fetchBai()
128
- // check BAI magic numbers
129
- ];
130
- case 1:
131
- bytes = _a.sent();
132
- // check BAI magic numbers
133
- if (bytes.readUInt32LE(0) !== BAI_MAGIC) {
134
- throw new Error('Not a BAI file');
135
- }
136
- data.refCount = bytes.readInt32LE(4);
137
- depth = 5;
138
- binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
139
- // read the indexes for each reference sequence
140
- data.indices = new Array(data.refCount);
141
- currOffset = 8;
142
- for (i = 0; i < data.refCount; i += 1) {
143
- binCount = bytes.readInt32LE(currOffset);
144
- stats = void 0;
145
- currOffset += 4;
146
- binIndex = {};
147
- for (j = 0; j < binCount; j += 1) {
148
- bin = bytes.readUInt32LE(currOffset);
149
- currOffset += 4;
150
- if (bin === binLimit + 1) {
151
- currOffset += 4;
152
- stats = this.parsePseudoBin(bytes, currOffset);
153
- currOffset += 32;
154
- }
155
- else if (bin > binLimit + 1) {
156
- throw new Error('bai index contains too many bins, please use CSI');
157
- }
158
- else {
159
- chunkCount = bytes.readInt32LE(currOffset);
160
- currOffset += 4;
161
- chunks = new Array(chunkCount);
162
- for (k = 0; k < chunkCount; k += 1) {
163
- u = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
164
- v = (0, virtualOffset_1.fromBytes)(bytes, currOffset + 8);
165
- currOffset += 16;
166
- this._findFirstData(data, u);
167
- chunks[k] = new chunk_1.default(u, v, bin);
168
- }
169
- binIndex[bin] = chunks;
170
- }
171
- }
172
- linearCount = bytes.readInt32LE(currOffset);
173
- currOffset += 4;
174
- linearIndex = new Array(linearCount);
175
- for (k = 0; k < linearCount; k += 1) {
176
- linearIndex[k] = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
177
- currOffset += 8;
178
- this._findFirstData(data, linearIndex[k]);
179
- }
180
- data.indices[i] = { binIndex: binIndex, linearIndex: linearIndex, stats: stats };
46
+ _parse(opts) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const bytes = (yield this.filehandle.readFile(opts));
49
+ // check BAI magic numbers
50
+ if (bytes.readUInt32LE(0) !== BAI_MAGIC) {
51
+ throw new Error('Not a BAI file');
52
+ }
53
+ const refCount = bytes.readInt32LE(4);
54
+ const depth = 5;
55
+ const binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
56
+ // read the indexes for each reference sequence
57
+ let curr = 8;
58
+ let firstDataLine;
59
+ const indices = new Array(refCount);
60
+ for (let i = 0; i < refCount; i++) {
61
+ // the binning index
62
+ const binCount = bytes.readInt32LE(curr);
63
+ let stats;
64
+ curr += 4;
65
+ const binIndex = {};
66
+ for (let j = 0; j < binCount; j += 1) {
67
+ const bin = bytes.readUInt32LE(curr);
68
+ curr += 4;
69
+ if (bin === binLimit + 1) {
70
+ curr += 4;
71
+ stats = (0, util_1.parsePseudoBin)(bytes, curr + 16);
72
+ curr += 32;
73
+ }
74
+ else if (bin > binLimit + 1) {
75
+ throw new Error('bai index contains too many bins, please use CSI');
76
+ }
77
+ else {
78
+ const chunkCount = bytes.readInt32LE(curr);
79
+ curr += 4;
80
+ const chunks = new Array(chunkCount);
81
+ for (let k = 0; k < chunkCount; k++) {
82
+ const u = (0, virtualOffset_1.fromBytes)(bytes, curr);
83
+ curr += 8;
84
+ const v = (0, virtualOffset_1.fromBytes)(bytes, curr);
85
+ curr += 8;
86
+ firstDataLine = (0, util_1.findFirstData)(firstDataLine, u);
87
+ chunks[k] = new chunk_1.default(u, v, bin);
181
88
  }
182
- return [2 /*return*/, data];
89
+ binIndex[bin] = chunks;
90
+ }
183
91
  }
184
- });
185
- });
186
- };
187
- BAI.prototype.indexCov = function (seqId, start, end, opts) {
188
- if (opts === void 0) { opts = {}; }
189
- return __awaiter(this, void 0, void 0, function () {
190
- var v, range, indexData, seqIdx, _a, linearIndex, stats, e, s, depths, totalSize, currentPos, i, j;
191
- return __generator(this, function (_b) {
192
- switch (_b.label) {
193
- case 0:
194
- v = 16384;
195
- range = start !== undefined;
196
- return [4 /*yield*/, this.parse(opts)];
197
- case 1:
198
- indexData = _b.sent();
199
- seqIdx = indexData.indices[seqId];
200
- if (!seqIdx) {
201
- return [2 /*return*/, []];
202
- }
203
- _a = seqIdx.linearIndex, linearIndex = _a === void 0 ? [] : _a, stats = seqIdx.stats;
204
- if (!linearIndex.length) {
205
- return [2 /*return*/, []];
206
- }
207
- e = end !== undefined ? roundUp(end, v) : (linearIndex.length - 1) * v;
208
- s = start !== undefined ? roundDown(start, v) : 0;
209
- if (range) {
210
- depths = new Array((e - s) / v);
211
- }
212
- else {
213
- depths = new Array(linearIndex.length - 1);
214
- }
215
- totalSize = linearIndex[linearIndex.length - 1].blockPosition;
216
- if (e > (linearIndex.length - 1) * v) {
217
- throw new Error('query outside of range of linear index');
218
- }
219
- currentPos = linearIndex[s / v].blockPosition;
220
- for (i = s / v, j = 0; i < e / v; i++, j++) {
221
- depths[j] = {
222
- score: linearIndex[i + 1].blockPosition - currentPos,
223
- start: i * v,
224
- end: i * v + v,
225
- };
226
- currentPos = linearIndex[i + 1].blockPosition;
227
- }
228
- return [2 /*return*/, depths.map(function (d) {
229
- return __assign(__assign({}, d), { score: (d.score * stats.lineCount) / totalSize });
230
- })];
92
+ const linearCount = bytes.readInt32LE(curr);
93
+ curr += 4;
94
+ // as we're going through the linear index, figure out the smallest
95
+ // virtual offset in the indexes, which tells us where the BAM header
96
+ // ends
97
+ const linearIndex = new Array(linearCount);
98
+ for (let j = 0; j < linearCount; j++) {
99
+ const offset = (0, virtualOffset_1.fromBytes)(bytes, curr);
100
+ curr += 8;
101
+ firstDataLine = (0, util_1.findFirstData)(firstDataLine, offset);
102
+ linearIndex[j] = offset;
231
103
  }
232
- });
104
+ indices[i] = { binIndex, linearIndex, stats };
105
+ }
106
+ return {
107
+ bai: true,
108
+ firstDataLine,
109
+ maxBlockSize: 1 << 16,
110
+ indices,
111
+ refCount,
112
+ };
233
113
  });
234
- };
235
- /**
236
- * calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
237
- * @returns {Array[number]}
238
- */
239
- BAI.prototype.reg2bins = function (beg, end) {
240
- end -= 1;
241
- return [
242
- [0, 0],
243
- [1 + (beg >> 26), 1 + (end >> 26)],
244
- [9 + (beg >> 23), 9 + (end >> 23)],
245
- [73 + (beg >> 20), 73 + (end >> 20)],
246
- [585 + (beg >> 17), 585 + (end >> 17)],
247
- [4681 + (beg >> 14), 4681 + (end >> 14)],
248
- ];
249
- };
250
- BAI.prototype.blocksForRange = function (refId, min, max, opts) {
251
- if (opts === void 0) { opts = {}; }
252
- return __awaiter(this, void 0, void 0, function () {
253
- var indexData, ba, overlappingBins, chunks, _i, overlappingBins_1, _a, start, end, bin, binChunks, c, nintv, lowest, minLin, maxLin, i, vp;
254
- return __generator(this, function (_b) {
255
- switch (_b.label) {
256
- case 0:
257
- if (min < 0) {
258
- min = 0;
259
- }
260
- return [4 /*yield*/, this.parse(opts)];
261
- case 1:
262
- indexData = _b.sent();
263
- if (!indexData) {
264
- return [2 /*return*/, []];
265
- }
266
- ba = indexData.indices[refId];
267
- if (!ba) {
268
- return [2 /*return*/, []];
269
- }
270
- overlappingBins = this.reg2bins(min, max);
271
- chunks = [];
272
- // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
273
- for (_i = 0, overlappingBins_1 = overlappingBins; _i < overlappingBins_1.length; _i++) {
274
- _a = overlappingBins_1[_i], start = _a[0], end = _a[1];
275
- for (bin = start; bin <= end; bin++) {
276
- if (ba.binIndex[bin]) {
277
- binChunks = ba.binIndex[bin];
278
- for (c = 0; c < binChunks.length; ++c) {
279
- chunks.push(new chunk_1.default(binChunks[c].minv, binChunks[c].maxv, bin));
280
- }
281
- }
282
- }
283
- }
284
- nintv = ba.linearIndex.length;
285
- lowest = null;
286
- minLin = Math.min(min >> 14, nintv - 1);
287
- maxLin = Math.min(max >> 14, nintv - 1);
288
- for (i = minLin; i <= maxLin; ++i) {
289
- vp = ba.linearIndex[i];
290
- if (vp) {
291
- if (!lowest || vp.compareTo(lowest) < 0) {
292
- lowest = vp;
293
- }
294
- }
114
+ }
115
+ indexCov(seqId, start, end, opts = {}) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ const v = 16384;
118
+ const range = start !== undefined;
119
+ const indexData = yield this.parse(opts);
120
+ const seqIdx = indexData.indices[seqId];
121
+ if (!seqIdx) {
122
+ return [];
123
+ }
124
+ const { linearIndex = [], stats } = seqIdx;
125
+ if (linearIndex.length === 0) {
126
+ return [];
127
+ }
128
+ const e = end === undefined ? (linearIndex.length - 1) * v : roundUp(end, v);
129
+ const s = start === undefined ? 0 : roundDown(start, v);
130
+ const depths = range
131
+ ? new Array((e - s) / v)
132
+ : new Array(linearIndex.length - 1);
133
+ const totalSize = linearIndex[linearIndex.length - 1].blockPosition;
134
+ if (e > (linearIndex.length - 1) * v) {
135
+ throw new Error('query outside of range of linear index');
136
+ }
137
+ let currentPos = linearIndex[s / v].blockPosition;
138
+ for (let i = s / v, j = 0; i < e / v; i++, j++) {
139
+ depths[j] = {
140
+ score: linearIndex[i + 1].blockPosition - currentPos,
141
+ start: i * v,
142
+ end: i * v + v,
143
+ };
144
+ currentPos = linearIndex[i + 1].blockPosition;
145
+ }
146
+ return depths.map(d => (Object.assign(Object.assign({}, d), { score: (d.score * ((stats === null || stats === void 0 ? void 0 : stats.lineCount) || 0)) / totalSize })));
147
+ });
148
+ }
149
+ blocksForRange(refId, min, max, opts = {}) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ if (min < 0) {
152
+ min = 0;
153
+ }
154
+ const indexData = yield this.parse(opts);
155
+ if (!indexData) {
156
+ return [];
157
+ }
158
+ const ba = indexData.indices[refId];
159
+ if (!ba) {
160
+ return [];
161
+ }
162
+ // List of bin #s that overlap min, max
163
+ const overlappingBins = reg2bins(min, max);
164
+ const chunks = [];
165
+ // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
166
+ for (const [start, end] of overlappingBins) {
167
+ for (let bin = start; bin <= end; bin++) {
168
+ if (ba.binIndex[bin]) {
169
+ const binChunks = ba.binIndex[bin];
170
+ for (const binChunk of binChunks) {
171
+ chunks.push(binChunk);
295
172
  }
296
- return [2 /*return*/, (0, util_1.optimizeChunks)(chunks, lowest)];
173
+ }
297
174
  }
298
- });
175
+ }
176
+ // Use the linear index to find minimum file position of chunks that could
177
+ // contain alignments in the region
178
+ const nintv = ba.linearIndex.length;
179
+ let lowest;
180
+ const minLin = Math.min(min >> 14, nintv - 1);
181
+ const maxLin = Math.min(max >> 14, nintv - 1);
182
+ for (let i = minLin; i <= maxLin; ++i) {
183
+ const vp = ba.linearIndex[i];
184
+ if (vp && (!lowest || vp.compareTo(lowest) < 0)) {
185
+ lowest = vp;
186
+ }
187
+ }
188
+ return (0, util_1.optimizeChunks)(chunks, lowest);
189
+ });
190
+ }
191
+ parse(opts = {}) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ if (!this.setupP) {
194
+ this.setupP = this._parse(opts).catch(e => {
195
+ this.setupP = undefined;
196
+ throw e;
197
+ });
198
+ }
199
+ return this.setupP;
200
+ });
201
+ }
202
+ hasRefSeq(seqId, opts = {}) {
203
+ var _a;
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ const header = yield this.parse(opts);
206
+ return !!((_a = header.indices[seqId]) === null || _a === void 0 ? void 0 : _a.binIndex);
299
207
  });
300
- };
301
- return BAI;
302
- }(indexFile_1.default));
208
+ }
209
+ }
303
210
  exports.default = BAI;
304
211
  //# sourceMappingURL=bai.js.map
package/dist/bai.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}