@gmod/bbi 3.0.0 → 4.0.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/CHANGELOG.md +45 -15
- package/README.md +43 -16
- package/dist/bbi.d.ts +5 -5
- package/dist/bbi.js +17 -23
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +11 -4
- package/dist/bigbed.js +23 -16
- package/dist/bigbed.js.map +1 -1
- package/dist/bigwig.d.ts +1 -1
- package/dist/bigwig.js +2 -2
- package/dist/bigwig.js.map +1 -1
- package/{esm/blockView.d.ts → dist/block-view.d.ts} +1 -1
- package/dist/{blockView.js → block-view.js} +28 -19
- package/dist/block-view.js.map +1 -0
- package/dist/range.js +3 -4
- package/dist/range.js.map +1 -1
- package/dist/unzip-pako.d.ts +1 -0
- package/dist/unzip-pako.js.map +1 -1
- package/dist/unzip.d.ts +1 -2
- package/dist/unzip.js +1 -1
- package/dist/unzip.js.map +1 -1
- package/dist/util.js +12 -12
- package/dist/util.js.map +1 -1
- package/esm/bbi.d.ts +5 -5
- package/esm/bbi.js +14 -20
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +11 -4
- package/esm/bigbed.js +8 -12
- package/esm/bigbed.js.map +1 -1
- package/esm/bigwig.d.ts +1 -1
- package/esm/bigwig.js +1 -1
- package/esm/bigwig.js.map +1 -1
- package/{dist/blockView.d.ts → esm/block-view.d.ts} +1 -1
- package/esm/{blockView.js → block-view.js} +26 -17
- package/esm/block-view.js.map +1 -0
- package/esm/range.js +3 -4
- package/esm/range.js.map +1 -1
- package/esm/unzip-pako.d.ts +1 -0
- package/esm/unzip-pako.js.map +1 -1
- package/esm/unzip.d.ts +1 -2
- package/esm/unzip.js +1 -2
- package/esm/unzip.js.map +1 -1
- package/esm/util.js +12 -12
- package/esm/util.js.map +1 -1
- package/package.json +15 -15
- package/src/bbi.ts +30 -35
- package/src/bigbed.ts +12 -23
- package/src/bigwig.ts +1 -1
- package/src/{blockView.ts → block-view.ts} +31 -21
- package/src/range.ts +3 -4
- package/src/unzip-pako.ts +1 -0
- package/src/unzip.ts +1 -2
- package/src/util.ts +11 -11
- package/CHANGELOG.md.orig +0 -200
- package/dist/blockView.js.map +0 -1
- package/esm/blockView.js.map +0 -1
- package/src/declare.d.ts +0 -2
package/esm/bigwig.js
CHANGED
package/esm/bigwig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,GAAG,EAAkB,MAAM,OAAO,CAAA;AAE3C,MAAM,OAAO,MAAO,SAAQ,GAAG;IAC7B;;;;;OAKG;IACO,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,IAAoB;QACzD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,GACxE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAA;QAC5B,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb,4EAA4E;YAC5E,QAAQ,IAAI,CAAC,CAAA;SACd;QAED,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,EAAE,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,GAAG,UAAU,EAAE;gBAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;gBAE1C,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,GAAG,CAAC,EACrB,SAAS,CACV,CAAA;aACF;SACF;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;CACF"}
|
|
@@ -29,7 +29,7 @@ export declare class BlockView {
|
|
|
29
29
|
private leafParser;
|
|
30
30
|
private bigBedParser;
|
|
31
31
|
constructor(bbi: GenericFilehandle, refsByName: any, cirTreeOffset: number, isBigEndian: boolean, isCompressed: boolean, blockType: string);
|
|
32
|
-
readWigData(chrName: string, start: number, end: number, observer: Observer<Feature[]>, opts
|
|
32
|
+
readWigData(chrName: string, start: number, end: number, observer: Observer<Feature[]>, opts?: Options): Promise<void>;
|
|
33
33
|
private parseSummaryBlock;
|
|
34
34
|
private parseBigBedBlock;
|
|
35
35
|
private parseBigWigBlock;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
1
2
|
import { Parser } from 'binary-parser';
|
|
2
3
|
import AbortablePromiseCache from 'abortable-promise-cache';
|
|
3
4
|
import QuickLRU from 'quick-lru';
|
|
@@ -160,7 +161,7 @@ export class BlockView {
|
|
|
160
161
|
const p = this.leafParser.parse(data);
|
|
161
162
|
if (p.blocksToFetch) {
|
|
162
163
|
blocksToFetch = blocksToFetch.concat(p.blocksToFetch
|
|
163
|
-
.filter(filterFeats)
|
|
164
|
+
.filter(f => filterFeats(f))
|
|
164
165
|
.map((l) => ({
|
|
165
166
|
offset: l.blockOffset,
|
|
166
167
|
length: l.blockSize,
|
|
@@ -168,7 +169,7 @@ export class BlockView {
|
|
|
168
169
|
}
|
|
169
170
|
if (p.recurOffsets) {
|
|
170
171
|
const recurOffsets = p.recurOffsets
|
|
171
|
-
.filter(filterFeats)
|
|
172
|
+
.filter(f => filterFeats(f))
|
|
172
173
|
.map(l => Number(l.blockOffset));
|
|
173
174
|
if (recurOffsets.length > 0) {
|
|
174
175
|
cirFobRecur(recurOffsets, level + 1);
|
|
@@ -188,10 +189,10 @@ export class BlockView {
|
|
|
188
189
|
try {
|
|
189
190
|
const length = fr.max() - fr.min();
|
|
190
191
|
const offset = fr.min();
|
|
191
|
-
const resultBuffer = await this.featureCache.get(`${length}_${offset}`, { length, offset }, opts.signal);
|
|
192
|
-
for (
|
|
193
|
-
if (fr.contains(
|
|
194
|
-
cirFobRecur2(resultBuffer,
|
|
192
|
+
const resultBuffer = await this.featureCache.get(`${length}_${offset}`, { length, offset }, opts === null || opts === void 0 ? void 0 : opts.signal);
|
|
193
|
+
for (const element of off) {
|
|
194
|
+
if (fr.contains(element)) {
|
|
195
|
+
cirFobRecur2(resultBuffer, element - offset, level);
|
|
195
196
|
outstanding -= 1;
|
|
196
197
|
if (outstanding === 0) {
|
|
197
198
|
this.readFeatures(observer, blocksToFetch, { ...opts, request });
|
|
@@ -206,7 +207,8 @@ export class BlockView {
|
|
|
206
207
|
const cirFobRecur = (offset, level) => {
|
|
207
208
|
try {
|
|
208
209
|
outstanding += offset.length;
|
|
209
|
-
|
|
210
|
+
// Upper bound on size, based on a completely full leaf node.
|
|
211
|
+
const maxCirBlockSpan = 4 + Number(cirBlockSize) * 32;
|
|
210
212
|
let spans = new Range(offset[0], offset[0] + maxCirBlockSpan);
|
|
211
213
|
for (let i = 1; i < offset.length; i += 1) {
|
|
212
214
|
const blockSpan = new Range(offset[i], offset[i] + maxCirBlockSpan);
|
|
@@ -293,7 +295,7 @@ export class BlockView {
|
|
|
293
295
|
offset += 2;
|
|
294
296
|
const items = new Array(itemCount);
|
|
295
297
|
switch (blockType) {
|
|
296
|
-
case 1:
|
|
298
|
+
case 1: {
|
|
297
299
|
for (let i = 0; i < itemCount; i++) {
|
|
298
300
|
const start = dataView.getInt32(offset, true);
|
|
299
301
|
offset += 4;
|
|
@@ -304,7 +306,8 @@ export class BlockView {
|
|
|
304
306
|
items[i] = { start, end, score };
|
|
305
307
|
}
|
|
306
308
|
break;
|
|
307
|
-
|
|
309
|
+
}
|
|
310
|
+
case 2: {
|
|
308
311
|
for (let i = 0; i < itemCount; i++) {
|
|
309
312
|
const start = dataView.getInt32(offset, true);
|
|
310
313
|
offset += 4;
|
|
@@ -313,7 +316,8 @@ export class BlockView {
|
|
|
313
316
|
items[i] = { score, start, end: start + itemSpan };
|
|
314
317
|
}
|
|
315
318
|
break;
|
|
316
|
-
|
|
319
|
+
}
|
|
320
|
+
case 3: {
|
|
317
321
|
for (let i = 0; i < itemCount; i++) {
|
|
318
322
|
const score = dataView.getFloat32(offset, true);
|
|
319
323
|
offset += 4;
|
|
@@ -321,6 +325,7 @@ export class BlockView {
|
|
|
321
325
|
items[i] = { score, start, end: start + itemSpan };
|
|
322
326
|
}
|
|
323
327
|
break;
|
|
328
|
+
}
|
|
324
329
|
}
|
|
325
330
|
return request
|
|
326
331
|
? items.filter((f) => coordFilter(f.start, f.end, request.start, request.end))
|
|
@@ -336,7 +341,7 @@ export class BlockView {
|
|
|
336
341
|
checkAbortSignal(signal);
|
|
337
342
|
const { length, offset } = blockGroup;
|
|
338
343
|
const data = await this.featureCache.get(`${length}_${offset}`, blockGroup, signal);
|
|
339
|
-
blockGroup.blocks
|
|
344
|
+
for (const block of blockGroup.blocks) {
|
|
340
345
|
checkAbortSignal(signal);
|
|
341
346
|
let blockOffset = Number(block.offset) - Number(blockGroup.offset);
|
|
342
347
|
let resultData = data;
|
|
@@ -346,19 +351,23 @@ export class BlockView {
|
|
|
346
351
|
}
|
|
347
352
|
checkAbortSignal(signal);
|
|
348
353
|
switch (blockType) {
|
|
349
|
-
case 'summary':
|
|
354
|
+
case 'summary': {
|
|
350
355
|
observer.next(this.parseSummaryBlock(resultData, blockOffset, request));
|
|
351
356
|
break;
|
|
352
|
-
|
|
357
|
+
}
|
|
358
|
+
case 'bigwig': {
|
|
353
359
|
observer.next(this.parseBigWigBlock(resultData, blockOffset, request));
|
|
354
360
|
break;
|
|
355
|
-
|
|
361
|
+
}
|
|
362
|
+
case 'bigbed': {
|
|
356
363
|
observer.next(this.parseBigBedBlock(resultData, blockOffset, Number(block.offset) * (1 << 8), request));
|
|
357
364
|
break;
|
|
358
|
-
|
|
365
|
+
}
|
|
366
|
+
default: {
|
|
359
367
|
console.warn(`Don't know what to do with ${blockType}`);
|
|
368
|
+
}
|
|
360
369
|
}
|
|
361
|
-
}
|
|
370
|
+
}
|
|
362
371
|
}));
|
|
363
372
|
observer.complete();
|
|
364
373
|
}
|
|
@@ -367,4 +376,4 @@ export class BlockView {
|
|
|
367
376
|
}
|
|
368
377
|
}
|
|
369
378
|
}
|
|
370
|
-
//# sourceMappingURL=
|
|
379
|
+
//# sourceMappingURL=block-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-view.js","sourceRoot":"","sources":["../src/block-view.ts"],"names":[],"mappings":"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"}
|
package/esm/range.js
CHANGED
|
@@ -57,7 +57,7 @@ export default class Range {
|
|
|
57
57
|
return new Range(oranges);
|
|
58
58
|
}
|
|
59
59
|
intersection(arg) {
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias,unicorn/no-this-assignment
|
|
61
61
|
let s0 = this;
|
|
62
62
|
let s1 = arg;
|
|
63
63
|
const r0 = this.ranges();
|
|
@@ -93,8 +93,7 @@ export default class Range {
|
|
|
93
93
|
coverage() {
|
|
94
94
|
let tot = 0;
|
|
95
95
|
const rl = this.ranges();
|
|
96
|
-
for (
|
|
97
|
-
const r = rl[ri];
|
|
96
|
+
for (const r of rl) {
|
|
98
97
|
tot += r.max() - r.min() + 1;
|
|
99
98
|
}
|
|
100
99
|
return tot;
|
|
@@ -104,7 +103,7 @@ export default class Range {
|
|
|
104
103
|
let b = tmpb;
|
|
105
104
|
if (arguments.length < 2) {
|
|
106
105
|
b = a;
|
|
107
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias,unicorn/no-this-assignment
|
|
108
107
|
a = this;
|
|
109
108
|
}
|
|
110
109
|
if (a.min() < b.min()) {
|
package/esm/range.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"range.js","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"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"}
|
package/esm/unzip-pako.d.ts
CHANGED
package/esm/unzip-pako.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unzip-pako.js","sourceRoot":"","sources":["../src/unzip-pako.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unzip-pako.js","sourceRoot":"","sources":["../src/unzip-pako.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
|
package/esm/unzip.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { inflateSync as unzip };
|
|
1
|
+
export { inflateSync as unzip } from 'zlib';
|
package/esm/unzip.js
CHANGED
package/esm/unzip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unzip.js","sourceRoot":"","sources":["../src/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA
|
|
1
|
+
{"version":3,"file":"unzip.js","sourceRoot":"","sources":["../src/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,MAAM,CAAA"}
|
package/esm/util.js
CHANGED
|
@@ -12,21 +12,21 @@ export function groupBlocks(blocks) {
|
|
|
12
12
|
const blockGroups = [];
|
|
13
13
|
let lastBlock;
|
|
14
14
|
let lastBlockEnd;
|
|
15
|
-
for (
|
|
15
|
+
for (const block of blocks) {
|
|
16
16
|
if (lastBlock &&
|
|
17
17
|
lastBlockEnd &&
|
|
18
|
-
Number(
|
|
18
|
+
Number(block.offset) - lastBlockEnd <= 2000) {
|
|
19
19
|
lastBlock.length = BigInt(Number(lastBlock.length) +
|
|
20
|
-
Number(
|
|
20
|
+
Number(block.length) -
|
|
21
21
|
lastBlockEnd +
|
|
22
|
-
Number(
|
|
23
|
-
lastBlock.blocks.push(
|
|
22
|
+
Number(block.offset));
|
|
23
|
+
lastBlock.blocks.push(block);
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
26
|
blockGroups.push((lastBlock = {
|
|
27
|
-
blocks: [
|
|
28
|
-
length:
|
|
29
|
-
offset:
|
|
27
|
+
blocks: [block],
|
|
28
|
+
length: block.length,
|
|
29
|
+
offset: block.offset,
|
|
30
30
|
}));
|
|
31
31
|
}
|
|
32
32
|
lastBlockEnd = Number(lastBlock.offset) + Number(lastBlock.length);
|
|
@@ -50,14 +50,14 @@ export function checkAbortSignal(signal) {
|
|
|
50
50
|
}
|
|
51
51
|
if (signal.aborted) {
|
|
52
52
|
// console.log('bam aborted!')
|
|
53
|
-
if (typeof DOMException
|
|
54
|
-
throw new DOMException('aborted', 'AbortError');
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
53
|
+
if (typeof DOMException === 'undefined') {
|
|
57
54
|
const e = new AbortError('aborted');
|
|
58
55
|
e.code = 'ERR_ABORTED';
|
|
59
56
|
throw e;
|
|
60
57
|
}
|
|
58
|
+
else {
|
|
59
|
+
throw new DOMException('aborted', 'AbortError');
|
|
60
|
+
}
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
/**
|
package/esm/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGnC,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AACD,iCAAiC;AACjC,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,MAA4C;IACtE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9D,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,IAAI,SAAS,CAAA;IACb,IAAI,YAAY,CAAA;IAChB,KAAK,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGnC,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AACD,iCAAiC;AACjC,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,MAA4C;IACtE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9D,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,IAAI,SAAS,CAAA;IACb,IAAI,YAAY,CAAA;IAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IACE,SAAS;YACT,YAAY;YACZ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,YAAY,IAAI,IAAI,EAC3C;YACA,SAAS,CAAC,MAAM,GAAG,MAAM,CACvB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACtB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBACpB,YAAY;gBACZ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CACvB,CAAA;YACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAC7B;aAAM;YACL,WAAW,CAAC,IAAI,CACd,CAAC,SAAS,GAAG;gBACX,MAAM,EAAE,CAAC,KAAK,CAAC;gBACf,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CACH,CAAA;SACF;QACD,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;KACnE;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,IAAI,CAAC,MAAM,EAAE;QACX,OAAM;KACP;IAED,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,8BAA8B;QAC9B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACvC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAA;YACnC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAA;YACtB,MAAM,CAAC,CAAA;SACR;aAAM;YACL,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;SAChD;KACF;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAoB;IACxD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IACvB,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAC1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gmod/bbi",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Parser for BigWig/BigBed files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "GMOD/bbi-js",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"abortable-promise-cache": "^1.4.1",
|
|
45
45
|
"binary-parser": "^2.1.0",
|
|
46
|
+
"eslint-plugin-unicorn": "^46.0.0",
|
|
46
47
|
"generic-filehandle": "^3.0.0",
|
|
47
48
|
"pako": "^2.0.0",
|
|
48
49
|
"quick-lru": "^4.0.0",
|
|
@@ -50,24 +51,23 @@
|
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
53
|
"@gmod/bed": "^2.1.2",
|
|
53
|
-
"@types/jest": "^29.
|
|
54
|
+
"@types/jest": "^29.5.0",
|
|
54
55
|
"@types/long": "^5.0.0",
|
|
55
|
-
"@types/node": "^18.
|
|
56
|
+
"@types/node": "^18.15.7",
|
|
56
57
|
"@types/pako": "^2.0.0",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
58
|
-
"@typescript-eslint/parser": "^5.
|
|
59
|
-
"
|
|
60
|
-
"eslint": "^8.
|
|
61
|
-
"eslint-
|
|
62
|
-
"eslint-plugin-import": "^2.25.3",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^5.56.0",
|
|
59
|
+
"@typescript-eslint/parser": "^5.56.0",
|
|
60
|
+
"eslint": "^8.36.0",
|
|
61
|
+
"eslint-config-prettier": "^8.8.0",
|
|
62
|
+
"eslint-plugin-import": "^2.27.5",
|
|
63
63
|
"eslint-plugin-prettier": "^4.0.0",
|
|
64
|
-
"jest": "^29.
|
|
65
|
-
"jest-environment-jsdom": "^29.
|
|
66
|
-
"prettier": "^2.8.
|
|
67
|
-
"rimraf": "^
|
|
64
|
+
"jest": "^29.5.0",
|
|
65
|
+
"jest-environment-jsdom": "^29.5.0",
|
|
66
|
+
"prettier": "^2.8.7",
|
|
67
|
+
"rimraf": "^5.0.0",
|
|
68
68
|
"standard-changelog": "^2.0.11",
|
|
69
|
-
"ts-jest": "^29.0.
|
|
70
|
-
"typescript": "^
|
|
69
|
+
"ts-jest": "^29.0.5",
|
|
70
|
+
"typescript": "^5.0.2"
|
|
71
71
|
},
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
package/src/bbi.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Buffer } from 'buffer'
|
|
1
2
|
import { Parser } from 'binary-parser'
|
|
2
3
|
import { LocalFile, RemoteFile, GenericFilehandle } from 'generic-filehandle'
|
|
3
|
-
import { firstValueFrom, Observable
|
|
4
|
+
import { firstValueFrom, Observable } from 'rxjs'
|
|
4
5
|
import { toArray } from 'rxjs/operators'
|
|
5
|
-
import { BlockView } from './
|
|
6
|
+
import { BlockView } from './block-view'
|
|
6
7
|
|
|
7
8
|
const BIG_WIG_MAGIC = -2003829722
|
|
8
9
|
const BIG_BED_MAGIC = -2021002517
|
|
@@ -129,10 +130,9 @@ export abstract class BBI {
|
|
|
129
130
|
* @param abortSignal - abort the operation, can be null
|
|
130
131
|
* @return a Header object
|
|
131
132
|
*/
|
|
132
|
-
public getHeader(opts
|
|
133
|
-
const options = 'aborted' in opts ? { signal: opts as AbortSignal } : opts
|
|
133
|
+
public getHeader(opts?: RequestOptions) {
|
|
134
134
|
if (!this.headerP) {
|
|
135
|
-
this.headerP = this._getHeader(
|
|
135
|
+
this.headerP = this._getHeader(opts).catch(e => {
|
|
136
136
|
this.headerP = undefined
|
|
137
137
|
throw e
|
|
138
138
|
})
|
|
@@ -146,15 +146,13 @@ export abstract class BBI {
|
|
|
146
146
|
* @param url - a URL string
|
|
147
147
|
* @param renameRefSeqs - an optional method to rename the internal reference sequences using a mapping function
|
|
148
148
|
*/
|
|
149
|
-
public constructor(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
} =
|
|
156
|
-
) {
|
|
157
|
-
const { filehandle, renameRefSeqs = s => s, path, url } = options
|
|
149
|
+
public constructor(args: {
|
|
150
|
+
filehandle?: GenericFilehandle
|
|
151
|
+
path?: string
|
|
152
|
+
url?: string
|
|
153
|
+
renameRefSeqs?: (a: string) => string
|
|
154
|
+
}) {
|
|
155
|
+
const { filehandle, renameRefSeqs = s => s, path, url } = args
|
|
158
156
|
this.renameRefSeqs = renameRefSeqs
|
|
159
157
|
if (filehandle) {
|
|
160
158
|
this.bbi = filehandle
|
|
@@ -167,14 +165,14 @@ export abstract class BBI {
|
|
|
167
165
|
}
|
|
168
166
|
}
|
|
169
167
|
|
|
170
|
-
private async _getHeader(opts
|
|
168
|
+
private async _getHeader(opts?: RequestOptions) {
|
|
171
169
|
const header = await this._getMainHeader(opts)
|
|
172
170
|
const chroms = await this._readChromTree(header, opts)
|
|
173
171
|
return { ...header, ...chroms }
|
|
174
172
|
}
|
|
175
173
|
|
|
176
174
|
private async _getMainHeader(
|
|
177
|
-
opts
|
|
175
|
+
opts?: RequestOptions,
|
|
178
176
|
requestSize = 2000,
|
|
179
177
|
): Promise<Header> {
|
|
180
178
|
const { buffer } = await this.bbi.read(
|
|
@@ -207,7 +205,7 @@ export abstract class BBI {
|
|
|
207
205
|
return { ...header, isBigEndian }
|
|
208
206
|
}
|
|
209
207
|
|
|
210
|
-
private _isBigEndian(buffer: Buffer)
|
|
208
|
+
private _isBigEndian(buffer: Buffer) {
|
|
211
209
|
let ret = buffer.readInt32LE(0)
|
|
212
210
|
if (ret === BIG_WIG_MAGIC || ret === BIG_BED_MAGIC) {
|
|
213
211
|
return false
|
|
@@ -220,7 +218,10 @@ export abstract class BBI {
|
|
|
220
218
|
}
|
|
221
219
|
|
|
222
220
|
// todo: add progress if long running
|
|
223
|
-
private async _readChromTree(
|
|
221
|
+
private async _readChromTree(
|
|
222
|
+
header: Header,
|
|
223
|
+
opts?: { signal?: AbortSignal },
|
|
224
|
+
) {
|
|
224
225
|
const isBE = header.isBigEndian
|
|
225
226
|
const le = isBE ? 'big' : 'little'
|
|
226
227
|
const refsByNumber: {
|
|
@@ -298,7 +299,7 @@ export abstract class BBI {
|
|
|
298
299
|
* fetches the "unzoomed" view of the bigwig data. this is the default for bigbed
|
|
299
300
|
* @param abortSignal - a signal to optionally abort this operation
|
|
300
301
|
*/
|
|
301
|
-
protected async getUnzoomedView(opts
|
|
302
|
+
protected async getUnzoomedView(opts?: RequestOptions) {
|
|
302
303
|
const {
|
|
303
304
|
unzoomedIndexOffset,
|
|
304
305
|
refsByName,
|
|
@@ -321,7 +322,7 @@ export abstract class BBI {
|
|
|
321
322
|
*/
|
|
322
323
|
protected abstract getView(
|
|
323
324
|
scale: number,
|
|
324
|
-
opts
|
|
325
|
+
opts?: RequestOptions,
|
|
325
326
|
): Promise<BlockView>
|
|
326
327
|
|
|
327
328
|
/**
|
|
@@ -336,26 +337,22 @@ export abstract class BBI {
|
|
|
336
337
|
refName: string,
|
|
337
338
|
start: number,
|
|
338
339
|
end: number,
|
|
339
|
-
opts
|
|
340
|
-
|
|
341
|
-
},
|
|
342
|
-
): Promise<Observable<Feature[]>> {
|
|
340
|
+
opts?: RequestOptions & { scale?: number; basesPerSpan?: number },
|
|
341
|
+
) {
|
|
343
342
|
await this.getHeader(opts)
|
|
344
343
|
const chrName = this.renameRefSeqs(refName)
|
|
345
344
|
let view: BlockView
|
|
345
|
+
const { basesPerSpan, scale } = opts || {}
|
|
346
346
|
|
|
347
|
-
if (
|
|
348
|
-
view = await this.getView(1 /
|
|
349
|
-
} else if (
|
|
350
|
-
view = await this.getView(
|
|
347
|
+
if (basesPerSpan) {
|
|
348
|
+
view = await this.getView(1 / basesPerSpan, opts)
|
|
349
|
+
} else if (scale) {
|
|
350
|
+
view = await this.getView(scale, opts)
|
|
351
351
|
} else {
|
|
352
352
|
view = await this.getView(1, opts)
|
|
353
353
|
}
|
|
354
354
|
|
|
355
|
-
|
|
356
|
-
throw new Error('unable to get block view for data')
|
|
357
|
-
}
|
|
358
|
-
return new Observable((observer: Observer<Feature[]>): void => {
|
|
355
|
+
return new Observable<Feature[]>(observer => {
|
|
359
356
|
view.readWigData(chrName, start, end, observer, opts)
|
|
360
357
|
})
|
|
361
358
|
}
|
|
@@ -364,9 +361,7 @@ export abstract class BBI {
|
|
|
364
361
|
refName: string,
|
|
365
362
|
start: number,
|
|
366
363
|
end: number,
|
|
367
|
-
opts
|
|
368
|
-
scale: 1,
|
|
369
|
-
},
|
|
364
|
+
opts?: RequestOptions & { scale?: number; basesPerSpan?: number },
|
|
370
365
|
) {
|
|
371
366
|
const ob = await this.getFeatureStream(refName, start, end, opts)
|
|
372
367
|
|
package/src/bigbed.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Buffer } from 'buffer'
|
|
1
2
|
import { Parser } from 'binary-parser'
|
|
2
3
|
import { Observable, merge, firstValueFrom } from 'rxjs'
|
|
3
4
|
import { map, reduce } from 'rxjs/operators'
|
|
@@ -5,7 +6,6 @@ import AbortablePromiseCache from 'abortable-promise-cache'
|
|
|
5
6
|
import QuickLRU from 'quick-lru'
|
|
6
7
|
|
|
7
8
|
import { BBI, Feature, RequestOptions } from './bbi'
|
|
8
|
-
import { BlockView } from './blockView'
|
|
9
9
|
|
|
10
10
|
interface Loc {
|
|
11
11
|
key: string
|
|
@@ -26,32 +26,21 @@ export function filterUndef<T>(ts: (T | undefined)[]): T[] {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export class BigBed extends BBI {
|
|
29
|
-
public readIndicesCache = new AbortablePromiseCache({
|
|
29
|
+
public readIndicesCache = new AbortablePromiseCache<RequestOptions, Index[]>({
|
|
30
30
|
cache: new QuickLRU({ maxSize: 1 }),
|
|
31
|
-
fill:
|
|
32
|
-
|
|
33
|
-
},
|
|
31
|
+
fill: (args: RequestOptions, signal?: AbortSignal) =>
|
|
32
|
+
this._readIndices({ ...args, signal }),
|
|
34
33
|
})
|
|
35
34
|
|
|
36
|
-
public readIndices(opts:
|
|
37
|
-
const
|
|
38
|
-
return this.readIndicesCache.get(
|
|
39
|
-
JSON.stringify(options),
|
|
40
|
-
options,
|
|
41
|
-
options.signal,
|
|
42
|
-
)
|
|
35
|
+
public readIndices(opts: RequestOptions = {}) {
|
|
36
|
+
const { signal, ...rest } = opts
|
|
37
|
+
return this.readIndicesCache.get(JSON.stringify(rest), opts, signal)
|
|
43
38
|
}
|
|
44
39
|
|
|
45
40
|
/*
|
|
46
41
|
* retrieve unzoomed view for any scale
|
|
47
|
-
* @param scale - unused
|
|
48
|
-
* @param abortSignal - an optional AbortSignal to kill operation
|
|
49
|
-
* @return promise for a BlockView
|
|
50
42
|
*/
|
|
51
|
-
protected async getView(
|
|
52
|
-
_scale: number,
|
|
53
|
-
opts: RequestOptions,
|
|
54
|
-
): Promise<BlockView> {
|
|
43
|
+
protected async getView(_scale: number, opts?: RequestOptions) {
|
|
55
44
|
return this.getUnzoomedView(opts)
|
|
56
45
|
}
|
|
57
46
|
|
|
@@ -120,7 +109,7 @@ export class BigBed extends BBI {
|
|
|
120
109
|
): Promise<Loc[]> {
|
|
121
110
|
const { isBigEndian } = await this.getHeader(opts)
|
|
122
111
|
const indices = await this.readIndices(opts)
|
|
123
|
-
if (
|
|
112
|
+
if (indices.length === 0) {
|
|
124
113
|
return []
|
|
125
114
|
}
|
|
126
115
|
const locs = indices.map(async (index: any): Promise<Loc | undefined> => {
|
|
@@ -218,7 +207,7 @@ export class BigBed extends BBI {
|
|
|
218
207
|
*/
|
|
219
208
|
public async searchExtraIndex(name: string, opts: RequestOptions = {}) {
|
|
220
209
|
const blocks = await this.searchExtraIndexBlocks(name, opts)
|
|
221
|
-
if (
|
|
210
|
+
if (blocks.length === 0) {
|
|
222
211
|
return []
|
|
223
212
|
}
|
|
224
213
|
const view = await this.getUnzoomedView(opts)
|
|
@@ -228,8 +217,8 @@ export class BigBed extends BBI {
|
|
|
228
217
|
}).pipe(
|
|
229
218
|
reduce((acc, curr) => acc.concat(curr)),
|
|
230
219
|
map(x => {
|
|
231
|
-
for (
|
|
232
|
-
|
|
220
|
+
for (const element of x) {
|
|
221
|
+
element.field = block.field
|
|
233
222
|
}
|
|
234
223
|
return x
|
|
235
224
|
}),
|
package/src/bigwig.ts
CHANGED