@gmod/bbi 5.0.2 → 6.0.1

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,3 +1,11 @@
1
+ ## [6.0.1](https://github.com/GMOD/bbi-js/compare/v6.0.0...v6.0.1) (2024-12-12)
2
+
3
+
4
+
5
+ # [6.0.0](https://github.com/GMOD/bbi-js/compare/v5.0.2...v6.0.0) (2024-12-12)
6
+
7
+
8
+
1
9
  ## [5.0.2](https://github.com/GMOD/bbi-js/compare/v5.0.1...v5.0.2) (2024-09-03)
2
10
 
3
11
 
package/README.md CHANGED
@@ -21,13 +21,13 @@ const file = new BigWig({
21
21
  })()
22
22
  ```
23
23
 
24
- If using remotely, you can use it in combination with generic-filehandle or your
25
- own implementation of something like generic-filehandle
26
- https://github.com/GMOD/generic-filehandle/
24
+ If using remotely, you can use it in combination with generic-filehandle2 or
25
+ your own implementation of something like generic-filehandle2
26
+ https://github.com/GMOD/generic-filehandle2/
27
27
 
28
28
  ```typescript
29
29
  const { BigWig } = require('@gmod/bbi')
30
- const { RemoteFile } = require('generic-filehandle')
30
+ const { RemoteFile } = require('generic-filehandle2')
31
31
 
32
32
  // if running in the browser or newer versions of node.js, RemoteFile will use
33
33
  // the the global fetch
@@ -57,7 +57,7 @@ Accepts an object containing either
57
57
  - url - path to a url
58
58
  - filehandle - a filehandle instance that you can implement as a custom class
59
59
  yourself. path and url are based on
60
- https://www.npmjs.com/package/generic-filehandle but by implementing a class
60
+ https://www.npmjs.com/package/generic-filehandle2 but by implementing a class
61
61
  containing the Filehandle interface specified therein, you can pass it to this
62
62
  module
63
63
 
package/dist/bbi.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { GenericFilehandle } from 'generic-filehandle';
1
+ import { GenericFilehandle } from 'generic-filehandle2';
2
2
  import { Observable } from 'rxjs';
3
3
  import { BlockView } from './block-view';
