@gmod/bam 7.3.3 → 7.4.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.
- package/dist/bai.js +10 -7
- package/dist/bai.js.map +1 -1
- package/dist/bamFile.d.ts +25 -6
- package/dist/bamFile.js +91 -33
- package/dist/bamFile.js.map +1 -1
- package/dist/csi.js +2 -2
- package/dist/csi.js.map +1 -1
- package/dist/htsget.js +2 -2
- package/dist/htsget.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/long.d.ts +0 -2
- package/dist/long.js +2 -4
- package/dist/long.js.map +1 -1
- package/dist/record.d.ts +3 -2
- package/dist/record.js +198 -178
- package/dist/record.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.js +11 -12
- package/dist/util.js.map +1 -1
- package/dist/virtualOffset.d.ts +1 -1
- package/dist/virtualOffset.js +1 -4
- package/dist/virtualOffset.js.map +1 -1
- package/esm/bai.js +10 -7
- package/esm/bai.js.map +1 -1
- package/esm/bamFile.d.ts +25 -6
- package/esm/bamFile.js +91 -33
- package/esm/bamFile.js.map +1 -1
- package/esm/csi.js +2 -2
- package/esm/csi.js.map +1 -1
- package/esm/htsget.js +2 -2
- package/esm/htsget.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/esm/long.d.ts +0 -2
- package/esm/long.js +1 -2
- package/esm/long.js.map +1 -1
- package/esm/record.d.ts +3 -2
- package/esm/record.js +198 -178
- package/esm/record.js.map +1 -1
- package/esm/util.d.ts +1 -1
- package/esm/util.js +11 -11
- package/esm/util.js.map +1 -1
- package/esm/virtualOffset.d.ts +1 -1
- package/esm/virtualOffset.js +1 -4
- package/esm/virtualOffset.js.map +1 -1
- package/package.json +2 -1
- package/src/bai.ts +15 -8
- package/src/bamFile.ts +117 -40
- package/src/csi.ts +10 -2
- package/src/htsget.ts +6 -2
- package/src/index.ts +1 -1
- package/src/long.ts +1 -2
- package/src/record.ts +231 -192
- package/src/util.ts +24 -14
- package/src/virtualOffset.ts +1 -5
package/dist/record.js
CHANGED
|
@@ -5,15 +5,42 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const cigar_ts_1 = require("./cigar.js");
|
|
7
7
|
const constants_ts_1 = __importDefault(require("./constants.js"));
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
//
|
|
8
|
+
const SEQRET = '=ACMGRSVTWYHKDBN';
|
|
9
|
+
const SEQRET_DECODER = SEQRET.split('');
|
|
10
|
+
const SEQRET_CODES = Uint8Array.from(SEQRET, c => c.charCodeAt(0));
|
|
11
|
+
// Both bases of a SEQ byte, precomputed for all 256 bytes so decoding advances a
|
|
12
|
+
// byte at a time. Two forms because `seq` has two strategies (see below): packed
|
|
13
|
+
// ASCII codes for a single Uint16Array store, and the 2-char string to append.
|
|
14
|
+
// Byte order within the u16 depends on host endianness.
|
|
15
|
+
const LITTLE_ENDIAN = new Uint16Array(Uint8Array.of(1, 0).buffer)[0] === 1;
|
|
16
|
+
const SEQRET_PAIR_CODES = new Uint16Array(256);
|
|
17
|
+
const SEQRET_PAIR_STRINGS = new Array(256);
|
|
18
|
+
for (let hi = 0; hi < 16; hi++) {
|
|
19
|
+
for (let lo = 0; lo < 16; lo++) {
|
|
20
|
+
const h = SEQRET_CODES[hi];
|
|
21
|
+
const l = SEQRET_CODES[lo];
|
|
22
|
+
SEQRET_PAIR_CODES[(hi << 4) | lo] = LITTLE_ENDIAN
|
|
23
|
+
? h | (l << 8)
|
|
24
|
+
: (h << 8) | l;
|
|
25
|
+
SEQRET_PAIR_STRINGS[(hi << 4) | lo] =
|
|
26
|
+
SEQRET_DECODER[hi] + SEQRET_DECODER[lo];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Read length at which building a byte buffer and calling TextDecoder once
|
|
30
|
+
// overtakes plain string concatenation. Below it concat wins by 2-4x (rope
|
|
31
|
+
// building is cheap and the decode has fixed overhead); above it the decoder
|
|
32
|
+
// wins by 5-8x. Measured crossover is ~300bp, i.e. just past typical Illumina
|
|
33
|
+
// read lengths.
|
|
34
|
+
const SEQ_DECODER_THRESHOLD = 300;
|
|
35
|
+
// Precomputed pair orientation strings, indexed by
|
|
36
|
+
// ((flags >> 4) & 0x7) | (selfIsLeft ? 8 : 0)
|
|
37
|
+
// bits 0-2 are flag bits 0x10 (self reverse), 0x20 (mate reverse), 0x40 (read1);
|
|
38
|
+
// bit 3 is whether this read is the leftmost of the pair. The read2 flag (0x80)
|
|
39
|
+
// is deliberately not consulted — "not read1" is what decides the numbering, so
|
|
40
|
+
// a record with neither flag set reads the same as read2.
|
|
12
41
|
// prettier-ignore
|
|
13
42
|
const PAIR_ORIENTATION_TABLE = [
|
|
14
|
-
'F F ', 'F R ', 'R F ', 'R R ', 'F2F1', 'F2R1', 'R2F1', 'R2R1',
|
|
15
43
|
'F1F2', 'F1R2', 'R1F2', 'R1R2', 'F2F1', 'F2R1', 'R2F1', 'R2R1',
|
|
16
|
-
'F F ', 'R F ', 'F R ', 'R R ', 'F1F2', 'R1F2', 'F1R2', 'R1R2',
|
|
17
44
|
'F2F1', 'R2F1', 'F2R1', 'R2R1', 'F1F2', 'R1F2', 'F1R2', 'R1R2',
|
|
18
45
|
];
|
|
19
46
|
const ASCII_CIGAR_CODES = [
|
|
@@ -23,10 +50,19 @@ const textDecoder = new TextDecoder();
|
|
|
23
50
|
// Bitmask for ops that consume ref: M=0, D=2, N=3, P=6, ==7, X=8
|
|
24
51
|
// Binary: 0b111001101 = 0x1CD
|
|
25
52
|
const CIGAR_CONSUMES_REF_MASK = 0x1cd;
|
|
53
|
+
function isNumericCigar(value) {
|
|
54
|
+
return (value instanceof Uint32Array ||
|
|
55
|
+
value instanceof Int32Array ||
|
|
56
|
+
Array.isArray(value));
|
|
57
|
+
}
|
|
26
58
|
// Decode a 'B' (array) tag value starting at `p` (the byte after type+subtype+
|
|
27
59
|
// count). When the data is naturally aligned we return a typed-array view over
|
|
28
60
|
// the underlying buffer (zero-copy); otherwise we copy element-by-element since
|
|
29
|
-
// typed-array views require alignment.
|
|
61
|
+
// typed-array views require alignment. The copy target is a plain array, not a
|
|
62
|
+
// typed one: benchmarking the unaligned path found number[] fills faster below
|
|
63
|
+
// ~10k elements and reads at least as fast at every size, so the only thing a
|
|
64
|
+
// typed copy would buy is half the retained bytes. Shared by getTag and the
|
|
65
|
+
// full-tag parse.
|
|
30
66
|
function decodeBArrayTag(ba, dataView, p, Btype, limit) {
|
|
31
67
|
const absOffset = ba.byteOffset + p;
|
|
32
68
|
switch (Btype) {
|
|
@@ -105,6 +141,82 @@ function bArrayByteLength(Btype, limit) {
|
|
|
105
141
|
return limit;
|
|
106
142
|
}
|
|
107
143
|
}
|
|
144
|
+
// Cursor position just past a tag's value — i.e. the start of the next tag —
|
|
145
|
+
// given the value starts at `p`. For null-terminated Z/H this steps over the
|
|
146
|
+
// terminator. Returns 0 for an unknown type, whose value width is unknowable so
|
|
147
|
+
// the caller must stop. Shared by _findTag and _computeTags so the two loops
|
|
148
|
+
// can't drift in how they walk the tag layout. (0 is an impossible real end:
|
|
149
|
+
// `p` is always past the fixed record prefix.)
|
|
150
|
+
function tagValueEnd(ba, dataView, type, p, blockEnd) {
|
|
151
|
+
switch (type) {
|
|
152
|
+
case 0x41: // 'A'
|
|
153
|
+
case 0x63: // 'c'
|
|
154
|
+
case 0x43: // 'C'
|
|
155
|
+
return p + 1;
|
|
156
|
+
case 0x73: // 's'
|
|
157
|
+
case 0x53: // 'S'
|
|
158
|
+
return p + 2;
|
|
159
|
+
case 0x69: // 'i'
|
|
160
|
+
case 0x49: // 'I'
|
|
161
|
+
case 0x66: {
|
|
162
|
+
// 'f'
|
|
163
|
+
return p + 4;
|
|
164
|
+
}
|
|
165
|
+
case 0x5a: // 'Z'
|
|
166
|
+
case 0x48: {
|
|
167
|
+
// 'H'
|
|
168
|
+
let q = p;
|
|
169
|
+
while (q < blockEnd && ba[q] !== 0) {
|
|
170
|
+
q++;
|
|
171
|
+
}
|
|
172
|
+
return q + 1; // step past the null terminator
|
|
173
|
+
}
|
|
174
|
+
case 0x42: {
|
|
175
|
+
// 'B'
|
|
176
|
+
const Btype = ba[p];
|
|
177
|
+
const limit = dataView.getInt32(p + 1, true);
|
|
178
|
+
return p + 5 + bArrayByteLength(Btype, limit);
|
|
179
|
+
}
|
|
180
|
+
default:
|
|
181
|
+
console.error('Unknown BAM tag type', type);
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Decode the value of a tag of `type` whose bytes start at `p`; `end` is the
|
|
186
|
+
// next-tag cursor from tagValueEnd (used only to bound Z/H strings, whose bytes
|
|
187
|
+
// run up to the null terminator at end-1). When `raw`, Z/H return the undecoded
|
|
188
|
+
// byte subarray. Assumes `type` is a known scalar/string/B type.
|
|
189
|
+
function decodeTagValue(ba, dataView, type, p, end, raw) {
|
|
190
|
+
switch (type) {
|
|
191
|
+
case 0x41: // 'A'
|
|
192
|
+
return String.fromCharCode(ba[p]);
|
|
193
|
+
case 0x69: // 'i'
|
|
194
|
+
return dataView.getInt32(p, true);
|
|
195
|
+
case 0x49: // 'I'
|
|
196
|
+
return dataView.getUint32(p, true);
|
|
197
|
+
case 0x63: // 'c'
|
|
198
|
+
return dataView.getInt8(p);
|
|
199
|
+
case 0x43: // 'C'
|
|
200
|
+
return dataView.getUint8(p);
|
|
201
|
+
case 0x73: // 's'
|
|
202
|
+
return dataView.getInt16(p, true);
|
|
203
|
+
case 0x53: // 'S'
|
|
204
|
+
return dataView.getUint16(p, true);
|
|
205
|
+
case 0x66: // 'f'
|
|
206
|
+
return dataView.getFloat32(p, true);
|
|
207
|
+
case 0x5a: // 'Z'
|
|
208
|
+
case 0x48: // 'H'
|
|
209
|
+
return raw
|
|
210
|
+
? ba.subarray(p, end - 1)
|
|
211
|
+
: textDecoder.decode(ba.subarray(p, end - 1));
|
|
212
|
+
default: {
|
|
213
|
+
// 'B'
|
|
214
|
+
const Btype = ba[p];
|
|
215
|
+
const limit = dataView.getInt32(p + 1, true);
|
|
216
|
+
return decodeBArrayTag(ba, dataView, p + 5, Btype, limit);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
108
220
|
class BamRecord {
|
|
109
221
|
fileOffset;
|
|
110
222
|
_byteArray;
|
|
@@ -220,165 +332,41 @@ class BamRecord {
|
|
|
220
332
|
_findTag(tagName, raw) {
|
|
221
333
|
const tag1 = tagName.charCodeAt(0);
|
|
222
334
|
const tag2 = tagName.charCodeAt(1);
|
|
223
|
-
let p = this.tagsStart;
|
|
224
335
|
const blockEnd = this._end;
|
|
225
336
|
const ba = this._byteArray;
|
|
337
|
+
let p = this.tagsStart;
|
|
226
338
|
while (p < blockEnd) {
|
|
227
|
-
const
|
|
228
|
-
const currentTag2 = ba[p + 1];
|
|
339
|
+
const isMatch = ba[p] === tag1 && ba[p + 1] === tag2;
|
|
229
340
|
const type = ba[p + 2];
|
|
230
|
-
p
|
|
231
|
-
const
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
if (isMatch) {
|
|
235
|
-
return String.fromCharCode(ba[p]);
|
|
236
|
-
}
|
|
237
|
-
p += 1;
|
|
238
|
-
break;
|
|
239
|
-
case 0x69: // 'i'
|
|
240
|
-
if (isMatch) {
|
|
241
|
-
return this._dataView.getInt32(p, true);
|
|
242
|
-
}
|
|
243
|
-
p += 4;
|
|
244
|
-
break;
|
|
245
|
-
case 0x49: // 'I'
|
|
246
|
-
if (isMatch) {
|
|
247
|
-
return this._dataView.getUint32(p, true);
|
|
248
|
-
}
|
|
249
|
-
p += 4;
|
|
250
|
-
break;
|
|
251
|
-
case 0x63: // 'c'
|
|
252
|
-
if (isMatch) {
|
|
253
|
-
return this._dataView.getInt8(p);
|
|
254
|
-
}
|
|
255
|
-
p += 1;
|
|
256
|
-
break;
|
|
257
|
-
case 0x43: // 'C'
|
|
258
|
-
if (isMatch) {
|
|
259
|
-
return this._dataView.getUint8(p);
|
|
260
|
-
}
|
|
261
|
-
p += 1;
|
|
262
|
-
break;
|
|
263
|
-
case 0x73: // 's'
|
|
264
|
-
if (isMatch) {
|
|
265
|
-
return this._dataView.getInt16(p, true);
|
|
266
|
-
}
|
|
267
|
-
p += 2;
|
|
268
|
-
break;
|
|
269
|
-
case 0x53: // 'S'
|
|
270
|
-
if (isMatch) {
|
|
271
|
-
return this._dataView.getUint16(p, true);
|
|
272
|
-
}
|
|
273
|
-
p += 2;
|
|
274
|
-
break;
|
|
275
|
-
case 0x66: // 'f'
|
|
276
|
-
if (isMatch) {
|
|
277
|
-
return this._dataView.getFloat32(p, true);
|
|
278
|
-
}
|
|
279
|
-
p += 4;
|
|
280
|
-
break;
|
|
281
|
-
case 0x5a: // 'Z'
|
|
282
|
-
case 0x48: {
|
|
283
|
-
// 'H'
|
|
284
|
-
const start = p;
|
|
285
|
-
while (p < blockEnd && ba[p] !== 0) {
|
|
286
|
-
p++;
|
|
287
|
-
}
|
|
288
|
-
if (isMatch) {
|
|
289
|
-
return raw
|
|
290
|
-
? ba.subarray(start, p)
|
|
291
|
-
: textDecoder.decode(ba.subarray(start, p));
|
|
292
|
-
}
|
|
293
|
-
p++; // advance past null terminator
|
|
294
|
-
break;
|
|
295
|
-
}
|
|
296
|
-
case 0x42: {
|
|
297
|
-
// 'B'
|
|
298
|
-
const Btype = ba[p++];
|
|
299
|
-
const limit = this._dataView.getInt32(p, true);
|
|
300
|
-
p += 4;
|
|
301
|
-
if (isMatch) {
|
|
302
|
-
return decodeBArrayTag(ba, this._dataView, p, Btype, limit);
|
|
303
|
-
}
|
|
304
|
-
p += bArrayByteLength(Btype, limit);
|
|
305
|
-
break;
|
|
306
|
-
}
|
|
307
|
-
default:
|
|
308
|
-
if (type !== undefined) {
|
|
309
|
-
console.error('Unknown BAM tag type', type);
|
|
310
|
-
}
|
|
311
|
-
break;
|
|
341
|
+
const valueStart = p + 3;
|
|
342
|
+
const end = tagValueEnd(ba, this._dataView, type, valueStart, blockEnd);
|
|
343
|
+
if (end === 0) {
|
|
344
|
+
break; // unknown type: can't compute how far to advance
|
|
312
345
|
}
|
|
346
|
+
if (isMatch) {
|
|
347
|
+
return decodeTagValue(ba, this._dataView, type, valueStart, end, raw);
|
|
348
|
+
}
|
|
349
|
+
p = end;
|
|
313
350
|
}
|
|
314
351
|
return undefined;
|
|
315
352
|
}
|
|
316
353
|
_computeTags() {
|
|
317
|
-
let p = this.tagsStart;
|
|
318
354
|
const blockEnd = this._end;
|
|
319
355
|
const ba = this._byteArray;
|
|
320
|
-
|
|
356
|
+
// null prototype: tag names come from the file, so a read carrying a
|
|
357
|
+
// "constructor" or "toString" tag must not resolve to Object.prototype's
|
|
358
|
+
const tags = Object.create(null);
|
|
359
|
+
let p = this.tagsStart;
|
|
321
360
|
while (p < blockEnd) {
|
|
322
361
|
const tag = String.fromCharCode(ba[p], ba[p + 1]);
|
|
323
362
|
const type = ba[p + 2];
|
|
324
|
-
p
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
p += 1;
|
|
329
|
-
break;
|
|
330
|
-
case 0x69: // 'i'
|
|
331
|
-
tags[tag] = this._dataView.getInt32(p, true);
|
|
332
|
-
p += 4;
|
|
333
|
-
break;
|
|
334
|
-
case 0x49: // 'I'
|
|
335
|
-
tags[tag] = this._dataView.getUint32(p, true);
|
|
336
|
-
p += 4;
|
|
337
|
-
break;
|
|
338
|
-
case 0x63: // 'c'
|
|
339
|
-
tags[tag] = this._dataView.getInt8(p);
|
|
340
|
-
p += 1;
|
|
341
|
-
break;
|
|
342
|
-
case 0x43: // 'C'
|
|
343
|
-
tags[tag] = this._dataView.getUint8(p);
|
|
344
|
-
p += 1;
|
|
345
|
-
break;
|
|
346
|
-
case 0x73: // 's'
|
|
347
|
-
tags[tag] = this._dataView.getInt16(p, true);
|
|
348
|
-
p += 2;
|
|
349
|
-
break;
|
|
350
|
-
case 0x53: // 'S'
|
|
351
|
-
tags[tag] = this._dataView.getUint16(p, true);
|
|
352
|
-
p += 2;
|
|
353
|
-
break;
|
|
354
|
-
case 0x66: // 'f'
|
|
355
|
-
tags[tag] = this._dataView.getFloat32(p, true);
|
|
356
|
-
p += 4;
|
|
357
|
-
break;
|
|
358
|
-
case 0x5a: // 'Z'
|
|
359
|
-
case 0x48: {
|
|
360
|
-
// 'H'
|
|
361
|
-
const start = p;
|
|
362
|
-
while (p < blockEnd && ba[p] !== 0) {
|
|
363
|
-
p++;
|
|
364
|
-
}
|
|
365
|
-
tags[tag] = textDecoder.decode(ba.subarray(start, p));
|
|
366
|
-
p++; // advance past null terminator
|
|
367
|
-
break;
|
|
368
|
-
}
|
|
369
|
-
case 0x42: {
|
|
370
|
-
// 'B'
|
|
371
|
-
const Btype = ba[p++];
|
|
372
|
-
const limit = this._dataView.getInt32(p, true);
|
|
373
|
-
p += 4;
|
|
374
|
-
tags[tag] = decodeBArrayTag(ba, this._dataView, p, Btype, limit);
|
|
375
|
-
p += bArrayByteLength(Btype, limit);
|
|
376
|
-
break;
|
|
377
|
-
}
|
|
378
|
-
default:
|
|
379
|
-
console.error('Unknown BAM tag type', type);
|
|
380
|
-
break;
|
|
363
|
+
const valueStart = p + 3;
|
|
364
|
+
const end = tagValueEnd(ba, this._dataView, type, valueStart, blockEnd);
|
|
365
|
+
if (end === 0) {
|
|
366
|
+
break; // unknown type: can't compute how far to advance
|
|
381
367
|
}
|
|
368
|
+
tags[tag] = decodeTagValue(ba, this._dataView, type, valueStart, end, false);
|
|
369
|
+
p = end;
|
|
382
370
|
}
|
|
383
371
|
return tags;
|
|
384
372
|
}
|
|
@@ -464,6 +452,8 @@ class BamRecord {
|
|
|
464
452
|
const absOffset = this._byteArray.byteOffset + p;
|
|
465
453
|
if (absOffset % 4 === 0 && numCigarOps > 50) {
|
|
466
454
|
const cigarView = new Uint32Array(this._byteArray.buffer, absOffset, numCigarOps);
|
|
455
|
+
// the view we need to sum is exactly what NUMERIC_CIGAR would build, so
|
|
456
|
+
// seed its cache rather than making it construct a second one
|
|
467
457
|
this._cachedNumericCigar = cigarView;
|
|
468
458
|
let lref = 0;
|
|
469
459
|
for (let c = 0; c < numCigarOps; ++c) {
|
|
@@ -487,8 +477,10 @@ class BamRecord {
|
|
|
487
477
|
const numCigarOps = flag_nc & 0xffff;
|
|
488
478
|
const p = this.b0 + this.read_name_length;
|
|
489
479
|
if (this._isCGTagPattern(p, numCigarOps)) {
|
|
490
|
-
|
|
491
|
-
|
|
480
|
+
// getTag, not this.tags: the real CIGAR lives in one tag, so there's no
|
|
481
|
+
// reason to decode every other tag on the record to reach it
|
|
482
|
+
const cg = this.getTag('CG');
|
|
483
|
+
return isNumericCigar(cg) ? cg : new Uint32Array(0);
|
|
492
484
|
}
|
|
493
485
|
const absOffset = this._byteArray.byteOffset + p;
|
|
494
486
|
if (absOffset % 4 === 0 && numCigarOps > 50) {
|
|
@@ -539,37 +531,65 @@ class BamRecord {
|
|
|
539
531
|
const p = this.seqStart;
|
|
540
532
|
return this._byteArray.subarray(p, p + this.num_seq_bytes);
|
|
541
533
|
}
|
|
534
|
+
// Decode two bases per iteration off a 256-entry table. Building an array of
|
|
535
|
+
// 1-char strings and join()ing it — the obvious approach — is 3x slower at
|
|
536
|
+
// 100bp and 35x slower at 15kb.
|
|
542
537
|
get seq() {
|
|
543
538
|
const len = this.seq_length;
|
|
544
|
-
const
|
|
545
|
-
const
|
|
546
|
-
const
|
|
547
|
-
let
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
539
|
+
const ba = this._byteArray;
|
|
540
|
+
const p = this.seqStart;
|
|
541
|
+
const nPairs = len >> 1;
|
|
542
|
+
let seq;
|
|
543
|
+
if (len < SEQ_DECODER_THRESHOLD) {
|
|
544
|
+
seq = '';
|
|
545
|
+
for (let j = 0; j < nPairs; j++) {
|
|
546
|
+
seq += SEQRET_PAIR_STRINGS[ba[p + j]];
|
|
547
|
+
}
|
|
548
|
+
if (len & 1) {
|
|
549
|
+
seq += SEQRET_DECODER[(ba[p + nPairs] & 0xf0) >> 4];
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
// round up to an even length so the Uint16Array view spans every pair; a
|
|
554
|
+
// trailing odd base is written as a single byte and trimmed on decode
|
|
555
|
+
const out = new Uint8Array((len + 1) & ~1);
|
|
556
|
+
const pairs = new Uint16Array(out.buffer);
|
|
557
|
+
for (let j = 0; j < nPairs; j++) {
|
|
558
|
+
pairs[j] = SEQRET_PAIR_CODES[ba[p + j]];
|
|
559
|
+
}
|
|
560
|
+
if (len & 1) {
|
|
561
|
+
out[len - 1] = SEQRET_CODES[(ba[p + nPairs] & 0xf0) >> 4];
|
|
562
|
+
}
|
|
563
|
+
seq = textDecoder.decode(out.subarray(0, len));
|
|
564
|
+
}
|
|
565
|
+
return seq;
|
|
566
|
+
}
|
|
567
|
+
// Must come out identical from either mate, or the two halves of one normal
|
|
568
|
+
// pair render as different orientations. The leftmost mate is therefore picked
|
|
569
|
+
// by a total order on (refId, pos) that both mates evaluate the same way, with
|
|
570
|
+
// a read1-first tie-break for equal loci.
|
|
571
|
+
//
|
|
572
|
+
// Deriving "leftmost" from template_length looks tempting — the spec makes
|
|
573
|
+
// tlen positive for the leftmost segment and negative for the rightmost — but
|
|
574
|
+
// aligners leave tlen at 0 whenever the insert size is unavailable, which
|
|
575
|
+
// includes every cross-reference pair. Both mates then read as "not leftmost"
|
|
576
|
+
// and disagree with each other.
|
|
565
577
|
// (see also: gmod/cram-js src/cramFile/record.ts getPairOrientation)
|
|
566
578
|
get pair_orientation() {
|
|
567
579
|
const f = this.flags;
|
|
568
|
-
|
|
569
|
-
if (f & 0xc || this.ref_id !== this.next_refid) {
|
|
580
|
+
if (!(f & constants_ts_1.default.BAM_FPAIRED)) {
|
|
570
581
|
return undefined;
|
|
571
582
|
}
|
|
572
|
-
|
|
583
|
+
const refId = this.ref_id;
|
|
584
|
+
const mateRefId = this.next_refid;
|
|
585
|
+
const pos = this.start;
|
|
586
|
+
const matePos = this.next_pos;
|
|
587
|
+
const selfIsLeft = refId !== mateRefId
|
|
588
|
+
? refId < mateRefId
|
|
589
|
+
: pos !== matePos
|
|
590
|
+
? pos < matePos
|
|
591
|
+
: !!(f & constants_ts_1.default.BAM_FREAD1);
|
|
592
|
+
return PAIR_ORIENTATION_TABLE[((f >> 4) & 0x7) | (selfIsLeft ? 8 : 0)];
|
|
573
593
|
}
|
|
574
594
|
get bin_mq_nl() {
|
|
575
595
|
return this._dataView.getInt32(this._start + 12, true);
|
|
@@ -592,7 +612,7 @@ class BamRecord {
|
|
|
592
612
|
seqAt(idx) {
|
|
593
613
|
if (idx < this.seq_length) {
|
|
594
614
|
const sb = this._byteArray[this.seqStart + (idx >> 1)];
|
|
595
|
-
return idx
|
|
615
|
+
return (idx & 1) === 0
|
|
596
616
|
? SEQRET_DECODER[(sb & 0xf0) >> 4]
|
|
597
617
|
: SEQRET_DECODER[sb & 0x0f];
|
|
598
618
|
}
|
package/dist/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -54,10 +54,10 @@ export declare function parseNameBytes(namesBytes: Uint8Array, renameRefSeq?: (a
|
|
|
54
54
|
export declare function concatUint8Array(args: Uint8Array[]): Uint8Array<ArrayBuffer>;
|
|
55
55
|
export declare function filterReadFlag(flags: number, flagInclude: number, flagExclude: number): boolean;
|
|
56
56
|
export declare function filterTagValue(readVal: unknown, filterVal?: string): boolean;
|
|
57
|
-
export declare function filterCacheKey(filterBy?: FilterBy): string;
|
|
58
57
|
interface Filterable {
|
|
59
58
|
flags: number;
|
|
60
59
|
tags: Record<string, unknown>;
|
|
60
|
+
getTag?(tag: string): unknown;
|
|
61
61
|
}
|
|
62
62
|
export declare function applyFilters<T extends Filterable>(records: T[], filterBy: FilterBy): T[];
|
|
63
63
|
interface Positioned {
|
package/dist/util.js
CHANGED
|
@@ -12,7 +12,6 @@ exports.parseNameBytes = parseNameBytes;
|
|
|
12
12
|
exports.concatUint8Array = concatUint8Array;
|
|
13
13
|
exports.filterReadFlag = filterReadFlag;
|
|
14
14
|
exports.filterTagValue = filterTagValue;
|
|
15
|
-
exports.filterCacheKey = filterCacheKey;
|
|
16
15
|
exports.applyFilters = applyFilters;
|
|
17
16
|
exports.appendInRange = appendInRange;
|
|
18
17
|
const chunk_ts_1 = __importDefault(require("./chunk.js"));
|
|
@@ -120,9 +119,11 @@ function parseRefSeqs(uncba, start, renameRefSeq) {
|
|
|
120
119
|
if (start + 4 > uncba.length) {
|
|
121
120
|
return undefined;
|
|
122
121
|
}
|
|
123
|
-
const dataView = new DataView(uncba.buffer);
|
|
122
|
+
const dataView = new DataView(uncba.buffer, uncba.byteOffset, uncba.byteLength);
|
|
124
123
|
const nRef = dataView.getInt32(start, true);
|
|
125
|
-
|
|
124
|
+
// null prototype: ref names come from the file, so a contig named
|
|
125
|
+
// "constructor" must not resolve to Object.prototype's
|
|
126
|
+
const chrToIndex = Object.create(null);
|
|
126
127
|
const indexToChr = [];
|
|
127
128
|
const decoder = new TextDecoder('utf8');
|
|
128
129
|
let p = start + 4;
|
|
@@ -155,7 +156,7 @@ function parseNameBytes(namesBytes, renameRefSeq = s => s) {
|
|
|
155
156
|
let currRefId = 0;
|
|
156
157
|
let currNameStart = 0;
|
|
157
158
|
const refIdToName = [];
|
|
158
|
-
const refNameToId =
|
|
159
|
+
const refNameToId = Object.create(null);
|
|
159
160
|
for (let i = 0; i < namesBytes.length; i++) {
|
|
160
161
|
if (!namesBytes[i]) {
|
|
161
162
|
if (currNameStart < i) {
|
|
@@ -190,13 +191,11 @@ function filterTagValue(readVal, filterVal) {
|
|
|
190
191
|
? readVal === undefined
|
|
191
192
|
: `${readVal}` !== `${filterVal}`;
|
|
192
193
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const tagPart = tagFilter ? `:${tagFilter.tag}=${tagFilter.value ?? '*'}` : '';
|
|
199
|
-
return `:f${flagInclude}x${flagExclude}${tagPart}`;
|
|
194
|
+
// Read a single tag, preferring the targeted accessor. Reaching for `tags`
|
|
195
|
+
// instead would decode every unrelated tag on the record (NM/AS/ms/de/… — often
|
|
196
|
+
// ~10 per read) just to test one, which measured 2.6x the cost of getTag.
|
|
197
|
+
function readTag(record, tag) {
|
|
198
|
+
return record.getTag ? record.getTag(tag) : record.tags[tag];
|
|
200
199
|
}
|
|
201
200
|
// Apply flagInclude/flagExclude/tagFilter to a list of records.
|
|
202
201
|
function applyFilters(records, filterBy) {
|
|
@@ -205,7 +204,7 @@ function applyFilters(records, filterBy) {
|
|
|
205
204
|
for (let i = 0, l = records.length; i < l; i++) {
|
|
206
205
|
const r = records[i];
|
|
207
206
|
if (!filterReadFlag(r.flags, flagInclude, flagExclude) &&
|
|
208
|
-
!(tagFilter && filterTagValue(r
|
|
207
|
+
!(tagFilter && filterTagValue(readTag(r, tagFilter.tag), tagFilter.value))) {
|
|
209
208
|
out.push(r);
|
|
210
209
|
}
|
|
211
210
|
}
|