@gmod/bbi 9.0.9 → 9.0.12
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 +70 -12
- package/dist/array-feature-view.d.ts +5 -6
- package/dist/array-feature-view.js +7 -13
- package/dist/array-feature-view.js.map +1 -1
- package/dist/bbi.js +22 -37
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +1 -2
- package/dist/bigbed.js +24 -36
- package/dist/bigbed.js.map +1 -1
- package/dist/bigwig.js +1 -1
- package/dist/bigwig.js.map +1 -1
- package/dist/block-view.d.ts +1 -1
- package/dist/block-view.js +135 -97
- package/dist/block-view.js.map +1 -1
- package/dist/range.js +4 -1
- package/dist/range.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/unzip.d.ts +2 -12
- package/dist/unzip.js +7 -15
- package/dist/unzip.js.map +1 -1
- package/dist/util.d.ts +3 -2
- package/dist/util.js +13 -1
- package/dist/util.js.map +1 -1
- package/dist/wasm/inflate-wasm-inlined.d.ts +21 -18
- package/dist/wasm/inflate-wasm-inlined.js +146 -74
- package/dist/wasm/package.json +1 -0
- package/esm/array-feature-view.d.ts +5 -6
- package/esm/array-feature-view.js +7 -13
- package/esm/array-feature-view.js.map +1 -1
- package/esm/bbi.js +19 -34
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +1 -2
- package/esm/bigbed.js +22 -31
- package/esm/bigbed.js.map +1 -1
- package/esm/bigwig.js +1 -1
- package/esm/bigwig.js.map +1 -1
- package/esm/block-view.d.ts +1 -1
- package/esm/block-view.js +136 -98
- package/esm/block-view.js.map +1 -1
- package/esm/range.js +4 -1
- package/esm/range.js.map +1 -1
- package/esm/types.d.ts +0 -1
- package/esm/unzip.d.ts +2 -12
- package/esm/unzip.js +7 -15
- package/esm/unzip.js.map +1 -1
- package/esm/util.d.ts +3 -2
- package/esm/util.js +11 -1
- package/esm/util.js.map +1 -1
- package/esm/wasm/inflate-wasm-inlined.d.ts +21 -18
- package/esm/wasm/inflate-wasm-inlined.js +145 -67
- package/package.json +23 -22
- package/src/array-feature-view.ts +15 -26
- package/src/bbi.ts +20 -36
- package/src/bigbed.ts +22 -38
- package/src/bigwig.ts +2 -2
- package/src/block-view.ts +189 -122
- package/src/range.ts +4 -3
- package/src/types.ts +0 -1
- package/src/unzip.ts +11 -24
- package/src/util.ts +21 -2
- package/src/wasm/inflate-wasm-inlined.d.ts +21 -0
- package/src/wasm/inflate-wasm-inlined.js +150 -170
- package/src/wasm/inflate_wasm.js +1 -1
- package/src/wasm/inflate_wasm_bg.js +2 -3
- package/src/wasm/inflate_wasm_bg.wasm +0 -0
- package/dist/wasm/inflate-wasm-inlined.js.map +0 -1
- package/dist/wasm/inflate_wasm.d.ts +0 -1
- package/dist/wasm/inflate_wasm.js +0 -49
- package/dist/wasm/inflate_wasm.js.map +0 -1
- package/dist/wasm/inflate_wasm_bg.d.ts +0 -68
- package/dist/wasm/inflate_wasm_bg.js +0 -306
- package/dist/wasm/inflate_wasm_bg.js.map +0 -1
- package/esm/wasm/inflate-wasm-inlined.js.map +0 -1
- package/esm/wasm/inflate_wasm.d.ts +0 -1
- package/esm/wasm/inflate_wasm.js +0 -6
- package/esm/wasm/inflate_wasm.js.map +0 -1
- package/esm/wasm/inflate_wasm_bg.d.ts +0 -68
- package/esm/wasm/inflate_wasm_bg.js +0 -295
- package/esm/wasm/inflate_wasm_bg.js.map +0 -1
- package/src/wasm/inflate_wasm_bg.wasm.d.ts +0 -13
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ See the [example](./example/) folder for a complete working demo.
|
|
|
75
75
|
Accepts an object containing either
|
|
76
76
|
|
|
77
77
|
- path - path to a local file
|
|
78
|
-
- url -
|
|
78
|
+
- url - URL of a remote file
|
|
79
79
|
- filehandle - a filehandle instance that you can implement as a custom class
|
|
80
80
|
yourself. path and url are based on
|
|
81
81
|
https://www.npmjs.com/package/generic-filehandle2 but by implementing a class
|
|
@@ -94,7 +94,7 @@ Accepts an object containing either
|
|
|
94
94
|
zoom level that is returned is the one which has reductionLevel<=2/opts.scale
|
|
95
95
|
(reductionLevel is a property of the zoom level structure in the bigwig file
|
|
96
96
|
data)
|
|
97
|
-
- opts.
|
|
97
|
+
- opts.basesPerSpan - optional, inverse of opts.scale (bp per pixel)
|
|
98
98
|
- opts.signal - optional, an AbortSignal to halt processing
|
|
99
99
|
|
|
100
100
|
Returns a promise to an array of features. If an incorrect refName or no
|
|
@@ -105,8 +105,8 @@ Example:
|
|
|
105
105
|
```typescript
|
|
106
106
|
const feats = await bigwig.getFeatures('chr1', 0, 100)
|
|
107
107
|
// returns array of features with start, end, score
|
|
108
|
-
// coordinates on returned data are
|
|
109
|
-
// no conversion to 1-based as in wig is done
|
|
108
|
+
// coordinates on returned data are 0-based half open
|
|
109
|
+
// no conversion to 1-based as in wig is done
|
|
110
110
|
// note refseq is not returned on the object, it is clearly chr1 from the query though
|
|
111
111
|
```
|
|
112
112
|
|
|
@@ -116,13 +116,17 @@ Here is what the reductionLevel structure looks like in a file. The zoomLevel
|
|
|
116
116
|
that is chosen is the first reductionLevel<2\*opts.basesPerScale (or
|
|
117
117
|
reductionLevel<2/opts.scale) when scanning backwards through this list
|
|
118
118
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
```json
|
|
120
|
+
[
|
|
121
|
+
{ "reductionLevel": 40 },
|
|
122
|
+
{ "reductionLevel": 160 },
|
|
123
|
+
{ "reductionLevel": 640 },
|
|
124
|
+
{ "reductionLevel": 2560 },
|
|
125
|
+
{ "reductionLevel": 10240 },
|
|
126
|
+
{ "reductionLevel": 40960 },
|
|
127
|
+
{ "reductionLevel": 163840 }
|
|
128
|
+
]
|
|
129
|
+
```
|
|
126
130
|
|
|
127
131
|
#### getFeaturesAsArrays(refName, start, end, opts)
|
|
128
132
|
|
|
@@ -199,7 +203,7 @@ they exist.
|
|
|
199
203
|
- opts.signal - optional, an AbortSignal to halt processing
|
|
200
204
|
|
|
201
205
|
returns a promise to an array of features. no concept of zoom levels is used
|
|
202
|
-
with
|
|
206
|
+
with bigbed data
|
|
203
207
|
|
|
204
208
|
#### searchExtraIndex(name, opts)
|
|
205
209
|
|
|
@@ -273,6 +277,60 @@ Features after parsing with @gmod/bed:
|
|
|
273
277
|
}
|
|
274
278
|
```
|
|
275
279
|
|
|
280
|
+
### parseBigWig(bigwig, opts)
|
|
281
|
+
|
|
282
|
+
A convenience function that reads all features from every chromosome in a BigWig
|
|
283
|
+
file, returning non-empty base-resolution results only (no zoom levels).
|
|
284
|
+
|
|
285
|
+
- bigwig - a `BigWig` instance
|
|
286
|
+
- opts - optional `RequestOptions` (e.g. `opts.signal` for abort)
|
|
287
|
+
|
|
288
|
+
Returns a `Promise<BigWigFeatureArrays[]>`, one entry per chromosome that has
|
|
289
|
+
data.
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
import { BigWig, parseBigWig } from '@gmod/bbi'
|
|
293
|
+
|
|
294
|
+
const file = new BigWig({ path: 'volvox.bw' })
|
|
295
|
+
const results = await parseBigWig(file)
|
|
296
|
+
for (const { starts, ends, scores } of results) {
|
|
297
|
+
for (let i = 0; i < starts.length; i++) {
|
|
298
|
+
console.log(starts[i], ends[i], scores[i])
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### ArrayFeatureView / BigWigFeature
|
|
304
|
+
|
|
305
|
+
`ArrayFeatureView` wraps a `BigWigFeatureArrays` or `SummaryFeatureArrays`
|
|
306
|
+
result and exposes a JBrowse-compatible `Feature`-style interface.
|
|
307
|
+
`BigWigFeature` is a single-feature view into an `ArrayFeatureView`.
|
|
308
|
+
|
|
309
|
+
```typescript
|
|
310
|
+
import { BigWig, ArrayFeatureView } from '@gmod/bbi'
|
|
311
|
+
|
|
312
|
+
const file = new BigWig({ path: 'volvox.bw' })
|
|
313
|
+
const arrays = await file.getFeaturesAsArrays('chr1', 0, 100000)
|
|
314
|
+
const view = new ArrayFeatureView(arrays, 'mySource', 'chr1')
|
|
315
|
+
|
|
316
|
+
for (let i = 0; i < view.length; i++) {
|
|
317
|
+
console.log(view.start(i), view.end(i), view.score(i))
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
`BigWigFeature` instances are also iterable via `view.get(i, key)` and expose a
|
|
322
|
+
`toJSON()` method. Keys: `start`, `end`, `score`, `refName`, `source`,
|
|
323
|
+
`summary`, `minScore`, `maxScore`.
|
|
324
|
+
|
|
325
|
+
## Publishing
|
|
326
|
+
|
|
327
|
+
[Trusted publishing](https://docs.npmjs.com/about-trusted-publishing) via GitHub
|
|
328
|
+
Actions.
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
pnpm version patch # or minor/major
|
|
332
|
+
```
|
|
333
|
+
|
|
276
334
|
## Academic Use
|
|
277
335
|
|
|
278
336
|
This package was written with funding from the [NHGRI](http://genome.gov) as
|
|
@@ -7,7 +7,7 @@ export declare class BigWigFeature {
|
|
|
7
7
|
get(key: 'start' | 'end' | 'score'): number;
|
|
8
8
|
get(key: 'minScore' | 'maxScore'): number | undefined;
|
|
9
9
|
get(key: 'summary'): boolean;
|
|
10
|
-
get(key: string):
|
|
10
|
+
get(key: string): string | number | boolean | undefined;
|
|
11
11
|
id(): string;
|
|
12
12
|
toJSON(): {
|
|
13
13
|
start: number;
|
|
@@ -28,12 +28,10 @@ export declare class ArrayFeatureView {
|
|
|
28
28
|
readonly minScores: Float32Array | undefined;
|
|
29
29
|
readonly maxScores: Float32Array | undefined;
|
|
30
30
|
readonly isSummary: boolean;
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
readonly source: string;
|
|
32
|
+
readonly refName: string;
|
|
33
33
|
constructor(arrays: BigWigFeatureArrays | SummaryFeatureArrays, source: string, refName: string);
|
|
34
34
|
get length(): number;
|
|
35
|
-
get source(): string;
|
|
36
|
-
get refName(): string;
|
|
37
35
|
start(i: number): number;
|
|
38
36
|
end(i: number): number;
|
|
39
37
|
score(i: number): number;
|
|
@@ -41,7 +39,8 @@ export declare class ArrayFeatureView {
|
|
|
41
39
|
maxScore(i: number): number | undefined;
|
|
42
40
|
id(i: number): string;
|
|
43
41
|
get(i: number, key: 'refName' | 'source'): string;
|
|
44
|
-
get(i: number, key: 'start' | 'end' | 'score'
|
|
42
|
+
get(i: number, key: 'start' | 'end' | 'score'): number;
|
|
43
|
+
get(i: number, key: 'minScore' | 'maxScore'): number | undefined;
|
|
45
44
|
get(i: number, key: 'summary'): boolean;
|
|
46
45
|
get(i: number, key: string): string | number | boolean | undefined;
|
|
47
46
|
}
|
|
@@ -37,8 +37,8 @@ class ArrayFeatureView {
|
|
|
37
37
|
minScores;
|
|
38
38
|
maxScores;
|
|
39
39
|
isSummary;
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
source;
|
|
41
|
+
refName;
|
|
42
42
|
constructor(arrays, source, refName) {
|
|
43
43
|
this.starts = arrays.starts;
|
|
44
44
|
this.ends = arrays.ends;
|
|
@@ -46,18 +46,12 @@ class ArrayFeatureView {
|
|
|
46
46
|
this.isSummary = arrays.isSummary;
|
|
47
47
|
this.minScores = arrays.isSummary ? arrays.minScores : undefined;
|
|
48
48
|
this.maxScores = arrays.isSummary ? arrays.maxScores : undefined;
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
49
|
+
this.source = source;
|
|
50
|
+
this.refName = refName;
|
|
51
51
|
}
|
|
52
52
|
get length() {
|
|
53
53
|
return this.starts.length;
|
|
54
54
|
}
|
|
55
|
-
get source() {
|
|
56
|
-
return this._source;
|
|
57
|
-
}
|
|
58
|
-
get refName() {
|
|
59
|
-
return this._refName;
|
|
60
|
-
}
|
|
61
55
|
start(i) {
|
|
62
56
|
return this.starts[i];
|
|
63
57
|
}
|
|
@@ -74,7 +68,7 @@ class ArrayFeatureView {
|
|
|
74
68
|
return this.maxScores?.[i];
|
|
75
69
|
}
|
|
76
70
|
id(i) {
|
|
77
|
-
return `${this.
|
|
71
|
+
return `${this.source}:${this.refName}:${this.starts[i]}-${this.ends[i]}`;
|
|
78
72
|
}
|
|
79
73
|
get(i, key) {
|
|
80
74
|
switch (key) {
|
|
@@ -85,9 +79,9 @@ class ArrayFeatureView {
|
|
|
85
79
|
case 'score':
|
|
86
80
|
return this.scores[i];
|
|
87
81
|
case 'refName':
|
|
88
|
-
return this.
|
|
82
|
+
return this.refName;
|
|
89
83
|
case 'source':
|
|
90
|
-
return this.
|
|
84
|
+
return this.source;
|
|
91
85
|
case 'minScore':
|
|
92
86
|
return this.minScores?.[i];
|
|
93
87
|
case 'maxScore':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-feature-view.js","sourceRoot":"","sources":["../src/array-feature-view.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAEd;IACA;IAFV,YACU,IAAsB,EACtB,CAAS;QADT,SAAI,GAAJ,IAAI,CAAkB;QACtB,MAAC,GAAD,CAAC,CAAQ;IAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"array-feature-view.js","sourceRoot":"","sources":["../src/array-feature-view.ts"],"names":[],"mappings":"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"}
|
package/dist/bbi.js
CHANGED
|
@@ -3,12 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BBI = void 0;
|
|
4
4
|
const generic_filehandle2_1 = require("generic-filehandle2");
|
|
5
5
|
const block_view_ts_1 = require("./block-view.js");
|
|
6
|
+
const util_ts_1 = require("./util.js");
|
|
6
7
|
const BIG_WIG_MAGIC = -2003829722;
|
|
7
8
|
const BIG_BED_MAGIC = -2021002517;
|
|
8
9
|
const decoder = new TextDecoder('utf8');
|
|
9
|
-
function getDataView(buffer) {
|
|
10
|
-
return new DataView(buffer.buffer, buffer.byteOffset, buffer.length);
|
|
11
|
-
}
|
|
12
10
|
class BBI {
|
|
13
11
|
bbi;
|
|
14
12
|
headerP;
|
|
@@ -58,7 +56,7 @@ class BBI {
|
|
|
58
56
|
}
|
|
59
57
|
async _getMainHeader(opts, requestSize = 2000) {
|
|
60
58
|
const b = await this.bbi.read(requestSize, 0, opts);
|
|
61
|
-
const dataView = getDataView(b);
|
|
59
|
+
const dataView = (0, util_ts_1.getDataView)(b);
|
|
62
60
|
let offset = 0;
|
|
63
61
|
const magic = dataView.getInt32(offset, true);
|
|
64
62
|
offset += 4;
|
|
@@ -92,15 +90,13 @@ class BBI {
|
|
|
92
90
|
for (let i = 0; i < numZoomLevels; i++) {
|
|
93
91
|
const reductionLevel = dataView.getUint32(offset, true);
|
|
94
92
|
offset += 4;
|
|
95
|
-
|
|
96
|
-
offset += 4;
|
|
93
|
+
offset += 4; // reserved
|
|
97
94
|
const dataOffset = Number(dataView.getBigUint64(offset, true));
|
|
98
95
|
offset += 8;
|
|
99
96
|
const indexOffset = Number(dataView.getBigUint64(offset, true));
|
|
100
97
|
offset += 8;
|
|
101
98
|
zoomLevels.push({
|
|
102
99
|
reductionLevel,
|
|
103
|
-
reserved,
|
|
104
100
|
dataOffset,
|
|
105
101
|
indexOffset,
|
|
106
102
|
});
|
|
@@ -113,29 +109,24 @@ class BBI {
|
|
|
113
109
|
}
|
|
114
110
|
let totalSummary;
|
|
115
111
|
if (totalSummaryOffset) {
|
|
116
|
-
const
|
|
117
|
-
let offset = 0;
|
|
118
|
-
const dataView = getDataView(b2);
|
|
119
|
-
const basesCovered = Number(dataView.getBigUint64(offset, true));
|
|
120
|
-
offset += 8;
|
|
121
|
-
const scoreMin = dataView.getFloat64(offset, true);
|
|
122
|
-
offset += 8;
|
|
123
|
-
const scoreMax = dataView.getFloat64(offset, true);
|
|
124
|
-
offset += 8;
|
|
125
|
-
const scoreSum = dataView.getFloat64(offset, true);
|
|
126
|
-
offset += 8;
|
|
127
|
-
const scoreSumSquares = dataView.getFloat64(offset, true);
|
|
112
|
+
const summaryView = (0, util_ts_1.getDataView)(b, totalSummaryOffset);
|
|
128
113
|
totalSummary = {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
114
|
+
basesCovered: Number(summaryView.getBigUint64(0, true)),
|
|
115
|
+
scoreMin: summaryView.getFloat64(8, true),
|
|
116
|
+
scoreMax: summaryView.getFloat64(16, true),
|
|
117
|
+
scoreSum: summaryView.getFloat64(24, true),
|
|
118
|
+
scoreSumSquares: summaryView.getFloat64(32, true),
|
|
134
119
|
};
|
|
135
120
|
}
|
|
136
121
|
else {
|
|
137
122
|
throw new Error('no stats');
|
|
138
123
|
}
|
|
124
|
+
let autoSql = '';
|
|
125
|
+
if (asOffset) {
|
|
126
|
+
const nullPos = b.indexOf(0, asOffset);
|
|
127
|
+
const end = nullPos === -1 ? b.length : nullPos;
|
|
128
|
+
autoSql = decoder.decode(b.subarray(asOffset, end));
|
|
129
|
+
}
|
|
139
130
|
return {
|
|
140
131
|
zoomLevels,
|
|
141
132
|
magic,
|
|
@@ -152,9 +143,7 @@ class BBI {
|
|
|
152
143
|
unzoomedIndexOffset,
|
|
153
144
|
fileType,
|
|
154
145
|
version,
|
|
155
|
-
autoSql
|
|
156
|
-
? decoder.decode(b.subarray(asOffset, b.indexOf(0, asOffset)))
|
|
157
|
-
: '',
|
|
146
|
+
autoSql,
|
|
158
147
|
};
|
|
159
148
|
}
|
|
160
149
|
// Reads the B+ tree that maps chromosome names to integer IDs
|
|
@@ -164,25 +153,21 @@ class BBI {
|
|
|
164
153
|
const refsByNumber = [];
|
|
165
154
|
const refsByName = {};
|
|
166
155
|
const chromosomeTreeOffset = header.chromosomeTreeOffset;
|
|
167
|
-
const dataView = getDataView(await this.bbi.read(32, chromosomeTreeOffset, opts));
|
|
156
|
+
const dataView = (0, util_ts_1.getDataView)(await this.bbi.read(32, chromosomeTreeOffset, opts));
|
|
168
157
|
const keySize = dataView.getUint32(8, true);
|
|
169
158
|
const valSize = dataView.getUint32(12, true);
|
|
170
159
|
// Recursively traverses the B+ tree to populate chromosome name-to-ID mappings
|
|
171
160
|
const readBPlusTreeNode = async (currentOffset) => {
|
|
172
|
-
const header = getDataView(await this.bbi.read(4, currentOffset));
|
|
161
|
+
const header = (0, util_ts_1.getDataView)(await this.bbi.read(4, currentOffset, opts));
|
|
173
162
|
const isLeafNode = header.getUint8(0);
|
|
174
163
|
const count = header.getUint16(2, true);
|
|
175
164
|
// Leaf nodes contain the actual chromosome name-to-ID mappings
|
|
176
165
|
if (isLeafNode) {
|
|
177
|
-
const b = await this.bbi.read(count * (keySize + valSize), currentOffset + 4);
|
|
178
|
-
const dataView = getDataView(b);
|
|
166
|
+
const b = await this.bbi.read(count * (keySize + valSize), currentOffset + 4, opts);
|
|
167
|
+
const dataView = (0, util_ts_1.getDataView)(b);
|
|
179
168
|
let offset = 0;
|
|
180
169
|
for (let n = 0; n < count; n++) {
|
|
181
|
-
const
|
|
182
|
-
const effectiveKeyEnd = keyEnd !== -1 && keyEnd < offset + keySize
|
|
183
|
-
? keyEnd
|
|
184
|
-
: offset + keySize;
|
|
185
|
-
const key = decoder.decode(b.subarray(offset, effectiveKeyEnd));
|
|
170
|
+
const key = (0, util_ts_1.parseKey)(b, offset, keySize);
|
|
186
171
|
offset += keySize;
|
|
187
172
|
const refId = dataView.getUint32(offset, true);
|
|
188
173
|
offset += 4;
|
|
@@ -194,7 +179,7 @@ class BBI {
|
|
|
194
179
|
}
|
|
195
180
|
else {
|
|
196
181
|
// Non-leaf nodes contain pointers to child nodes
|
|
197
|
-
const dataView = getDataView(await this.bbi.read(count * (keySize + 8), currentOffset + 4));
|
|
182
|
+
const dataView = (0, util_ts_1.getDataView)(await this.bbi.read(count * (keySize + 8), currentOffset + 4, opts));
|
|
198
183
|
const nextNodes = [];
|
|
199
184
|
let offset = 0;
|
|
200
185
|
for (let n = 0; n < count; n++) {
|
package/dist/bbi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":";;;AAAA,6DAA2D;AAE3D,mDAA2C;
|
|
1
|
+
{"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"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"}
|
package/dist/bigbed.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import AbortablePromiseCache from '@gmod/abortable-promise-cache';
|
|
2
1
|
import { BBI } from './bbi.ts';
|
|
3
2
|
import type { RequestOptions } from './types.ts';
|
|
4
3
|
interface Index {
|
|
@@ -8,7 +7,7 @@ interface Index {
|
|
|
8
7
|
field: number;
|
|
9
8
|
}
|
|
10
9
|
export declare class BigBed extends BBI {
|
|
11
|
-
|
|
10
|
+
private indicesP?;
|
|
12
11
|
readIndices(opts?: RequestOptions): Promise<Index[]>;
|
|
13
12
|
protected getView(_scale: number, opts?: RequestOptions): Promise<import("./block-view.ts").BlockView>;
|
|
14
13
|
private _readIndices;
|
package/dist/bigbed.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.BigBed = void 0;
|
|
7
|
-
const abortable_promise_cache_1 = __importDefault(require("@gmod/abortable-promise-cache"));
|
|
8
|
-
const quick_lru_1 = __importDefault(require("@jbrowse/quick-lru"));
|
|
9
4
|
const bbi_ts_1 = require("./bbi.js");
|
|
10
|
-
const
|
|
5
|
+
const util_ts_1 = require("./util.js");
|
|
11
6
|
function getTabField(str, fieldIndex) {
|
|
12
7
|
if (fieldIndex < 0) {
|
|
13
8
|
return undefined;
|
|
@@ -23,18 +18,12 @@ function getTabField(str, fieldIndex) {
|
|
|
23
18
|
const end = str.indexOf('\t', start);
|
|
24
19
|
return end === -1 ? str.slice(start) : str.slice(start, end);
|
|
25
20
|
}
|
|
26
|
-
// Parses a null-terminated string key from a B+ tree node
|
|
27
|
-
function parseKey(buffer, offset, keySize) {
|
|
28
|
-
const keyEnd = buffer.indexOf(0, offset);
|
|
29
|
-
const effectiveKeyEnd = keyEnd !== -1 && keyEnd < offset + keySize ? keyEnd : offset + keySize;
|
|
30
|
-
return decoder.decode(buffer.subarray(offset, effectiveKeyEnd));
|
|
31
|
-
}
|
|
32
21
|
// Recursively traverses a B+ tree to search for a specific name in the BigBed extraIndex
|
|
33
22
|
// B+ trees are balanced tree structures optimized for disk-based searches
|
|
34
23
|
async function readBPlusTreeNode(bbi, nodeOffset, blockSize, keySize, valSize, name, field, opts) {
|
|
35
24
|
const len = 4 + blockSize * (keySize + valSize);
|
|
36
25
|
const buffer = await bbi.read(len, nodeOffset, opts);
|
|
37
|
-
const dataView =
|
|
26
|
+
const dataView = (0, util_ts_1.getDataView)(buffer);
|
|
38
27
|
const nodeType = dataView.getInt8(0);
|
|
39
28
|
const cnt = dataView.getInt16(2, true);
|
|
40
29
|
let offset = 4;
|
|
@@ -42,7 +31,7 @@ async function readBPlusTreeNode(bbi, nodeOffset, blockSize, keySize, valSize, n
|
|
|
42
31
|
if (nodeType === 0) {
|
|
43
32
|
const leafkeys = [];
|
|
44
33
|
for (let i = 0; i < cnt; i++) {
|
|
45
|
-
const key = parseKey(buffer, offset, keySize);
|
|
34
|
+
const key = (0, util_ts_1.parseKey)(buffer, offset, keySize);
|
|
46
35
|
offset += keySize;
|
|
47
36
|
const dataOffset = Number(dataView.getBigUint64(offset, true));
|
|
48
37
|
offset += 8;
|
|
@@ -51,29 +40,27 @@ async function readBPlusTreeNode(bbi, nodeOffset, blockSize, keySize, valSize, n
|
|
|
51
40
|
offset: dataOffset,
|
|
52
41
|
});
|
|
53
42
|
}
|
|
54
|
-
// Binary search to find the appropriate child node
|
|
55
43
|
let left = 0;
|
|
56
44
|
let right = leafkeys.length - 1;
|
|
57
|
-
let targetIndex =
|
|
45
|
+
let targetIndex = -1;
|
|
58
46
|
while (left <= right) {
|
|
59
47
|
const mid = Math.floor((left + right) / 2);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
right = mid - 1;
|
|
48
|
+
if (name.localeCompare(leafkeys[mid].key) >= 0) {
|
|
49
|
+
targetIndex = mid;
|
|
50
|
+
left = mid + 1;
|
|
64
51
|
}
|
|
65
52
|
else {
|
|
66
|
-
|
|
53
|
+
right = mid - 1;
|
|
67
54
|
}
|
|
68
55
|
}
|
|
69
|
-
const childOffset =
|
|
56
|
+
const childOffset = leafkeys[Math.max(targetIndex, 0)].offset;
|
|
70
57
|
return readBPlusTreeNode(bbi, childOffset, blockSize, keySize, valSize, name, field, opts);
|
|
71
58
|
}
|
|
72
59
|
else if (nodeType === 1) {
|
|
73
60
|
// Leaf node (nodeType === 1): contains actual key-value data
|
|
74
61
|
const keys = [];
|
|
75
62
|
for (let i = 0; i < cnt; i++) {
|
|
76
|
-
const key = parseKey(buffer, offset, keySize);
|
|
63
|
+
const key = (0, util_ts_1.parseKey)(buffer, offset, keySize);
|
|
77
64
|
offset += keySize;
|
|
78
65
|
const dataOffset = Number(dataView.getBigUint64(offset, true));
|
|
79
66
|
offset += 8;
|
|
@@ -107,13 +94,15 @@ async function readBPlusTreeNode(bbi, nodeOffset, blockSize, keySize, valSize, n
|
|
|
107
94
|
return undefined;
|
|
108
95
|
}
|
|
109
96
|
class BigBed extends bbi_ts_1.BBI {
|
|
110
|
-
|
|
111
|
-
cache: new quick_lru_1.default({ maxSize: 1 }),
|
|
112
|
-
fill: (args, signal) => this._readIndices({ ...args, signal }),
|
|
113
|
-
});
|
|
97
|
+
indicesP;
|
|
114
98
|
readIndices(opts = {}) {
|
|
115
|
-
|
|
116
|
-
|
|
99
|
+
if (!this.indicesP) {
|
|
100
|
+
this.indicesP = this._readIndices(opts).catch((e) => {
|
|
101
|
+
this.indicesP = undefined;
|
|
102
|
+
throw e;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return this.indicesP;
|
|
117
106
|
}
|
|
118
107
|
/*
|
|
119
108
|
* retrieve unzoomed view for any scale
|
|
@@ -130,8 +119,8 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
130
119
|
*/
|
|
131
120
|
async _readIndices(opts) {
|
|
132
121
|
const { extHeaderOffset } = await this.getHeader(opts);
|
|
133
|
-
const b = await this.bbi.read(64, extHeaderOffset);
|
|
134
|
-
const dataView =
|
|
122
|
+
const b = await this.bbi.read(64, extHeaderOffset, opts);
|
|
123
|
+
const dataView = (0, util_ts_1.getDataView)(b);
|
|
135
124
|
const count = dataView.getUint16(2, true);
|
|
136
125
|
const dataOffset = Number(dataView.getBigUint64(4, true));
|
|
137
126
|
// no extra index is defined if count==0
|
|
@@ -140,11 +129,10 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
140
129
|
}
|
|
141
130
|
const blocklen = 20;
|
|
142
131
|
const len = blocklen * count;
|
|
143
|
-
const buffer = await this.bbi.read(len, dataOffset);
|
|
132
|
+
const buffer = await this.bbi.read(len, dataOffset, opts);
|
|
144
133
|
const indices = [];
|
|
145
134
|
for (let i = 0; i < count; i += 1) {
|
|
146
|
-
const
|
|
147
|
-
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
135
|
+
const dataView = (0, util_ts_1.getDataView)(buffer, i * blocklen);
|
|
148
136
|
const type = dataView.getInt16(0, true);
|
|
149
137
|
const fieldcount = dataView.getInt16(2, true);
|
|
150
138
|
const dataOffset = Number(dataView.getBigUint64(4, true));
|
|
@@ -176,7 +164,7 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
176
164
|
const locs = indices.map(async (index) => {
|
|
177
165
|
const { offset: offset2, field } = index;
|
|
178
166
|
const b = await this.bbi.read(32, offset2, opts);
|
|
179
|
-
const dataView =
|
|
167
|
+
const dataView = (0, util_ts_1.getDataView)(b);
|
|
180
168
|
const blockSize = dataView.getInt32(4, true);
|
|
181
169
|
const keySize = dataView.getInt32(8, true);
|
|
182
170
|
const valSize = dataView.getInt32(12, true);
|
|
@@ -211,7 +199,7 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
211
199
|
if (!f.rest) {
|
|
212
200
|
return false;
|
|
213
201
|
}
|
|
214
|
-
const fieldIndex = (f.field
|
|
202
|
+
const fieldIndex = (f.field ?? 0) - 3;
|
|
215
203
|
return getTabField(f.rest, fieldIndex) === name;
|
|
216
204
|
});
|
|
217
205
|
}
|
package/dist/bigbed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"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"}
|
package/dist/bigwig.js
CHANGED
|
@@ -17,7 +17,7 @@ class BigWig extends bbi_ts_1.BBI {
|
|
|
17
17
|
const maxLevel = zoomLevels.length - 1;
|
|
18
18
|
for (let i = maxLevel; i >= 0; i -= 1) {
|
|
19
19
|
const zh = zoomLevels[i];
|
|
20
|
-
if (zh
|
|
20
|
+
if (zh.reductionLevel <= 2 * basesPerPx) {
|
|
21
21
|
return this.getOrCreateBlockView(refsByName, zh.indexOffset, uncompressBufSize, 'summary');
|
|
22
22
|
}
|
|
23
23
|
}
|
package/dist/bigwig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":";;;AAAA,qCAA8B;AAI9B,MAAa,MAAO,SAAQ,YAAG;IAC7B;;;;;;;OAOG;IACO,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,IAAoB;QACzD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,GACjD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAA;QAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAEtC,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":";;;AAAA,qCAA8B;AAI9B,MAAa,MAAO,SAAQ,YAAG;IAC7B;;;;;;;OAOG;IACO,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,IAAoB;QACzD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,GACjD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAA;QAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAEtC,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAE,CAAA;YACzB,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,oBAAoB,CAC9B,UAAU,EACV,EAAE,CAAC,WAAW,EACd,iBAAiB,EACjB,SAAS,CACV,CAAA;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;CACF;AA5BD,wBA4BC"}
|
package/dist/block-view.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class BlockView {
|
|
|
23
23
|
private uncompressBufSize;
|
|
24
24
|
private blockType;
|
|
25
25
|
private rTreePromise?;
|
|
26
|
-
private
|
|
26
|
+
private rTreeNodeCache;
|
|
27
27
|
constructor(bbi: GenericFilehandle, refsByName: Record<string, number>, rTreeOffset: number, uncompressBufSize: number, blockType: string);
|
|
28
28
|
private _collectBlocks;
|
|
29
29
|
readWigData(chrName: string, start: number, end: number, opts?: Options): Promise<Feature[]>;
|