@gmod/bam 8.10.0 → 8.11.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 +46 -25
- package/dist/bamFile.d.ts +0 -1
- package/dist/bamFile.js +6 -12
- package/dist/bamFile.js.map +1 -1
- package/dist/htsget.js +2 -35
- package/dist/htsget.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/streamBam.d.ts +101 -0
- package/dist/streamBam.js +227 -0
- package/dist/streamBam.js.map +1 -0
- package/dist/util.d.ts +4 -0
- package/dist/util.js +9 -1
- package/dist/util.js.map +1 -1
- package/esm/bamFile.d.ts +0 -1
- package/esm/bamFile.js +1 -7
- package/esm/bamFile.js.map +1 -1
- package/esm/htsget.js +2 -2
- package/esm/htsget.js.map +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.js +4 -0
- package/esm/index.js.map +1 -1
- package/esm/streamBam.d.ts +101 -0
- package/esm/streamBam.js +221 -0
- package/esm/streamBam.js.map +1 -0
- package/esm/util.d.ts +4 -0
- package/esm/util.js +7 -0
- package/esm/util.js.map +1 -1
- package/package.json +1 -1
- package/src/bamFile.ts +2 -14
- package/src/htsget.ts +7 -2
- package/src/index.ts +6 -0
- package/src/streamBam.ts +344 -0
- package/src/util.ts +17 -0
package/esm/streamBam.js
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { MAX_BGZF_BLOCK_SIZE, scanBgzfBlocks, unzip, } from '@gmod/bgzf-filehandle';
|
|
2
|
+
import BAMFeature from "./record.js";
|
|
3
|
+
import { parseHeaderText } from "./sam.js";
|
|
4
|
+
import { BAM_MAGIC, concatUint8Array, parseRefSeqs, resolveFilehandle, throwIfAborted, } from "./util.js";
|
|
5
|
+
/** compressed bytes per read; ~15 BGZF blocks, so ~8MB decompressed */
|
|
6
|
+
const DEFAULT_WINDOW_SIZE = 1 << 20;
|
|
7
|
+
/**
|
|
8
|
+
* Window reads in flight at once. Four, matching the browser's per-host
|
|
9
|
+
* connection cap of six with room left for whatever else the page is fetching,
|
|
10
|
+
* and holding 4MB of compressed bytes at the default window size.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_READ_AHEAD = 4;
|
|
13
|
+
/**
|
|
14
|
+
* A window's blocks, inflated on the pool when there is one.
|
|
15
|
+
*
|
|
16
|
+
* The pool's own interface is what a window already has to hand: the raw
|
|
17
|
+
* compressed bytes and the {@link scanBgzfBlocks} listing the loop needed
|
|
18
|
+
* anyway to find the window's edge. It splits the blocks across its workers and
|
|
19
|
+
* hands them back individually, which concatenate to exactly what `unzip` of
|
|
20
|
+
* the same range returns — the blocks of a BGZF stream are independent, which
|
|
21
|
+
* is what makes any of this parallel.
|
|
22
|
+
*
|
|
23
|
+
* One block is not worth a round trip, the same threshold `unzipChunkSlice`
|
|
24
|
+
* uses. `pool` being undefined is the ordinary case, not a failure: node has no
|
|
25
|
+
* workers, and `getSharedWorkerPool` resolves to undefined there.
|
|
26
|
+
*/
|
|
27
|
+
async function inflate(compressed, blocks, blocksEnd, pool) {
|
|
28
|
+
if (pool && blocks.length > 1) {
|
|
29
|
+
const { blocks: inflated } = await pool.decompressBlocks(compressed, blocks);
|
|
30
|
+
return concatUint8Array(inflated);
|
|
31
|
+
}
|
|
32
|
+
return unzip(compressed.subarray(0, blocksEnd));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Reads every record in a BAM, in file order, without an index.
|
|
36
|
+
*
|
|
37
|
+
* For BAMs that no index can address: unsorted, or name-sorted as they come off
|
|
38
|
+
* the sequencer. {@link BamFile} answers `chr:start-end` by seeking to the
|
|
39
|
+
* chunks an index names, which a file in neither order has none of.
|
|
40
|
+
*
|
|
41
|
+
* Yields records a batch at a time, one batch per window read, rather than one
|
|
42
|
+
* record per `yield`. A whole-file walk over a 1GB BAM is tens of millions of
|
|
43
|
+
* records, and an async generator pays a promise per yield — batching moves
|
|
44
|
+
* that cost to once per few thousand records and lets the caller's inner loop
|
|
45
|
+
* be synchronous:
|
|
46
|
+
*
|
|
47
|
+
* ```js
|
|
48
|
+
* for await (const records of streamBamRecords({ bamPath: 'reads.bam' })) {
|
|
49
|
+
* for (const record of records) {
|
|
50
|
+
* // ...
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* Deliberately a standalone function and not a `BamFile` method: it shares the
|
|
56
|
+
* record parser and header parser but none of the index, chunk or cache
|
|
57
|
+
* machinery, so a consumer who only streams does not pay for `BAI`/`CSI` in
|
|
58
|
+
* their bundle.
|
|
59
|
+
*
|
|
60
|
+
* Records are views into the window they were decompressed from, as everywhere
|
|
61
|
+
* else in this library. Holding one record from a batch retains that whole
|
|
62
|
+
* window (see {@link StreamBamOptions.windowSize}), so copy out the fields you
|
|
63
|
+
* want rather than keeping a sparse selection of records from a large file.
|
|
64
|
+
*/
|
|
65
|
+
export async function* streamBamRecords({ bamFilehandle, bamPath, bamUrl, recordClass, renameRefSeqs = n => n, signal, onHeader, bgzfWorkerPool, windowSize = DEFAULT_WINDOW_SIZE, readAhead = DEFAULT_READ_AHEAD, }) {
|
|
66
|
+
const bam = resolveFilehandle(bamFilehandle, bamPath, bamUrl);
|
|
67
|
+
if (!bam) {
|
|
68
|
+
throw new Error('no bam source: pass bamFilehandle, bamPath, or bamUrl');
|
|
69
|
+
}
|
|
70
|
+
const RecordClass = (recordClass ?? BAMFeature);
|
|
71
|
+
const readLen = Math.max(windowSize, MAX_BGZF_BLOCK_SIZE);
|
|
72
|
+
const depth = Math.max(1, Math.floor(readAhead));
|
|
73
|
+
let filePosition = 0;
|
|
74
|
+
// trailing bytes of the last window that did not complete a BGZF block, and
|
|
75
|
+
// that did not complete a BAM record, respectively. Both boundaries fall
|
|
76
|
+
// wherever they fall, so each window starts by finishing the last one's
|
|
77
|
+
// remainder.
|
|
78
|
+
let blockCarry;
|
|
79
|
+
let recordCarry;
|
|
80
|
+
let sawHeader = false;
|
|
81
|
+
// 1-based, as readBamFeatures' virtual-offset ids are
|
|
82
|
+
let recordIndex = 0;
|
|
83
|
+
const pool = await bgzfWorkerPool;
|
|
84
|
+
// Several windows are in flight at once, consumed in the order they were
|
|
85
|
+
// asked for. Depth is what makes this worth doing: with one read outstanding
|
|
86
|
+
// the wait for a window can only overlap the CPU spent on the window before
|
|
87
|
+
// it, which is a fraction of a round trip — measured at no gain at all, where
|
|
88
|
+
// depth 4 hides most of the latency instead. See {@link
|
|
89
|
+
// StreamBamOptions.readAhead}.
|
|
90
|
+
const queue = [];
|
|
91
|
+
let nextReadPosition = 0;
|
|
92
|
+
let exhausted = false;
|
|
93
|
+
// Widened to `depth` only once a read has come back full-length, i.e. once
|
|
94
|
+
// the file is known to be longer than one window. Opening at full depth
|
|
95
|
+
// would fetch a BAM smaller than a window in four requests, three of them
|
|
96
|
+
// answered 416, which is the common case for a small file and looks like a
|
|
97
|
+
// bug from the network tab. The ramp costs one round trip of depth on a file
|
|
98
|
+
// big enough to want it, out of however many windows it takes.
|
|
99
|
+
let allowed = 1;
|
|
100
|
+
const topUp = () => {
|
|
101
|
+
while (!exhausted && queue.length < allowed) {
|
|
102
|
+
queue.push(bam.read(readLen, nextReadPosition, { signal }));
|
|
103
|
+
nextReadPosition += readLen;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
// Reads nobody will consume — queued past EOF, or still out when the caller
|
|
107
|
+
// broke out of the loop or a window threw. Each needs its rejection taken,
|
|
108
|
+
// or a failing read that arrives after we have stopped looking surfaces as
|
|
109
|
+
// an unhandled rejection.
|
|
110
|
+
const abandon = () => {
|
|
111
|
+
for (const p of queue.splice(0)) {
|
|
112
|
+
p.catch(() => undefined);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
try {
|
|
116
|
+
topUp();
|
|
117
|
+
while (queue.length > 0) {
|
|
118
|
+
throwIfAborted(signal);
|
|
119
|
+
const read = await queue.shift();
|
|
120
|
+
filePosition += read.length;
|
|
121
|
+
// A short read is the end of the file — the filehandles here return
|
|
122
|
+
// exactly what was asked for until then, and an empty buffer past it.
|
|
123
|
+
// The reads already queued behind it are past EOF; drop them rather than
|
|
124
|
+
// decompressing empty buffers.
|
|
125
|
+
if (read.length < readLen) {
|
|
126
|
+
exhausted = true;
|
|
127
|
+
abandon();
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
allowed = depth;
|
|
131
|
+
}
|
|
132
|
+
topUp();
|
|
133
|
+
const compressed = blockCarry
|
|
134
|
+
? concatUint8Array([blockCarry, read])
|
|
135
|
+
: read;
|
|
136
|
+
if (compressed.length === 0) {
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
const blocks = scanBgzfBlocks(compressed, 0, Number.POSITIVE_INFINITY);
|
|
140
|
+
const last = blocks.at(-1);
|
|
141
|
+
if (!last) {
|
|
142
|
+
throw new Error(`not a BGZF stream: no valid block at byte ${filePosition - compressed.length}`);
|
|
143
|
+
}
|
|
144
|
+
const blocksEnd = last.inputOffset + last.compressedSize;
|
|
145
|
+
// copied, not subarray'd: the remainder is carried across an await, and a
|
|
146
|
+
// view would pin the whole window it came from
|
|
147
|
+
blockCarry =
|
|
148
|
+
blocksEnd < compressed.length ? compressed.slice(blocksEnd) : undefined;
|
|
149
|
+
const decompressed = await inflate(compressed, blocks, blocksEnd, pool);
|
|
150
|
+
const bytes = recordCarry
|
|
151
|
+
? concatUint8Array([recordCarry, decompressed])
|
|
152
|
+
: decompressed;
|
|
153
|
+
const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
154
|
+
let blockStart = 0;
|
|
155
|
+
if (!sawHeader) {
|
|
156
|
+
if (bytes.length < 8 || dataView.getInt32(0, true) !== BAM_MAGIC) {
|
|
157
|
+
throw new Error('not a BAM file: bad magic');
|
|
158
|
+
}
|
|
159
|
+
const lText = dataView.getInt32(4, true);
|
|
160
|
+
const refs = parseRefSeqs(bytes, 8 + lText, renameRefSeqs);
|
|
161
|
+
if (!refs) {
|
|
162
|
+
// a header with enough contigs to span a window: keep the whole thing
|
|
163
|
+
// and try again with more of it
|
|
164
|
+
recordCarry = bytes;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
const headerText = new TextDecoder('utf8').decode(bytes.subarray(8, 8 + lText));
|
|
168
|
+
onHeader?.({
|
|
169
|
+
headerText,
|
|
170
|
+
samHeader: parseHeaderText(headerText),
|
|
171
|
+
chrToIndex: refs.chrToIndex,
|
|
172
|
+
indexToChr: refs.indexToChr,
|
|
173
|
+
});
|
|
174
|
+
sawHeader = true;
|
|
175
|
+
blockStart = refs.end;
|
|
176
|
+
}
|
|
177
|
+
const sink = [];
|
|
178
|
+
while (blockStart + 4 <= bytes.length) {
|
|
179
|
+
const blockSize = dataView.getInt32(blockStart, true);
|
|
180
|
+
const blockEnd = blockStart + 4 + blockSize - 1;
|
|
181
|
+
if (blockEnd >= bytes.length) {
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
sink.push(new RecordClass(bytes, blockStart, blockEnd,
|
|
185
|
+
// An indexed read derives fileOffset from the record's BGZF virtual
|
|
186
|
+
// offset, which nothing here has: there is no index to seek back
|
|
187
|
+
// with. Its ordinal in the file is the other thing that identifies a
|
|
188
|
+
// record by position, and it is the same for a given file whatever
|
|
189
|
+
// the window size, so it is as stable as a virtual offset without
|
|
190
|
+
// pretending to be one.
|
|
191
|
+
//
|
|
192
|
+
// NOT the crc32 of the record bytes that readBamFeatures falls back
|
|
193
|
+
// to when it has no positions. That is a content hash, so the two
|
|
194
|
+
// byte-identical records in exact_duplicate.bam collide on it, and
|
|
195
|
+
// hashing every record costs ~40% of the walk (135ms of 340ms over
|
|
196
|
+
// out.bam) where a counter costs nothing. The fallback only fires on
|
|
197
|
+
// an unusual path there; here it would fire on every record.
|
|
198
|
+
recordIndex++, dataView));
|
|
199
|
+
blockStart = blockEnd + 1;
|
|
200
|
+
}
|
|
201
|
+
recordCarry =
|
|
202
|
+
blockStart < bytes.length ? bytes.slice(blockStart) : undefined;
|
|
203
|
+
if (sink.length > 0) {
|
|
204
|
+
yield sink;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
abandon();
|
|
210
|
+
}
|
|
211
|
+
if (!sawHeader) {
|
|
212
|
+
throw new Error('Insufficient data for reference sequences');
|
|
213
|
+
}
|
|
214
|
+
if (blockCarry !== undefined) {
|
|
215
|
+
throw new Error(`truncated BAM: ${blockCarry.length} trailing bytes are not a complete BGZF block`);
|
|
216
|
+
}
|
|
217
|
+
if (recordCarry !== undefined) {
|
|
218
|
+
throw new Error(`truncated BAM: ${recordCarry.length} bytes left after the last complete record`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=streamBam.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamBam.js","sourceRoot":"","sources":["../src/streamBam.ts"],"names":[],"mappings":"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"}
|
package/esm/util.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import Chunk from './chunk.ts';
|
|
2
2
|
import { VirtualOffset } from './virtualOffset.ts';
|
|
3
3
|
import type { OffsetCoords } from './virtualOffset.ts';
|
|
4
|
+
import type { GenericFilehandle } from 'generic-filehandle2';
|
|
5
|
+
/** 'BAM\1' read as a little-endian int32 */
|
|
6
|
+
export declare const BAM_MAGIC = 21840194;
|
|
7
|
+
export declare function resolveFilehandle(filehandle?: GenericFilehandle, path?: string, url?: string): GenericFilehandle | undefined;
|
|
4
8
|
export interface BamOpts {
|
|
5
9
|
viewAsPairs?: boolean;
|
|
6
10
|
pairAcrossChr?: boolean;
|
package/esm/util.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import { LocalFile, RemoteFile } from 'generic-filehandle2';
|
|
1
2
|
import Chunk from "./chunk.js";
|
|
2
3
|
import { VirtualOffset } from "./virtualOffset.js";
|
|
4
|
+
/** 'BAM\1' read as a little-endian int32 */
|
|
5
|
+
export const BAM_MAGIC = 21840194;
|
|
6
|
+
export function resolveFilehandle(filehandle, path, url) {
|
|
7
|
+
return (filehandle ??
|
|
8
|
+
(path ? new LocalFile(path) : url ? new RemoteFile(url) : undefined));
|
|
9
|
+
}
|
|
3
10
|
// Re-exported so the internal import path stays './util.ts'. The
|
|
4
11
|
// implementation moved to @gmod/shared-read-cache, which needs it anyway --
|
|
5
12
|
// every consumer of that package was carrying an identical copy.
|
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
package/src/bamFile.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { unzip, unzipChunkSlice } from '@gmod/bgzf-filehandle'
|
|
2
2
|
import { SharedReadCache } from '@gmod/shared-read-cache'
|
|
3
3
|
import crc32 from 'crc/calculators/crc32'
|
|
4
|
-
import { LocalFile, RemoteFile } from 'generic-filehandle2'
|
|
5
4
|
|
|
6
5
|
import BAI from './bai.ts'
|
|
7
6
|
import CSI from './csi.ts'
|
|
@@ -10,9 +9,11 @@ import BAMFeature from './record.ts'
|
|
|
10
9
|
import { packReference, referenceCovers } from './reference.ts'
|
|
11
10
|
import { parseHeaderText } from './sam.ts'
|
|
12
11
|
import {
|
|
12
|
+
BAM_MAGIC,
|
|
13
13
|
MAX_CONCURRENT_CHUNK_READS,
|
|
14
14
|
appendInRange,
|
|
15
15
|
parseRefSeqs,
|
|
16
|
+
resolveFilehandle,
|
|
16
17
|
throwIfAborted,
|
|
17
18
|
} from './util.ts'
|
|
18
19
|
|
|
@@ -77,8 +78,6 @@ export type BamRecordClass<T extends BamRecordLike = BAMFeature> = new (
|
|
|
77
78
|
dataView: DataView,
|
|
78
79
|
) => T
|
|
79
80
|
|
|
80
|
-
export const BAM_MAGIC = 21840194
|
|
81
|
-
|
|
82
81
|
const blockLen = 1 << 16
|
|
83
82
|
|
|
84
83
|
// Ceiling on GROWING the header read. A million contigs is roughly 10MB of
|
|
@@ -90,17 +89,6 @@ const blockLen = 1 << 16
|
|
|
90
89
|
// exact read. See getHeaderPre.
|
|
91
90
|
const maxHeaderReadLen = 32 * 1024 * 1024
|
|
92
91
|
|
|
93
|
-
function resolveFilehandle(
|
|
94
|
-
filehandle?: GenericFilehandle,
|
|
95
|
-
path?: string,
|
|
96
|
-
url?: string,
|
|
97
|
-
) {
|
|
98
|
-
return (
|
|
99
|
-
filehandle ??
|
|
100
|
-
(path ? new LocalFile(path) : url ? new RemoteFile(url) : undefined)
|
|
101
|
-
)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
92
|
interface ChunkEntry<T> {
|
|
105
93
|
// decompressed size of the chunk these features are views into
|
|
106
94
|
bytes: number
|
package/src/htsget.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { unzip } from '@gmod/bgzf-filehandle'
|
|
2
2
|
|
|
3
|
-
import BamFile
|
|
3
|
+
import BamFile from './bamFile.ts'
|
|
4
4
|
import Chunk from './chunk.ts'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
BAM_MAGIC,
|
|
7
|
+
appendInRange,
|
|
8
|
+
concatUint8Array,
|
|
9
|
+
parseRefSeqs,
|
|
10
|
+
} from './util.ts'
|
|
6
11
|
import { VirtualOffset } from './virtualOffset.ts'
|
|
7
12
|
|
|
8
13
|
import type {
|
package/src/index.ts
CHANGED
|
@@ -8,6 +8,12 @@ export { default as CSI } from './csi.ts'
|
|
|
8
8
|
export { default as BamRecord } from './record.ts'
|
|
9
9
|
export { default as HtsgetFile } from './htsget.ts'
|
|
10
10
|
|
|
11
|
+
// The index-free whole-file walk, for BAMs an index cannot address. Kept out of
|
|
12
|
+
// BamFile so that streaming it does not drag BAI/CSI and the chunk cache into a
|
|
13
|
+
// consumer's bundle.
|
|
14
|
+
export { streamBamRecords } from './streamBam.ts'
|
|
15
|
+
export type { BamStreamHeader, StreamBamOptions } from './streamBam.ts'
|
|
16
|
+
|
|
11
17
|
// The mismatch walk, and the codes it reports differences as. The walk is
|
|
12
18
|
// exported alongside `record.forEachMismatch` for callers holding BAM's packed
|
|
13
19
|
// arrays without a record around them — a SAM parser, or a worker that was
|