@gmod/bbi 1.0.35 → 2.0.2
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 +14 -1
- package/dist/bbi.d.ts +2 -2
- package/dist/bbi.js +56 -59
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +1 -2
- package/dist/bigbed.js +22 -20
- package/dist/bigbed.js.map +1 -1
- package/dist/bigwig.d.ts +1 -3
- package/dist/bigwig.js +4 -8
- package/dist/bigwig.js.map +1 -1
- package/dist/blockView.d.ts +8 -9
- package/dist/blockView.js +155 -95
- package/dist/blockView.js.map +1 -1
- package/dist/unzip-pako.d.ts +1 -1
- package/dist/unzip-pako.js +1 -1
- package/dist/unzip-pako.js.map +1 -1
- package/dist/util.d.ts +11 -1
- package/dist/util.js +9 -4
- package/dist/util.js.map +1 -1
- package/esm/bbi.d.ts +2 -2
- package/esm/bbi.js +46 -44
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +1 -2
- package/esm/bigbed.js +22 -19
- package/esm/bigbed.js.map +1 -1
- package/esm/bigwig.d.ts +1 -3
- package/esm/bigwig.js +3 -7
- package/esm/bigwig.js.map +1 -1
- package/esm/blockView.d.ts +8 -9
- package/esm/blockView.js +143 -87
- package/esm/blockView.js.map +1 -1
- package/esm/unzip-pako.d.ts +1 -1
- package/esm/unzip-pako.js +2 -2
- package/esm/unzip-pako.js.map +1 -1
- package/esm/util.d.ts +11 -1
- package/esm/util.js +9 -4
- package/esm/util.js.map +1 -1
- package/package.json +10 -11
- package/src/bbi.ts +50 -54
- package/src/bigbed.ts +31 -26
- package/src/bigwig.ts +5 -13
- package/src/blockView.ts +177 -143
- package/src/declare.d.ts +0 -2
- package/src/unzip-pako.ts +2 -2
- package/src/util.ts +14 -5
package/esm/bbi.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { Parser } from '
|
|
1
|
+
import { Parser } from 'binary-parser';
|
|
2
2
|
import { LocalFile, RemoteFile } from 'generic-filehandle';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { reduce } from 'rxjs/operators';
|
|
5
|
-
import AbortablePromiseCache from 'abortable-promise-cache';
|
|
6
|
-
import QuickLRU from 'quick-lru';
|
|
7
5
|
import { BlockView } from './blockView';
|
|
8
6
|
const BIG_WIG_MAGIC = -2003829722;
|
|
9
7
|
const BIG_BED_MAGIC = -2021002517;
|
|
@@ -31,6 +29,7 @@ function getParsers(isBE) {
|
|
|
31
29
|
.array('zoomLevels', {
|
|
32
30
|
length: 'numZoomLevels',
|
|
33
31
|
type: new Parser()
|
|
32
|
+
.endianess(le)
|
|
34
33
|
.uint32('reductionLevel')
|
|
35
34
|
.uint32('reserved')
|
|
36
35
|
.uint64('dataOffset')
|
|
@@ -39,10 +38,10 @@ function getParsers(isBE) {
|
|
|
39
38
|
const totalSummaryParser = new Parser()
|
|
40
39
|
.endianess(le)
|
|
41
40
|
.uint64('basesCovered')
|
|
42
|
-
.
|
|
43
|
-
.
|
|
44
|
-
.
|
|
45
|
-
.
|
|
41
|
+
.doublele('scoreMin')
|
|
42
|
+
.doublele('scoreMax')
|
|
43
|
+
.doublele('scoreSum')
|
|
44
|
+
.doublele('scoreSumSquares');
|
|
46
45
|
const chromTreeParser = new Parser()
|
|
47
46
|
.endianess(le)
|
|
48
47
|
.uint32('magic')
|
|
@@ -54,7 +53,8 @@ function getParsers(isBE) {
|
|
|
54
53
|
.endianess(le)
|
|
55
54
|
.uint8('isLeafNode')
|
|
56
55
|
.skip(1)
|
|
57
|
-
.uint16('cnt')
|
|
56
|
+
.uint16('cnt')
|
|
57
|
+
.saveOffset('offset');
|
|
58
58
|
return {
|
|
59
59
|
chromTreeParser,
|
|
60
60
|
totalSummaryParser,
|
|
@@ -70,14 +70,8 @@ export class BBI {
|
|
|
70
70
|
* @param renameRefSeqs - an optional method to rename the internal reference sequences using a mapping function
|
|
71
71
|
*/
|
|
72
72
|
constructor(options = {}) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
fill: async (params, signal) => {
|
|
76
|
-
return this._getHeader({ ...params, signal });
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
const { filehandle, renameRefSeqs, path, url } = options;
|
|
80
|
-
this.renameRefSeqs = renameRefSeqs || ((s) => s);
|
|
73
|
+
const { filehandle, renameRefSeqs = s => s, path, url } = options;
|
|
74
|
+
this.renameRefSeqs = renameRefSeqs;
|
|
81
75
|
if (filehandle) {
|
|
82
76
|
this.bbi = filehandle;
|
|
83
77
|
}
|
|
@@ -97,7 +91,13 @@ export class BBI {
|
|
|
97
91
|
*/
|
|
98
92
|
getHeader(opts = {}) {
|
|
99
93
|
const options = 'aborted' in opts ? { signal: opts } : opts;
|
|
100
|
-
|
|
94
|
+
if (!this.headerP) {
|
|
95
|
+
this.headerP = this._getHeader(options).catch(e => {
|
|
96
|
+
this.headerP = undefined;
|
|
97
|
+
throw e;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return this.headerP;
|
|
101
101
|
}
|
|
102
102
|
async _getHeader(opts) {
|
|
103
103
|
const header = await this._getMainHeader(opts);
|
|
@@ -108,23 +108,25 @@ export class BBI {
|
|
|
108
108
|
const { buffer } = await this.bbi.read(Buffer.alloc(requestSize), 0, requestSize, 0, opts);
|
|
109
109
|
const isBigEndian = this._isBigEndian(buffer);
|
|
110
110
|
const ret = getParsers(isBigEndian);
|
|
111
|
-
const header = ret.headerParser.parse(buffer)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
const header = ret.headerParser.parse(buffer);
|
|
112
|
+
const { magic, asOffset, totalSummaryOffset } = header;
|
|
113
|
+
header.fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
|
|
114
|
+
if (asOffset > requestSize || totalSummaryOffset > requestSize) {
|
|
115
115
|
return this._getMainHeader(opts, requestSize * 2);
|
|
116
116
|
}
|
|
117
|
-
if (
|
|
117
|
+
if (asOffset) {
|
|
118
|
+
const off = Number(header.asOffset);
|
|
118
119
|
header.autoSql = buffer
|
|
119
|
-
.
|
|
120
|
+
.subarray(off, buffer.indexOf(0, off))
|
|
120
121
|
.toString('utf8');
|
|
121
122
|
}
|
|
122
123
|
if (header.totalSummaryOffset > requestSize) {
|
|
123
124
|
return this._getMainHeader(opts, requestSize * 2);
|
|
124
125
|
}
|
|
125
126
|
if (header.totalSummaryOffset) {
|
|
126
|
-
const tail = buffer.
|
|
127
|
-
|
|
127
|
+
const tail = buffer.subarray(Number(header.totalSummaryOffset));
|
|
128
|
+
const sum = ret.totalSummaryParser.parse(tail);
|
|
129
|
+
header.totalSummary = { ...sum, basesCovered: Number(sum.basesCovered) };
|
|
128
130
|
}
|
|
129
131
|
return { ...header, isBigEndian };
|
|
130
132
|
}
|
|
@@ -145,37 +147,40 @@ export class BBI {
|
|
|
145
147
|
const le = isBE ? 'big' : 'little';
|
|
146
148
|
const refsByNumber = [];
|
|
147
149
|
const refsByName = {};
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
let unzoomedDataOffset = Number(header.unzoomedDataOffset);
|
|
151
|
+
const chromTreeOffset = Number(header.chromTreeOffset);
|
|
150
152
|
while (unzoomedDataOffset % 4 !== 0) {
|
|
151
153
|
unzoomedDataOffset += 1;
|
|
152
154
|
}
|
|
153
|
-
const
|
|
155
|
+
const off = unzoomedDataOffset - chromTreeOffset;
|
|
156
|
+
const { buffer } = await this.bbi.read(Buffer.alloc(off), 0, off, Number(chromTreeOffset), opts);
|
|
154
157
|
const p = getParsers(isBE);
|
|
155
|
-
const { keySize } = p.chromTreeParser.parse(
|
|
158
|
+
const { keySize } = p.chromTreeParser.parse(buffer);
|
|
156
159
|
const leafNodeParser = new Parser()
|
|
157
160
|
.endianess(le)
|
|
158
161
|
.string('key', { stripNull: true, length: keySize })
|
|
159
162
|
.uint32('refId')
|
|
160
|
-
.uint32('refSize')
|
|
163
|
+
.uint32('refSize')
|
|
164
|
+
.saveOffset('offset');
|
|
161
165
|
const nonleafNodeParser = new Parser()
|
|
162
166
|
.endianess(le)
|
|
163
167
|
.skip(keySize)
|
|
164
|
-
.uint64('childOffset')
|
|
168
|
+
.uint64('childOffset')
|
|
169
|
+
.saveOffset('offset');
|
|
165
170
|
const rootNodeOffset = 32;
|
|
166
171
|
const bptReadNode = async (currentOffset) => {
|
|
167
172
|
let offset = currentOffset;
|
|
168
|
-
if (offset >=
|
|
173
|
+
if (offset >= buffer.length) {
|
|
169
174
|
throw new Error('reading beyond end of buffer');
|
|
170
175
|
}
|
|
171
|
-
const ret = p.isLeafNode.parse(
|
|
172
|
-
const { isLeafNode, cnt } = ret
|
|
176
|
+
const ret = p.isLeafNode.parse(buffer.subarray(offset));
|
|
177
|
+
const { isLeafNode, cnt } = ret;
|
|
173
178
|
offset += ret.offset;
|
|
174
179
|
if (isLeafNode) {
|
|
175
180
|
for (let n = 0; n < cnt; n += 1) {
|
|
176
|
-
const leafRet = leafNodeParser.parse(
|
|
181
|
+
const leafRet = leafNodeParser.parse(buffer.subarray(offset));
|
|
177
182
|
offset += leafRet.offset;
|
|
178
|
-
const { key, refId, refSize } = leafRet
|
|
183
|
+
const { key, refId, refSize } = leafRet;
|
|
179
184
|
const refRec = { name: key, id: refId, length: refSize };
|
|
180
185
|
refsByName[this.renameRefSeqs(key)] = refId;
|
|
181
186
|
refsByNumber[refId] = refRec;
|
|
@@ -185,11 +190,10 @@ export class BBI {
|
|
|
185
190
|
// parse index node
|
|
186
191
|
const nextNodes = [];
|
|
187
192
|
for (let n = 0; n < cnt; n += 1) {
|
|
188
|
-
const nonleafRet = nonleafNodeParser.parse(
|
|
189
|
-
|
|
193
|
+
const nonleafRet = nonleafNodeParser.parse(buffer.subarray(offset));
|
|
194
|
+
const { childOffset } = nonleafRet;
|
|
190
195
|
offset += nonleafRet.offset;
|
|
191
|
-
childOffset
|
|
192
|
-
nextNodes.push(bptReadNode(childOffset));
|
|
196
|
+
nextNodes.push(bptReadNode(Number(childOffset) - Number(chromTreeOffset)));
|
|
193
197
|
}
|
|
194
198
|
await Promise.all(nextNodes);
|
|
195
199
|
}
|
|
@@ -205,10 +209,8 @@ export class BBI {
|
|
|
205
209
|
* @param abortSignal - a signal to optionally abort this operation
|
|
206
210
|
*/
|
|
207
211
|
async getUnzoomedView(opts) {
|
|
208
|
-
const { unzoomedIndexOffset,
|
|
209
|
-
|
|
210
|
-
const cirLen = nzl ? nzl.dataOffset - unzoomedIndexOffset : 4000;
|
|
211
|
-
return new BlockView(this.bbi, refsByName, unzoomedIndexOffset, cirLen, isBigEndian, uncompressBufSize > 0, fileType);
|
|
212
|
+
const { unzoomedIndexOffset, refsByName, uncompressBufSize, isBigEndian, fileType, } = await this.getHeader(opts);
|
|
213
|
+
return new BlockView(this.bbi, refsByName, unzoomedIndexOffset, isBigEndian, uncompressBufSize > 0, fileType);
|
|
212
214
|
}
|
|
213
215
|
/**
|
|
214
216
|
* Gets features from a BigWig file
|
package/esm/bbi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,UAAU,EAAY,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,aAAa,GAAG,CAAC,UAAU,CAAA;AACjC,MAAM,aAAa,GAAG,CAAC,UAAU,CAAA;AAyCjC;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAa;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClC,MAAM,YAAY,GAAG,IAAI,MAAM,EAAE;SAC9B,SAAS,CAAC,EAAE,CAAC;SACb,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,eAAe,CAAC;SACvB,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,mBAAmB,CAAC;SAC3B,MAAM,CAAC,UAAU,CAAC,CAAC,iCAAiC;SACpD,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,mBAAmB,CAAC;SAC3B,MAAM,CAAC,iBAAiB,CAAC,CAAC,oCAAoC;SAC9D,KAAK,CAAC,YAAY,EAAE;QACnB,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,IAAI,MAAM,EAAE;aACf,SAAS,CAAC,EAAE,CAAC;aACb,MAAM,CAAC,gBAAgB,CAAC;aACxB,MAAM,CAAC,UAAU,CAAC;aAClB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,aAAa,CAAC;KACzB,CAAC,CAAA;IAEJ,MAAM,kBAAkB,GAAG,IAAI,MAAM,EAAE;SACpC,SAAS,CAAC,EAAE,CAAC;SACb,MAAM,CAAC,cAAc,CAAC;SACtB,QAAQ,CAAC,UAAU,CAAC;SACpB,QAAQ,CAAC,UAAU,CAAC;SACpB,QAAQ,CAAC,UAAU,CAAC;SACpB,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAE9B,MAAM,eAAe,GAAG,IAAI,MAAM,EAAE;SACjC,SAAS,CAAC,EAAE,CAAC;SACb,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,WAAW,CAAC,CAAA;IAEtB,MAAM,UAAU,GAAG,IAAI,MAAM,EAAE;SAC5B,SAAS,CAAC,EAAE,CAAC;SACb,KAAK,CAAC,YAAY,CAAC;SACnB,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,KAAK,CAAC;SACb,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEvB,OAAO;QACL,eAAe;QACf,kBAAkB;QAClB,YAAY;QACZ,UAAU;KACX,CAAA;AACH,CAAC;AAQD,MAAM,OAAgB,GAAG;IAsBvB;;;;;OAKG;IACH,YACE,UAKI,EAAE;QAEN,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;QACjE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,GAAG,GAAG,UAAU,CAAA;SACtB;aAAM,IAAI,GAAG,EAAE;YACd,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;SAC/B;aAAM,IAAI,IAAI,EAAE;YACf,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;SAC/B;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;SACjC;IACH,CAAC;IAxCD;;;OAGG;IACI,SAAS,CAAC,OAAqC,EAAE;QACtD,MAAM,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAC1E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;gBACxB,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IA6BO,KAAK,CAAC,UAAU,CAAC,IAAoB;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACtD,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;IACjC,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,IAAoB,EACpB,WAAW,GAAG,IAAI;QAElB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACpC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EACzB,CAAC,EACD,WAAW,EACX,CAAC,EACD,IAAI,CACL,CAAA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAA;QACtD,MAAM,CAAC,QAAQ,GAAG,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC/D,IAAI,QAAQ,GAAG,WAAW,IAAI,kBAAkB,GAAG,WAAW,EAAE;YAC9D,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAA;SAClD;QACD,IAAI,QAAQ,EAAE;YACZ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACnC,MAAM,CAAC,OAAO,GAAG,MAAM;iBACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACrC,QAAQ,CAAC,MAAM,CAAC,CAAA;SACpB;QACD,IAAI,MAAM,CAAC,kBAAkB,GAAG,WAAW,EAAE;YAC3C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAA;SAClD;QACD,IAAI,MAAM,CAAC,kBAAkB,EAAE;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC9C,MAAM,CAAC,YAAY,GAAG,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAA;SACzE;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,CAAA;IACnC,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,aAAa,EAAE;YAClD,OAAO,KAAK,CAAA;SACb;QACD,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,aAAa,EAAE;YAClD,OAAO,IAAI,CAAA;SACZ;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,qCAAqC;IAC7B,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,IAA8B;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAA;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;QAClC,MAAM,YAAY,GAEd,EAAE,CAAA;QACN,MAAM,UAAU,GAA8B,EAAE,CAAA;QAEhD,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;QACtD,OAAO,kBAAkB,GAAG,CAAC,KAAK,CAAC,EAAE;YACnC,kBAAkB,IAAI,CAAC,CAAA;SACxB;QACD,MAAM,GAAG,GAAG,kBAAkB,GAAG,eAAe,CAAA;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACjB,CAAC,EACD,GAAG,EACH,MAAM,CAAC,eAAe,CAAC,EACvB,IAAI,CACL,CAAA;QAED,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnD,MAAM,cAAc,GAAG,IAAI,MAAM,EAAE;aAChC,SAAS,CAAC,EAAE,CAAC;aACb,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;aACnD,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC,SAAS,CAAC;aACjB,UAAU,CAAC,QAAQ,CAAC,CAAA;QACvB,MAAM,iBAAiB,GAAG,IAAI,MAAM,EAAE;aACnC,SAAS,CAAC,EAAE,CAAC;aACb,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,aAAa,CAAC;aACrB,UAAU,CAAC,QAAQ,CAAC,CAAA;QACvB,MAAM,cAAc,GAAG,EAAE,CAAA;QACzB,MAAM,WAAW,GAAG,KAAK,EAAE,aAAqB,EAAE,EAAE;YAClD,IAAI,MAAM,GAAG,aAAa,CAAA;YAC1B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YACvD,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;YAC/B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;YACpB,IAAI,UAAU,EAAE;gBACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC/B,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;oBAC7D,MAAM,IAAI,OAAO,CAAC,MAAM,CAAA;oBACxB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;oBACvC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;oBACxD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;oBAC3C,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;iBAC7B;aACF;iBAAM;gBACL,mBAAmB;gBACnB,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;oBACnE,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAA;oBAClC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA;oBAC3B,SAAS,CAAC,IAAI,CACZ,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAC3D,CAAA;iBACF;gBACD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;aAC7B;QACH,CAAC,CAAA;QACD,MAAM,WAAW,CAAC,cAAc,CAAC,CAAA;QACjC,OAAO;YACL,UAAU;YACV,YAAY;SACb,CAAA;IACH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,eAAe,CAAC,IAAoB;QAClD,MAAM,EACJ,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,QAAQ,GACT,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,iBAAiB,GAAG,CAAC,EACrB,QAAQ,CACT,CAAA;IACH,CAAC;IAUD;;;;;;;OAOG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAe,EACf,KAAa,EACb,GAAW,EACX,OAAmE;QACjE,KAAK,EAAE,CAAC;KACT;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,IAAe,CAAA;QAEnB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;SACvD;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACrB,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SAC5C;aAAM;YACL,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACnC;QAED,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;SACrD;QACD,OAAO,IAAI,UAAU,CAAC,CAAC,QAA6B,EAAQ,EAAE;YAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAe,EACf,KAAa,EACb,GAAW,EACX,OAAmE;QACjE,KAAK,EAAE,CAAC;KACT;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QAEjE,MAAM,GAAG,GAAG,MAAM,EAAE;aACjB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7C,SAAS,EAAE,CAAA;QACd,OAAO,GAAG,IAAI,EAAE,CAAA;IAClB,CAAC;CACF"}
|
package/esm/bigbed.d.ts
CHANGED
|
@@ -3,9 +3,8 @@ import { BlockView } from './blockView';
|
|
|
3
3
|
export declare function filterUndef<T>(ts: (T | undefined)[]): T[];
|
|
4
4
|
export declare class BigBed extends BBI {
|
|
5
5
|
readIndicesCache: any;
|
|
6
|
-
constructor(opts?: any);
|
|
7
6
|
readIndices(opts?: AbortSignal | RequestOptions): any;
|
|
8
|
-
protected getView(
|
|
7
|
+
protected getView(_scale: number, opts: RequestOptions): Promise<BlockView>;
|
|
9
8
|
private _readIndices;
|
|
10
9
|
private searchExtraIndexBlocks;
|
|
11
10
|
searchExtraIndex(name: string, opts?: RequestOptions): Promise<Feature[]>;
|
package/esm/bigbed.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Parser } from '
|
|
1
|
+
import { Parser } from 'binary-parser';
|
|
2
2
|
import { Observable, merge } from 'rxjs';
|
|
3
3
|
import { map, reduce } from 'rxjs/operators';
|
|
4
4
|
import AbortablePromiseCache from 'abortable-promise-cache';
|
|
@@ -8,8 +8,8 @@ export function filterUndef(ts) {
|
|
|
8
8
|
return ts.filter((t) => !!t);
|
|
9
9
|
}
|
|
10
10
|
export class BigBed extends BBI {
|
|
11
|
-
constructor(
|
|
12
|
-
super(
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
13
|
this.readIndicesCache = new AbortablePromiseCache({
|
|
14
14
|
cache: new QuickLRU({ maxSize: 1 }),
|
|
15
15
|
fill: async (args, signal) => {
|
|
@@ -27,7 +27,7 @@ export class BigBed extends BBI {
|
|
|
27
27
|
* @param abortSignal - an optional AbortSignal to kill operation
|
|
28
28
|
* @return promise for a BlockView
|
|
29
29
|
*/
|
|
30
|
-
async getView(
|
|
30
|
+
async getView(_scale, opts) {
|
|
31
31
|
return this.getUnzoomedView(opts);
|
|
32
32
|
}
|
|
33
33
|
/*
|
|
@@ -37,14 +37,14 @@ export class BigBed extends BBI {
|
|
|
37
37
|
*/
|
|
38
38
|
async _readIndices(opts) {
|
|
39
39
|
const { extHeaderOffset, isBigEndian } = await this.getHeader(opts);
|
|
40
|
-
const { buffer: data } = await this.bbi.read(Buffer.alloc(64), 0, 64, extHeaderOffset);
|
|
40
|
+
const { buffer: data } = await this.bbi.read(Buffer.alloc(64), 0, 64, Number(extHeaderOffset));
|
|
41
41
|
const le = isBigEndian ? 'big' : 'little';
|
|
42
42
|
const ret = new Parser()
|
|
43
43
|
.endianess(le)
|
|
44
44
|
.uint16('size')
|
|
45
45
|
.uint16('count')
|
|
46
46
|
.uint64('offset')
|
|
47
|
-
.parse(data)
|
|
47
|
+
.parse(data);
|
|
48
48
|
const { count, offset } = ret;
|
|
49
49
|
// no extra index is defined if count==0
|
|
50
50
|
if (count === 0) {
|
|
@@ -52,7 +52,7 @@ export class BigBed extends BBI {
|
|
|
52
52
|
}
|
|
53
53
|
const blocklen = 20;
|
|
54
54
|
const len = blocklen * count;
|
|
55
|
-
const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len, offset);
|
|
55
|
+
const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len, Number(offset));
|
|
56
56
|
const extParser = new Parser()
|
|
57
57
|
.endianess(le)
|
|
58
58
|
.int16('type')
|
|
@@ -62,7 +62,7 @@ export class BigBed extends BBI {
|
|
|
62
62
|
.int16('field');
|
|
63
63
|
const indices = [];
|
|
64
64
|
for (let i = 0; i < count; i += 1) {
|
|
65
|
-
indices.push(extParser.parse(buffer.
|
|
65
|
+
indices.push(extParser.parse(buffer.subarray(i * blocklen)));
|
|
66
66
|
}
|
|
67
67
|
return indices;
|
|
68
68
|
}
|
|
@@ -82,17 +82,19 @@ export class BigBed extends BBI {
|
|
|
82
82
|
}
|
|
83
83
|
const locs = indices.map(async (index) => {
|
|
84
84
|
const { offset, field } = index;
|
|
85
|
-
const { buffer: data } = await this.bbi.read(Buffer.alloc(32), 0, 32, offset, opts);
|
|
85
|
+
const { buffer: data } = await this.bbi.read(Buffer.alloc(32), 0, 32, Number(offset), opts);
|
|
86
|
+
const le = isBigEndian ? 'big' : 'little';
|
|
86
87
|
const p = new Parser()
|
|
87
|
-
.endianess(
|
|
88
|
+
.endianess(le)
|
|
88
89
|
.int32('magic')
|
|
89
90
|
.int32('blockSize')
|
|
90
91
|
.int32('keySize')
|
|
91
92
|
.int32('valSize')
|
|
92
93
|
.uint64('itemCount');
|
|
93
|
-
const { blockSize, keySize, valSize } = p.parse(data)
|
|
94
|
+
const { blockSize, keySize, valSize } = p.parse(data);
|
|
95
|
+
// console.log({blockSize,keySize,valSize})
|
|
94
96
|
const bpt = new Parser()
|
|
95
|
-
.endianess(
|
|
97
|
+
.endianess(le)
|
|
96
98
|
.int8('nodeType')
|
|
97
99
|
.skip(1)
|
|
98
100
|
.int16('cnt')
|
|
@@ -102,12 +104,14 @@ export class BigBed extends BBI {
|
|
|
102
104
|
0: new Parser().array('leafkeys', {
|
|
103
105
|
length: 'cnt',
|
|
104
106
|
type: new Parser()
|
|
107
|
+
.endianess(le)
|
|
105
108
|
.string('key', { length: keySize, stripNull: true })
|
|
106
109
|
.uint64('offset'),
|
|
107
110
|
}),
|
|
108
111
|
1: new Parser().array('keys', {
|
|
109
112
|
length: 'cnt',
|
|
110
113
|
type: new Parser()
|
|
114
|
+
.endianess(le)
|
|
111
115
|
.string('key', { length: keySize, stripNull: true })
|
|
112
116
|
.uint64('offset')
|
|
113
117
|
.uint32('length')
|
|
@@ -116,9 +120,10 @@ export class BigBed extends BBI {
|
|
|
116
120
|
},
|
|
117
121
|
});
|
|
118
122
|
const bptReadNode = async (nodeOffset) => {
|
|
123
|
+
const val = Number(nodeOffset);
|
|
119
124
|
const len = 4 + blockSize * (keySize + valSize);
|
|
120
|
-
const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len,
|
|
121
|
-
const node = bpt.parse(buffer)
|
|
125
|
+
const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len, val, opts);
|
|
126
|
+
const node = bpt.parse(buffer);
|
|
122
127
|
if (node.leafkeys) {
|
|
123
128
|
let lastOffset;
|
|
124
129
|
for (let i = 0; i < node.leafkeys.length; i += 1) {
|
|
@@ -138,7 +143,7 @@ export class BigBed extends BBI {
|
|
|
138
143
|
return undefined;
|
|
139
144
|
};
|
|
140
145
|
const rootNodeOffset = 32;
|
|
141
|
-
return bptReadNode(offset + rootNodeOffset);
|
|
146
|
+
return bptReadNode(Number(offset) + rootNodeOffset);
|
|
142
147
|
});
|
|
143
148
|
return filterUndef(await Promise.all(locs));
|
|
144
149
|
}
|
|
@@ -157,7 +162,7 @@ export class BigBed extends BBI {
|
|
|
157
162
|
}
|
|
158
163
|
const view = await this.getUnzoomedView(opts);
|
|
159
164
|
const res = blocks.map(block => {
|
|
160
|
-
return new Observable(
|
|
165
|
+
return new Observable(observer => {
|
|
161
166
|
view.readFeatures(observer, [block], opts);
|
|
162
167
|
}).pipe(reduce((acc, curr) => acc.concat(curr)), map(x => {
|
|
163
168
|
for (let i = 0; i < x.length; i += 1) {
|
|
@@ -167,9 +172,7 @@ export class BigBed extends BBI {
|
|
|
167
172
|
}));
|
|
168
173
|
});
|
|
169
174
|
const ret = await merge(...res).toPromise();
|
|
170
|
-
return ret.filter((f)
|
|
171
|
-
return f.rest.split('\t')[f.field - 3] === name;
|
|
172
|
-
});
|
|
175
|
+
return ret.filter(f => { var _a; return ((_a = f.rest) === null || _a === void 0 ? void 0 : _a.split('\t')[(f.field || 0) - 3]) === name; });
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
//# sourceMappingURL=bigbed.js.map
|
package/esm/bigbed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"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"}
|
package/esm/bigwig.d.ts
CHANGED
|
@@ -4,9 +4,7 @@ export declare class BigWig extends BBI {
|
|
|
4
4
|
/**
|
|
5
5
|
* Retrieves a BlockView of a specific zoomLevel
|
|
6
6
|
*
|
|
7
|
-
* @param
|
|
8
|
-
* @param start - The start of a region
|
|
9
|
-
* @param end - The end of a region
|
|
7
|
+
* @param scale - number
|
|
10
8
|
* @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
|
|
11
9
|
*/
|
|
12
10
|
protected getView(scale: number, opts: RequestOptions): Promise<BlockView>;
|
package/esm/bigwig.js
CHANGED
|
@@ -4,9 +4,7 @@ export class BigWig extends BBI {
|
|
|
4
4
|
/**
|
|
5
5
|
* Retrieves a BlockView of a specific zoomLevel
|
|
6
6
|
*
|
|
7
|
-
* @param
|
|
8
|
-
* @param start - The start of a region
|
|
9
|
-
* @param end - The end of a region
|
|
7
|
+
* @param scale - number
|
|
10
8
|
* @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
|
|
11
9
|
*/
|
|
12
10
|
async getView(scale, opts) {
|
|
@@ -20,10 +18,8 @@ export class BigWig extends BBI {
|
|
|
20
18
|
for (let i = maxLevel; i >= 0; i -= 1) {
|
|
21
19
|
const zh = zoomLevels[i];
|
|
22
20
|
if (zh && zh.reductionLevel <= 2 * basesPerPx) {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
: fileSize - 4 - zh.indexOffset;
|
|
26
|
-
return new BlockView(this.bbi, refsByName, zh.indexOffset, indexLength, isBigEndian, uncompressBufSize > 0, 'summary');
|
|
21
|
+
const indexOffset = Number(zh.indexOffset);
|
|
22
|
+
return new BlockView(this.bbi, refsByName, indexOffset, isBigEndian, uncompressBufSize > 0, 'summary');
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
25
|
return this.getUnzoomedView(opts);
|
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,aAAa,CAAA;AACvC,OAAO,EAAE,GAAG,EAAkB,MAAM,OAAO,CAAA;AAE3C,MAAM,OAAO,MAAO,SAAQ,GAAG;IAC7B
|
|
1
|
+
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,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"}
|
package/esm/blockView.d.ts
CHANGED
|
@@ -18,25 +18,24 @@ interface Options {
|
|
|
18
18
|
* @constructs
|
|
19
19
|
*/
|
|
20
20
|
export declare class BlockView {
|
|
21
|
-
private cirTreeOffset;
|
|
22
|
-
private cirTreeLength;
|
|
23
21
|
private bbi;
|
|
24
|
-
private isCompressed;
|
|
25
|
-
private isBigEndian;
|
|
26
22
|
private refsByName;
|
|
23
|
+
private cirTreeOffset;
|
|
24
|
+
private isBigEndian;
|
|
25
|
+
private isCompressed;
|
|
27
26
|
private blockType;
|
|
28
27
|
private cirTreePromise?;
|
|
29
28
|
private featureCache;
|
|
30
29
|
private leafParser;
|
|
31
|
-
private bigWigParser;
|
|
32
30
|
private bigBedParser;
|
|
33
|
-
|
|
34
|
-
constructor(bbi: GenericFilehandle, refsByName: any, cirTreeOffset: number, cirTreeLength: number, isBigEndian: boolean, isCompressed: boolean, blockType: string);
|
|
31
|
+
constructor(bbi: GenericFilehandle, refsByName: any, cirTreeOffset: number, isBigEndian: boolean, isCompressed: boolean, blockType: string);
|
|
35
32
|
readWigData(chrName: string, start: number, end: number, observer: Observer<Feature[]>, opts: Options): Promise<void>;
|
|
36
33
|
private parseSummaryBlock;
|
|
37
34
|
private parseBigBedBlock;
|
|
38
35
|
private parseBigWigBlock;
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
readFeatures(observer: Observer<Feature[]>, blocks: {
|
|
37
|
+
offset: bigint;
|
|
38
|
+
length: bigint;
|
|
39
|
+
}[], opts?: Options): Promise<void>;
|
|
41
40
|
}
|
|
42
41
|
export {};
|