@gmod/bbi 4.0.5 → 5.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 +9 -0
- package/dist/bbi.d.ts +20 -4
- package/dist/bbi.js +124 -104
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +1 -1
- package/dist/bigbed.js +91 -72
- package/dist/bigbed.js.map +1 -1
- package/dist/bigint-polyfill/polyfill.js +0 -10
- package/dist/bigint-polyfill/polyfill.js.map +1 -1
- package/dist/bigint-polyfill/pure.d.ts +0 -2
- package/dist/bigint-polyfill/pure.js +2 -29
- package/dist/bigint-polyfill/pure.js.map +1 -1
- package/dist/bigwig.js +3 -8
- package/dist/bigwig.js.map +1 -1
- package/dist/block-view.d.ts +4 -6
- package/dist/block-view.js +123 -132
- package/dist/block-view.js.map +1 -1
- package/dist/range.js +1 -1
- package/dist/range.js.map +1 -1
- package/dist/unzip-pako.d.ts +0 -1
- package/dist/unzip-pako.js +1 -2
- package/dist/unzip-pako.js.map +1 -1
- package/dist/unzip.d.ts +0 -1
- package/dist/util.d.ts +12 -14
- package/dist/util.js +12 -18
- package/dist/util.js.map +1 -1
- package/esm/bbi.d.ts +20 -4
- package/esm/bbi.js +124 -104
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +1 -1
- package/esm/bigbed.js +89 -70
- package/esm/bigbed.js.map +1 -1
- package/esm/bigint-polyfill/polyfill.js +1 -11
- package/esm/bigint-polyfill/polyfill.js.map +1 -1
- package/esm/bigint-polyfill/pure.d.ts +0 -2
- package/esm/bigint-polyfill/pure.js +0 -24
- package/esm/bigint-polyfill/pure.js.map +1 -1
- package/esm/bigwig.js +3 -8
- package/esm/bigwig.js.map +1 -1
- package/esm/block-view.d.ts +4 -6
- package/esm/block-view.js +123 -132
- package/esm/block-view.js.map +1 -1
- package/esm/range.js +1 -1
- package/esm/range.js.map +1 -1
- package/esm/unzip-pako.d.ts +0 -1
- package/esm/unzip.d.ts +0 -1
- package/esm/util.d.ts +12 -14
- package/esm/util.js +8 -14
- package/esm/util.js.map +1 -1
- package/package.json +6 -7
- package/src/bbi.ts +151 -115
- package/src/bigbed.ts +100 -81
- package/src/bigint-polyfill/polyfill.ts +1 -13
- package/src/bigint-polyfill/pure.ts +0 -36
- package/src/bigwig.ts +3 -9
- package/src/block-view.ts +134 -169
- package/src/range.ts +1 -1
- package/src/util.ts +16 -21
package/dist/bigbed.js
CHANGED
|
@@ -23,18 +23,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.BigBed =
|
|
26
|
+
exports.BigBed = void 0;
|
|
27
|
+
exports.filterUndef = filterUndef;
|
|
27
28
|
const buffer_1 = require("buffer");
|
|
28
|
-
const binary_parser_1 = require("binary-parser");
|
|
29
29
|
const rxjs_1 = require("rxjs");
|
|
30
30
|
const operators_1 = require("rxjs/operators");
|
|
31
|
-
const abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
|
|
31
|
+
const abortable_promise_cache_1 = __importDefault(require("@gmod/abortable-promise-cache"));
|
|
32
32
|
const quick_lru_1 = __importDefault(require("quick-lru"));
|
|
33
|
+
// locals
|
|
33
34
|
const bbi_1 = require("./bbi");
|
|
34
35
|
function filterUndef(ts) {
|
|
35
36
|
return ts.filter((t) => !!t);
|
|
36
37
|
}
|
|
37
|
-
exports.filterUndef = filterUndef;
|
|
38
38
|
class BigBed extends bbi_1.BBI {
|
|
39
39
|
constructor() {
|
|
40
40
|
super(...arguments);
|
|
@@ -57,45 +57,52 @@ class BigBed extends bbi_1.BBI {
|
|
|
57
57
|
}
|
|
58
58
|
/*
|
|
59
59
|
* parse the bigbed extraIndex fields
|
|
60
|
-
*
|
|
61
|
-
*
|
|
60
|
+
*
|
|
61
|
+
*
|
|
62
|
+
* @return a Promise for an array of Index data structure since there can be
|
|
63
|
+
* multiple extraIndexes in a bigbed, see bedToBigBed documentation
|
|
62
64
|
*/
|
|
63
65
|
_readIndices(opts) {
|
|
64
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
65
67
|
const { extHeaderOffset, isBigEndian } = yield this.getHeader(opts);
|
|
66
68
|
const { buffer: data } = yield this.bbi.read(buffer_1.Buffer.alloc(64), 0, 64, Number(extHeaderOffset));
|
|
67
|
-
const le = isBigEndian
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
const le = !isBigEndian;
|
|
70
|
+
const b = data;
|
|
71
|
+
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
72
|
+
let offset = 0;
|
|
73
|
+
// const _size = dataView.getUint16(offset, le)
|
|
74
|
+
offset += 2;
|
|
75
|
+
const count = dataView.getUint16(offset, le);
|
|
76
|
+
offset += 2;
|
|
77
|
+
const dataOffset = Number(dataView.getBigUint64(offset, le));
|
|
78
|
+
offset += 8;
|
|
75
79
|
// no extra index is defined if count==0
|
|
76
80
|
if (count === 0) {
|
|
77
81
|
return [];
|
|
78
82
|
}
|
|
79
83
|
const blocklen = 20;
|
|
80
84
|
const len = blocklen * count;
|
|
81
|
-
const { buffer } = yield this.bbi.read(buffer_1.Buffer.alloc(len), 0, len, Number(
|
|
82
|
-
const extParser = new binary_parser_1.Parser()
|
|
83
|
-
.endianess(le)
|
|
84
|
-
.int16('type')
|
|
85
|
-
.int16('fieldcount')
|
|
86
|
-
.uint64('offset')
|
|
87
|
-
.skip(4)
|
|
88
|
-
.int16('field');
|
|
85
|
+
const { buffer } = yield this.bbi.read(buffer_1.Buffer.alloc(len), 0, len, Number(dataOffset));
|
|
89
86
|
const indices = [];
|
|
90
87
|
for (let i = 0; i < count; i += 1) {
|
|
91
|
-
|
|
88
|
+
const b = buffer.subarray(i * blocklen);
|
|
89
|
+
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
90
|
+
let offset = 0;
|
|
91
|
+
const type = dataView.getInt16(offset, le);
|
|
92
|
+
offset += 2;
|
|
93
|
+
const fieldcount = dataView.getInt16(offset, le);
|
|
94
|
+
offset += 2;
|
|
95
|
+
const dataOffset = Number(dataView.getBigUint64(offset, le));
|
|
96
|
+
offset += 8 + 4; //4 skip
|
|
97
|
+
const field = dataView.getInt16(offset, le);
|
|
98
|
+
indices.push({ type, fieldcount, offset: Number(dataOffset), field });
|
|
92
99
|
}
|
|
93
100
|
return indices;
|
|
94
101
|
});
|
|
95
102
|
}
|
|
96
103
|
/*
|
|
97
|
-
* perform a search in the bigbed extraIndex to find which blocks in the
|
|
98
|
-
* actual feature data
|
|
104
|
+
* perform a search in the bigbed extraIndex to find which blocks in the
|
|
105
|
+
* bigbed data to look for the actual feature data
|
|
99
106
|
*
|
|
100
107
|
* @param name - the name to search for
|
|
101
108
|
* @param opts - a SearchOptions argument with optional signal
|
|
@@ -109,52 +116,48 @@ class BigBed extends bbi_1.BBI {
|
|
|
109
116
|
return [];
|
|
110
117
|
}
|
|
111
118
|
const locs = indices.map((index) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const { offset, field } = index;
|
|
113
|
-
const { buffer: data } = yield this.bbi.read(buffer_1.Buffer.alloc(32), 0, 32,
|
|
114
|
-
const le = isBigEndian
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
.int16('cnt')
|
|
129
|
-
.choice({
|
|
130
|
-
tag: 'nodeType',
|
|
131
|
-
choices: {
|
|
132
|
-
0: new binary_parser_1.Parser().array('leafkeys', {
|
|
133
|
-
length: 'cnt',
|
|
134
|
-
type: new binary_parser_1.Parser()
|
|
135
|
-
.endianess(le)
|
|
136
|
-
.string('key', { length: keySize, stripNull: true })
|
|
137
|
-
.uint64('offset'),
|
|
138
|
-
}),
|
|
139
|
-
1: new binary_parser_1.Parser().array('keys', {
|
|
140
|
-
length: 'cnt',
|
|
141
|
-
type: new binary_parser_1.Parser()
|
|
142
|
-
.endianess(le)
|
|
143
|
-
.string('key', { length: keySize, stripNull: true })
|
|
144
|
-
.uint64('offset')
|
|
145
|
-
.uint32('length')
|
|
146
|
-
.uint32('reserved'),
|
|
147
|
-
}),
|
|
148
|
-
},
|
|
149
|
-
});
|
|
119
|
+
const { offset: offset2, field } = index;
|
|
120
|
+
const { buffer: data } = yield this.bbi.read(buffer_1.Buffer.alloc(32), 0, 32, offset2, opts);
|
|
121
|
+
const le = !isBigEndian;
|
|
122
|
+
const b = data;
|
|
123
|
+
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
124
|
+
let offset = 0;
|
|
125
|
+
// const _magic = dataView.getInt32(offset, le)
|
|
126
|
+
offset += 4;
|
|
127
|
+
const blockSize = dataView.getInt32(offset, le);
|
|
128
|
+
offset += 4;
|
|
129
|
+
const keySize = dataView.getInt32(offset, le);
|
|
130
|
+
offset += 4;
|
|
131
|
+
const valSize = dataView.getInt32(offset, le);
|
|
132
|
+
offset += 4;
|
|
133
|
+
// const _itemCount = Number(dataView.getBigUint64(offset, le))
|
|
134
|
+
offset += 8;
|
|
150
135
|
const bptReadNode = (nodeOffset) => __awaiter(this, void 0, void 0, function* () {
|
|
151
136
|
const val = Number(nodeOffset);
|
|
152
137
|
const len = 4 + blockSize * (keySize + valSize);
|
|
153
138
|
const { buffer } = yield this.bbi.read(buffer_1.Buffer.alloc(len), 0, len, val, opts);
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
const b = buffer;
|
|
140
|
+
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
141
|
+
let offset = 0;
|
|
142
|
+
const nodeType = dataView.getInt8(offset);
|
|
143
|
+
offset += 2; //skip 1
|
|
144
|
+
const cnt = dataView.getInt16(offset, le);
|
|
145
|
+
offset += 2;
|
|
146
|
+
const keys = [];
|
|
147
|
+
if (nodeType === 0) {
|
|
148
|
+
const leafkeys = [];
|
|
149
|
+
for (let i = 0; i < cnt; i++) {
|
|
150
|
+
const key = b
|
|
151
|
+
.subarray(offset, offset + keySize)
|
|
152
|
+
.toString()
|
|
153
|
+
.replaceAll('\0', '');
|
|
154
|
+
offset += keySize;
|
|
155
|
+
const dataOffset = Number(dataView.getBigUint64(offset, le));
|
|
156
|
+
offset += 8;
|
|
157
|
+
leafkeys.push({ key, offset: dataOffset });
|
|
158
|
+
}
|
|
159
|
+
let lastOffset = 0;
|
|
160
|
+
for (const { key, offset } of leafkeys) {
|
|
158
161
|
if (name.localeCompare(key) < 0 && lastOffset) {
|
|
159
162
|
return bptReadNode(lastOffset);
|
|
160
163
|
}
|
|
@@ -162,15 +165,31 @@ class BigBed extends bbi_1.BBI {
|
|
|
162
165
|
}
|
|
163
166
|
return bptReadNode(lastOffset);
|
|
164
167
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
else if (nodeType === 1) {
|
|
169
|
+
for (let i = 0; i < cnt; i++) {
|
|
170
|
+
const key = b
|
|
171
|
+
.subarray(offset, offset + keySize)
|
|
172
|
+
.toString()
|
|
173
|
+
.replaceAll('\0', '');
|
|
174
|
+
offset += keySize;
|
|
175
|
+
const dataOffset = Number(dataView.getBigUint64(offset, le));
|
|
176
|
+
offset += 8;
|
|
177
|
+
const length = dataView.getUint32(offset, le);
|
|
178
|
+
offset += 4;
|
|
179
|
+
const reserved = dataView.getUint32(offset, le);
|
|
180
|
+
offset += 4;
|
|
181
|
+
keys.push({ key, offset: dataOffset, length, reserved });
|
|
182
|
+
}
|
|
183
|
+
for (const n of keys) {
|
|
184
|
+
if (n.key === name) {
|
|
185
|
+
return Object.assign(Object.assign({}, n), { field });
|
|
186
|
+
}
|
|
168
187
|
}
|
|
188
|
+
return undefined;
|
|
169
189
|
}
|
|
170
|
-
return undefined;
|
|
171
190
|
});
|
|
172
191
|
const rootNodeOffset = 32;
|
|
173
|
-
return bptReadNode(
|
|
192
|
+
return bptReadNode(offset2 + rootNodeOffset);
|
|
174
193
|
}));
|
|
175
194
|
return filterUndef(yield Promise.all(locs));
|
|
176
195
|
});
|
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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"}
|
|
@@ -11,14 +11,4 @@ if (!('getBigUint64' in DataView)) {
|
|
|
11
11
|
return (0, pure_1.getBigUint64)(this, byteOffset, littleEndian);
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
if (!('setBigInt64' in DataView)) {
|
|
15
|
-
DataView.prototype.setBigInt64 = function (byteOffset, value, littleEndian) {
|
|
16
|
-
(0, pure_1.setBigInt64)(this, byteOffset, value, littleEndian);
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
if (!('setBigUint64' in DataView)) {
|
|
20
|
-
DataView.prototype.setBigUint64 = function (byteOffset, value, littleEndian) {
|
|
21
|
-
(0, pure_1.setBigUint64)(this, byteOffset, value, littleEndian);
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
14
|
//# sourceMappingURL=polyfill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/bigint-polyfill/polyfill.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/bigint-polyfill/polyfill.ts"],"names":[],"mappings":";;AAAA,iCAAkD;AAElD,IAAI,CAAC,CAAC,aAAa,IAAI,QAAQ,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,UAAU,EAAE,YAAY;QACjE,OAAO,IAAA,kBAAW,EAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC;AAED,IAAI,CAAC,CAAC,cAAc,IAAI,QAAQ,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,UAAU,EAAE,YAAY;QAClE,OAAO,IAAA,mBAAY,EAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IACrD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export declare function getBigInt64(dataView: DataView, byteOffset: number, littleEndian: boolean | undefined): bigint;
|
|
2
2
|
export declare function getBigUint64(dataView: DataView, byteOffset: number, littleEndian: boolean | undefined): bigint;
|
|
3
|
-
export declare function setBigInt64(dataView: DataView, byteOffset: number, value: bigint, littleEndian: boolean | undefined): void;
|
|
4
|
-
export declare function setBigUint64(dataView: DataView, byteOffset: number, value: bigint, littleEndian: boolean | undefined): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getBigInt64 = getBigInt64;
|
|
4
|
+
exports.getBigUint64 = getBigUint64;
|
|
4
5
|
const BigInt32 = BigInt(32);
|
|
5
6
|
function getBigInt64(dataView, byteOffset, littleEndian) {
|
|
6
7
|
const littleEndianMask = Number(!!littleEndian);
|
|
@@ -11,7 +12,6 @@ function getBigInt64(dataView, byteOffset, littleEndian) {
|
|
|
11
12
|
BigInt(dataView.getUint32(byteOffset, littleEndian) * littleEndianMask +
|
|
12
13
|
dataView.getUint32(byteOffset + 4, littleEndian) * bigEndianMask));
|
|
13
14
|
}
|
|
14
|
-
exports.getBigInt64 = getBigInt64;
|
|
15
15
|
function getBigUint64(dataView, byteOffset, littleEndian) {
|
|
16
16
|
const a = dataView.getUint32(byteOffset, littleEndian);
|
|
17
17
|
const b = dataView.getUint32(byteOffset + 4, littleEndian);
|
|
@@ -23,31 +23,4 @@ function getBigUint64(dataView, byteOffset, littleEndian) {
|
|
|
23
23
|
return ((BigInt(a * bigEndianMask + b * littleEndianMask) << BigInt32) |
|
|
24
24
|
BigInt(a * littleEndianMask + b * bigEndianMask));
|
|
25
25
|
}
|
|
26
|
-
exports.getBigUint64 = getBigUint64;
|
|
27
|
-
function setBigInt64(dataView, byteOffset, value, littleEndian) {
|
|
28
|
-
const hi = Number(value >> BigInt32);
|
|
29
|
-
const lo = Number(value & BigInt(0xffffffff));
|
|
30
|
-
if (littleEndian) {
|
|
31
|
-
dataView.setInt32(byteOffset + 4, hi, littleEndian);
|
|
32
|
-
dataView.setUint32(byteOffset, lo, littleEndian);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
dataView.setInt32(byteOffset, hi, littleEndian);
|
|
36
|
-
dataView.setUint32(byteOffset + 4, lo, littleEndian);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.setBigInt64 = setBigInt64;
|
|
40
|
-
function setBigUint64(dataView, byteOffset, value, littleEndian) {
|
|
41
|
-
const hi = Number(value >> BigInt32);
|
|
42
|
-
const lo = Number(value & BigInt(0xffffffff));
|
|
43
|
-
if (littleEndian) {
|
|
44
|
-
dataView.setUint32(byteOffset + 4, hi, littleEndian);
|
|
45
|
-
dataView.setUint32(byteOffset, lo, littleEndian);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
dataView.setUint32(byteOffset, hi, littleEndian);
|
|
49
|
-
dataView.setUint32(byteOffset + 4, lo, littleEndian);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.setBigUint64 = setBigUint64;
|
|
53
26
|
//# sourceMappingURL=pure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../src/bigint-polyfill/pure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../src/bigint-polyfill/pure.ts"],"names":[],"mappings":";;AAEA,kCAmBC;AAED,oCAkBC;AAzCD,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AAE3B,SAAgB,WAAW,CACzB,QAAkB,EAClB,UAAkB,EAClB,YAAiC;IAEjC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC,CAAA;IAE3C,OAAO,CACL,CAAC,MAAM,CACL,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,aAAa;QACzD,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,gBAAgB,CACrE;QACC,QAAQ,CAAC;QACX,MAAM,CACJ,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,gBAAgB;YAC7D,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,aAAa,CACnE,CACF,CAAA;AACH,CAAC;AAED,SAAgB,YAAY,CAC1B,QAAkB,EAClB,UAAkB,EAClB,YAAiC;IAEjC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACtD,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,YAAY,CAAC,CAAA;IAE1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC,CAAA;IAE3C,4EAA4E;IAC5E,gDAAgD;IAChD,kCAAkC;IAClC,OAAO,CACL,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,QAAQ,CAAC;QAC9D,MAAM,CAAC,CAAC,GAAG,gBAAgB,GAAG,CAAC,GAAG,aAAa,CAAC,CACjD,CAAA;AACH,CAAC"}
|
package/dist/bigwig.js
CHANGED
|
@@ -23,18 +23,13 @@ class BigWig extends bbi_1.BBI {
|
|
|
23
23
|
*/
|
|
24
24
|
getView(scale, opts) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const { zoomLevels, refsByName,
|
|
26
|
+
const { zoomLevels, refsByName, isBigEndian, uncompressBufSize } = yield this.getHeader(opts);
|
|
27
27
|
const basesPerPx = 1 / scale;
|
|
28
|
-
|
|
29
|
-
if (!fileSize) {
|
|
30
|
-
// if we don't know the file size, we can't fetch the highest zoom level :-(
|
|
31
|
-
maxLevel -= 1;
|
|
32
|
-
}
|
|
28
|
+
const maxLevel = zoomLevels.length - 1;
|
|
33
29
|
for (let i = maxLevel; i >= 0; i -= 1) {
|
|
34
30
|
const zh = zoomLevels[i];
|
|
35
31
|
if (zh && zh.reductionLevel <= 2 * basesPerPx) {
|
|
36
|
-
|
|
37
|
-
return new block_view_1.BlockView(this.bbi, refsByName, indexOffset, isBigEndian, uncompressBufSize > 0, 'summary');
|
|
32
|
+
return new block_view_1.BlockView(this.bbi, refsByName, zh.indexOffset, isBigEndian, uncompressBufSize > 0, 'summary');
|
|
38
33
|
}
|
|
39
34
|
}
|
|
40
35
|
return this.getUnzoomedView(opts);
|
package/dist/bigwig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAwC;AACxC,+BAA2C;AAE3C,MAAa,MAAO,SAAQ,SAAG;IAC7B;;;;;;;OAOG;IACa,OAAO,CAAC,KAAa,EAAE,IAAoB;;YACzD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAwC;AACxC,+BAA2C;AAE3C,MAAa,MAAO,SAAQ,SAAG;IAC7B;;;;;;;OAOG;IACa,OAAO,CAAC,KAAa,EAAE,IAAoB;;YACzD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAC9D,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAA;YAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;YAEtC,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBACxB,IAAI,EAAE,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;oBAC9C,OAAO,IAAI,sBAAS,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,EAAE,CAAC,WAAW,EACd,WAAW,EACX,iBAAiB,GAAG,CAAC,EACrB,SAAS,CACV,CAAA;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;KAAA;CACF;AA9BD,wBA8BC"}
|
package/dist/block-view.d.ts
CHANGED
|
@@ -13,8 +13,8 @@ interface Options {
|
|
|
13
13
|
/**
|
|
14
14
|
* View into a subset of the data in a BigWig file.
|
|
15
15
|
*
|
|
16
|
-
* Adapted by Robert Buels and Colin Diesh from bigwig.js in the Dalliance
|
|
17
|
-
* Explorer by Thomas Down.
|
|
16
|
+
* Adapted by Robert Buels and Colin Diesh from bigwig.js in the Dalliance
|
|
17
|
+
* Genome Explorer by Thomas Down.
|
|
18
18
|
* @constructs
|
|
19
19
|
*/
|
|
20
20
|
export declare class BlockView {
|
|
@@ -26,16 +26,14 @@ export declare class BlockView {
|
|
|
26
26
|
private blockType;
|
|
27
27
|
private cirTreePromise?;
|
|
28
28
|
private featureCache;
|
|
29
|
-
private leafParser;
|
|
30
|
-
private bigBedParser;
|
|
31
29
|
constructor(bbi: GenericFilehandle, refsByName: any, cirTreeOffset: number, isBigEndian: boolean, isCompressed: boolean, blockType: string);
|
|
32
30
|
readWigData(chrName: string, start: number, end: number, observer: Observer<Feature[]>, opts?: Options): Promise<void>;
|
|
33
31
|
private parseSummaryBlock;
|
|
34
32
|
private parseBigBedBlock;
|
|
35
33
|
private parseBigWigBlock;
|
|
36
34
|
readFeatures(observer: Observer<Feature[]>, blocks: {
|
|
37
|
-
offset:
|
|
38
|
-
length:
|
|
35
|
+
offset: number;
|
|
36
|
+
length: number;
|
|
39
37
|
}[], opts?: Options): Promise<void>;
|
|
40
38
|
}
|
|
41
39
|
export {};
|