@gmod/tabix 3.4.2 → 3.5.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/csi.d.ts +8 -6
- package/dist/csi.js +33 -17
- package/dist/csi.js.map +1 -1
- package/dist/indexFile.d.ts +2 -0
- package/dist/indexFile.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/tabix-bundle.js +1 -1
- package/dist/tabixIndexedFile.js +49 -35
- package/dist/tabixIndexedFile.js.map +1 -1
- package/dist/tbi.js +21 -23
- package/dist/tbi.js.map +1 -1
- package/dist/util.js +4 -1
- package/dist/util.js.map +1 -1
- package/esm/csi.d.ts +8 -6
- package/esm/csi.js +33 -17
- package/esm/csi.js.map +1 -1
- package/esm/indexFile.d.ts +2 -0
- package/esm/indexFile.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/tabixIndexedFile.js +49 -35
- package/esm/tabixIndexedFile.js.map +1 -1
- package/esm/tbi.js +21 -23
- package/esm/tbi.js.map +1 -1
- package/esm/util.js +4 -1
- package/esm/util.js.map +1 -1
- package/package.json +3 -1
- package/src/csi.ts +41 -18
- package/src/indexFile.ts +2 -0
- package/src/long.ts +1 -2
- package/src/tabixIndexedFile.ts +70 -30
- package/src/tbi.ts +33 -25
- package/src/util.ts +12 -2
package/esm/tabixIndexedFile.js
CHANGED
|
@@ -7,6 +7,7 @@ import TBI from "./tbi.js";
|
|
|
7
7
|
import { optimizeChunks } from "./util.js";
|
|
8
8
|
const TAB = 9;
|
|
9
9
|
const NEWLINE = 10;
|
|
10
|
+
const CARRIAGE_RETURN = 13;
|
|
10
11
|
const SEMICOLON = 59;
|
|
11
12
|
function resolveFilehandle(filehandle, path, url) {
|
|
12
13
|
if (filehandle) {
|
|
@@ -20,6 +21,35 @@ function resolveFilehandle(filehandle, path, url) {
|
|
|
20
21
|
}
|
|
21
22
|
throw new TypeError('must provide either filehandle, path, or url');
|
|
22
23
|
}
|
|
24
|
+
// An explicitly supplied index always wins over the `<path>.tbi` /
|
|
25
|
+
// `<url>.tbi` names derived from the data file, whichever kind it is.
|
|
26
|
+
function resolveIndex({ tbiFilehandle, csiFilehandle, tbiPath, csiPath, tbiUrl, csiUrl, path, url, }) {
|
|
27
|
+
if (tbiFilehandle) {
|
|
28
|
+
return new TBI({ filehandle: tbiFilehandle });
|
|
29
|
+
}
|
|
30
|
+
if (csiFilehandle) {
|
|
31
|
+
return new CSI({ filehandle: csiFilehandle });
|
|
32
|
+
}
|
|
33
|
+
if (tbiPath) {
|
|
34
|
+
return new TBI({ filehandle: new LocalFile(tbiPath) });
|
|
35
|
+
}
|
|
36
|
+
if (csiPath) {
|
|
37
|
+
return new CSI({ filehandle: new LocalFile(csiPath) });
|
|
38
|
+
}
|
|
39
|
+
if (csiUrl) {
|
|
40
|
+
return new CSI({ filehandle: new RemoteFile(csiUrl) });
|
|
41
|
+
}
|
|
42
|
+
if (tbiUrl) {
|
|
43
|
+
return new TBI({ filehandle: new RemoteFile(tbiUrl) });
|
|
44
|
+
}
|
|
45
|
+
if (path) {
|
|
46
|
+
return new TBI({ filehandle: new LocalFile(`${path}.tbi`) });
|
|
47
|
+
}
|
|
48
|
+
if (url) {
|
|
49
|
+
return new TBI({ filehandle: new RemoteFile(`${url}.tbi`) });
|
|
50
|
+
}
|
|
51
|
+
throw new TypeError('must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl');
|
|
52
|
+
}
|
|
23
53
|
function calculateFileOffset(cpositions, dpositions, pos, blockStart, minvDataPosition) {
|
|
24
54
|
return (cpositions[pos] * (1 << 8) +
|
|
25
55
|
(blockStart - dpositions[pos]) +
|
|
@@ -89,33 +119,16 @@ export default class TabixIndexedFile {
|
|
|
89
119
|
chunkCache;
|
|
90
120
|
constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, chunkCacheSize = 5 * 2 ** 20, }) {
|
|
91
121
|
this.filehandle = resolveFilehandle(filehandle, path, url);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this.index = new CSI({ filehandle: new LocalFile(csiPath) });
|
|
103
|
-
}
|
|
104
|
-
else if (path) {
|
|
105
|
-
this.index = new TBI({ filehandle: new LocalFile(`${path}.tbi`) });
|
|
106
|
-
}
|
|
107
|
-
else if (csiUrl) {
|
|
108
|
-
this.index = new CSI({ filehandle: new RemoteFile(csiUrl) });
|
|
109
|
-
}
|
|
110
|
-
else if (tbiUrl) {
|
|
111
|
-
this.index = new TBI({ filehandle: new RemoteFile(tbiUrl) });
|
|
112
|
-
}
|
|
113
|
-
else if (url) {
|
|
114
|
-
this.index = new TBI({ filehandle: new RemoteFile(`${url}.tbi`) });
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
throw new TypeError('must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl');
|
|
118
|
-
}
|
|
122
|
+
this.index = resolveIndex({
|
|
123
|
+
tbiFilehandle,
|
|
124
|
+
csiFilehandle,
|
|
125
|
+
tbiPath,
|
|
126
|
+
csiPath,
|
|
127
|
+
tbiUrl,
|
|
128
|
+
csiUrl,
|
|
129
|
+
path,
|
|
130
|
+
url,
|
|
131
|
+
});
|
|
119
132
|
this.chunkCache = new AbortablePromiseCache({
|
|
120
133
|
cache: new LRU({ maxSize: Math.floor(chunkCacheSize / (1 << 16)) }),
|
|
121
134
|
fill: (args, signal) => this.readChunk(args, { signal }),
|
|
@@ -210,15 +223,14 @@ export default class TabixIndexedFile {
|
|
|
210
223
|
blockStart = n + 1;
|
|
211
224
|
continue;
|
|
212
225
|
}
|
|
213
|
-
// find tab positions
|
|
226
|
+
// find tab positions. Columns past the end of the line all get `n`
|
|
227
|
+
// rather than breaking out, which would leave stale offsets from the
|
|
228
|
+
// previous line in the tail of the array.
|
|
214
229
|
tabs[0] = blockStart - 1;
|
|
215
230
|
for (let i = 0; i < maxColumn; i++) {
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
tabs[i + 1] = tabPos;
|
|
231
|
+
const prev = tabs[i];
|
|
232
|
+
const tabPos = prev < n ? buffer.indexOf(TAB, prev + 1) : -1;
|
|
233
|
+
tabs[i + 1] = tabPos === -1 || tabPos >= n ? n : tabPos;
|
|
222
234
|
}
|
|
223
235
|
// compare ref name bytes directly
|
|
224
236
|
const refStart = tabs[refCol - 1] + 1;
|
|
@@ -257,7 +269,9 @@ export default class TabixIndexedFile {
|
|
|
257
269
|
endCoordinate = parseIntFromBytes(buffer, tabs[endCol - 1] + 1, tabs[endCol]);
|
|
258
270
|
}
|
|
259
271
|
if (endCoordinate > start) {
|
|
260
|
-
|
|
272
|
+
// trim a CRLF terminator, matching htslib's line reader
|
|
273
|
+
const lineEnd = buffer[n - 1] === CARRIAGE_RETURN ? n - 1 : n;
|
|
274
|
+
const line = decoder.decode(buffer.subarray(blockStart, lineEnd));
|
|
261
275
|
callback(line, calculateFileOffset(cpositions, dpositions, pos, blockStart, minvDataPosition), startCoordinate, endCoordinate);
|
|
262
276
|
}
|
|
263
277
|
blockStart = n + 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabixIndexedFile.js","sourceRoot":"","sources":["../src/tabixIndexedFile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabixIndexedFile.js","sourceRoot":"","sources":["../src/tabixIndexedFile.ts"],"names":[],"mappings":"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"}
|
package/esm/tbi.js
CHANGED
|
@@ -4,21 +4,23 @@ import IndexFile from "./indexFile.js";
|
|
|
4
4
|
import { clampChunkEnds, findFirstData, memoizeByRefId, optimizeChunks, parseAuxData, parsePseudoBin, } from "./util.js";
|
|
5
5
|
import { fromBytes } from "./virtualOffset.js";
|
|
6
6
|
const TBI_MAGIC = 21_578_324; // TBI\1
|
|
7
|
+
// TBI is always the fixed depth-5, 14-bit-leaf binning scheme
|
|
8
|
+
const TBI_DEPTH = 5;
|
|
9
|
+
const TBI_MAX_REF_LENGTH = 2 ** (14 + TBI_DEPTH * 3);
|
|
7
10
|
/**
|
|
8
11
|
* calculate the list of bins that may overlap with region [beg,end)
|
|
9
12
|
* (zero-based half-open)
|
|
10
13
|
*/
|
|
11
14
|
function reg2bins(beg, end) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
[73 + (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
];
|
|
15
|
+
// Clamp into the binning scheme's range. Past 2**31 the shifts below
|
|
16
|
+
// truncate to int32 and go negative, which would silently yield no bins.
|
|
17
|
+
const b = Math.min(Math.max(beg, 0), TBI_MAX_REF_LENGTH);
|
|
18
|
+
const e = Math.min(end, TBI_MAX_REF_LENGTH) - 1;
|
|
19
|
+
const bins = [];
|
|
20
|
+
if (b <= e) {
|
|
21
|
+
bins.push([0, 0], [1 + (b >> 26), 1 + (e >> 26)], [9 + (b >> 23), 9 + (e >> 23)], [73 + (b >> 20), 73 + (e >> 20)], [585 + (b >> 17), 585 + (e >> 17)], [4681 + (b >> 14), 4681 + (e >> 14)]);
|
|
22
|
+
}
|
|
23
|
+
return bins;
|
|
22
24
|
}
|
|
23
25
|
export default class TabixIndex extends IndexFile {
|
|
24
26
|
/** @internal */
|
|
@@ -28,14 +30,12 @@ export default class TabixIndex extends IndexFile {
|
|
|
28
30
|
onProgress: opts.onProgress,
|
|
29
31
|
});
|
|
30
32
|
const bytes = (await unzip(buf));
|
|
31
|
-
const dataView = new DataView(bytes.buffer);
|
|
33
|
+
const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
32
34
|
if (dataView.getUint32(0, true) !== TBI_MAGIC) {
|
|
33
35
|
throw new Error('Not a TBI file');
|
|
34
36
|
}
|
|
35
37
|
const refCount = dataView.getUint32(4, true);
|
|
36
|
-
const
|
|
37
|
-
const maxBinNumber = ((1 << ((depth + 1) * 3)) - 1) / 7;
|
|
38
|
-
const maxRefLength = 2 ** (14 + depth * 3);
|
|
38
|
+
const maxBinNumber = ((1 << ((TBI_DEPTH + 1) * 3)) - 1) / 7;
|
|
39
39
|
// TBI header layout matches CSI aux data; parseAuxData handles both
|
|
40
40
|
const { refNameToId, refIdToName, coordinateType, format, columnNumbers, metaChar, skipLines, } = parseAuxData(bytes, 8);
|
|
41
41
|
// nameSectionLength is at TBI offset 32; re-read to find where bin data starts
|
|
@@ -123,7 +123,7 @@ export default class TabixIndex extends IndexFile {
|
|
|
123
123
|
indices: memoizeByRefId(getIndices),
|
|
124
124
|
metaChar,
|
|
125
125
|
maxBinNumber,
|
|
126
|
-
maxRefLength,
|
|
126
|
+
maxRefLength: TBI_MAX_REF_LENGTH,
|
|
127
127
|
skipLines,
|
|
128
128
|
firstDataLine,
|
|
129
129
|
columnNumbers,
|
|
@@ -135,9 +135,6 @@ export default class TabixIndex extends IndexFile {
|
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
137
|
async blocksForRange(refName, min, max, opts = {}) {
|
|
138
|
-
if (min < 0) {
|
|
139
|
-
min = 0;
|
|
140
|
-
}
|
|
141
138
|
const indexData = await this.parse(opts);
|
|
142
139
|
const refId = indexData.refNameToId[refName];
|
|
143
140
|
if (refId === undefined) {
|
|
@@ -147,12 +144,12 @@ export default class TabixIndex extends IndexFile {
|
|
|
147
144
|
if (!ba) {
|
|
148
145
|
return [];
|
|
149
146
|
}
|
|
150
|
-
|
|
151
|
-
// min >= 2**31 overflows int32 and produces a negative >> 14 result —
|
|
152
|
-
// query is well beyond the indexed range
|
|
153
|
-
if (linearIndex.length > 0 && min >= 2 ** 31) {
|
|
147
|
+
if (min > TBI_MAX_REF_LENGTH) {
|
|
154
148
|
console.warn('querying outside of possible tabix range');
|
|
155
149
|
}
|
|
150
|
+
// clamp before the >> 14 below, which would truncate to int32 and go
|
|
151
|
+
// negative past 2**31
|
|
152
|
+
const beg = Math.min(Math.max(min, 0), TBI_MAX_REF_LENGTH);
|
|
156
153
|
const overlappingBins = reg2bins(min, max); // List of bin #s that overlap min, max
|
|
157
154
|
const chunks = [];
|
|
158
155
|
// Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
|
|
@@ -169,7 +166,8 @@ export default class TabixIndex extends IndexFile {
|
|
|
169
166
|
// The linear index is monotonically non-decreasing, so the minimum virtual
|
|
170
167
|
// offset for chunks that could overlap [min, ...) is at index minLin.
|
|
171
168
|
// SYNC: ~/src/gmod/bam-js/src/bai.ts getLowestChunk
|
|
172
|
-
const
|
|
169
|
+
const linearIndex = ba.linearIndex;
|
|
170
|
+
const lowest = linearIndex?.[Math.min(beg >> 14, linearIndex.length - 1)];
|
|
173
171
|
return optimizeChunks(chunks, lowest);
|
|
174
172
|
}
|
|
175
173
|
}
|
package/esm/tbi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tbi.js","sourceRoot":"","sources":["../src/tbi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAK9C,MAAM,SAAS,GAAG,UAAU,CAAA,CAAC,QAAQ;AAErC;;;GAGG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"tbi.js","sourceRoot":"","sources":["../src/tbi.ts"],"names":[],"mappings":"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"}
|
package/esm/util.js
CHANGED
|
@@ -70,6 +70,9 @@ export function optimizeChunks(chunks, lowest) {
|
|
|
70
70
|
// least the true block end, so the clamped fetch still contains the whole block.
|
|
71
71
|
// Shrinks both the byte estimate and the actual fetch with no extra I/O.
|
|
72
72
|
export function clampChunkEnds(chunks, extraBoundaries = []) {
|
|
73
|
+
// Array#sort with a comparator beats a Float64Array numeric sort here:
|
|
74
|
+
// extraBoundaries (the linear index) arrives already sorted and TimSort
|
|
75
|
+
// exploits the existing run, which introsort cannot.
|
|
73
76
|
const boundaries = [...extraBoundaries];
|
|
74
77
|
for (const c of chunks) {
|
|
75
78
|
boundaries.push(c.minv.blockPosition, c.maxv.blockPosition);
|
|
@@ -126,7 +129,7 @@ const tabixFormats = {
|
|
|
126
129
|
2: 'VCF',
|
|
127
130
|
};
|
|
128
131
|
export function parseAuxData(bytes, offset) {
|
|
129
|
-
const dataView = new DataView(bytes.buffer);
|
|
132
|
+
const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
130
133
|
const formatFlags = dataView.getInt32(offset, true);
|
|
131
134
|
const coordinateType = formatFlags & 0x1_00_00 ? 'zero-based-half-open' : '1-based-closed';
|
|
132
135
|
const format = tabixFormats[formatFlags & 0xf];
|
package/esm/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gmod/tabix",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
|
+
"packageManager": "pnpm@11.15.1",
|
|
4
5
|
"description": "Read Tabix-indexed files, supports both .tbi and .csi indexes",
|
|
5
6
|
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
6
8
|
"main": "dist/index.js",
|
|
7
9
|
"exports": {
|
|
8
10
|
"import": "./esm/index.js",
|
package/src/csi.ts
CHANGED
|
@@ -14,7 +14,6 @@ import { fromBytes } from './virtualOffset.ts'
|
|
|
14
14
|
|
|
15
15
|
import type { Options, RefIndex } from './indexFile.ts'
|
|
16
16
|
import type VirtualOffset from './virtualOffset.ts'
|
|
17
|
-
import type { GenericFilehandle } from 'generic-filehandle2'
|
|
18
17
|
|
|
19
18
|
const CSI1_MAGIC = 21_582_659 // CSI\1
|
|
20
19
|
const CSI2_MAGIC = 38_359_875 // CSI\2
|
|
@@ -29,19 +28,9 @@ function rshift(num: number, bits: number) {
|
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
export default class CSI extends IndexFile {
|
|
32
|
-
private maxBinNumber
|
|
33
|
-
private depth
|
|
34
|
-
private minShift
|
|
35
|
-
constructor(args: { filehandle: GenericFilehandle }) {
|
|
36
|
-
super(args)
|
|
37
|
-
this.maxBinNumber = 0
|
|
38
|
-
this.depth = 0
|
|
39
|
-
this.minShift = 0
|
|
40
|
-
}
|
|
41
|
-
/** @internal */
|
|
42
|
-
indexCov() {
|
|
43
|
-
throw new Error('CSI indexes do not support indexcov')
|
|
44
|
-
}
|
|
31
|
+
private maxBinNumber = 0
|
|
32
|
+
private depth = 0
|
|
33
|
+
private minShift = 0
|
|
45
34
|
|
|
46
35
|
/** @internal */
|
|
47
36
|
async _parse(opts: Options = {}) {
|
|
@@ -50,7 +39,11 @@ export default class CSI extends IndexFile {
|
|
|
50
39
|
onProgress: opts.onProgress,
|
|
51
40
|
})
|
|
52
41
|
const bytes = (await unzip(buf)) as Uint8Array
|
|
53
|
-
const dataView = new DataView(
|
|
42
|
+
const dataView = new DataView(
|
|
43
|
+
bytes.buffer,
|
|
44
|
+
bytes.byteOffset,
|
|
45
|
+
bytes.byteLength,
|
|
46
|
+
)
|
|
54
47
|
|
|
55
48
|
const magic = dataView.getUint32(0, true)
|
|
56
49
|
let csiVersion
|
|
@@ -114,6 +107,7 @@ export default class CSI extends IndexFile {
|
|
|
114
107
|
const binCount = dataView.getInt32(pos, true)
|
|
115
108
|
pos += 4
|
|
116
109
|
const binIndex: Record<number, Chunk[]> = {}
|
|
110
|
+
const loffsets: Record<number, VirtualOffset> = {}
|
|
117
111
|
let stats
|
|
118
112
|
for (let j = 0; j < binCount; j++) {
|
|
119
113
|
const bin = dataView.getUint32(pos, true)
|
|
@@ -122,7 +116,8 @@ export default class CSI extends IndexFile {
|
|
|
122
116
|
stats = parsePseudoBin(bytes, pos + 28)
|
|
123
117
|
pos += 28 + 16
|
|
124
118
|
} else {
|
|
125
|
-
|
|
119
|
+
loffsets[bin] = fromBytes(bytes, pos)
|
|
120
|
+
pos += 8
|
|
126
121
|
const chunkCount = dataView.getInt32(pos, true)
|
|
127
122
|
pos += 4
|
|
128
123
|
const chunks = Array.from<Chunk>({ length: chunkCount })
|
|
@@ -138,7 +133,7 @@ export default class CSI extends IndexFile {
|
|
|
138
133
|
}
|
|
139
134
|
}
|
|
140
135
|
clampChunkEnds(Object.values(binIndex).flat())
|
|
141
|
-
return { binIndex, stats }
|
|
136
|
+
return { binIndex, loffsets, stats }
|
|
142
137
|
}
|
|
143
138
|
|
|
144
139
|
return {
|
|
@@ -191,7 +186,35 @@ export default class CSI extends IndexFile {
|
|
|
191
186
|
}
|
|
192
187
|
}
|
|
193
188
|
|
|
194
|
-
return optimizeChunks(chunks)
|
|
189
|
+
return optimizeChunks(chunks, this.minOffset(ba.loffsets, min))
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* CSI's equivalent of the BAI/TBI linear index: the loffset of the deepest
|
|
194
|
+
* indexed bin covering `beg` is the earliest virtual offset any record
|
|
195
|
+
* overlapping `beg` can have, so chunks ending at or before it are dead.
|
|
196
|
+
* Walks leaf -> previous sibling -> parent until an indexed bin is found.
|
|
197
|
+
* SYNC: htslib hts_itr_query min_off computation
|
|
198
|
+
*/
|
|
199
|
+
private minOffset(
|
|
200
|
+
loffsets: Record<number, VirtualOffset> | undefined,
|
|
201
|
+
beg: number,
|
|
202
|
+
) {
|
|
203
|
+
let found: VirtualOffset | undefined
|
|
204
|
+
if (loffsets) {
|
|
205
|
+
// first bin of the deepest level, i.e. (8**depth - 1) / 7
|
|
206
|
+
let bin = (lshift(1, 3 * this.depth) - 1) / 7 + rshift(beg, this.minShift)
|
|
207
|
+
while (found === undefined && bin > 0) {
|
|
208
|
+
found = loffsets[bin]
|
|
209
|
+
if (found === undefined) {
|
|
210
|
+
const parent = Math.floor((bin - 1) / 8)
|
|
211
|
+
const firstChild = parent * 8 + 1
|
|
212
|
+
bin = bin > firstChild ? bin - 1 : parent
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
found ??= loffsets[0]
|
|
216
|
+
}
|
|
217
|
+
return found
|
|
195
218
|
}
|
|
196
219
|
|
|
197
220
|
/** @internal */
|
package/src/indexFile.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface RefIndex {
|
|
|
16
16
|
binIndex: Record<number, Chunk[]>
|
|
17
17
|
stats?: { lineCount: number }
|
|
18
18
|
linearIndex?: VirtualOffset[]
|
|
19
|
+
/** CSI only: per-bin loffset, the linear index's equivalent for pruning */
|
|
20
|
+
loffsets?: Record<number, VirtualOffset>
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export interface IndexData {
|
package/src/long.ts
CHANGED
package/src/tabixIndexedFile.ts
CHANGED
|
@@ -14,6 +14,7 @@ import type { GenericFilehandle } from 'generic-filehandle2'
|
|
|
14
14
|
|
|
15
15
|
const TAB = 9
|
|
16
16
|
const NEWLINE = 10
|
|
17
|
+
const CARRIAGE_RETURN = 13
|
|
17
18
|
const SEMICOLON = 59
|
|
18
19
|
|
|
19
20
|
type GetLinesCallback = (
|
|
@@ -59,6 +60,56 @@ function resolveFilehandle(
|
|
|
59
60
|
throw new TypeError('must provide either filehandle, path, or url')
|
|
60
61
|
}
|
|
61
62
|
|
|
63
|
+
// An explicitly supplied index always wins over the `<path>.tbi` /
|
|
64
|
+
// `<url>.tbi` names derived from the data file, whichever kind it is.
|
|
65
|
+
function resolveIndex({
|
|
66
|
+
tbiFilehandle,
|
|
67
|
+
csiFilehandle,
|
|
68
|
+
tbiPath,
|
|
69
|
+
csiPath,
|
|
70
|
+
tbiUrl,
|
|
71
|
+
csiUrl,
|
|
72
|
+
path,
|
|
73
|
+
url,
|
|
74
|
+
}: {
|
|
75
|
+
tbiFilehandle?: GenericFilehandle
|
|
76
|
+
csiFilehandle?: GenericFilehandle
|
|
77
|
+
tbiPath?: string
|
|
78
|
+
csiPath?: string
|
|
79
|
+
tbiUrl?: string
|
|
80
|
+
csiUrl?: string
|
|
81
|
+
path?: string
|
|
82
|
+
url?: string
|
|
83
|
+
}) {
|
|
84
|
+
if (tbiFilehandle) {
|
|
85
|
+
return new TBI({ filehandle: tbiFilehandle })
|
|
86
|
+
}
|
|
87
|
+
if (csiFilehandle) {
|
|
88
|
+
return new CSI({ filehandle: csiFilehandle })
|
|
89
|
+
}
|
|
90
|
+
if (tbiPath) {
|
|
91
|
+
return new TBI({ filehandle: new LocalFile(tbiPath) })
|
|
92
|
+
}
|
|
93
|
+
if (csiPath) {
|
|
94
|
+
return new CSI({ filehandle: new LocalFile(csiPath) })
|
|
95
|
+
}
|
|
96
|
+
if (csiUrl) {
|
|
97
|
+
return new CSI({ filehandle: new RemoteFile(csiUrl) })
|
|
98
|
+
}
|
|
99
|
+
if (tbiUrl) {
|
|
100
|
+
return new TBI({ filehandle: new RemoteFile(tbiUrl) })
|
|
101
|
+
}
|
|
102
|
+
if (path) {
|
|
103
|
+
return new TBI({ filehandle: new LocalFile(`${path}.tbi`) })
|
|
104
|
+
}
|
|
105
|
+
if (url) {
|
|
106
|
+
return new TBI({ filehandle: new RemoteFile(`${url}.tbi`) })
|
|
107
|
+
}
|
|
108
|
+
throw new TypeError(
|
|
109
|
+
'must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl',
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
|
|
62
113
|
function calculateFileOffset(
|
|
63
114
|
cpositions: number[],
|
|
64
115
|
dpositions: number[],
|
|
@@ -172,28 +223,16 @@ export default class TabixIndexedFile {
|
|
|
172
223
|
chunkCacheSize?: number
|
|
173
224
|
}) {
|
|
174
225
|
this.filehandle = resolveFilehandle(filehandle, path, url)
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
this.index = new TBI({ filehandle: new LocalFile(`${path}.tbi`) })
|
|
186
|
-
} else if (csiUrl) {
|
|
187
|
-
this.index = new CSI({ filehandle: new RemoteFile(csiUrl) })
|
|
188
|
-
} else if (tbiUrl) {
|
|
189
|
-
this.index = new TBI({ filehandle: new RemoteFile(tbiUrl) })
|
|
190
|
-
} else if (url) {
|
|
191
|
-
this.index = new TBI({ filehandle: new RemoteFile(`${url}.tbi`) })
|
|
192
|
-
} else {
|
|
193
|
-
throw new TypeError(
|
|
194
|
-
'must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl',
|
|
195
|
-
)
|
|
196
|
-
}
|
|
226
|
+
this.index = resolveIndex({
|
|
227
|
+
tbiFilehandle,
|
|
228
|
+
csiFilehandle,
|
|
229
|
+
tbiPath,
|
|
230
|
+
csiPath,
|
|
231
|
+
tbiUrl,
|
|
232
|
+
csiUrl,
|
|
233
|
+
path,
|
|
234
|
+
url,
|
|
235
|
+
})
|
|
197
236
|
|
|
198
237
|
this.chunkCache = new AbortablePromiseCache<Chunk, ReadChunk>({
|
|
199
238
|
cache: new LRU({ maxSize: Math.floor(chunkCacheSize / (1 << 16)) }),
|
|
@@ -318,15 +357,14 @@ export default class TabixIndexedFile {
|
|
|
318
357
|
continue
|
|
319
358
|
}
|
|
320
359
|
|
|
321
|
-
// find tab positions
|
|
360
|
+
// find tab positions. Columns past the end of the line all get `n`
|
|
361
|
+
// rather than breaking out, which would leave stale offsets from the
|
|
362
|
+
// previous line in the tail of the array.
|
|
322
363
|
tabs[0] = blockStart - 1
|
|
323
364
|
for (let i = 0; i < maxColumn; i++) {
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
break
|
|
328
|
-
}
|
|
329
|
-
tabs[i + 1] = tabPos
|
|
365
|
+
const prev = tabs[i]!
|
|
366
|
+
const tabPos = prev < n ? buffer.indexOf(TAB, prev + 1) : -1
|
|
367
|
+
tabs[i + 1] = tabPos === -1 || tabPos >= n ? n : tabPos
|
|
330
368
|
}
|
|
331
369
|
|
|
332
370
|
// compare ref name bytes directly
|
|
@@ -380,7 +418,9 @@ export default class TabixIndexedFile {
|
|
|
380
418
|
}
|
|
381
419
|
|
|
382
420
|
if (endCoordinate > start) {
|
|
383
|
-
|
|
421
|
+
// trim a CRLF terminator, matching htslib's line reader
|
|
422
|
+
const lineEnd = buffer[n - 1] === CARRIAGE_RETURN ? n - 1 : n
|
|
423
|
+
const line = decoder.decode(buffer.subarray(blockStart, lineEnd))
|
|
384
424
|
callback(
|
|
385
425
|
line,
|
|
386
426
|
calculateFileOffset(
|