@gmod/bbi 2.0.3 → 2.0.5

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 CHANGED
@@ -1,7 +1,17 @@
1
- ## [2.0.3](https://github.com/GMOD/bbi-js/compare/v2.0.2...v2.0.3) (2022-10-10)
1
+ ## [2.0.5](https://github.com/GMOD/bbi-js/compare/v2.0.4...v2.0.5) (2022-12-17)
2
+
3
+
4
+
5
+ - Cleanup package.json and README
2
6
 
7
+ ## [2.0.4](https://github.com/GMOD/bbi-js/compare/v2.0.3...v2.0.4) (2022-10-15)
3
8
 
4
9
 
10
+
11
+ - Use plain TextDecoder for decoding autoSql
12
+
13
+ ## [2.0.3](https://github.com/GMOD/bbi-js/compare/v2.0.2...v2.0.3) (2022-10-10)
14
+
5
15
  - Add BigInt64 polyfill for older safari
6
16
 
7
17
  ## [2.0.2](https://github.com/GMOD/bbi-js/compare/v2.0.1...v2.0.2) (2022-07-18)
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![NPM version](https://img.shields.io/npm/v/@gmod/bbi.svg?style=flat-square)](https://npmjs.org/package/@gmod/bbi)
4
4
  [![Coverage Status](https://img.shields.io/codecov/c/github/GMOD/bbi-js/master.svg?style=flat-square)](https://codecov.io/gh/GMOD/bbi-js/branch/master)
5
- [![Build Status](https://img.shields.io/github/workflow/status/GMOD/bbi-js/Push/master?logo=github&style=flat-query)](https://github.com/GMOD/bbi-js/actions?query=branch%3Amaster+workflow%3APush+)
5
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/GMOD/bbi-js/push.yml?branch=master)](https://github.com/GMOD/bbi-js/actions?query=branch%3Amaster+workflow%3APush+)
6
6
 
7
7
  A parser for bigwig and bigbed file formats
8
8
 
package/dist/bbi.js CHANGED
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -19,50 +8,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
20
9
  });
21
10
  };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
11
  Object.defineProperty(exports, "__esModule", { value: true });
50
12
  exports.BBI = void 0;
51
- var binary_parser_1 = require("binary-parser");
52
- var generic_filehandle_1 = require("generic-filehandle");
53
- var rxjs_1 = require("rxjs");
54
- var operators_1 = require("rxjs/operators");
55
- var blockView_1 = require("./blockView");
56
- var BIG_WIG_MAGIC = -2003829722;
57
- var BIG_BED_MAGIC = -2021002517;
13
+ const binary_parser_1 = require("binary-parser");
14
+ const generic_filehandle_1 = require("generic-filehandle");
15
+ const rxjs_1 = require("rxjs");
16
+ const operators_1 = require("rxjs/operators");
17
+ const blockView_1 = require("./blockView");
18
+ const BIG_WIG_MAGIC = -2003829722;
19
+ const BIG_BED_MAGIC = -2021002517;
20
+ function toString(arr) {
21
+ return new TextDecoder().decode(arr);
22
+ }
58
23
  /* get the compiled parsers for different sections of the bigwig file
59
24
  *
60
25
  * @param isBE - is big endian, typically false
61
26
  * @return an object with compiled parsers
62
27
  */
63
28
  function getParsers(isBE) {
64
- var le = isBE ? 'big' : 'little';
65
- var headerParser = new binary_parser_1.Parser()
29
+ const le = isBE ? 'big' : 'little';
30
+ const headerParser = new binary_parser_1.Parser()
66
31
  .endianess(le)
67
32
  .int32('magic')
68
33
  .uint16('version')
@@ -85,43 +50,42 @@ function getParsers(isBE) {
85
50
  .uint64('dataOffset')
86
51
  .uint64('indexOffset'),
87
52
  });
88
- var totalSummaryParser = new binary_parser_1.Parser()
53
+ const totalSummaryParser = new binary_parser_1.Parser()
89
54
  .endianess(le)
90
55
  .uint64('basesCovered')
91
56
  .doublele('scoreMin')
92
57
  .doublele('scoreMax')
93
58
  .doublele('scoreSum')
94
59
  .doublele('scoreSumSquares');
95
- var chromTreeParser = new binary_parser_1.Parser()
60
+ const chromTreeParser = new binary_parser_1.Parser()
96
61
  .endianess(le)
97
62
  .uint32('magic')
98
63
  .uint32('blockSize')
99
64
  .uint32('keySize')
100
65
  .uint32('valSize')
101
66
  .uint64('itemCount');
102
- var isLeafNode = new binary_parser_1.Parser()
67
+ const isLeafNode = new binary_parser_1.Parser()
103
68
  .endianess(le)
104
69
  .uint8('isLeafNode')
105
70
  .skip(1)
106
71
  .uint16('cnt')
107
72
  .saveOffset('offset');
108
73
  return {
109
- chromTreeParser: chromTreeParser,
110
- totalSummaryParser: totalSummaryParser,
111
- headerParser: headerParser,
112
- isLeafNode: isLeafNode,
74
+ chromTreeParser,
75
+ totalSummaryParser,
76
+ headerParser,
77
+ isLeafNode,
113
78
  };
114
79
  }
