@gmod/bam 9.0.1 → 10.0.1
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 +18 -17
- package/dist/bai.d.ts +2 -0
- package/dist/bai.js +19 -0
- package/dist/bai.js.map +1 -1
- package/dist/bamFile.js +12 -21
- package/dist/bamFile.js.map +1 -1
- package/dist/csi.d.ts +20 -29
- package/dist/csi.js +27 -10
- package/dist/csi.js.map +1 -1
- package/dist/indexFile.d.ts +21 -1
- package/dist/indexFile.js +60 -2
- package/dist/indexFile.js.map +1 -1
- package/dist/record.d.ts +1 -0
- package/dist/record.js +33 -21
- package/dist/record.js.map +1 -1
- package/dist/streamBam.js +9 -8
- package/dist/streamBam.js.map +1 -1
- package/dist/util.d.ts +24 -4
- package/dist/util.js +52 -4
- package/dist/util.js.map +1 -1
- package/dist/virtualOffset.d.ts +1 -0
- package/dist/virtualOffset.js +4 -0
- package/dist/virtualOffset.js.map +1 -1
- package/esm/bai.d.ts +2 -0
- package/esm/bai.js +19 -0
- package/esm/bai.js.map +1 -1
- package/esm/bamFile.js +13 -22
- package/esm/bamFile.js.map +1 -1
- package/esm/csi.d.ts +20 -29
- package/esm/csi.js +27 -10
- package/esm/csi.js.map +1 -1
- package/esm/indexFile.d.ts +21 -1
- package/esm/indexFile.js +59 -2
- package/esm/indexFile.js.map +1 -1
- package/esm/record.d.ts +1 -0
- package/esm/record.js +33 -21
- package/esm/record.js.map +1 -1
- package/esm/streamBam.js +10 -9
- package/esm/streamBam.js.map +1 -1
- package/esm/util.d.ts +24 -4
- package/esm/util.js +49 -4
- package/esm/util.js.map +1 -1
- package/esm/virtualOffset.d.ts +1 -0
- package/esm/virtualOffset.js +3 -0
- package/esm/virtualOffset.js.map +1 -1
- package/package.json +8 -8
- package/src/bai.ts +21 -0
- package/src/bamFile.ts +16 -23
- package/src/csi.ts +41 -14
- package/src/indexFile.ts +72 -3
- package/src/record.ts +39 -20
- package/src/streamBam.ts +11 -10
- package/src/util.ts +56 -4
- package/src/virtualOffset.ts +4 -0
package/README.md
CHANGED
|
@@ -79,10 +79,11 @@ for await (const records of streamBamRecords({ bamUrl: 'unsorted.bam' })) {
|
|
|
79
79
|
}
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
streams through in bounded memory.
|
|
84
|
-
method, so that streaming alone leaves `BAI`/`CSI` and the
|
|
85
|
-
your bundle. See [docs/api.md](docs/api.md) for `onHeader`
|
|
82
|
+
`streamBamRecords` reads the file a window at a time rather than all at once, so
|
|
83
|
+
a 1GB BAM streams through in bounded memory. It is a standalone function rather
|
|
84
|
+
than a `BamFile` method, so that streaming alone leaves `BAI`/`CSI` and the
|
|
85
|
+
chunk cache out of your bundle. See [docs/api.md](docs/api.md) for `onHeader`
|
|
86
|
+
and the window size.
|
|
86
87
|
|
|
87
88
|
## Mismatches
|
|
88
89
|
|
|
@@ -111,17 +112,17 @@ for (const record of await bam.getRecordsForRange('ctgA', 0, 50000)) {
|
|
|
111
112
|
|
|
112
113
|
`code` is a CIGAR char code, to compare against the exported `MISMATCH_SUBST`,
|
|
113
114
|
`MISMATCH_INSERTION`, … constants, and `record.forEachMismatch(cb, opts?)`
|
|
114
|
-
reports the same set while allocating nothing per difference. What
|
|
115
|
-
fields
|
|
115
|
+
reports the same set while allocating nothing per difference. What the two
|
|
116
|
+
fields mean, with that read walked through them:
|
|
116
117
|
[docs/cigar-and-md.md](docs/cigar-and-md.md).
|
|
117
118
|
|
|
118
119
|
Substitutions need either an `MD` tag on the read or the reference bases, which
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
field meanings, and what to do
|
|
124
|
-
looking at.
|
|
120
|
+
`fetchReferenceSequence` supplies above — most aligners leave `MD` off, and a
|
|
121
|
+
query calls it only when one of its reads needs it. Without it, `getMismatches`
|
|
122
|
+
still returns indels and clips for a read lacking `MD`, but no substitutions —
|
|
123
|
+
the record does not contain their positions.
|
|
124
|
+
[docs/api.md](docs/api.md#mismatches) has the field meanings, and what to do
|
|
125
|
+
about reads that run past the region you are looking at.
|
|
125
126
|
|
|
126
127
|
## How a query flows
|
|
127
128
|
|
|
@@ -156,7 +157,7 @@ const bam = new BamFile({
|
|
|
156
157
|
Safe to pass unconditionally: `getSharedWorkerPool()` returns `undefined` under
|
|
157
158
|
node, or anywhere the host forbids Workers, which keeps the in-process path. No
|
|
158
159
|
cross-origin isolation needed. bam-js never creates a pool on its own — the
|
|
159
|
-
|
|
160
|
+
consumer controls the thread budget. Worker counts, lifecycle and benchmarks:
|
|
160
161
|
[bgzf-filehandle's worker pool docs](https://github.com/GMOD/bgzf-filehandle/blob/main/docs/worker-pool.md).
|
|
161
162
|
|
|
162
163
|
## Usage with htsget
|
|
@@ -186,15 +187,15 @@ const bam = new HtsgetFile({
|
|
|
186
187
|
})
|
|
187
188
|
```
|
|
188
189
|
|
|
189
|
-
|
|
190
|
-
points at,
|
|
191
|
-
hosts you trust.
|
|
190
|
+
The `fetch` you pass makes both the ticket request and the data-block requests
|
|
191
|
+
the ticket points at, and those data-block URLs may be on a third-party host —
|
|
192
|
+
so only attach credentials to hosts you trust.
|
|
192
193
|
|
|
193
194
|
## Docs
|
|
194
195
|
|
|
195
196
|
- [docs/api.md](docs/api.md) — every constructor option, method and `BamRecord`
|
|
196
197
|
field, plus custom record classes
|
|
197
|
-
- [docs/cigar-and-md.md](docs/cigar-and-md.md) — what `CIGAR` and `MD`
|
|
198
|
+
- [docs/cigar-and-md.md](docs/cigar-and-md.md) — what `CIGAR` and `MD` mean, and
|
|
198
199
|
how the walk reads mismatches out of them
|
|
199
200
|
- [docs/dataflow.md](docs/dataflow.md) — how a query flows, and where wasm sits
|
|
200
201
|
- [docs/optimizations.md](docs/optimizations.md) — why each step of that path
|
package/dist/bai.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface IndexCovEntry {
|
|
|
14
14
|
score: number;
|
|
15
15
|
}
|
|
16
16
|
export default class BAI extends IndexFile<BaiParsed> {
|
|
17
|
+
protected minShift: number;
|
|
18
|
+
protected depth: number;
|
|
17
19
|
_parse(opts: BaseOpts): Promise<BaiParsed>;
|
|
18
20
|
indexCov(seqId: number, start?: number, end?: number, opts?: BaseOpts): Promise<IndexCovEntry[]>;
|
|
19
21
|
protected reg2bins(min: number, max: number): readonly [readonly [0, 0], readonly [number, number], readonly [number, number], readonly [number, number], readonly [number, number], readonly [number, number]];
|
package/dist/bai.js
CHANGED
|
@@ -61,6 +61,22 @@ function roundUp(n, multiple) {
|
|
|
61
61
|
const rem = n % multiple;
|
|
62
62
|
return rem === 0 ? n : n - rem + multiple;
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Older samtools leaves 0:0 in linear-index windows no read overlaps. htslib
|
|
66
|
+
* fills interior ones from the next entry on load (`hts.c`, "fill missing
|
|
67
|
+
* values"); this also fills leading ones, which htslib leaves at 0. Either
|
|
68
|
+
* way the entry stays a lower bound, since no record overlaps that window.
|
|
69
|
+
* Left as 0, a leading entry scores its whole absolute file offset in
|
|
70
|
+
* `indexCov`, and `getLowestChunk` falls back to the start of the file.
|
|
71
|
+
*/
|
|
72
|
+
function fillLinearGaps(blocks, data) {
|
|
73
|
+
for (let j = blocks.length - 2; j >= 0; j--) {
|
|
74
|
+
if (blocks[j] === 0 && data[j] === 0) {
|
|
75
|
+
blocks[j] = blocks[j + 1];
|
|
76
|
+
data[j] = data[j + 1];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
64
80
|
// Compute bin ranges that overlap [beg, end). Each level's first-bin offset
|
|
65
81
|
// is (8^L - 1) / 7. See SAMv1.pdf §5.1.1 for the binning derivation.
|
|
66
82
|
function reg2bins(beg, end) {
|
|
@@ -88,6 +104,8 @@ function reg2bins(beg, end) {
|
|
|
88
104
|
];
|
|
89
105
|
}
|
|
90
106
|
class BAI extends indexFile_ts_1.default {
|
|
107
|
+
minShift = BAI_LINEAR_SHIFT;
|
|
108
|
+
depth = BAI_DEPTH;
|
|
91
109
|
async _parse(opts) {
|
|
92
110
|
const bytes = await this.filehandle.readFile(opts);
|
|
93
111
|
const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
@@ -184,6 +202,7 @@ class BAI extends indexFile_ts_1.default {
|
|
|
184
202
|
linearDataPositions[j] = (bytes[curr + 1] << 8) | bytes[curr];
|
|
185
203
|
curr += 8;
|
|
186
204
|
}
|
|
205
|
+
fillLinearGaps(linearBlockPositions, linearDataPositions);
|
|
187
206
|
(0, util_ts_1.clampChunkEnds)(Object.values(binIndex).flat(), linearBlockPositions);
|
|
188
207
|
return {
|
|
189
208
|
binIndex,
|
package/dist/bai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA8B;AAC9B,+DAA0D;AAC1D,uCAA4E;AAC5E,yDAA8C;AAmB9C,MAAM,eAAe,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;AAM3C,MAAM,SAAS,GAAG,QAAQ,CAAA,CAAC,QAAQ;AAEnC,4EAA4E;AAC5E,gDAAgD;AAChD,8DAA8D;AAC9D,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,mBAAmB,GAAG,CAAC,IAAI,gBAAgB,CAAA,CAAC,QAAQ;AAC1D,MAAM,SAAS,GAAG,CAAC,CAAA;AACnB,wEAAwE;AACxE,8DAA8D;AAC9D,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC,CAAA,CAAC,OAAO;AAEnE,SAAS,SAAS,CAAC,CAAS,EAAE,QAAgB;IAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAA;AAC3B,CAAC;AACD,yEAAyE;AACzE,8EAA8E;AAC9E,0CAA0C;AAC1C,SAAS,OAAO,CAAC,CAAS,EAAE,QAAgB;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAA;IACxB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAA;AAC3C,CAAC;AAQD,4EAA4E;AAC5E,qEAAqE;AACrE,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;QACtB,GAAG,GAAG,WAAW,CAAA;IACnB,CAAC;IACD,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;QACtB,GAAG,GAAG,WAAW,CAAA;IACnB,CAAC;IACD,GAAG,IAAI,CAAC,CAAA;IACR,OAAO;QACL,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,gBAAgB,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC;KAC5D,CAAA;AACZ,CAAC;AAED,MAAqB,GAAI,SAAQ,sBAAoB;
|
|
1
|
+
{"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}
|
package/dist/bamFile.js
CHANGED
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.DEFAULT_CACHE_IDLE_TIMEOUT_MS = exports.DEFAULT_MAX_CACHE_BYTES = void 0;
|
|
7
7
|
const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
|
|
8
8
|
const shared_read_cache_1 = require("@gmod/shared-read-cache");
|
|
9
|
-
const crc32_1 = __importDefault(require("crc/calculators/crc32"));
|
|
10
9
|
const bai_ts_1 = __importDefault(require("./bai.js"));
|
|
11
10
|
const csi_ts_1 = __importDefault(require("./csi.js"));
|
|
12
11
|
const nullFilehandle_ts_1 = __importDefault(require("./nullFilehandle.js"));
|
|
@@ -204,7 +203,7 @@ class BamFile {
|
|
|
204
203
|
const parsed = (0, util_ts_1.parseRefSeqs)(uncba, headLen + 8, this.renameRefSeq);
|
|
205
204
|
let samHeader;
|
|
206
205
|
if (parsed) {
|
|
207
|
-
const headerText =
|
|
206
|
+
const headerText = (0, util_ts_1.decodeHeaderText)(uncba, headLen);
|
|
208
207
|
this.header = headerText;
|
|
209
208
|
this.chrToIndex = parsed.chrToIndex;
|
|
210
209
|
this.indexToChr = parsed.indexToChr;
|
|
@@ -266,7 +265,7 @@ class BamFile {
|
|
|
266
265
|
if (chrId === undefined || !this.index) {
|
|
267
266
|
return [];
|
|
268
267
|
}
|
|
269
|
-
const chunks = await this.index.blocksForRange(chrId, min
|
|
268
|
+
const chunks = await this.index.blocksForRange(chrId, min, max, opts);
|
|
270
269
|
return this._fetchChunkFeatures(chunks, chrId, chr, min, max, opts);
|
|
271
270
|
}
|
|
272
271
|
/**
|
|
@@ -501,38 +500,30 @@ class BamFile {
|
|
|
501
500
|
// make the count NaN.
|
|
502
501
|
const readNameCounts = new Map();
|
|
503
502
|
const readIds = new Set();
|
|
503
|
+
const names = new Array(records.length);
|
|
504
504
|
for (let i = 0, l = records.length; i < l; i++) {
|
|
505
505
|
const r = records[i];
|
|
506
506
|
const name = r.name;
|
|
507
|
+
names[i] = name;
|
|
507
508
|
readNameCounts.set(name, (readNameCounts.get(name) ?? 0) + 1);
|
|
508
509
|
readIds.add(r.fileOffset);
|
|
509
510
|
}
|
|
510
511
|
const matePromises = [];
|
|
511
512
|
for (let i = 0, l = records.length; i < l; i++) {
|
|
512
513
|
const f = records[i];
|
|
513
|
-
const name = f.name;
|
|
514
514
|
if (this.index &&
|
|
515
|
-
readNameCounts.get(
|
|
515
|
+
readNameCounts.get(names[i]) === 1 &&
|
|
516
516
|
(pairAcrossChr ||
|
|
517
517
|
(f.next_refid === chrId &&
|
|
518
518
|
Math.abs(f.start - f.next_pos) < maxInsertSize))) {
|
|
519
519
|
matePromises.push(this.index.blocksForRange(f.next_refid, f.next_pos, f.next_pos + 1, opts));
|
|
520
520
|
}
|
|
521
521
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
const m = chunks[j];
|
|
528
|
-
// Key on the virtual-offset span — the same key _cachedChunkFeatures
|
|
529
|
-
// uses. Chunk.toString() also folds in `bin` and fetchedSize(), which
|
|
530
|
-
// keeps two chunks covering an identical span apart here even though
|
|
531
|
-
// the cache below collapses them, so their records came back twice.
|
|
532
|
-
map.set(chunkCacheKey(m), m);
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
const mateChunks = [...map.values()];
|
|
522
|
+
// Each mate's lookup is merged on its own, so two of them can resolve to
|
|
523
|
+
// different spans over the same records. Merging the union again makes
|
|
524
|
+
// them disjoint, which is what keeps a mate in the overlap from coming
|
|
525
|
+
// back once per span.
|
|
526
|
+
const mateChunks = (0, util_ts_1.optimizeChunks)((await Promise.all(matePromises)).flat());
|
|
536
527
|
// Bounded for the reason ADR 0008 bounds the main query path: a viewAsPairs
|
|
537
528
|
// query over a busy region resolves to many distinct mate chunks, and an
|
|
538
529
|
// unbounded fan-out inflates every one of them at once. Same inline pool
|
|
@@ -611,7 +602,7 @@ class BamFile {
|
|
|
611
602
|
const hasDpositions = dpositions.length > 0;
|
|
612
603
|
const hasCpositions = cpositions.length > 0;
|
|
613
604
|
while (blockStart + 4 < ba.length) {
|
|
614
|
-
const blockSize =
|
|
605
|
+
const blockSize = (0, util_ts_1.readBlockSize)(dataView, blockStart);
|
|
615
606
|
const blockEnd = blockStart + 4 + blockSize - 1;
|
|
616
607
|
if (hasDpositions) {
|
|
617
608
|
const target = blockStart + chunk.minv.dataPosition;
|
|
@@ -625,7 +616,7 @@ class BamFile {
|
|
|
625
616
|
(blockStart - dpositions[pos]) +
|
|
626
617
|
chunk.minv.dataPosition +
|
|
627
618
|
1
|
|
628
|
-
: (0,
|
|
619
|
+
: (0, util_ts_1.contentHash53)(ba, blockStart, blockEnd), dataView);
|
|
629
620
|
sink.push(feature);
|
|
630
621
|
}
|
|
631
622
|
blockStart = blockEnd + 1;
|
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/csi.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import Chunk from './chunk.ts';
|
|
2
1
|
import IndexFile from './indexFile.ts';
|
|
3
2
|
import { VirtualOffset } from './virtualOffset.ts';
|
|
3
|
+
import type { ParsedIndexBase, RefIndex } from './indexFile.ts';
|
|
4
4
|
import type { BaseOpts } from './util.ts';
|
|
5
|
-
|
|
5
|
+
interface CsiRefIndex extends RefIndex {
|
|
6
|
+
loffsets: Map<number, VirtualOffset>;
|
|
7
|
+
}
|
|
8
|
+
interface CsiParsed extends ParsedIndexBase<CsiRefIndex> {
|
|
9
|
+
csi: true;
|
|
10
|
+
}
|
|
11
|
+
export default class CSI extends IndexFile<CsiParsed> {
|
|
6
12
|
private maxBinNumber;
|
|
7
|
-
|
|
8
|
-
|
|
13
|
+
protected depth: number;
|
|
14
|
+
protected minShift: number;
|
|
9
15
|
indexCov(): Promise<never[]>;
|
|
10
16
|
parseAuxData(bytes: Uint8Array, offset: number): {
|
|
11
17
|
refNameToId: Record<string, number>;
|
|
@@ -22,31 +28,15 @@ export default class CSI extends IndexFile {
|
|
|
22
28
|
format: string;
|
|
23
29
|
formatFlags: number;
|
|
24
30
|
};
|
|
25
|
-
_parse(opts: BaseOpts): Promise<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
metaValue?: number | undefined;
|
|
35
|
-
metaChar?: string | undefined;
|
|
36
|
-
skipLines?: number | undefined;
|
|
37
|
-
format?: string | undefined;
|
|
38
|
-
formatFlags?: number | undefined;
|
|
39
|
-
firstDataLine: VirtualOffset | undefined;
|
|
40
|
-
indices: (refId: number) => {
|
|
41
|
-
binIndex: Record<number, Chunk[]>;
|
|
42
|
-
stats: {
|
|
43
|
-
lineCount: number;
|
|
44
|
-
} | undefined;
|
|
45
|
-
} | undefined;
|
|
46
|
-
refCount: number;
|
|
47
|
-
csi: boolean;
|
|
48
|
-
}>;
|
|
49
|
-
protected getLowestChunk(): VirtualOffset;
|
|
31
|
+
_parse(opts: BaseOpts): Promise<CsiParsed>;
|
|
32
|
+
/**
|
|
33
|
+
* CSI has no linear index, but each bin's `loffset` is the linear-index entry
|
|
34
|
+
* at the bin's first window (htslib's `update_loff`), so the finest bin at or
|
|
35
|
+
* left of `min` bounds the query from below the way BAI's linear index does.
|
|
36
|
+
* Walks left through siblings and then up to the parent, as `hts_itr_query`
|
|
37
|
+
* does for CSI.
|
|
38
|
+
*/
|
|
39
|
+
protected getLowestChunk(refIndex: CsiRefIndex, min: number): VirtualOffset;
|
|
50
40
|
protected getHighestChunk(): undefined;
|
|
51
41
|
/**
|
|
52
42
|
* calculate the list of bins that may overlap with region [beg,end)
|
|
@@ -55,3 +45,4 @@ export default class CSI extends IndexFile {
|
|
|
55
45
|
*/
|
|
56
46
|
protected reg2bins(beg: number, end: number): (readonly [number, number])[];
|
|
57
47
|
}
|
|
48
|
+
export {};
|
package/dist/csi.js
CHANGED
|
@@ -101,7 +101,7 @@ class CSI extends indexFile_ts_1.default {
|
|
|
101
101
|
}
|
|
102
102
|
this.minShift = dataView.getInt32(4, true);
|
|
103
103
|
this.depth = dataView.getInt32(8, true);
|
|
104
|
-
this.maxBinNumber = (
|
|
104
|
+
this.maxBinNumber = (8 ** (this.depth + 1) - 1) / 7;
|
|
105
105
|
const maxBinNumber = this.maxBinNumber;
|
|
106
106
|
const auxLength = dataView.getInt32(12, true);
|
|
107
107
|
// A tabix-only branch, which is why parseAuxData and the parseNameBytes it
|
|
@@ -136,10 +136,10 @@ class CSI extends indexFile_ts_1.default {
|
|
|
136
136
|
curr += 28 + 16;
|
|
137
137
|
}
|
|
138
138
|
else {
|
|
139
|
-
// A bin's loffset is the
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
139
|
+
// A bin's loffset is the linear-index entry at its first window, so
|
|
140
|
+
// the smallest over every bin is the first record's offset — one
|
|
141
|
+
// read per bin instead of one per chunk. Checked against every .csi
|
|
142
|
+
// in test/data: same answer on all 19.
|
|
143
143
|
firstDataLine = (0, util_ts_1.minVirtualOffset)(bytes, curr, 1, firstDataLine);
|
|
144
144
|
curr += 8; // loffset
|
|
145
145
|
const chunkCount = dataView.getInt32(curr, true);
|
|
@@ -156,6 +156,7 @@ class CSI extends indexFile_ts_1.default {
|
|
|
156
156
|
const binCount = dataView.getInt32(curr, true);
|
|
157
157
|
curr += 4;
|
|
158
158
|
const binIndex = {};
|
|
159
|
+
const loffsets = new Map();
|
|
159
160
|
let pseudoBinStats;
|
|
160
161
|
for (let j = 0; j < binCount; j++) {
|
|
161
162
|
const bin = dataView.getUint32(curr, true);
|
|
@@ -165,7 +166,8 @@ class CSI extends indexFile_ts_1.default {
|
|
|
165
166
|
curr += 28 + 16;
|
|
166
167
|
}
|
|
167
168
|
else {
|
|
168
|
-
|
|
169
|
+
loffsets.set(bin, (0, virtualOffset_ts_1.fromBytes)(bytes, curr));
|
|
170
|
+
curr += 8;
|
|
169
171
|
const chunkCount = dataView.getInt32(curr, true);
|
|
170
172
|
curr += 4;
|
|
171
173
|
const chunks = new Array(chunkCount);
|
|
@@ -182,6 +184,7 @@ class CSI extends indexFile_ts_1.default {
|
|
|
182
184
|
(0, util_ts_1.clampChunkEnds)(Object.values(binIndex).flat());
|
|
183
185
|
return {
|
|
184
186
|
binIndex,
|
|
187
|
+
loffsets,
|
|
185
188
|
stats: pseudoBinStats,
|
|
186
189
|
};
|
|
187
190
|
}
|
|
@@ -193,11 +196,25 @@ class CSI extends indexFile_ts_1.default {
|
|
|
193
196
|
...aux,
|
|
194
197
|
};
|
|
195
198
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
+
/**
|
|
200
|
+
* CSI has no linear index, but each bin's `loffset` is the linear-index entry
|
|
201
|
+
* at the bin's first window (htslib's `update_loff`), so the finest bin at or
|
|
202
|
+
* left of `min` bounds the query from below the way BAI's linear index does.
|
|
203
|
+
* Walks left through siblings and then up to the parent, as `hts_itr_query`
|
|
204
|
+
* does for CSI.
|
|
205
|
+
*/
|
|
206
|
+
getLowestChunk(refIndex, min) {
|
|
207
|
+
const { loffsets } = refIndex;
|
|
208
|
+
const leaves = 8 ** this.depth;
|
|
209
|
+
let bin = (leaves - 1) / 7 +
|
|
210
|
+
Math.min(Math.floor(min / 2 ** this.minShift), leaves - 1);
|
|
211
|
+
while (bin > 0 && !loffsets.has(bin)) {
|
|
212
|
+
const parent = Math.floor((bin - 1) / 8);
|
|
213
|
+
bin = bin > parent * 8 + 1 ? bin - 1 : parent;
|
|
214
|
+
}
|
|
215
|
+
return loffsets.get(bin) ?? ZERO_OFFSET;
|
|
199
216
|
}
|
|
200
|
-
//
|
|
217
|
+
// No linear index means nothing to forecast the far end of a query with, so
|
|
201
218
|
// estimatedBytesForRegions keeps summing every chunk on a CSI-indexed file.
|
|
202
219
|
getHighestChunk() {
|
|
203
220
|
return undefined;
|
package/dist/csi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA6C;AAE7C,0DAA8B;AAC9B,+DAA0D;AAC1D,uCAKkB;AAClB,yDAA6D;
|
|
1
|
+
{"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA6C;AAE7C,0DAA8B;AAC9B,+DAA0D;AAC1D,uCAKkB;AAClB,yDAA6D;AAK7D,MAAM,UAAU,GAAG,QAAQ,CAAA,CAAC,QAAQ;AACpC,MAAM,UAAU,GAAG,QAAQ,CAAA,CAAC,QAAQ;AAEpC,MAAM,WAAW,GAAG,IAAI,gCAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAE3C,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAA;AACxB,CAAC;AACD,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;AACpC,CAAC;AAUD,MAAqB,GAAI,SAAQ,sBAAoB;IAC3C,YAAY,GAAG,CAAC,CAAA;IACd,KAAK,GAAG,CAAC,CAAA;IACT,QAAQ,GAAG,CAAC,CAAA;IAEtB,uEAAuE;IACvE,iEAAiE;IACjE,KAAK,CAAC,QAAQ;QACZ,OAAO,EAAE,CAAA;IACX,CAAC;IAED,YAAY,CAAC,KAAiB,EAAE,MAAc;QAC5C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,CACjB,CAAA;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACpD,MAAM,cAAc,GAClB,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAA;QACnE,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAA;QACrE,CAAC;QACD,MAAM,aAAa,GAAG;YACpB,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;YACxC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;YAC1C,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC;SAC1C,CAAA;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;QACtD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;QAE9D,OAAO;YACL,aAAa;YACb,cAAc;YACd,SAAS;YACT,QAAQ;YACR,SAAS;YACT,MAAM;YACN,WAAW;YACX,GAAG,IAAA,wBAAc,EACf,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,iBAAiB,CAAC,EAC5D,IAAI,CAAC,YAAY,CAClB;SACF,CAAA;IACH,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAc;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAK,EAAC,MAAM,CAAC,CAAA;QAEjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,CACjB,CAAA;QACD,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACzC,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACjD,oDAAoD;YACpD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7C,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,wEAAwE;QACxE,uEAAuE;QACvE,+DAA+D;QAC/D,EAAE;QACF,iEAAiE;QACjE,yEAAyE;QACzE,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,iEAAiE;QACjE,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,CAAA;QAExD,mEAAmE;QACnE,+CAA+C;QAC/C,IAAI,IAAI,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC,CAAA;QAC7B,IAAI,aAAwC,CAAA;QAC5C,MAAM,OAAO,GAAG,EAAc,CAAA;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC9C,IAAI,IAAI,CAAC,CAAA;YACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBAC1C,IAAI,IAAI,CAAC,CAAA;gBACT,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC5B,IAAI,IAAI,EAAE,GAAG,EAAE,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,iEAAiE;oBACjE,oEAAoE;oBACpE,uCAAuC;oBACvC,aAAa,GAAG,IAAA,0BAAgB,EAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,CAAA;oBAC/D,IAAI,IAAI,CAAC,CAAA,CAAC,UAAU;oBACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;oBAChD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAA;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS,UAAU,CAAC,KAAa;YAC/B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,oBAAoB;YACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC9C,IAAI,IAAI,CAAC,CAAA;YACT,MAAM,QAAQ,GAA4B,EAAE,CAAA;YAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAA;YACjD,IAAI,cAAc,CAAA;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBAC1C,IAAI,IAAI,CAAC,CAAA;gBACT,IAAI,GAAG,GAAG,YAAY,EAAE,CAAC;oBACvB,cAAc,GAAG,IAAA,wBAAc,EAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;oBACjD,IAAI,IAAI,EAAE,GAAG,EAAE,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAA,4BAAS,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;oBACzC,IAAI,IAAI,CAAC,CAAA;oBACT,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;oBAChD,IAAI,IAAI,CAAC,CAAA;oBACT,MAAM,MAAM,GAAG,IAAI,KAAK,CAAQ,UAAU,CAAC,CAAA;oBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvC,MAAM,CAAC,GAAG,IAAA,4BAAS,EAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBAChC,IAAI,IAAI,CAAC,CAAA;wBACT,MAAM,CAAC,GAAG,IAAA,4BAAS,EAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBAChC,IAAI,IAAI,CAAC,CAAA;wBACT,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,kBAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;oBAClC,CAAC;oBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;gBACxB,CAAC;YACH,CAAC;YAED,IAAA,wBAAc,EAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAC9C,OAAO;gBACL,QAAQ;gBACR,QAAQ;gBACR,KAAK,EAAE,cAAc;aACtB,CAAA;QACH,CAAC;QAED,OAAO;YACL,aAAa;YACb,OAAO,EAAE,IAAA,6BAAc,EAAC,UAAU,CAAC;YACnC,QAAQ;YACR,GAAG,EAAE,IAAI;YACT,GAAG,GAAG;SACP,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACO,cAAc,CAAC,QAAqB,EAAE,GAAW;QACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAA;QAC7B,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAA;QAC9B,IAAI,GAAG,GACL,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;QAC5D,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAA;IACzC,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAClE,eAAe;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,gDAAgD;IACtC,QAAQ,CAAC,GAAW,EAAE,GAAW;QACzC,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACpD,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;YACjB,GAAG,GAAG,MAAM,CAAA;QACd,CAAC;QACD,GAAG,IAAI,CAAC,CAAA;QACR,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,4EAA4E;YAC5E,sEAAsE;YACtE,gEAAgE;YAChE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CACb,SAAS,GAAG,IAAI,GAAG,mDAAmD,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,KAAK,0DAA0D,CACnK,CAAA;YACH,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAU,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AArOD,sBAqOC"}
|
package/dist/indexFile.d.ts
CHANGED
|
@@ -19,6 +19,23 @@ export interface ParsedIndexBase<R extends RefIndex = RefIndex> {
|
|
|
19
19
|
indices: (refId: number) => R | undefined;
|
|
20
20
|
}
|
|
21
21
|
export declare function memoizeByRefId<T>(getIndices: (refId: number) => T | undefined, maxSize?: number): (refId: number) => T | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The virtual offset past which a coordinate-sorted file holds nothing
|
|
24
|
+
* overlapping `[.., end)`, from the binning index alone: htslib's `max_off`
|
|
25
|
+
* (`hts_itr_query` in hts.c).
|
|
26
|
+
*
|
|
27
|
+
* Walk right from the finest bin after the one holding `end - 1`, stepping up
|
|
28
|
+
* to the parent at every first child, so each bin visited begins at or past
|
|
29
|
+
* `end` and never overlaps the query. Every record in such a bin starts at or
|
|
30
|
+
* past `end`, so the first chunk of the first bin that exists is a record past
|
|
31
|
+
* the query, and in a sorted file so is every record after it.
|
|
32
|
+
*
|
|
33
|
+
* A bound, unlike the linear-index forecast in `chunksLikelyRead`: it rests on
|
|
34
|
+
* the same sort order `appendInRange` and the early stop already assume, and
|
|
35
|
+
* cannot drop a record they would keep. See ADR 0023 for why the caller drops
|
|
36
|
+
* whole merged chunks with it rather than trimming them.
|
|
37
|
+
*/
|
|
38
|
+
export declare function maxOffset(binIndex: Record<number, Chunk[]>, end: number, minShift: number, depth: number): import("./virtualOffset.ts").Offset | undefined;
|
|
22
39
|
export default abstract class IndexFile<TParsed extends ParsedIndexBase = ParsedIndexBase> {
|
|
23
40
|
filehandle: GenericFilehandle;
|
|
24
41
|
renameRefSeq: (s: string) => string;
|
|
@@ -37,6 +54,8 @@ export default abstract class IndexFile<TParsed extends ParsedIndexBase = Parsed
|
|
|
37
54
|
end: number;
|
|
38
55
|
score: number;
|
|
39
56
|
}[]>;
|
|
57
|
+
protected abstract minShift: number;
|
|
58
|
+
protected abstract depth: number;
|
|
40
59
|
protected abstract reg2bins(min: number, max: number): readonly (readonly [number, number])[];
|
|
41
60
|
protected abstract getLowestChunk(refIndex: RefIndex, min: number): OffsetCoords | undefined;
|
|
42
61
|
protected abstract getHighestChunk(refIndex: RefIndex, max: number): number | undefined;
|
|
@@ -87,7 +106,8 @@ export default abstract class IndexFile<TParsed extends ParsedIndexBase = Parsed
|
|
|
87
106
|
* exists — was being told 5.6x the truth on exactly the windows a reader
|
|
88
107
|
* spends their time in, and cannot answer it by zooming: every window narrower
|
|
89
108
|
* than a linear-index interval resolves to the same chunks and so to the same
|
|
90
|
-
* number.
|
|
109
|
+
* number. The table predates `max_off` (ADR 0023), which now drops most of
|
|
110
|
+
* the gap between the first two columns from `blocksForRange` itself.
|
|
91
111
|
*
|
|
92
112
|
* Still summed over merged chunks rather than per region, so two regions
|
|
93
113
|
* sharing a chunk are charged for it once.
|