@gmod/bam 7.2.3 → 7.3.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/README.md +28 -1
- package/dist/bamFile.d.ts +3 -2
- package/dist/bamFile.js +24 -18
- package/dist/bamFile.js.map +1 -1
- package/dist/htsget.js +1 -0
- package/dist/htsget.js.map +1 -1
- package/dist/record.d.ts +2 -16
- package/dist/record.js +113 -163
- package/dist/record.js.map +1 -1
- package/dist/util.d.ts +8 -0
- package/dist/util.js +6 -2
- package/dist/util.js.map +1 -1
- package/esm/bamFile.d.ts +3 -2
- package/esm/bamFile.js +24 -18
- package/esm/bamFile.js.map +1 -1
- package/esm/htsget.js +1 -0
- package/esm/htsget.js.map +1 -1
- package/esm/record.d.ts +2 -16
- package/esm/record.js +113 -163
- package/esm/record.js.map +1 -1
- package/esm/util.d.ts +8 -0
- package/esm/util.js +6 -2
- package/esm/util.js.map +1 -1
- package/package.json +9 -9
- package/src/bamFile.ts +26 -18
- package/src/htsget.ts +1 -0
- package/src/record.ts +131 -147
- package/src/util.ts +13 -2
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[](https://npmjs.org/package/@gmod/bam)
|
|
2
|
-
|
|
2
|
+

|
|
3
3
|
|
|
4
4
|
## Install
|
|
5
5
|
|
|
@@ -93,6 +93,8 @@ Note: requires calling `getHeader` first.
|
|
|
93
93
|
chromosomes. default: false
|
|
94
94
|
- `opts.maxInsertSize` - control the viewAsPairs option behavior to limit
|
|
95
95
|
distance within a chromosome to fetch. default: 200kb
|
|
96
|
+
- `opts.filterBy` - a `FilterBy` object to filter records by flag bits or a tag
|
|
97
|
+
value (see `FilterBy` below)
|
|
96
98
|
|
|
97
99
|
### async getHeader(opts?)
|
|
98
100
|
|
|
@@ -171,6 +173,31 @@ record.seqAt(idx) // get single base at position
|
|
|
171
173
|
record.toJSON() // serialize record
|
|
172
174
|
```
|
|
173
175
|
|
|
176
|
+
### FilterBy
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
interface FilterBy {
|
|
180
|
+
flagInclude?: number // only include reads where all these flag bits are set
|
|
181
|
+
flagExclude?: number // exclude reads where any of these flag bits are set
|
|
182
|
+
tagFilter?: {
|
|
183
|
+
tag: string // aux tag name, e.g. 'RG'
|
|
184
|
+
value?: string // omit to filter by tag presence only
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Example — fetch only properly-paired primary alignments from read-group `rg1`:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
const records = await bam.getRecordsForRange('chr1', 0, 100000, {
|
|
193
|
+
filterBy: {
|
|
194
|
+
flagInclude: 0x2, // properly paired
|
|
195
|
+
flagExclude: 0x900, // not secondary or supplementary
|
|
196
|
+
tagFilter: { tag: 'RG', value: 'rg1' },
|
|
197
|
+
},
|
|
198
|
+
})
|
|
199
|
+
```
|
|
200
|
+
|
|
174
201
|
### Custom BamRecord class
|
|
175
202
|
|
|
176
203
|
You can provide your own BamRecord class to add custom properties or methods:
|
package/dist/bamFile.d.ts
CHANGED
|
@@ -71,14 +71,15 @@ export default class BamFile<T extends BamRecordLike = BAMFeature> {
|
|
|
71
71
|
}[];
|
|
72
72
|
}[] | undefined>;
|
|
73
73
|
getHeaderText(opts?: BaseOpts): Promise<string | undefined>;
|
|
74
|
+
private getSeqId;
|
|
74
75
|
getRecordsForRange(chr: string, min: number, max: number, opts?: BamOpts): Promise<T[]>;
|
|
75
76
|
private evictOverlappingChunks;
|
|
76
77
|
private _fetchChunkFeaturesDirect;
|
|
77
78
|
fetchPairs(chrId: number, records: T[], opts: BamOpts): Promise<T[]>;
|
|
78
79
|
_readChunkFeatures(chunk: Chunk, opts: BaseOpts): Promise<T[]>;
|
|
79
80
|
readBamFeatures(ba: Uint8Array, cpositions: number[], dpositions: number[], chunk: Chunk): Promise<T[]>;
|
|
80
|
-
hasRefSeq(seqName: string): Promise<boolean>;
|
|
81
|
-
lineCount(seqName: string): Promise<number>;
|
|
81
|
+
hasRefSeq(seqName: string, opts?: BaseOpts): Promise<boolean>;
|
|
82
|
+
lineCount(seqName: string, opts?: BaseOpts): Promise<number>;
|
|
82
83
|
indexCov(seqName: string, start?: number, end?: number): Promise<never[] | import("./bai.ts").IndexCovEntry[]>;
|
|
83
84
|
blocksForRange(seqName: string, start: number, end: number, opts?: BaseOpts): Promise<Chunk[] | never[]>;
|
|
84
85
|
clearFeatureCache(): void;
|
package/dist/bamFile.js
CHANGED
|
@@ -117,9 +117,14 @@ class BamFile {
|
|
|
117
117
|
await this.getHeader(opts);
|
|
118
118
|
return this.header;
|
|
119
119
|
}
|
|
120
|
-
|
|
120
|
+
// Resolve a reference name to its numeric id, ensuring the header (which
|
|
121
|
+
// populates chrToIndex) has been parsed first.
|
|
122
|
+
async getSeqId(seqName, opts) {
|
|
121
123
|
await this.getHeader(opts);
|
|
122
|
-
|
|
124
|
+
return this.chrToIndex?.[seqName];
|
|
125
|
+
}
|
|
126
|
+
async getRecordsForRange(chr, min, max, opts) {
|
|
127
|
+
const chrId = await this.getSeqId(chr, opts);
|
|
123
128
|
if (chrId === undefined || !this.index) {
|
|
124
129
|
return [];
|
|
125
130
|
}
|
|
@@ -135,8 +140,14 @@ class BamFile {
|
|
|
135
140
|
}
|
|
136
141
|
}
|
|
137
142
|
async _fetchChunkFeaturesDirect(chunks, chrId, min, max, opts = {}) {
|
|
138
|
-
const { viewAsPairs, filterBy } = opts;
|
|
143
|
+
const { viewAsPairs, filterBy, onProgress } = opts;
|
|
139
144
|
const result = [];
|
|
145
|
+
let totalBytes = 0;
|
|
146
|
+
for (let ci = 0, cl = chunks.length; ci < cl; ci++) {
|
|
147
|
+
totalBytes += chunks[ci].fetchedSize();
|
|
148
|
+
}
|
|
149
|
+
let downloadedBytes = 0;
|
|
150
|
+
onProgress?.(0, totalBytes);
|
|
140
151
|
for (let ci = 0, cl = chunks.length; ci < cl; ci++) {
|
|
141
152
|
const chunk = chunks[ci];
|
|
142
153
|
const cacheKey = chunkCacheKey(chunk, filterBy);
|
|
@@ -157,6 +168,8 @@ class BamFile {
|
|
|
157
168
|
features: records,
|
|
158
169
|
});
|
|
159
170
|
}
|
|
171
|
+
downloadedBytes += chunk.fetchedSize();
|
|
172
|
+
onProgress?.(downloadedBytes, totalBytes);
|
|
160
173
|
(0, util_ts_1.appendInRange)(records, chrId, min, max, result);
|
|
161
174
|
}
|
|
162
175
|
if (viewAsPairs) {
|
|
@@ -254,24 +267,24 @@ class BamFile {
|
|
|
254
267
|
}
|
|
255
268
|
return sink;
|
|
256
269
|
}
|
|
257
|
-
async hasRefSeq(seqName) {
|
|
258
|
-
const seqId = this.
|
|
270
|
+
async hasRefSeq(seqName, opts) {
|
|
271
|
+
const seqId = await this.getSeqId(seqName, opts);
|
|
259
272
|
return !this.index || seqId === undefined
|
|
260
273
|
? false
|
|
261
274
|
: this.index.hasRefSeq(seqId);
|
|
262
275
|
}
|
|
263
|
-
async lineCount(seqName) {
|
|
264
|
-
const seqId = this.
|
|
276
|
+
async lineCount(seqName, opts) {
|
|
277
|
+
const seqId = await this.getSeqId(seqName, opts);
|
|
265
278
|
return !this.index || seqId === undefined ? 0 : this.index.lineCount(seqId);
|
|
266
279
|
}
|
|
267
280
|
async indexCov(seqName, start, end) {
|
|
268
|
-
const seqId = this.
|
|
281
|
+
const seqId = await this.getSeqId(seqName);
|
|
269
282
|
return !this.index || seqId === undefined
|
|
270
283
|
? []
|
|
271
284
|
: this.index.indexCov(seqId, start, end);
|
|
272
285
|
}
|
|
273
286
|
async blocksForRange(seqName, start, end, opts) {
|
|
274
|
-
const seqId = this.
|
|
287
|
+
const seqId = await this.getSeqId(seqName, opts);
|
|
275
288
|
return !this.index || seqId === undefined
|
|
276
289
|
? []
|
|
277
290
|
: this.index.blocksForRange(seqId, start, end, opts);
|
|
@@ -284,16 +297,9 @@ class BamFile {
|
|
|
284
297
|
return 0;
|
|
285
298
|
}
|
|
286
299
|
await this.getHeader(opts);
|
|
287
|
-
const chrToIndex = this.chrToIndex;
|
|
288
|
-
if (!chrToIndex) {
|
|
289
|
-
throw new Error('Header not yet parsed');
|
|
290
|
-
}
|
|
291
300
|
const mapped = regions.flatMap(r => {
|
|
292
|
-
const refId = chrToIndex[r.refName];
|
|
293
|
-
|
|
294
|
-
return [];
|
|
295
|
-
}
|
|
296
|
-
return [{ refId, start: r.start, end: r.end }];
|
|
301
|
+
const refId = this.chrToIndex?.[r.refName];
|
|
302
|
+
return refId === undefined ? [] : [{ refId, start: r.start, end: r.end }];
|
|
297
303
|
});
|
|
298
304
|
return this.index.estimatedBytesForRegions(mapped, opts);
|
|
299
305
|
}
|
package/dist/bamFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bamFile.js","sourceRoot":"","sources":["../src/bamFile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bamFile.js","sourceRoot":"","sources":["../src/bamFile.ts"],"names":[],"mappings":"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"}
|
package/dist/htsget.js
CHANGED
|
@@ -72,6 +72,7 @@ class HtsgetFile extends bamFile_ts_1.default {
|
|
|
72
72
|
this.trackId = args.trackId;
|
|
73
73
|
}
|
|
74
74
|
async getRecordsForRange(chr, min, max, opts) {
|
|
75
|
+
await this.getHeader(opts);
|
|
75
76
|
const base = `${this.baseUrl}/${this.trackId}`;
|
|
76
77
|
const url = `${base}?referenceName=${chr}&start=${min}&end=${max}&format=BAM`;
|
|
77
78
|
const chrId = this.chrToIndex?.[chr];
|
package/dist/htsget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"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"}
|
package/dist/record.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export default class BamRecord {
|
|
|
36
36
|
get NUMERIC_MD(): Uint8Array<ArrayBufferLike> | undefined;
|
|
37
37
|
get tags(): Record<string, unknown>;
|
|
38
38
|
getTag(tagName: string): unknown;
|
|
39
|
-
getTagRaw(tagName: string): string | number | Uint8Array<ArrayBufferLike> | number[] |
|
|
39
|
+
getTagRaw(tagName: string): string | number | Uint8Array<ArrayBufferLike> | number[] | Int8Array<ArrayBufferLike> | Int16Array<ArrayBufferLike> | Uint16Array<ArrayBufferLike> | Int32Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | undefined;
|
|
40
40
|
private _findTag;
|
|
41
41
|
private _computeTags;
|
|
42
42
|
isPaired(): boolean;
|
|
@@ -71,19 +71,5 @@ export default class BamRecord {
|
|
|
71
71
|
get next_pos(): number;
|
|
72
72
|
get template_length(): number;
|
|
73
73
|
seqAt(idx: number): string | undefined;
|
|
74
|
-
toJSON():
|
|
75
|
-
fileOffset: number;
|
|
76
|
-
ref_id: number;
|
|
77
|
-
start: number;
|
|
78
|
-
end: number;
|
|
79
|
-
name: string;
|
|
80
|
-
flags: number;
|
|
81
|
-
mq: number | undefined;
|
|
82
|
-
CIGAR: string;
|
|
83
|
-
seq: string;
|
|
84
|
-
next_refid: number;
|
|
85
|
-
next_pos: number;
|
|
86
|
-
template_length: number;
|
|
87
|
-
tags: Record<string, unknown>;
|
|
88
|
-
};
|
|
74
|
+
toJSON(): Record<string, unknown>;
|
|
89
75
|
}
|
package/dist/record.js
CHANGED
|
@@ -23,6 +23,88 @@ const textDecoder = new TextDecoder();
|
|
|
23
23
|
// Bitmask for ops that consume ref: M=0, D=2, N=3, P=6, ==7, X=8
|
|
24
24
|
// Binary: 0b111001101 = 0x1CD
|
|
25
25
|
const CIGAR_CONSUMES_REF_MASK = 0x1cd;
|
|
26
|
+
// Decode a 'B' (array) tag value starting at `p` (the byte after type+subtype+
|
|
27
|
+
// count). When the data is naturally aligned we return a typed-array view over
|
|
28
|
+
// the underlying buffer (zero-copy); otherwise we copy element-by-element since
|
|
29
|
+
// typed-array views require alignment. Shared by getTag and the full-tag parse.
|
|
30
|
+
function decodeBArrayTag(ba, dataView, p, Btype, limit) {
|
|
31
|
+
const absOffset = ba.byteOffset + p;
|
|
32
|
+
switch (Btype) {
|
|
33
|
+
case 0x69: {
|
|
34
|
+
// 'i'
|
|
35
|
+
if (absOffset % 4 === 0) {
|
|
36
|
+
return new Int32Array(ba.buffer, absOffset, limit);
|
|
37
|
+
}
|
|
38
|
+
const arr = new Array(limit);
|
|
39
|
+
for (let i = 0; i < limit; i++) {
|
|
40
|
+
arr[i] = dataView.getInt32(p + i * 4, true);
|
|
41
|
+
}
|
|
42
|
+
return arr;
|
|
43
|
+
}
|
|
44
|
+
case 0x49: {
|
|
45
|
+
// 'I'
|
|
46
|
+
if (absOffset % 4 === 0) {
|
|
47
|
+
return new Uint32Array(ba.buffer, absOffset, limit);
|
|
48
|
+
}
|
|
49
|
+
const arr = new Array(limit);
|
|
50
|
+
for (let i = 0; i < limit; i++) {
|
|
51
|
+
arr[i] = dataView.getUint32(p + i * 4, true);
|
|
52
|
+
}
|
|
53
|
+
return arr;
|
|
54
|
+
}
|
|
55
|
+
case 0x73: {
|
|
56
|
+
// 's'
|
|
57
|
+
if (absOffset % 2 === 0) {
|
|
58
|
+
return new Int16Array(ba.buffer, absOffset, limit);
|
|
59
|
+
}
|
|
60
|
+
const arr = new Array(limit);
|
|
61
|
+
for (let i = 0; i < limit; i++) {
|
|
62
|
+
arr[i] = dataView.getInt16(p + i * 2, true);
|
|
63
|
+
}
|
|
64
|
+
return arr;
|
|
65
|
+
}
|
|
66
|
+
case 0x53: {
|
|
67
|
+
// 'S'
|
|
68
|
+
if (absOffset % 2 === 0) {
|
|
69
|
+
return new Uint16Array(ba.buffer, absOffset, limit);
|
|
70
|
+
}
|
|
71
|
+
const arr = new Array(limit);
|
|
72
|
+
for (let i = 0; i < limit; i++) {
|
|
73
|
+
arr[i] = dataView.getUint16(p + i * 2, true);
|
|
74
|
+
}
|
|
75
|
+
return arr;
|
|
76
|
+
}
|
|
77
|
+
case 0x63: // 'c'
|
|
78
|
+
return new Int8Array(ba.buffer, absOffset, limit);
|
|
79
|
+
case 0x43: // 'C'
|
|
80
|
+
return new Uint8Array(ba.buffer, absOffset, limit);
|
|
81
|
+
case 0x66: {
|
|
82
|
+
// 'f'
|
|
83
|
+
if (absOffset % 4 === 0) {
|
|
84
|
+
return new Float32Array(ba.buffer, absOffset, limit);
|
|
85
|
+
}
|
|
86
|
+
const arr = new Array(limit);
|
|
87
|
+
for (let i = 0; i < limit; i++) {
|
|
88
|
+
arr[i] = dataView.getFloat32(p + i * 4, true);
|
|
89
|
+
}
|
|
90
|
+
return arr;
|
|
91
|
+
}
|
|
92
|
+
default:
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Byte span of a 'B' tag's element payload, for advancing the cursor past it.
|
|
97
|
+
function bArrayByteLength(Btype, limit) {
|
|
98
|
+
if (Btype === 0x69 || Btype === 0x49 || Btype === 0x66) {
|
|
99
|
+
return limit << 2;
|
|
100
|
+
}
|
|
101
|
+
else if (Btype === 0x73 || Btype === 0x53) {
|
|
102
|
+
return limit << 1;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return limit;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
26
108
|
class BamRecord {
|
|
27
109
|
fileOffset;
|
|
28
110
|
_byteArray;
|
|
@@ -46,7 +128,10 @@ class BamRecord {
|
|
|
46
128
|
return this._byteArray;
|
|
47
129
|
}
|
|
48
130
|
get flags() {
|
|
49
|
-
|
|
131
|
+
// FLAG is the high 16 bits of flag_nc (byte offset 18). Read it directly as
|
|
132
|
+
// a uint16 — masking flag_nc and arithmetic-shifting would sign-extend any
|
|
133
|
+
// value >= 0x8000.
|
|
134
|
+
return this._dataView.getUint16(this._start + 18, true);
|
|
50
135
|
}
|
|
51
136
|
get ref_id() {
|
|
52
137
|
return this._dataView.getInt32(this._start + 4, true);
|
|
@@ -67,12 +152,15 @@ class BamRecord {
|
|
|
67
152
|
get score() {
|
|
68
153
|
return this.mq;
|
|
69
154
|
}
|
|
155
|
+
// QUAL is present whenever the record has bases — independent of the unmapped
|
|
156
|
+
// flag (unmapped reads routinely carry SEQ/QUAL). A zero-length SEQ means
|
|
157
|
+
// there is no quality to return.
|
|
70
158
|
get qual() {
|
|
71
|
-
|
|
159
|
+
const seqLen = this.seq_length;
|
|
160
|
+
if (seqLen === 0) {
|
|
72
161
|
return null;
|
|
73
162
|
}
|
|
74
163
|
else {
|
|
75
|
-
const seqLen = this.seq_length;
|
|
76
164
|
const p = this.seqStart + ((seqLen + 1) >> 1);
|
|
77
165
|
return this._byteArray.subarray(p, p + seqLen);
|
|
78
166
|
}
|
|
@@ -210,83 +298,17 @@ class BamRecord {
|
|
|
210
298
|
const Btype = ba[p++];
|
|
211
299
|
const limit = this._dataView.getInt32(p, true);
|
|
212
300
|
p += 4;
|
|
213
|
-
const absOffset = ba.byteOffset + p;
|
|
214
301
|
if (isMatch) {
|
|
215
|
-
|
|
216
|
-
// 'i'
|
|
217
|
-
if (absOffset % 4 === 0) {
|
|
218
|
-
return new Int32Array(ba.buffer, absOffset, limit);
|
|
219
|
-
}
|
|
220
|
-
const arr = new Array(limit);
|
|
221
|
-
for (let i = 0; i < limit; i++) {
|
|
222
|
-
arr[i] = this._dataView.getInt32(p + i * 4, true);
|
|
223
|
-
}
|
|
224
|
-
return arr;
|
|
225
|
-
}
|
|
226
|
-
else if (Btype === 0x49) {
|
|
227
|
-
// 'I'
|
|
228
|
-
if (absOffset % 4 === 0) {
|
|
229
|
-
return new Uint32Array(ba.buffer, absOffset, limit);
|
|
230
|
-
}
|
|
231
|
-
const arr = new Array(limit);
|
|
232
|
-
for (let i = 0; i < limit; i++) {
|
|
233
|
-
arr[i] = this._dataView.getUint32(p + i * 4, true);
|
|
234
|
-
}
|
|
235
|
-
return arr;
|
|
236
|
-
}
|
|
237
|
-
else if (Btype === 0x73) {
|
|
238
|
-
// 's'
|
|
239
|
-
if (absOffset % 2 === 0) {
|
|
240
|
-
return new Int16Array(ba.buffer, absOffset, limit);
|
|
241
|
-
}
|
|
242
|
-
const arr = new Array(limit);
|
|
243
|
-
for (let i = 0; i < limit; i++) {
|
|
244
|
-
arr[i] = this._dataView.getInt16(p + i * 2, true);
|
|
245
|
-
}
|
|
246
|
-
return arr;
|
|
247
|
-
}
|
|
248
|
-
else if (Btype === 0x53) {
|
|
249
|
-
// 'S'
|
|
250
|
-
if (absOffset % 2 === 0) {
|
|
251
|
-
return new Uint16Array(ba.buffer, absOffset, limit);
|
|
252
|
-
}
|
|
253
|
-
const arr = new Array(limit);
|
|
254
|
-
for (let i = 0; i < limit; i++) {
|
|
255
|
-
arr[i] = this._dataView.getUint16(p + i * 2, true);
|
|
256
|
-
}
|
|
257
|
-
return arr;
|
|
258
|
-
}
|
|
259
|
-
else if (Btype === 0x63) {
|
|
260
|
-
// 'c'
|
|
261
|
-
return new Int8Array(ba.buffer, absOffset, limit);
|
|
262
|
-
}
|
|
263
|
-
else if (Btype === 0x43) {
|
|
264
|
-
// 'C'
|
|
265
|
-
return new Uint8Array(ba.buffer, absOffset, limit);
|
|
266
|
-
}
|
|
267
|
-
else if (Btype === 0x66) {
|
|
268
|
-
// 'f'
|
|
269
|
-
if (absOffset % 4 === 0) {
|
|
270
|
-
return new Float32Array(ba.buffer, absOffset, limit);
|
|
271
|
-
}
|
|
272
|
-
const arr = new Array(limit);
|
|
273
|
-
for (let i = 0; i < limit; i++) {
|
|
274
|
-
arr[i] = this._dataView.getFloat32(p + i * 4, true);
|
|
275
|
-
}
|
|
276
|
-
return arr;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
if (Btype === 0x69 || Btype === 0x49 || Btype === 0x66) {
|
|
280
|
-
p += limit << 2;
|
|
281
|
-
}
|
|
282
|
-
else if (Btype === 0x73 || Btype === 0x53) {
|
|
283
|
-
p += limit << 1;
|
|
284
|
-
}
|
|
285
|
-
else if (Btype === 0x63 || Btype === 0x43) {
|
|
286
|
-
p += limit;
|
|
302
|
+
return decodeBArrayTag(ba, this._dataView, p, Btype, limit);
|
|
287
303
|
}
|
|
304
|
+
p += bArrayByteLength(Btype, limit);
|
|
288
305
|
break;
|
|
289
306
|
}
|
|
307
|
+
default:
|
|
308
|
+
if (type !== undefined) {
|
|
309
|
+
console.error('Unknown BAM tag type', type);
|
|
310
|
+
}
|
|
311
|
+
break;
|
|
290
312
|
}
|
|
291
313
|
}
|
|
292
314
|
return undefined;
|
|
@@ -349,87 +371,8 @@ class BamRecord {
|
|
|
349
371
|
const Btype = ba[p++];
|
|
350
372
|
const limit = this._dataView.getInt32(p, true);
|
|
351
373
|
p += 4;
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
// 'i'
|
|
355
|
-
if (absOffset % 4 === 0) {
|
|
356
|
-
tags[tag] = new Int32Array(ba.buffer, absOffset, limit);
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
const arr = new Array(limit);
|
|
360
|
-
for (let i = 0; i < limit; i++) {
|
|
361
|
-
arr[i] = this._dataView.getInt32(p + i * 4, true);
|
|
362
|
-
}
|
|
363
|
-
tags[tag] = arr;
|
|
364
|
-
}
|
|
365
|
-
p += limit << 2;
|
|
366
|
-
}
|
|
367
|
-
else if (Btype === 0x49) {
|
|
368
|
-
// 'I'
|
|
369
|
-
if (absOffset % 4 === 0) {
|
|
370
|
-
tags[tag] = new Uint32Array(ba.buffer, absOffset, limit);
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
const arr = new Array(limit);
|
|
374
|
-
for (let i = 0; i < limit; i++) {
|
|
375
|
-
arr[i] = this._dataView.getUint32(p + i * 4, true);
|
|
376
|
-
}
|
|
377
|
-
tags[tag] = arr;
|
|
378
|
-
}
|
|
379
|
-
p += limit << 2;
|
|
380
|
-
}
|
|
381
|
-
else if (Btype === 0x73) {
|
|
382
|
-
// 's'
|
|
383
|
-
if (absOffset % 2 === 0) {
|
|
384
|
-
tags[tag] = new Int16Array(ba.buffer, absOffset, limit);
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
const arr = new Array(limit);
|
|
388
|
-
for (let i = 0; i < limit; i++) {
|
|
389
|
-
arr[i] = this._dataView.getInt16(p + i * 2, true);
|
|
390
|
-
}
|
|
391
|
-
tags[tag] = arr;
|
|
392
|
-
}
|
|
393
|
-
p += limit << 1;
|
|
394
|
-
}
|
|
395
|
-
else if (Btype === 0x53) {
|
|
396
|
-
// 'S'
|
|
397
|
-
if (absOffset % 2 === 0) {
|
|
398
|
-
tags[tag] = new Uint16Array(ba.buffer, absOffset, limit);
|
|
399
|
-
}
|
|
400
|
-
else {
|
|
401
|
-
const arr = new Array(limit);
|
|
402
|
-
for (let i = 0; i < limit; i++) {
|
|
403
|
-
arr[i] = this._dataView.getUint16(p + i * 2, true);
|
|
404
|
-
}
|
|
405
|
-
tags[tag] = arr;
|
|
406
|
-
}
|
|
407
|
-
p += limit << 1;
|
|
408
|
-
}
|
|
409
|
-
else if (Btype === 0x63) {
|
|
410
|
-
// 'c'
|
|
411
|
-
tags[tag] = new Int8Array(ba.buffer, absOffset, limit);
|
|
412
|
-
p += limit;
|
|
413
|
-
}
|
|
414
|
-
else if (Btype === 0x43) {
|
|
415
|
-
// 'C'
|
|
416
|
-
tags[tag] = new Uint8Array(ba.buffer, absOffset, limit);
|
|
417
|
-
p += limit;
|
|
418
|
-
}
|
|
419
|
-
else if (Btype === 0x66) {
|
|
420
|
-
// 'f'
|
|
421
|
-
if (absOffset % 4 === 0) {
|
|
422
|
-
tags[tag] = new Float32Array(ba.buffer, absOffset, limit);
|
|
423
|
-
}
|
|
424
|
-
else {
|
|
425
|
-
const arr = new Array(limit);
|
|
426
|
-
for (let i = 0; i < limit; i++) {
|
|
427
|
-
arr[i] = this._dataView.getFloat32(p + i * 4, true);
|
|
428
|
-
}
|
|
429
|
-
tags[tag] = arr;
|
|
430
|
-
}
|
|
431
|
-
p += limit << 2;
|
|
432
|
-
}
|
|
374
|
+
tags[tag] = decodeBArrayTag(ba, this._dataView, p, Btype, limit);
|
|
375
|
+
p += bArrayByteLength(Btype, limit);
|
|
433
376
|
break;
|
|
434
377
|
}
|
|
435
378
|
default:
|
|
@@ -494,9 +437,15 @@ class BamRecord {
|
|
|
494
437
|
// Strategy: use plain array with |0 for small aligned (≤50 ops) and all unaligned,
|
|
495
438
|
// Uint32Array view only for large aligned CIGARs.
|
|
496
439
|
// CG tag pattern: first op is soft-clip consuming entire sequence, second op is N encoding length-on-ref
|
|
497
|
-
_isCGTagPattern(p) {
|
|
498
|
-
|
|
499
|
-
|
|
440
|
+
_isCGTagPattern(p, numCigarOps) {
|
|
441
|
+
// htslib stores the placeholder as exactly two ops: <seqlen>S<reflen>N.
|
|
442
|
+
if (numCigarOps === 2) {
|
|
443
|
+
const cigop = this._dataView.getInt32(p, true);
|
|
444
|
+
return (cigop & 0xf) === cigar_ts_1.CIGAR_SOFT_CLIP && cigop >> 4 === this.seq_length;
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
return false;
|
|
448
|
+
}
|
|
500
449
|
}
|
|
501
450
|
_computeLengthOnRef() {
|
|
502
451
|
const flag_nc = this._dataView.getInt32(this._start + 16, true);
|
|
@@ -505,7 +454,7 @@ class BamRecord {
|
|
|
505
454
|
}
|
|
506
455
|
const numCigarOps = flag_nc & 0xffff;
|
|
507
456
|
const p = this.b0 + this.read_name_length;
|
|
508
|
-
if (this._isCGTagPattern(p)) {
|
|
457
|
+
if (this._isCGTagPattern(p, numCigarOps)) {
|
|
509
458
|
const cigop2 = this._dataView.getInt32(p + 4, true);
|
|
510
459
|
if ((cigop2 & 0xf) !== cigar_ts_1.CIGAR_REF_SKIP) {
|
|
511
460
|
console.warn('CG tag with no N tag');
|
|
@@ -537,7 +486,7 @@ class BamRecord {
|
|
|
537
486
|
}
|
|
538
487
|
const numCigarOps = flag_nc & 0xffff;
|
|
539
488
|
const p = this.b0 + this.read_name_length;
|
|
540
|
-
if (this._isCGTagPattern(p)) {
|
|
489
|
+
if (this._isCGTagPattern(p, numCigarOps)) {
|
|
541
490
|
return (this.tags.CG ??
|
|
542
491
|
new Uint32Array(0));
|
|
543
492
|
}
|
|
@@ -653,7 +602,8 @@ class BamRecord {
|
|
|
653
602
|
}
|
|
654
603
|
// Most public BamRecord fields are getters on the prototype, so
|
|
655
604
|
// Object.keys(this) wouldn't include them — JSON.stringify needs an explicit
|
|
656
|
-
// list. Returns the meaningful BAM-spec fields.
|
|
605
|
+
// list. Returns the meaningful BAM-spec fields. Return type is widened so
|
|
606
|
+
// subclasses can override with their own serialized shape.
|
|
657
607
|
toJSON() {
|
|
658
608
|
return {
|
|
659
609
|
fileOffset: this.fileOffset,
|