115
- var BBI = /** @class */ (function () {
80
+ class BBI {
116
81
  /*
117
82
  * @param filehandle - a filehandle from generic-filehandle or implementing something similar to the node10 fs.promises API
118
83
  * @param path - a Local file path as a string
119
84
  * @param url - a URL string
120
85
  * @param renameRefSeqs - an optional method to rename the internal reference sequences using a mapping function
121
86
  */
122
- function BBI(options) {
123
- if (options === void 0) { options = {}; }
124
- var filehandle = options.filehandle, _a = options.renameRefSeqs, renameRefSeqs = _a === void 0 ? function (s) { return s; } : _a, path = options.path, url = options.url;
87
+ constructor(options = {}) {
88
+ const { filehandle, renameRefSeqs = s => s, path, url } = options;
125
89
  this.renameRefSeqs = renameRefSeqs;
126
90
  if (filehandle) {
127
91
  this.bbi = filehandle;
@@ -140,72 +104,51 @@ var BBI = /** @class */ (function () {
140
104
  * @param abortSignal - abort the operation, can be null
141
105
  * @return a Header object
142
106
  */
143
- BBI.prototype.getHeader = function (opts) {
144
- var _this = this;
145
- if (opts === void 0) { opts = {}; }
146
- var options = 'aborted' in opts ? { signal: opts } : opts;
107
+ getHeader(opts = {}) {
108
+ const options = 'aborted' in opts ? { signal: opts } : opts;
147
109
  if (!this.headerP) {
148
- this.headerP = this._getHeader(options).catch(function (e) {
149
- _this.headerP = undefined;
110
+ this.headerP = this._getHeader(options).catch(e => {
111
+ this.headerP = undefined;
150
112
  throw e;
151
113
  });
152
114
  }
153
115
  return this.headerP;
154
- };
155
- BBI.prototype._getHeader = function (opts) {
156
- return __awaiter(this, void 0, void 0, function () {
157
- var header, chroms;
158
- return __generator(this, function (_a) {
159
- switch (_a.label) {
160
- case 0: return [4 /*yield*/, this._getMainHeader(opts)];
161
- case 1:
162
- header = _a.sent();
163
- return [4 /*yield*/, this._readChromTree(header, opts)];
164
- case 2:
165
- chroms = _a.sent();
166
- return [2 /*return*/, __assign(__assign({}, header), chroms)];
167
- }
168
- });
116
+ }
117
+ _getHeader(opts) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const header = yield this._getMainHeader(opts);
120
+ const chroms = yield this._readChromTree(header, opts);
121
+ return Object.assign(Object.assign({}, header), chroms);
169
122
  });
170
- };
171
- BBI.prototype._getMainHeader = function (opts, requestSize) {
172
- if (requestSize === void 0) { requestSize = 2000; }
173
- return __awaiter(this, void 0, void 0, function () {
174
- var buffer, isBigEndian, ret, header, magic, asOffset, totalSummaryOffset, off, tail, sum;
175
- return __generator(this, function (_a) {
176
- switch (_a.label) {
177
- case 0: return [4 /*yield*/, this.bbi.read(Buffer.alloc(requestSize), 0, requestSize, 0, opts)];
178
- case 1:
179
- buffer = (_a.sent()).buffer;
180
- isBigEndian = this._isBigEndian(buffer);
181
- ret = getParsers(isBigEndian);
182
- header = ret.headerParser.parse(buffer);
183
- magic = header.magic, asOffset = header.asOffset, totalSummaryOffset = header.totalSummaryOffset;
184
- header.fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
185
- if (asOffset > requestSize || totalSummaryOffset > requestSize) {
186
- return [2 /*return*/, this._getMainHeader(opts, requestSize * 2)];
187
- }
188
- if (asOffset) {
189
- off = Number(header.asOffset);
190
- header.autoSql = buffer
191
- .subarray(off, buffer.indexOf(0, off))
192
- .toString('utf8');
193
- }
194
- if (header.totalSummaryOffset > requestSize) {
195
- return [2 /*return*/, this._getMainHeader(opts, requestSize * 2)];
196
- }
197
- if (header.totalSummaryOffset) {
198
- tail = buffer.subarray(Number(header.totalSummaryOffset));
199
- sum = ret.totalSummaryParser.parse(tail);
200
- header.totalSummary = __assign(__assign({}, sum), { basesCovered: Number(sum.basesCovered) });
201
- }
202
- return [2 /*return*/, __assign(__assign({}, header), { isBigEndian: isBigEndian })];
203
- }
204
- });
123
+ }
124
+ _getMainHeader(opts, requestSize = 2000) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ const { buffer } = yield this.bbi.read(Buffer.alloc(requestSize), 0, requestSize, 0, opts);
127
+ const isBigEndian = this._isBigEndian(buffer);
128
+ const ret = getParsers(isBigEndian);
129
+ const header = ret.headerParser.parse(buffer);
130
+ const { magic, asOffset, totalSummaryOffset } = header;
131
+ header.fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
132
+ if (asOffset > requestSize || totalSummaryOffset > requestSize) {
133
+ return this._getMainHeader(opts, requestSize * 2);
134
+ }
135
+ if (asOffset) {
136
+ const off = Number(header.asOffset);
137
+ header.autoSql = toString(buffer.subarray(off, buffer.indexOf(0, off)));
138
+ }
139
+ if (header.totalSummaryOffset > requestSize) {
140
+ return this._getMainHeader(opts, requestSize * 2);
141
+ }
142
+ if (header.totalSummaryOffset) {
143
+ const tail = buffer.subarray(Number(header.totalSummaryOffset));
144
+ const sum = ret.totalSummaryParser.parse(tail);
145
+ header.totalSummary = Object.assign(Object.assign({}, sum), { basesCovered: Number(sum.basesCovered) });
146
+ }
147
+ return Object.assign(Object.assign({}, header), { isBigEndian });
205
148
  });
206
- };
207
- BBI.prototype._isBigEndian = function (buffer) {
208
- var ret = buffer.readInt32LE(0);
149
+ }
150
+ _isBigEndian(buffer) {
151
+ let ret = buffer.readInt32LE(0);
209
152
  if (ret === BIG_WIG_MAGIC || ret === BIG_BED_MAGIC) {
210
153
  return false;
211
154
  }
@@ -214,108 +157,82 @@ var BBI = /** @class */ (function () {
214
157
  return true;
215
158
  }
216
159
  throw new Error('not a BigWig/BigBed file');
217
- };
160
+ }
218
161
  // todo: add progress if long running
219
- BBI.prototype._readChromTree = function (header, opts) {
220
- return __awaiter(this, void 0, void 0, function () {
221
- var isBE, le, refsByNumber, refsByName, unzoomedDataOffset, chromTreeOffset, off, buffer, p, keySize, leafNodeParser, nonleafNodeParser, rootNodeOffset, bptReadNode;
222
- var _this = this;
223
- return __generator(this, function (_a) {
224
- switch (_a.label) {
225
- case 0:
226
- isBE = header.isBigEndian;
227
- le = isBE ? 'big' : 'little';
228
- refsByNumber = [];
229
- refsByName = {};
230
- unzoomedDataOffset = Number(header.unzoomedDataOffset);
231
- chromTreeOffset = Number(header.chromTreeOffset);
232
- while (unzoomedDataOffset % 4 !== 0) {
233
- unzoomedDataOffset += 1;
234
- }
235
- off = unzoomedDataOffset - chromTreeOffset;
236
- return [4 /*yield*/, this.bbi.read(Buffer.alloc(off), 0, off, Number(chromTreeOffset), opts)];
237
- case 1:
238
- buffer = (_a.sent()).buffer;
239
- p = getParsers(isBE);
240
- keySize = p.chromTreeParser.parse(buffer).keySize;
241
- leafNodeParser = new binary_parser_1.Parser()
242
- .endianess(le)
243
- .string('key', { stripNull: true, length: keySize })
244
- .uint32('refId')
245
- .uint32('refSize')
246
- .saveOffset('offset');
247
- nonleafNodeParser = new binary_parser_1.Parser()
248
- .endianess(le)
249
- .skip(keySize)
250
- .uint64('childOffset')
251
- .saveOffset('offset');
252
- rootNodeOffset = 32;
253
- bptReadNode = function (currentOffset) { return __awaiter(_this, void 0, void 0, function () {
254
- var offset, ret, isLeafNode, cnt, n, leafRet, key, refId, refSize, refRec, nextNodes, n, nonleafRet, childOffset;
255
- return __generator(this, function (_a) {
256
- switch (_a.label) {
257
- case 0:
258
- offset = currentOffset;
259
- if (offset >= buffer.length) {
260
- throw new Error('reading beyond end of buffer');
261
- }
262
- ret = p.isLeafNode.parse(buffer.subarray(offset));
263
- isLeafNode = ret.isLeafNode, cnt = ret.cnt;
264
- offset += ret.offset;
265
- if (!isLeafNode) return [3 /*break*/, 1];
266
- for (n = 0; n < cnt; n += 1) {
267
- leafRet = leafNodeParser.parse(buffer.subarray(offset));
268
- offset += leafRet.offset;
269
- key = leafRet.key, refId = leafRet.refId, refSize = leafRet.refSize;
270
- refRec = { name: key, id: refId, length: refSize };
271
- refsByName[this.renameRefSeqs(key)] = refId;
272
- refsByNumber[refId] = refRec;
273
- }
274
- return [3 /*break*/, 3];
275
- case 1:
276
- nextNodes = [];
277
- for (n = 0; n < cnt; n += 1) {
278
- nonleafRet = nonleafNodeParser.parse(buffer.subarray(offset));
279
- childOffset = nonleafRet.childOffset;
280
- offset += nonleafRet.offset;
281
- nextNodes.push(bptReadNode(Number(childOffset) - Number(chromTreeOffset)));
282
- }
283
- return [4 /*yield*/, Promise.all(nextNodes)];
284
- case 2:
285
- _a.sent();
286
- _a.label = 3;
287
- case 3: return [2 /*return*/];
288
- }
289
- });
290
- }); };
291
- return [4 /*yield*/, bptReadNode(rootNodeOffset)];
292
- case 2:
293
- _a.sent();
294
- return [2 /*return*/, {
295
- refsByName: refsByName,
296
- refsByNumber: refsByNumber,
297
- }];
162
+ _readChromTree(header, opts) {
163
+ return __awaiter(this, void 0, void 0, function* () {
164
+ const isBE = header.isBigEndian;
165
+ const le = isBE ? 'big' : 'little';
166
+ const refsByNumber = [];
167
+ const refsByName = {};
168
+ let unzoomedDataOffset = Number(header.unzoomedDataOffset);
169
+ const chromTreeOffset = Number(header.chromTreeOffset);
170
+ while (unzoomedDataOffset % 4 !== 0) {
171
+ unzoomedDataOffset += 1;
172
+ }
173
+ const off = unzoomedDataOffset - chromTreeOffset;
174
+ const { buffer } = yield this.bbi.read(Buffer.alloc(off), 0, off, Number(chromTreeOffset), opts);
175
+ const p = getParsers(isBE);
176
+ const { keySize } = p.chromTreeParser.parse(buffer);
177
+ const leafNodeParser = new binary_parser_1.Parser()
178
+ .endianess(le)
179
+ .string('key', { stripNull: true, length: keySize })
180
+ .uint32('refId')
181
+ .uint32('refSize')
182
+ .saveOffset('offset');
183
+ const nonleafNodeParser = new binary_parser_1.Parser()
184
+ .endianess(le)
185
+ .skip(keySize)
186
+ .uint64('childOffset')
187
+ .saveOffset('offset');
188
+ const rootNodeOffset = 32;
189
+ const bptReadNode = (currentOffset) => __awaiter(this, void 0, void 0, function* () {
190
+ let offset = currentOffset;
191
+ if (offset >= buffer.length) {
192
+ throw new Error('reading beyond end of buffer');
193
+ }
194
+ const ret = p.isLeafNode.parse(buffer.subarray(offset));
195
+ const { isLeafNode, cnt } = ret;
196
+ offset += ret.offset;
197
+ if (isLeafNode) {
198
+ for (let n = 0; n < cnt; n += 1) {
199
+ const leafRet = leafNodeParser.parse(buffer.subarray(offset));
200
+ offset += leafRet.offset;
201
+ const { key, refId, refSize } = leafRet;
202
+ const refRec = { name: key, id: refId, length: refSize };
203
+ refsByName[this.renameRefSeqs(key)] = refId;
204
+ refsByNumber[refId] = refRec;
205
+ }
206
+ }
207
+ else {
208
+ // parse index node
209
+ const nextNodes = [];
210
+ for (let n = 0; n < cnt; n += 1) {
211
+ const nonleafRet = nonleafNodeParser.parse(buffer.subarray(offset));
212
+ const { childOffset } = nonleafRet;
213
+ offset += nonleafRet.offset;
214
+ nextNodes.push(bptReadNode(Number(childOffset) - Number(chromTreeOffset)));
215
+ }
216
+ yield Promise.all(nextNodes);
298
217
  }
299
218
  });
219
+ yield bptReadNode(rootNodeOffset);
220
+ return {
221
+ refsByName,
222
+ refsByNumber,
223
+ };
300
224
  });
301
- };
225
+ }
302
226
  /*
303
227
  * fetches the "unzoomed" view of the bigwig data. this is the default for bigbed
304
228
  * @param abortSignal - a signal to optionally abort this operation
305
229
  */
306
- BBI.prototype.getUnzoomedView = function (opts) {
307
- return __awaiter(this, void 0, void 0, function () {
308
- var _a, unzoomedIndexOffset, refsByName, uncompressBufSize, isBigEndian, fileType;
309
- return __generator(this, function (_b) {
310
- switch (_b.label) {
311
- case 0: return [4 /*yield*/, this.getHeader(opts)];
312
- case 1:
313
- _a = _b.sent(), unzoomedIndexOffset = _a.unzoomedIndexOffset, refsByName = _a.refsByName, uncompressBufSize = _a.uncompressBufSize, isBigEndian = _a.isBigEndian, fileType = _a.fileType;
314
- return [2 /*return*/, new blockView_1.BlockView(this.bbi, refsByName, unzoomedIndexOffset, isBigEndian, uncompressBufSize > 0, fileType)];
315
- }
316
- });
230
+ getUnzoomedView(opts) {
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ const { unzoomedIndexOffset, refsByName, uncompressBufSize, isBigEndian, fileType, } = yield this.getHeader(opts);
233
+ return new blockView_1.BlockView(this.bbi, refsByName, unzoomedIndexOffset, isBigEndian, uncompressBufSize > 0, fileType);
317
234
  });
318
- };
235
+ }
319
236
  /**
320
237
  * Gets features from a BigWig file
321
238
  *
@@ -324,66 +241,41 @@ var BBI = /** @class */ (function () {
324
241
  * @param end - The end of a region
325
242
  * @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
326
243
  */
327
- BBI.prototype.getFeatureStream = function (refName, start, end, opts) {
328
- if (opts === void 0) { opts = {
329
- scale: 1,
330
- }; }
331
- return __awaiter(this, void 0, void 0, function () {
332
- var chrName, view;
333
- return __generator(this, function (_a) {
334
- switch (_a.label) {
335
- case 0: return [4 /*yield*/, this.getHeader(opts)];
336
- case 1:
337
- _a.sent();
338
- chrName = this.renameRefSeqs(refName);
339
- if (!opts.basesPerSpan) return [3 /*break*/, 3];
340
- return [4 /*yield*/, this.getView(1 / opts.basesPerSpan, opts)];
341
- case 2:
342
- view = _a.sent();
343
- return [3 /*break*/, 7];
344
- case 3:
345
- if (!opts.scale) return [3 /*break*/, 5];
346
- return [4 /*yield*/, this.getView(opts.scale, opts)];
347
- case 4:
348
- view = _a.sent();
349
- return [3 /*break*/, 7];
350
- case 5: return [4 /*yield*/, this.getView(1, opts)];
351
- case 6:
352
- view = _a.sent();
353
- _a.label = 7;
354
- case 7:
355
- if (!view) {
356
- throw new Error('unable to get block view for data');
357
- }
358
- return [2 /*return*/, new rxjs_1.Observable(function (observer) {
359
- view.readWigData(chrName, start, end, observer, opts);
360
- })];
361
- }
244
+ getFeatureStream(refName, start, end, opts = {
245
+ scale: 1,
246
+ }) {
247
+ return __awaiter(this, void 0, void 0, function* () {
248
+ yield this.getHeader(opts);
249
+ const chrName = this.renameRefSeqs(refName);
250
+ let view;
251
+ if (opts.basesPerSpan) {
252
+ view = yield this.getView(1 / opts.basesPerSpan, opts);
253
+ }
254
+ else if (opts.scale) {
255
+ view = yield this.getView(opts.scale, opts);
256
+ }
257
+ else {
258
+ view = yield this.getView(1, opts);
259
+ }
260
+ if (!view) {
261
+ throw new Error('unable to get block view for data');
262
+ }
263
+ return new rxjs_1.Observable((observer) => {
264
+ view.readWigData(chrName, start, end, observer, opts);
362
265
  });
363
266
  });
364
- };
365
- BBI.prototype.getFeatures = function (refName, start, end, opts) {
366
- if (opts === void 0) { opts = {
367
- scale: 1,
368
- }; }
369
- return __awaiter(this, void 0, void 0, function () {
370
- var ob, ret;
371
- return __generator(this, function (_a) {
372
- switch (_a.label) {
373
- case 0: return [4 /*yield*/, this.getFeatureStream(refName, start, end, opts)];
374
- case 1:
375
- ob = _a.sent();
376
- return [4 /*yield*/, ob
377
- .pipe((0, operators_1.reduce)(function (acc, curr) { return acc.concat(curr); }))
378
- .toPromise()];
379
- case 2:
380
- ret = _a.sent();
381
- return [2 /*return*/, ret || []];
382
- }
383
- });
267
+ }
268
+ getFeatures(refName, start, end, opts = {
269
+ scale: 1,
270
+ }) {
271
+ return __awaiter(this, void 0, void 0, function* () {
272
+ const ob = yield this.getFeatureStream(refName, start, end, opts);
273
+ const ret = yield ob
274
+ .pipe((0, operators_1.reduce)((acc, curr) => acc.concat(curr)))
275
+ .toPromise();
276
+ return ret || [];
384
277
  });
385
- };
386
- return BBI;
387
- }());
278
+ }
279
+ }
388
280
  exports.BBI = BBI;
389
281
  //# sourceMappingURL=bbi.js.map
package/dist/bbi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"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"}