@gmod/tabix 1.5.15 → 1.6.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.
@@ -11,7 +11,6 @@ interface GetLinesOpts {
11
11
  export default class TabixIndexedFile {
12
12
  private filehandle;
13
13
  private index;
14
- private yieldTime;
15
14
  private renameRefSeq;
16
15
  private chunkCache;
17
16
  /**
@@ -29,15 +28,18 @@ export default class TabixIndexedFile {
29
28
  *
30
29
  * @param {filehandle} [args.csiFilehandle]
31
30
  *
32
- * @param {number} [args.yieldTime] yield to main thread after N milliseconds
33
- * if reading features is taking a long time to avoid hanging main thread
31
+ * @param {url} [args.url]
32
+ *
33
+ * @param {csiUrl} [args.csiUrl]
34
+ *
35
+ * @param {tbiUrl} [args.tbiUrl]
34
36
  *
35
37
  * @param {function} [args.renameRefSeqs] optional function with sig `string
36
38
  * => string` to transform reference sequence names for the purpose of
37
39
  * indexing and querying. note that the data that is returned is not altered,
38
40
  * just the names of the reference sequences that are used for querying.
39
41
  */
40
- constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, yieldTime, renameRefSeqs, chunkCacheSize, }: {
42
+ constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, renameRefSeqs, chunkCacheSize, }: {
41
43
  path?: string;
42
44
  filehandle?: GenericFilehandle;
43
45
  url?: string;
@@ -47,7 +49,6 @@ export default class TabixIndexedFile {
47
49
  csiPath?: string;
48
50
  csiUrl?: string;
49
51
  csiFilehandle?: GenericFilehandle;
50
- yieldTime?: number;
51
52
  renameRefSeqs?: (n: string) => string;
52
53
  chunkCacheSize?: number;
53
54
  });
@@ -82,7 +83,7 @@ export default class TabixIndexedFile {
82
83
  * get a buffer containing the "header" region of the file, which are the
83
84
  * bytes up to the first non-meta line
84
85
  */
85
- getHeaderBuffer(opts?: Options): Promise<Buffer>;
86
+ getHeaderBuffer(opts?: Options): Promise<Buffer<Uint8Array<ArrayBuffer>>>;
86
87
  /**
87
88
  * get a string containing the "header" region of the file, is the portion up
88
89
  * to the first non-meta line
@@ -127,13 +128,13 @@ export default class TabixIndexedFile {
127
128
  * @returns number of data lines present on that reference sequence
128
129
  */
129
130
  lineCount(refName: string, opts?: Options): Promise<number>;
130
- _readRegion(pos: number, size: number, opts?: Options): Promise<Buffer>;
131
+ _readRegion(pos: number, size: number, opts?: Options): Promise<Buffer<ArrayBufferLike>>;
131
132
  /**
132
133
  * read and uncompress the data in a chunk (composed of one or more
133
134
  * contiguous bgzip blocks) of the file
134
135
  */
135
136
  readChunk(c: Chunk, opts?: Options): Promise<{
136
- buffer: Buffer;
137
+ buffer: Buffer<Uint8Array<ArrayBuffer>>;
137
138
  cpositions: number[];
138
139
  dpositions: number[];
139
140
  }>;
@@ -1,13 +1,4 @@
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
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -20,10 +11,11 @@ const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
20
11
  const util_1 = require("./util");
21
12
  const tbi_1 = __importDefault(require("./tbi"));
22
13
  const csi_1 = __importDefault(require("./csi"));
23
- const decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;
24
- function timeout(time) {
25
- return new Promise(resolve => setTimeout(resolve, time));
14
+ function isASCII(str) {
15
+ // eslint-disable-next-line no-control-regex
16
+ return /^[\u0000-\u007F]*$/.test(str);
26
17
  }
18
+ const decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;
27
19
  class TabixIndexedFile {
28
20
  /**
29
21
  * @param {object} args
@@ -40,15 +32,18 @@ class TabixIndexedFile {
40
32
  *
41
33
  * @param {filehandle} [args.csiFilehandle]
42
34
  *
43
- * @param {number} [args.yieldTime] yield to main thread after N milliseconds
44
- * if reading features is taking a long time to avoid hanging main thread
35
+ * @param {url} [args.url]
36
+ *
37
+ * @param {csiUrl} [args.csiUrl]
38
+ *
39
+ * @param {tbiUrl} [args.tbiUrl]
45
40
  *
46
41
  * @param {function} [args.renameRefSeqs] optional function with sig `string
47
42
  * => string` to transform reference sequence names for the purpose of
48
43
  * indexing and querying. note that the data that is returned is not altered,
49
44
  * just the names of the reference sequences that are used for querying.
50
45
  */
51
- constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, yieldTime = 500, renameRefSeqs = n => n, chunkCacheSize = 5 * Math.pow(2, 20), }) {
46
+ constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, renameRefSeqs = n => n, chunkCacheSize = 5 * 2 ** 20, }) {
52
47
  if (filehandle) {
53
48
  this.filehandle = filehandle;
54
49
  }
@@ -110,7 +105,6 @@ class TabixIndexedFile {
110
105
  throw new TypeError('must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl');
111
106
  }
112
107
  this.renameRefSeq = renameRefSeqs;
113
- this.yieldTime = yieldTime;
114
108
  this.chunkCache = new abortable_promise_cache_1.default({
115
109
  cache: new quick_lru_1.default({ maxSize: Math.floor(chunkCacheSize / (1 << 16)) }),
116
110
  fill: (args, signal) => this.readChunk(args, { signal }),
@@ -129,131 +123,128 @@ class TabixIndexedFile {
129
123
  * @returns promise that is resolved when the whole read is finished,
130
124
  * rejected on error
131
125
  */
132
- getLines(refName, s, e, opts) {
133
- return __awaiter(this, void 0, void 0, function* () {
134
- var _a;
135
- let signal;
136
- let options = {};
137
- let callback;
138
- if (typeof opts === 'function') {
139
- callback = opts;
140
- }
141
- else {
142
- options = opts;
143
- callback = opts.lineCallback;
144
- signal = opts.signal;
145
- }
146
- const metadata = yield this.index.getMetadata(options);
147
- (0, util_1.checkAbortSignal)(signal);
148
- const start = s !== null && s !== void 0 ? s : 0;
149
- const end = e !== null && e !== void 0 ? e : metadata.maxRefLength;
150
- if (!(start <= end)) {
151
- throw new TypeError('invalid start and end coordinates. start must be less than or equal to end');
152
- }
153
- if (start === end) {
154
- return;
155
- }
156
- const chunks = yield this.index.blocksForRange(refName, start, end, options);
126
+ async getLines(refName, s, e, opts) {
127
+ var _a, _b;
128
+ let signal;
129
+ let options = {};
130
+ let callback;
131
+ if (typeof opts === 'function') {
132
+ callback = opts;
133
+ }
134
+ else {
135
+ options = opts;
136
+ callback = opts.lineCallback;
137
+ signal = opts.signal;
138
+ }
139
+ const metadata = await this.index.getMetadata(options);
140
+ (0, util_1.checkAbortSignal)(signal);
141
+ const start = s !== null && s !== void 0 ? s : 0;
142
+ const end = e !== null && e !== void 0 ? e : metadata.maxRefLength;
143
+ if (!(start <= end)) {
144
+ throw new TypeError('invalid start and end coordinates. start must be less than or equal to end');
145
+ }
146
+ if (start === end) {
147
+ return;
148
+ }
149
+ const chunks = await this.index.blocksForRange(refName, start, end, options);
150
+ (0, util_1.checkAbortSignal)(signal);
151
+ // now go through each chunk and parse and filter the lines out of it
152
+ for (const c of chunks) {
153
+ const { buffer, cpositions, dpositions } = await this.chunkCache.get(c.toString(), c, signal);
157
154
  (0, util_1.checkAbortSignal)(signal);
158
- // now go through each chunk and parse and filter the lines out of it
159
- let last = Date.now();
160
- for (const c of chunks) {
161
- let previousStartCoordinate;
162
- const { buffer, cpositions, dpositions } = yield this.chunkCache.get(c.toString(), c, signal);
163
- (0, util_1.checkAbortSignal)(signal);
164
- let blockStart = 0;
165
- let pos = 0;
166
- while (blockStart < buffer.length) {
167
- const n = buffer.indexOf('\n', blockStart);
155
+ let blockStart = 0;
156
+ let pos = 0;
157
+ const str = (_a = decoder === null || decoder === void 0 ? void 0 : decoder.decode(buffer)) !== null && _a !== void 0 ? _a : buffer.toString();
158
+ // fast path, Buffer is just ASCII chars and not gigantor, can be
159
+ // converted to string and processed directly. if it is not ASCII or
160
+ // gigantic (chrome max str len is 512Mb), we have to decode line by line
161
+ const strIsASCII = buffer.length < 500000000 && isASCII(str);
162
+ while (blockStart < str.length) {
163
+ let line;
164
+ let n;
165
+ if (strIsASCII) {
166
+ n = str.indexOf('\n', blockStart);
168
167
  if (n === -1) {
169
168
  break;
170
169
  }
171
- const b = buffer.slice(blockStart, n);
172
- const line = (_a = decoder === null || decoder === void 0 ? void 0 : decoder.decode(b)) !== null && _a !== void 0 ? _a : b.toString();
173
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
174
- if (dpositions) {
175
- while (blockStart + c.minv.dataPosition >= dpositions[pos++]) { }
176
- pos--;
177
- }
178
- // filter the line for whether it is within the requested range
179
- const { startCoordinate, overlaps } = this.checkLine(metadata, refName, start, end, line);
180
- // do a small check just to make sure that the lines are really sorted
181
- // by start coordinate
182
- if (previousStartCoordinate !== undefined &&
183
- startCoordinate !== undefined &&
184
- previousStartCoordinate > startCoordinate) {
185
- throw new Error(`Lines not sorted by start coordinate (${previousStartCoordinate} > ${startCoordinate}), this file is not usable with Tabix.`);
186
- }
187
- previousStartCoordinate = startCoordinate;
188
- if (overlaps) {
189
- callback(line.trim(),
190
- // cpositions[pos] refers to actual file offset of a bgzip block boundaries
191
- //
192
- // we multiply by (1 <<8) in order to make sure each block has a "unique"
193
- // address space so that data in that block could never overlap
194
- //
195
- // then the blockStart-dpositions is an uncompressed file offset from
196
- // that bgzip block boundary, and since the cpositions are multiplied by
197
- // (1 << 8) these uncompressed offsets get a unique space
198
- cpositions[pos] * (1 << 8) +
199
- (blockStart - dpositions[pos]) +
200
- c.minv.dataPosition +
201
- 1);
202
- }
203
- else if (startCoordinate !== undefined && startCoordinate >= end) {
204
- // the lines were overlapping the region, but now have stopped, so
205
- // we must be at the end of the relevant data and we can stop
206
- // processing data now
207
- return;
208
- }
209
- // yield if we have emitted beyond the yield limit
210
- if (this.yieldTime && last - Date.now() > this.yieldTime) {
211
- last = Date.now();
212
- (0, util_1.checkAbortSignal)(signal);
213
- yield timeout(1);
170
+ line = str.slice(blockStart, n);
171
+ }
172
+ else {
173
+ n = buffer.indexOf('\n', blockStart);
174
+ if (n === -1) {
175
+ break;
214
176
  }
215
- blockStart = n + 1;
177
+ const b = buffer.slice(blockStart, n);
178
+ line = (_b = decoder === null || decoder === void 0 ? void 0 : decoder.decode(b)) !== null && _b !== void 0 ? _b : b.toString();
179
+ }
180
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
181
+ if (dpositions) {
182
+ while (blockStart + c.minv.dataPosition >= dpositions[pos++]) { }
183
+ pos--;
184
+ }
185
+ // filter the line for whether it is within the requested range
186
+ const { startCoordinate, overlaps } = this.checkLine(metadata, refName, start, end, line);
187
+ if (overlaps) {
188
+ callback(line,
189
+ // cpositions[pos] refers to actual file offset of a bgzip block
190
+ // boundaries
191
+ //
192
+ // we multiply by (1 <<8) in order to make sure each block has a
193
+ // "unique" address space so that data in that block could never
194
+ // overlap
195
+ //
196
+ // then the blockStart-dpositions is an uncompressed file offset
197
+ // from that bgzip block boundary, and since the cpositions are
198
+ // multiplied by (1 << 8) these uncompressed offsets get a unique
199
+ // space
200
+ cpositions[pos] * (1 << 8) +
201
+ (blockStart - dpositions[pos]) +
202
+ c.minv.dataPosition +
203
+ 1);
204
+ }
205
+ else if (startCoordinate !== undefined && startCoordinate >= end) {
206
+ // the lines were overlapping the region, but now have stopped, so we
207
+ // must be at the end of the relevant data and we can stop processing
208
+ // data now
209
+ return;
216
210
  }
211
+ blockStart = n + 1;
217
212
  }
218
- });
213
+ }
219
214
  }
220
- getMetadata() {
221
- return __awaiter(this, arguments, void 0, function* (opts = {}) {
222
- return this.index.getMetadata(opts);
223
- });
215
+ async getMetadata(opts = {}) {
216
+ return this.index.getMetadata(opts);
224
217
  }
225
218
  /**
226
219
  * get a buffer containing the "header" region of the file, which are the
227
220
  * bytes up to the first non-meta line
228
221
  */
229
- getHeaderBuffer() {
230
- return __awaiter(this, arguments, void 0, function* (opts = {}) {
231
- const { firstDataLine, metaChar, maxBlockSize } = yield this.getMetadata(opts);
232
- (0, util_1.checkAbortSignal)(opts.signal);
233
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
234
- const maxFetch = ((firstDataLine === null || firstDataLine === void 0 ? void 0 : firstDataLine.blockPosition) || 0) + maxBlockSize;
235
- // TODO: what if we don't have a firstDataLine, and the header
236
- // actually takes up more than one block? this case is not covered here
237
- const buf = yield this._readRegion(0, maxFetch, opts);
238
- const bytes = yield (0, bgzf_filehandle_1.unzip)(buf);
239
- // trim off lines after the last non-meta line
240
- if (metaChar) {
241
- // trim backward from the end
242
- let lastNewline = -1;
243
- const newlineByte = '\n'.charCodeAt(0);
244
- const metaByte = metaChar.charCodeAt(0);
245
- for (let i = 0; i < bytes.length; i += 1) {
246
- if (i === lastNewline + 1 && bytes[i] !== metaByte) {
247
- break;
248
- }
249
- if (bytes[i] === newlineByte) {
250
- lastNewline = i;
251
- }
222
+ async getHeaderBuffer(opts = {}) {
223
+ const { firstDataLine, metaChar, maxBlockSize } = await this.getMetadata(opts);
224
+ (0, util_1.checkAbortSignal)(opts.signal);
225
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
226
+ const maxFetch = ((firstDataLine === null || firstDataLine === void 0 ? void 0 : firstDataLine.blockPosition) || 0) + maxBlockSize;
227
+ // TODO: what if we don't have a firstDataLine, and the header
228
+ // actually takes up more than one block? this case is not covered here
229
+ const buf = await this._readRegion(0, maxFetch, opts);
230
+ const bytes = await (0, bgzf_filehandle_1.unzip)(buf);
231
+ // trim off lines after the last non-meta line
232
+ if (metaChar) {
233
+ // trim backward from the end
234
+ let lastNewline = -1;
235
+ const newlineByte = '\n'.charCodeAt(0);
236
+ const metaByte = metaChar.charCodeAt(0);
237
+ for (let i = 0; i < bytes.length; i += 1) {
238
+ if (i === lastNewline + 1 && bytes[i] !== metaByte) {
239
+ break;
240
+ }
241
+ if (bytes[i] === newlineByte) {
242
+ lastNewline = i;
252
243
  }
253
- return bytes.slice(0, lastNewline + 1);
254
244
  }
255
- return bytes;
256
- });
245
+ return bytes.subarray(0, lastNewline + 1);
246
+ }
247
+ return bytes;
257
248
  }
258
249
  /**
259
250
  * get a string containing the "header" region of the file, is the portion up
@@ -261,21 +252,17 @@ class TabixIndexedFile {
261
252
  *
262
253
  * @returns {Promise} for a string
263
254
  */
264
- getHeader() {
265
- return __awaiter(this, arguments, void 0, function* (opts = {}) {
266
- const bytes = yield this.getHeaderBuffer(opts);
267
- return bytes.toString('utf8');
268
- });
255
+ async getHeader(opts = {}) {
256
+ const bytes = await this.getHeaderBuffer(opts);
257
+ return bytes.toString('utf8');
269
258
  }
270
259
  /**
271
260
  * get an array of reference sequence names, in the order in which they occur
272
261
  * in the file. reference sequence renaming is not applied to these names.
273
262
  */
274
- getReferenceSequenceNames() {
275
- return __awaiter(this, arguments, void 0, function* (opts = {}) {
276
- const metadata = yield this.getMetadata(opts);
277
- return metadata.refIdToName;
278
- });
263
+ async getReferenceSequenceNames(opts = {}) {
264
+ const metadata = await this.getMetadata(opts);
265
+ return metadata.refIdToName;
279
266
  }
280
267
  /**
281
268
  * @param {object} metadata metadata object from the parsed index, containing
@@ -320,12 +307,15 @@ class TabixIndexedFile {
320
307
  let currentColumnStart = 0;
321
308
  let refSeq = '';
322
309
  let startCoordinate = -Infinity;
323
- for (let i = 0; i < line.length + 1; i += 1) {
324
- if (line[i] === '\t' || i === line.length) {
310
+ const l = line.length;
311
+ for (let i = 0; i < l + 1; i++) {
312
+ if (line[i] === '\t' || i === l) {
325
313
  if (currentColumnNumber === ref) {
326
314
  if (this.renameRefSeq(line.slice(currentColumnStart, i)) !==
327
315
  regionRefName) {
328
- return { overlaps: false };
316
+ return {
317
+ overlaps: false,
318
+ };
329
319
  }
330
320
  }
331
321
  else if (currentColumnNumber === start) {
@@ -335,12 +325,18 @@ class TabixIndexedFile {
335
325
  startCoordinate -= 1;
336
326
  }
337
327
  if (startCoordinate >= regionEnd) {
338
- return { startCoordinate, overlaps: false };
328
+ return {
329
+ startCoordinate,
330
+ overlaps: false,
331
+ };
339
332
  }
340
333
  if (end === 0 || end === start) {
341
334
  // if we have no end, we assume the feature is 1 bp long
342
335
  if (startCoordinate + 1 <= regionStart) {
343
- return { startCoordinate, overlaps: false };
336
+ return {
337
+ startCoordinate,
338
+ overlaps: false,
339
+ };
344
340
  }
345
341
  }
346
342
  }
@@ -351,9 +347,11 @@ class TabixIndexedFile {
351
347
  // this will never match if there is no end column
352
348
  const endCoordinate = format === 'VCF'
353
349
  ? this._getVcfEnd(startCoordinate, refSeq, line.slice(currentColumnStart, i))
354
- : parseInt(line.slice(currentColumnStart, i), 10);
350
+ : Number.parseInt(line.slice(currentColumnStart, i), 10);
355
351
  if (endCoordinate <= regionStart) {
356
- return { overlaps: false };
352
+ return {
353
+ overlaps: false,
354
+ };
357
355
  }
358
356
  }
359
357
  currentColumnStart = i + 1;
@@ -363,7 +361,10 @@ class TabixIndexedFile {
363
361
  }
364
362
  }
365
363
  }
366
- return { startCoordinate, overlaps: true };
364
+ return {
365
+ startCoordinate,
366
+ overlaps: true,
367
+ };
367
368
  }
368
369
  _getVcfEnd(startCoordinate, refSeq, info) {
369
370
  let endCoordinate = startCoordinate + refSeq.length;
@@ -400,29 +401,23 @@ class TabixIndexedFile {
400
401
  *
401
402
  * @returns number of data lines present on that reference sequence
402
403
  */
403
- lineCount(refName_1) {
404
- return __awaiter(this, arguments, void 0, function* (refName, opts = {}) {
405
- return this.index.lineCount(refName, opts);
406
- });
404
+ async lineCount(refName, opts = {}) {
405
+ return this.index.lineCount(refName, opts);
407
406
  }
408
- _readRegion(pos_1, size_1) {
409
- return __awaiter(this, arguments, void 0, function* (pos, size, opts = {}) {
410
- const b = buffer_1.Buffer.alloc(size);
411
- const { bytesRead, buffer } = yield this.filehandle.read(b, 0, size, pos, opts);
412
- return buffer.slice(0, bytesRead);
413
- });
407
+ async _readRegion(pos, size, opts = {}) {
408
+ const b = buffer_1.Buffer.alloc(size);
409
+ const { bytesRead, buffer } = await this.filehandle.read(b, 0, size, pos, opts);
410
+ return buffer.subarray(0, bytesRead);
414
411
  }
415
412
  /**
416
413
  * read and uncompress the data in a chunk (composed of one or more
417
414
  * contiguous bgzip blocks) of the file
418
415
  */
419
- readChunk(c_1) {
420
- return __awaiter(this, arguments, void 0, function* (c, opts = {}) {
421
- // fetch the uncompressed data, uncompress carefully a block at a time, and
422
- // stop when done
423
- const data = yield this._readRegion(c.minv.blockPosition, c.fetchedSize(), opts);
424
- return (0, bgzf_filehandle_1.unzipChunkSlice)(data, c);
425
- });
416
+ async readChunk(c, opts = {}) {
417
+ // fetch the uncompressed data, uncompress carefully a block at a time, and
418
+ // stop when done
419
+ const data = await this._readRegion(c.minv.blockPosition, c.fetchedSize(), opts);
420
+ return (0, bgzf_filehandle_1.unzipChunkSlice)(data, c);
426
421
  }
427
422
  }
428
423
  exports.default = TabixIndexedFile;
@@ -1 +1 @@
1
- {"version":3,"file":"tabixIndexedFile.js","sourceRoot":"","sources":["../src/tabixIndexedFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabixIndexedFile.js","sourceRoot":"","sources":["../src/tabixIndexedFile.ts"],"names":[],"mappings":"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"}