4
- interface ZoomLevel {
4
+ export interface ZoomLevel {
5
5
  reductionLevel: number;
6
6
  reserved: number;
7
7
  dataOffset: number;
@@ -20,14 +20,14 @@ export interface Feature {
20
20
  uniqueId?: string;
21
21
  field?: number;
22
22
  }
23
- interface Statistics {
23
+ export interface Statistics {
24
24
  scoreSum: number;
25
25
  basesCovered: number;
26
26
  scoreSumSquares: number;
27
27
  scoreMin: number;
28
28
  scoreMax: number;
29
29
  }
30
- interface RefInfo {
30
+ export interface RefInfo {
31
31
  name: string;
32
32
  id: number;
33
33
  length: number;
@@ -48,7 +48,6 @@ export interface MainHeader {
48
48
  uncompressBufSize: number;
49
49
  chromTreeOffset: number;
50
50
  extHeaderOffset: number;
51
- isBigEndian: boolean;
52
51
  fileType: string;
53
52
  }
54
53
  export interface Header extends MainHeader {
@@ -60,6 +59,10 @@ export interface RequestOptions {
60
59
  headers?: Record<string, string>;
61
60
  [key: string]: unknown;
62
61
  }
62
+ export interface RequestOptions2 extends RequestOptions {
63
+ scale?: number;
64
+ basesPerSpan?: number;
65
+ }
63
66
  export declare abstract class BBI {
64
67
  protected bbi: GenericFilehandle;
65
68
  private headerP?;
@@ -73,7 +76,6 @@ export declare abstract class BBI {
73
76
  });
74
77
  private _getHeader;
75
78
  private _getMainHeader;
76
- private _isBigEndian;
77
79
  private _readChromTree;
78
80
  protected getUnzoomedView(opts?: RequestOptions): Promise<BlockView>;
79
81
  protected abstract getView(scale: number, opts?: RequestOptions): Promise<BlockView>;
@@ -81,17 +83,14 @@ export declare abstract class BBI {
81
83
  * Gets features from a BigWig file
82
84
  *
83
85
  * @param refName - The chromosome name
86
+ *
84
87
  * @param start - The start of a region
88
+ *
85
89
  * @param end - The end of a region
86
- * @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
90
+ *
91
+ * @param opts - An object containing basesPerSpan (e.g. pixels per basepair)
92
+ * or scale used to infer the zoomLevel to use
87
93
  */
88
- getFeatureStream(refName: string, start: number, end: number, opts?: RequestOptions & {
89
- scale?: number;
90
- basesPerSpan?: number;
91
- }): Promise<Observable<Feature[]>>;
92
- getFeatures(refName: string, start: number, end: number, opts?: RequestOptions & {
93
- scale?: number;
94
- basesPerSpan?: number;
95
- }): Promise<Feature[]>;
94
+ getFeatureStream(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<Observable<Feature[]>>;
95
+ getFeatures(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<Feature[]>;
96
96
  }
97
- export {};
package/dist/bbi.js CHANGED
@@ -1,17 +1,7 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.BBI = void 0;
13
- const buffer_1 = require("buffer");
14
- const generic_filehandle_1 = require("generic-filehandle");
4
+ const generic_filehandle2_1 = require("generic-filehandle2");
15
5
  const rxjs_1 = require("rxjs");
16
6
  const operators_1 = require("rxjs/operators");
17
7
  const block_view_1 = require("./block-view");
@@ -28,8 +18,7 @@ class BBI {
28
18
  return this.headerP;
29
19
  }
30
20
  /*
31
- * @param filehandle - a filehandle from generic-filehandle or implementing
32
- * something similar to the node10 fs.promises API
21
+ * @param filehandle - a filehandle from generic-filehandle2
33
22
  *
34
23
  * @param path - a Local file path as a string
35
24
  *
@@ -45,252 +34,236 @@ class BBI {
45
34
  this.bbi = filehandle;
46
35
  }
47
36
  else if (url) {
48
- this.bbi = new generic_filehandle_1.RemoteFile(url);
37
+ this.bbi = new generic_filehandle2_1.RemoteFile(url);
49
38
  }
50
39
  else if (path) {
51
- this.bbi = new generic_filehandle_1.LocalFile(path);
40
+ this.bbi = new generic_filehandle2_1.LocalFile(path);
52
41
  }
53
42
  else {
54
43
  throw new Error('no file given');
55
44
  }
56
45
  }
57
- _getHeader(opts) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- const header = yield this._getMainHeader(opts);
60
- const chroms = yield this._readChromTree(header, opts);
61
- return Object.assign(Object.assign({}, header), chroms);
62
- });
46
+ async _getHeader(opts) {
47
+ const header = await this._getMainHeader(opts);
48
+ const chroms = await this._readChromTree(header, opts);
49
+ return {
50
+ ...header,
51
+ ...chroms,
52
+ };
63
53
  }
64
- _getMainHeader(opts_1) {
65
- return __awaiter(this, arguments, void 0, function* (opts, requestSize = 2000) {
66
- const le = true;
67
- const { buffer } = yield this.bbi.read(buffer_1.Buffer.alloc(requestSize), 0, requestSize, 0, opts);
68
- const isBigEndian = this._isBigEndian(buffer);
69
- const b = buffer;
70
- const dataView = new DataView(b.buffer, b.byteOffset, b.length);
71
- let offset = 0;
72
- const magic = dataView.getInt32(offset, le);
54
+ async _getMainHeader(opts, requestSize = 2000) {
55
+ const b = await this.bbi.read(requestSize, 0, opts);
56
+ const dataView = new DataView(b.buffer, b.byteOffset, b.length);
57
+ const r1 = dataView.getInt32(0, true);
58
+ if (r1 !== BIG_WIG_MAGIC && r1 !== BIG_BED_MAGIC) {
59
+ throw new Error('not a BigWig/BigBed file');
60
+ }
61
+ let offset = 0;
62
+ const magic = dataView.getInt32(offset, true);
63
+ offset += 4;
64
+ const version = dataView.getUint16(offset, true);
65
+ offset += 2;
66
+ const numZoomLevels = dataView.getUint16(offset, true);
67
+ offset += 2;
68
+ const chromTreeOffset = Number(dataView.getBigUint64(offset, true));
69
+ offset += 8;
70
+ const unzoomedDataOffset = Number(dataView.getBigUint64(offset, true));
71
+ offset += 8;
72
+ const unzoomedIndexOffset = Number(dataView.getBigUint64(offset, true));
73
+ offset += 8;
74
+ const fieldCount = dataView.getUint16(offset, true);
75
+ offset += 2;
76
+ const definedFieldCount = dataView.getUint16(offset, true);
77
+ offset += 2;
78
+ const asOffset = Number(dataView.getBigUint64(offset, true));
79
+ offset += 8;
80
+ const totalSummaryOffset = Number(dataView.getBigUint64(offset, true));
81
+ offset += 8;
82
+ const uncompressBufSize = dataView.getUint32(offset, true);
83
+ offset += 4;
84
+ const extHeaderOffset = Number(dataView.getBigUint64(offset, true));
85
+ offset += 8;
86
+ const zoomLevels = [];
87
+ for (let i = 0; i < numZoomLevels; i++) {
88
+ const reductionLevel = dataView.getUint32(offset, true);
73
89
  offset += 4;
74
- const version = dataView.getUint16(offset, le);
75
- offset += 2;
76
- const numZoomLevels = dataView.getUint16(offset, le);
77
- offset += 2;
78
- const chromTreeOffset = Number(dataView.getBigUint64(offset, le));
90
+ const reserved = dataView.getUint32(offset, true);
91
+ offset += 4;
92
+ const dataOffset = Number(dataView.getBigUint64(offset, true));
79
93
  offset += 8;
80
- const unzoomedDataOffset = Number(dataView.getBigUint64(offset, le));
94
+ const indexOffset = Number(dataView.getBigUint64(offset, true));
81
95
  offset += 8;
82
- const unzoomedIndexOffset = Number(dataView.getBigUint64(offset, le));
96
+ zoomLevels.push({ reductionLevel, reserved, dataOffset, indexOffset });
97
+ }
98
+ const fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
99
+ // refetch header if it is too large on first pass,
100
+ // 8*5 is the sizeof the totalSummary struct
101
+ if (asOffset > requestSize || totalSummaryOffset > requestSize - 8 * 5) {
102
+ return this._getMainHeader(opts, requestSize * 2);
103
+ }
104
+ let totalSummary;
105
+ if (totalSummaryOffset) {
106
+ const b2 = b.subarray(Number(totalSummaryOffset));
107
+ let offset = 0;
108
+ const dataView = new DataView(b2.buffer, b2.byteOffset, b2.length);
109
+ const basesCovered = Number(dataView.getBigUint64(offset, true));
83
110
  offset += 8;
84
- const fieldCount = dataView.getUint16(offset, le);
85
- offset += 2;
86
- const definedFieldCount = dataView.getUint16(offset, le);
87
- offset += 2;
88
- const asOffset = Number(dataView.getBigUint64(offset, le));
111
+ const scoreMin = dataView.getFloat64(offset, true);
89
112
  offset += 8;
90
- const totalSummaryOffset = Number(dataView.getBigUint64(offset, le));
113
+ const scoreMax = dataView.getFloat64(offset, true);
91
114
  offset += 8;
92
- const uncompressBufSize = dataView.getUint32(offset, le);
93
- offset += 4;
94
- const extHeaderOffset = Number(dataView.getBigUint64(offset, le));
115
+ const scoreSum = dataView.getFloat64(offset, true);
95
116
  offset += 8;
96
- const zoomLevels = [];
97
- for (let i = 0; i < numZoomLevels; i++) {
98
- const reductionLevel = dataView.getUint32(offset, le);
99
- offset += 4;
100
- const reserved = dataView.getUint32(offset, le);
101
- offset += 4;
102
- const dataOffset = Number(dataView.getBigUint64(offset, le));
103
- offset += 8;
104
- const indexOffset = Number(dataView.getBigUint64(offset, le));
105
- offset += 8;
106
- zoomLevels.push({ reductionLevel, reserved, dataOffset, indexOffset });
107
- }
108
- const fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
109
- // refetch header if it is too large on first pass,
110
- // 8*5 is the sizeof the totalSummary struct
111
- if (asOffset > requestSize || totalSummaryOffset > requestSize - 8 * 5) {
112
- return this._getMainHeader(opts, requestSize * 2);
113
- }
114
- let totalSummary;
115
- if (totalSummaryOffset) {
116
- const b = buffer.subarray(Number(totalSummaryOffset));
117
- let offset = 0;
118
- const dataView = new DataView(b.buffer, b.byteOffset, b.length);
119
- const basesCovered = Number(dataView.getBigUint64(offset, le));
120
- offset += 8;
121
- const scoreMin = dataView.getFloat64(offset, le);
122
- offset += 8;
123
- const scoreMax = dataView.getFloat64(offset, le);
124
- offset += 8;
125
- const scoreSum = dataView.getFloat64(offset, le);
126
- offset += 8;
127
- const scoreSumSquares = dataView.getFloat64(offset, le);
128
- offset += 8;
129
- totalSummary = {
130
- scoreMin,
131
- scoreMax,
132
- scoreSum,
133
- scoreSumSquares,
134
- basesCovered,
135
- };
136
- }
137
- else {
138
- throw new Error('no stats');
139
- }
140
- return {
141
- zoomLevels,
142
- magic,
143
- extHeaderOffset,
144
- numZoomLevels,
145
- fieldCount,
146
- totalSummary,
147
- definedFieldCount,
148
- uncompressBufSize,
149
- asOffset,
150
- chromTreeOffset,
151
- totalSummaryOffset,
152
- unzoomedDataOffset,
153
- unzoomedIndexOffset,
154
- fileType,
155
- version,
156
- isBigEndian,
157
- autoSql: asOffset
158
- ? buffer.subarray(asOffset, buffer.indexOf(0, asOffset)).toString()
159
- : '',
117
+ const scoreSumSquares = dataView.getFloat64(offset, true);
118
+ offset += 8;
119
+ totalSummary = {
120
+ scoreMin,
121
+ scoreMax,
122
+ scoreSum,
123
+ scoreSumSquares,
124
+ basesCovered,
160
125
  };
161
- });
162
- }
163
- _isBigEndian(buffer) {
164
- let ret = buffer.readInt32LE(0);
165
- if (ret === BIG_WIG_MAGIC || ret === BIG_BED_MAGIC) {
166
- return false;
167
126
  }
168
- ret = buffer.readInt32BE(0);
169
- if (ret === BIG_WIG_MAGIC || ret === BIG_BED_MAGIC) {
170
- return true;
127
+ else {
128
+ throw new Error('no stats');
171
129
  }
172
- throw new Error('not a BigWig/BigBed file');
130
+ const decoder = new TextDecoder('utf8');
131
+ return {
132
+ zoomLevels,
133
+ magic,
134
+ extHeaderOffset,
135
+ numZoomLevels,
136
+ fieldCount,
137
+ totalSummary,
138
+ definedFieldCount,
139
+ uncompressBufSize,
140
+ asOffset,
141
+ chromTreeOffset,
142
+ totalSummaryOffset,
143
+ unzoomedDataOffset,
144
+ unzoomedIndexOffset,
145
+ fileType,
146
+ version,
147
+ autoSql: asOffset
148
+ ? decoder.decode(b.subarray(asOffset, b.indexOf(0, asOffset)))
149
+ : '',
150
+ };
173
151
  }
174
- // todo: add progress if long running
175
- _readChromTree(header, opts) {
176
- return __awaiter(this, void 0, void 0, function* () {
177
- const isBE = header.isBigEndian;
178
- const le = !isBE;
179
- const refsByNumber = [];
180
- const refsByName = {};
181
- let unzoomedDataOffset = header.unzoomedDataOffset;
182
- const chromTreeOffset = header.chromTreeOffset;
183
- while (unzoomedDataOffset % 4 !== 0) {
184
- unzoomedDataOffset += 1;
152
+ async _readChromTree(header, opts) {
153
+ const refsByNumber = [];
154
+ const refsByName = {};
155
+ let unzoomedDataOffset = header.unzoomedDataOffset;
156
+ const chromTreeOffset = header.chromTreeOffset;
157
+ while (unzoomedDataOffset % 4 !== 0) {
158
+ unzoomedDataOffset += 1;
159
+ }
160
+ const off = unzoomedDataOffset - chromTreeOffset;
161
+ const b = await this.bbi.read(off, Number(chromTreeOffset), opts);
162
+ const dataView = new DataView(b.buffer, b.byteOffset, b.length);
163
+ let offset = 0;
164
+ // const magic = dataView.getUint32(offset, true)
165
+ offset += 4;
166
+ // const blockSize = dataView.getUint32(offset, true)
167
+ offset += 4;
168
+ const keySize = dataView.getUint32(offset, true);
169
+ offset += 4;
170
+ // const valSize = dataView.getUint32(offset, true)
171
+ offset += 4;
172
+ // const itemCount = dataView.getBigUint64(offset, true)
173
+ offset += 8;
174
+ const rootNodeOffset = 32;
175
+ const decoder = new TextDecoder('utf8');
176
+ const bptReadNode = async (currentOffset) => {
177
+ let offset = currentOffset;
178
+ if (offset >= b.length) {
179
+ throw new Error('reading beyond end of buffer');
185
180
  }
186
- const off = unzoomedDataOffset - chromTreeOffset;
187
- const { buffer } = yield this.bbi.read(buffer_1.Buffer.alloc(off), 0, off, Number(chromTreeOffset), opts);
188
- const b = buffer;
189
- const dataView = new DataView(b.buffer, b.byteOffset, b.length);
190
- let offset = 0;
191
- // const magic = dataView.getUint32(offset, le)
192
- offset += 4;
193
- // const blockSize = dataView.getUint32(offset, le)
194
- offset += 4;
195
- const keySize = dataView.getUint32(offset, le);
196
- offset += 4;
197
- // const valSize = dataView.getUint32(offset, le)
198
- offset += 4;
199
- // const itemCount = dataView.getBigUint64(offset, le)
200
- offset += 8;
201
- const rootNodeOffset = 32;
202
- const bptReadNode = (currentOffset) => __awaiter(this, void 0, void 0, function* () {
203
- let offset = currentOffset;
204
- if (offset >= buffer.length) {
205
- throw new Error('reading beyond end of buffer');
206
- }
207
- const isLeafNode = dataView.getUint8(offset);
208
- offset += 2; //skip 1
209
- const cnt = dataView.getUint16(offset, le);
210
- offset += 2;
211
- if (isLeafNode) {
212
- for (let n = 0; n < cnt; n++) {
213
- const key = buffer
214
- .subarray(offset, offset + keySize)
215
- .toString()
216
- .replaceAll('\0', '');
217
- offset += keySize;
218
- const refId = dataView.getUint32(offset, le);
219
- offset += 4;
220
- const refSize = dataView.getUint32(offset, le);
221
- offset += 4;
222
- const refRec = { name: key, id: refId, length: refSize };
223
- refsByName[this.renameRefSeqs(key)] = refId;
224
- refsByNumber[refId] = refRec;
225
- }
181
+ const isLeafNode = dataView.getUint8(offset);
182
+ offset += 2; //skip 1
183
+ const cnt = dataView.getUint16(offset, true);
184
+ offset += 2;
185
+ if (isLeafNode) {
186
+ for (let n = 0; n < cnt; n++) {
187
+ const key = decoder
188
+ .decode(b.subarray(offset, offset + keySize))
189
+ .replaceAll('\0', '');
190
+ offset += keySize;
191
+ const refId = dataView.getUint32(offset, true);
192
+ offset += 4;
193
+ const refSize = dataView.getUint32(offset, true);
194
+ offset += 4;
195
+ refsByName[this.renameRefSeqs(key)] = refId;
196
+ refsByNumber[refId] = {
197
+ name: key,
198
+ id: refId,
199
+ length: refSize,
200
+ };
226
201
  }
227
- else {
228
- // parse index node
229
- const nextNodes = [];
230
- for (let n = 0; n < cnt; n++) {
231
- offset += keySize;
232
- const childOffset = Number(dataView.getBigUint64(offset, le));
233
- offset += 8;
234
- nextNodes.push(bptReadNode(Number(childOffset) - Number(chromTreeOffset)));
235
- }
236
- yield Promise.all(nextNodes);
202
+ }
203
+ else {
204
+ // parse index node
205
+ const nextNodes = [];
206
+ for (let n = 0; n < cnt; n++) {
207
+ offset += keySize;
208
+ const childOffset = Number(dataView.getBigUint64(offset, true));
209
+ offset += 8;
210
+ nextNodes.push(bptReadNode(Number(childOffset) - Number(chromTreeOffset)));
237
211
  }
238
- });
239
- yield bptReadNode(rootNodeOffset);
240
- return {
241
- refsByName,
242
- refsByNumber,
243
- };
244
- });
212
+ await Promise.all(nextNodes);
213
+ }
214
+ };
215
+ await bptReadNode(rootNodeOffset);
216
+ return {
217
+ refsByName,
218
+ refsByNumber,
219
+ };
245
220
  }
246
221
  /*
247
222
  * fetches the "unzoomed" view of the bigwig data. this is the default for bigbed
248
223
  * @param abortSignal - a signal to optionally abort this operation
249
224
  */
250
- getUnzoomedView(opts) {
251
- return __awaiter(this, void 0, void 0, function* () {
252
- const { unzoomedIndexOffset, refsByName, uncompressBufSize, isBigEndian, fileType, } = yield this.getHeader(opts);
253
- return new block_view_1.BlockView(this.bbi, refsByName, unzoomedIndexOffset, isBigEndian, uncompressBufSize > 0, fileType);
254
- });
225
+ async getUnzoomedView(opts) {
226
+ const { unzoomedIndexOffset, refsByName, uncompressBufSize, fileType } = await this.getHeader(opts);
227
+ return new block_view_1.BlockView(this.bbi, refsByName, unzoomedIndexOffset, uncompressBufSize > 0, fileType);
255
228
  }
256
229
  /**
257
230
  * Gets features from a BigWig file
258
231
  *
259
232
  * @param refName - The chromosome name
233
+ *
260
234
  * @param start - The start of a region
235
+ *
261
236
  * @param end - The end of a region
262
- * @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
237
+ *
238
+ * @param opts - An object containing basesPerSpan (e.g. pixels per basepair)
239
+ * or scale used to infer the zoomLevel to use
263
240
  */
264
- getFeatureStream(refName, start, end, opts) {
265
- return __awaiter(this, void 0, void 0, function* () {
266
- yield this.getHeader(opts);
267
- const chrName = this.renameRefSeqs(refName);
268
- let view;
269
- const { basesPerSpan, scale } = opts || {};
270
- if (basesPerSpan) {
271
- view = yield this.getView(1 / basesPerSpan, opts);
272
- }
273
- else if (scale) {
274
- view = yield this.getView(scale, opts);
275
- }
276
- else {
277
- view = yield this.getView(1, opts);
278
- }
279
- return new rxjs_1.Observable(observer => {
280
- view
281
- .readWigData(chrName, start, end, observer, opts)
282
- .catch((e) => {
283
- observer.error(e);
284
- });
241
+ async getFeatureStream(refName, start, end, opts) {
242
+ await this.getHeader(opts);
243
+ const chrName = this.renameRefSeqs(refName);
244
+ let view;
245
+ const { basesPerSpan, scale } = opts || {};
246
+ if (basesPerSpan) {
247
+ view = await this.getView(1 / basesPerSpan, opts);
248
+ }
249
+ else if (scale) {
250
+ view = await this.getView(scale, opts);
251
+ }
252
+ else {
253
+ view = await this.getView(1, opts);
254
+ }
255
+ return new rxjs_1.Observable(observer => {
256
+ view
257
+ .readWigData(chrName, start, end, observer, opts)
258
+ .catch((e) => {
259
+ observer.error(e);
285
260
  });
286
261
  });
287
262
  }
288
- getFeatures(refName, start, end, opts) {
289
- return __awaiter(this, void 0, void 0, function* () {
290
- const ob = yield this.getFeatureStream(refName, start, end, opts);
291
- const ret = yield (0, rxjs_1.firstValueFrom)(ob.pipe((0, operators_1.toArray)()));
292
- return ret.flat();
293
- });
263
+ async getFeatures(refName, start, end, opts) {
264
+ const ob = await this.getFeatureStream(refName, start, end, opts);
265
+ const ret = await (0, rxjs_1.firstValueFrom)(ob.pipe((0, operators_1.toArray)()));
266
+ return ret.flat();
294
267
  }
295
268
  }
296
269
  exports.BBI = BBI;
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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"}