@gmod/bam 4.0.1 → 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.
Files changed (68) hide show
  1. package/CHANGELOG.md +3 -7
  2. package/README.md +7 -11
  3. package/dist/bai.d.ts +1 -1
  4. package/dist/bai.js +151 -169
  5. package/dist/bai.js.map +1 -1
  6. package/dist/bamFile.d.ts +4 -5
  7. package/dist/bamFile.js +271 -350
  8. package/dist/bamFile.js.map +1 -1
  9. package/dist/chunk.d.ts +1 -1
  10. package/dist/chunk.js +5 -0
  11. package/dist/chunk.js.map +1 -1
  12. package/dist/csi.d.ts +1 -1
  13. package/dist/csi.js +140 -145
  14. package/dist/csi.js.map +1 -1
  15. package/dist/htsget.d.ts +1 -2
  16. package/dist/htsget.js +131 -161
  17. package/dist/htsget.js.map +1 -1
  18. package/dist/indexFile.d.ts +1 -1
  19. package/dist/indexFile.js +2 -0
  20. package/dist/indexFile.js.map +1 -1
  21. package/dist/nullIndex.js +2 -13
  22. package/dist/nullIndex.js.map +1 -1
  23. package/dist/record.d.ts +4 -4
  24. package/dist/record.js +43 -36
  25. package/dist/record.js.map +1 -1
  26. package/dist/util.d.ts +4 -2
  27. package/dist/util.js +25 -15
  28. package/dist/util.js.map +1 -1
  29. package/dist/virtualOffset.d.ts +1 -1
  30. package/dist/virtualOffset.js +2 -0
  31. package/dist/virtualOffset.js.map +1 -1
  32. package/esm/bai.d.ts +1 -1
  33. package/esm/bai.js +13 -13
  34. package/esm/bai.js.map +1 -1
  35. package/esm/bamFile.d.ts +4 -5
  36. package/esm/bamFile.js +49 -50
  37. package/esm/bamFile.js.map +1 -1
  38. package/esm/chunk.d.ts +1 -1
  39. package/esm/chunk.js +5 -0
  40. package/esm/chunk.js.map +1 -1
  41. package/esm/csi.d.ts +1 -1
  42. package/esm/csi.js +26 -28
  43. package/esm/csi.js.map +1 -1
  44. package/esm/htsget.d.ts +1 -2
  45. package/esm/htsget.js +21 -11
  46. package/esm/htsget.js.map +1 -1
  47. package/esm/indexFile.d.ts +1 -1
  48. package/esm/indexFile.js +2 -0
  49. package/esm/indexFile.js.map +1 -1
  50. package/esm/record.d.ts +4 -4
  51. package/esm/record.js +43 -36
  52. package/esm/record.js.map +1 -1
  53. package/esm/util.d.ts +4 -2
  54. package/esm/util.js +20 -1
  55. package/esm/util.js.map +1 -1
  56. package/esm/virtualOffset.d.ts +1 -1
  57. package/esm/virtualOffset.js +2 -0
  58. package/esm/virtualOffset.js.map +1 -1
  59. package/package.json +6 -6
  60. package/src/bai.ts +11 -8
  61. package/src/bamFile.ts +22 -41
  62. package/src/chunk.ts +1 -1
  63. package/src/csi.ts +22 -19
  64. package/src/htsget.ts +18 -9
  65. package/src/indexFile.ts +1 -1
  66. package/src/record.ts +43 -42
  67. package/src/util.ts +23 -3
  68. package/src/virtualOffset.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,19 +1,15 @@
1
- ## [4.0.1](https://github.com/GMOD/bam-js/compare/v4.0.0...v4.0.1) (2024-11-12)
2
-
1
+ # [5.0.0](https://github.com/GMOD/bam-js/compare/v4.0.1...v5.0.0) (2024-12-12)
3
2
 
4
3
 
5
- # [4.0.0](https://github.com/GMOD/bam-js/compare/v3.0.3...v4.0.0) (2024-11-12)
6
4
 
5
+ ## [4.0.1](https://github.com/GMOD/bam-js/compare/v4.0.0...v4.0.1) (2024-11-12)
7
6
 
7
+ # [4.0.0](https://github.com/GMOD/bam-js/compare/v3.0.3...v4.0.0) (2024-11-12)
8
8
 
9
9
  ## [3.0.3](https://github.com/GMOD/bam-js/compare/v3.0.0...v3.0.3) (2024-11-11)
10
10
 
11
-
12
-
13
11
  ## [3.0.2](https://github.com/GMOD/bam-js/compare/v3.0.0...v3.0.2) (2024-11-11)
14
12
 
15
-
16
-
17
13
  - republish v3.0.1 since it got tagged on a deleted branch
18
14
 
19
15
  ## [3.0.1](https://github.com/GMOD/bam-js/compare/v3.0.0...v3.0.1) (2024-11-11)
package/README.md CHANGED
@@ -26,10 +26,10 @@ var records = await t.getRecordsForRange('ctgA', 0, 50000)
26
26
  ```
27
27
 
28
28
  The `bamPath` argument only works on nodejs. In the browser, you should pass
29
- `bamFilehandle` with a generic-filehandle e.g. `RemoteFile`
29
+ `bamFilehandle` with a generic-filehandle2 e.g. `RemoteFile`
30
30
 
31
31
  ```typescript
32
- const { RemoteFile } = require('generic-filehandle')
32
+ const { RemoteFile } = require('generic-filehandle2')
33
33
  const bam = new BamFile({
34
34
  bamFilehandle: new RemoteFile('yourfile.bam'), // or a full http url
35
35
  baiFilehandle: new RemoteFile('yourfile.bam.bai'), // or a full http url
@@ -76,9 +76,10 @@ The BAM class constructor accepts arguments
76
76
  yielding
77
77
 
78
78
  Note: filehandles implement the Filehandle interface from
79
- https://www.npmjs.com/package/generic-filehandle. This module offers the path
80
- and url arguments as convenience methods for supplying the LocalFile and
81
- RemoteFile
79
+ https://www.npmjs.com/package/generic-filehandle2.
80
+
81
+ This module offers the path and url arguments as convenience methods for
82
+ supplying the LocalFile and RemoteFile
82
83
 
83
84
  ### async getRecordsForRange(refName, start, end, opts)
84
85
 
@@ -112,7 +113,7 @@ for await (const chunk of file.streamRecordsForRange(
112
113
  The `getRecordsForRange` simply wraps this process by concatenating chunks into
113
114
  an array
114
115
 
115
- ### async getHeader(opts: {....anything to pass to generic-filehandle opts})
116
+ ### async getHeader(opts: {....anything to pass to generic-filehandle2 opts})
116
117
 
117
118
  This obtains the header from `HtsgetFile` or `BamFile`. Retrieves BAM file and
118
119
  BAI/CSI header if applicable, or API request for refnames from htsget
@@ -157,11 +158,6 @@ feature.flags // flags
157
158
  feature.template_length // TLEN
158
159
  ```
159
160
 
160
- #### Note
161
-
162
- The reason that we hide the data behind this ".get" function is that we lazily
163
- decode records on demand, which can reduce memory consumption.
164
-
165
161
  ## License
166
162
 
167
163
  MIT © [Colin Diesh](https://github.com/cmdcolin)
package/dist/bai.d.ts CHANGED
@@ -5,7 +5,7 @@ import IndexFile from './indexFile';
5
5
  export default class BAI extends IndexFile {
6
6
  setupP?: ReturnType<BAI['_parse']>;
7
7
  lineCount(refId: number, opts?: BaseOpts): Promise<number>;
8
- _parse(opts?: BaseOpts): Promise<{
8
+ _parse(_opts?: BaseOpts): Promise<{
9
9
  bai: boolean;
10
10
  firstDataLine: VirtualOffset | undefined;
11
11
  maxBlockSize: number;
package/dist/bai.js CHANGED
@@ -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
  };
@@ -35,181 +26,172 @@ function reg2bins(beg, end) {
35
26
  ];
36
27
  }
37
28
  class BAI extends indexFile_1.default {
38
- lineCount(refId, opts) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- var _a, _b;
41
- const indexData = yield this.parse(opts);
42
- return ((_b = (_a = indexData.indices[refId]) === null || _a === void 0 ? void 0 : _a.stats) === null || _b === void 0 ? void 0 : _b.lineCount) || 0;
43
- });
29
+ setupP;
30
+ async lineCount(refId, opts) {
31
+ const indexData = await this.parse(opts);
32
+ return indexData.indices[refId]?.stats?.lineCount || 0;
44
33
  }
45
34
  // fetch and parse the index
46
- _parse(opts) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const bytes = (yield this.filehandle.readFile(opts));
49
- // check BAI magic numbers
50
- if (bytes.readUInt32LE(0) !== BAI_MAGIC) {
51
- throw new Error('Not a BAI file');
52
- }
53
- const refCount = bytes.readInt32LE(4);
54
- const depth = 5;
55
- const binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
56
- // read the indexes for each reference sequence
57
- let curr = 8;
58
- let firstDataLine;
59
- const indices = new Array(refCount);
60
- for (let i = 0; i < refCount; i++) {
61
- // the binning index
62
- const binCount = bytes.readInt32LE(curr);
63
- let stats;
35
+ async _parse(_opts) {
36
+ const bytes = await this.filehandle.readFile();
37
+ const dataView = new DataView(bytes.buffer);
38
+ // check BAI magic numbers
39
+ if (dataView.getUint32(0, true) !== BAI_MAGIC) {
40
+ throw new Error('Not a BAI file');
41
+ }
42
+ const refCount = dataView.getInt32(4, true);
43
+ const depth = 5;
44
+ const binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
45
+ // read the indexes for each reference sequence
46
+ let curr = 8;
47
+ let firstDataLine;
48
+ const indices = new Array(refCount);
49
+ for (let i = 0; i < refCount; i++) {
50
+ // the binning index
51
+ const binCount = dataView.getInt32(curr, true);
52
+ let stats;
53
+ curr += 4;
54
+ const binIndex = {};
55
+ for (let j = 0; j < binCount; j += 1) {
56
+ const bin = dataView.getUint32(curr, true);
64
57
  curr += 4;
65
- const binIndex = {};
66
- for (let j = 0; j < binCount; j += 1) {
67
- const bin = bytes.readUInt32LE(curr);
58
+ if (bin === binLimit + 1) {
68
59
  curr += 4;
69
- if (bin === binLimit + 1) {
70
- curr += 4;
71
- stats = (0, util_1.parsePseudoBin)(bytes, curr + 16);
72
- curr += 32;
73
- }
74
- else if (bin > binLimit + 1) {
75
- throw new Error('bai index contains too many bins, please use CSI');
76
- }
77
- else {
78
- const chunkCount = bytes.readInt32LE(curr);
79
- curr += 4;
80
- const chunks = new Array(chunkCount);
81
- for (let k = 0; k < chunkCount; k++) {
82
- const u = (0, virtualOffset_1.fromBytes)(bytes, curr);
83
- curr += 8;
84
- const v = (0, virtualOffset_1.fromBytes)(bytes, curr);
85
- curr += 8;
86
- firstDataLine = (0, util_1.findFirstData)(firstDataLine, u);
87
- chunks[k] = new chunk_1.default(u, v, bin);
88
- }
89
- binIndex[bin] = chunks;
90
- }
60
+ stats = (0, util_1.parsePseudoBin)(bytes, curr + 16);
61
+ curr += 32;
91
62
  }
92
- const linearCount = bytes.readInt32LE(curr);
93
- curr += 4;
94
- // as we're going through the linear index, figure out the smallest
95
- // virtual offset in the indexes, which tells us where the BAM header
96
- // ends
97
- const linearIndex = new Array(linearCount);
98
- for (let j = 0; j < linearCount; j++) {
99
- const offset = (0, virtualOffset_1.fromBytes)(bytes, curr);
100
- curr += 8;
101
- firstDataLine = (0, util_1.findFirstData)(firstDataLine, offset);
102
- linearIndex[j] = offset;
63
+ else if (bin > binLimit + 1) {
64
+ throw new Error('bai index contains too many bins, please use CSI');
65
+ }
66
+ else {
67
+ const chunkCount = dataView.getInt32(curr, true);
68
+ curr += 4;
69
+ const chunks = new Array(chunkCount);
70
+ for (let k = 0; k < chunkCount; k++) {
71
+ const u = (0, virtualOffset_1.fromBytes)(bytes, curr);
72
+ curr += 8;
73
+ const v = (0, virtualOffset_1.fromBytes)(bytes, curr);
74
+ curr += 8;
75
+ firstDataLine = (0, util_1.findFirstData)(firstDataLine, u);
76
+ chunks[k] = new chunk_1.default(u, v, bin);
77
+ }
78
+ binIndex[bin] = chunks;
103
79
  }
104
- indices[i] = { binIndex, linearIndex, stats };
105
- }
106
- return {
107
- bai: true,
108
- firstDataLine,
109
- maxBlockSize: 1 << 16,
110
- indices,
111
- refCount,
112
- };
113
- });
114
- }
115
- indexCov(seqId_1, start_1, end_1) {
116
- return __awaiter(this, arguments, void 0, function* (seqId, start, end, opts = {}) {
117
- const v = 16384;
118
- const range = start !== undefined;
119
- const indexData = yield this.parse(opts);
120
- const seqIdx = indexData.indices[seqId];
121
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
122
- if (!seqIdx) {
123
- return [];
124
- }
125
- const { linearIndex = [], stats } = seqIdx;
126
- if (linearIndex.length === 0) {
127
- return [];
128
- }
129
- const e = end === undefined ? (linearIndex.length - 1) * v : roundUp(end, v);
130
- const s = start === undefined ? 0 : roundDown(start, v);
131
- const depths = range
132
- ? new Array((e - s) / v)
133
- : new Array(linearIndex.length - 1);
134
- const totalSize = linearIndex[linearIndex.length - 1].blockPosition;
135
- if (e > (linearIndex.length - 1) * v) {
136
- throw new Error('query outside of range of linear index');
137
80
  }
138
- let currentPos = linearIndex[s / v].blockPosition;
139
- for (let i = s / v, j = 0; i < e / v; i++, j++) {
140
- depths[j] = {
141
- score: linearIndex[i + 1].blockPosition - currentPos,
142
- start: i * v,
143
- end: i * v + v,
144
- };
145
- currentPos = linearIndex[i + 1].blockPosition;
81
+ const linearCount = dataView.getInt32(curr, true);
82
+ curr += 4;
83
+ // as we're going through the linear index, figure out the smallest
84
+ // virtual offset in the indexes, which tells us where the BAM header
85
+ // ends
86
+ const linearIndex = new Array(linearCount);
87
+ for (let j = 0; j < linearCount; j++) {
88
+ const offset = (0, virtualOffset_1.fromBytes)(bytes, curr);
89
+ curr += 8;
90
+ firstDataLine = (0, util_1.findFirstData)(firstDataLine, offset);
91
+ linearIndex[j] = offset;
146
92
  }
147
- return depths.map(d => (Object.assign(Object.assign({}, d), { score: (d.score * ((stats === null || stats === void 0 ? void 0 : stats.lineCount) || 0)) / totalSize })));
148
- });
93
+ indices[i] = { binIndex, linearIndex, stats };
94
+ }
95
+ return {
96
+ bai: true,
97
+ firstDataLine,
98
+ maxBlockSize: 1 << 16,
99
+ indices,
100
+ refCount,
101
+ };
149
102
  }
150
- blocksForRange(refId_1, min_1, max_1) {
151
- return __awaiter(this, arguments, void 0, function* (refId, min, max, opts = {}) {
152
- if (min < 0) {
153
- min = 0;
154
- }
155
- const indexData = yield this.parse(opts);
156
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
157
- if (!indexData) {
158
- return [];
159
- }
160
- const ba = indexData.indices[refId];
161
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
162
- if (!ba) {
163
- return [];
164
- }
165
- // List of bin #s that overlap min, max
166
- const overlappingBins = reg2bins(min, max);
167
- const chunks = [];
168
- // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
169
- for (const [start, end] of overlappingBins) {
170
- for (let bin = start; bin <= end; bin++) {
171
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
172
- if (ba.binIndex[bin]) {
173
- const binChunks = ba.binIndex[bin];
174
- for (const binChunk of binChunks) {
175
- chunks.push(new chunk_1.default(binChunk.minv, binChunk.maxv, bin));
176
- }
103
+ async indexCov(seqId, start, end, opts = {}) {
104
+ const v = 16384;
105
+ const range = start !== undefined;
106
+ const indexData = await this.parse(opts);
107
+ const seqIdx = indexData.indices[seqId];
108
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
109
+ if (!seqIdx) {
110
+ return [];
111
+ }
112
+ const { linearIndex = [], stats } = seqIdx;
113
+ if (linearIndex.length === 0) {
114
+ return [];
115
+ }
116
+ const e = end === undefined ? (linearIndex.length - 1) * v : roundUp(end, v);
117
+ const s = start === undefined ? 0 : roundDown(start, v);
118
+ const depths = range
119
+ ? new Array((e - s) / v)
120
+ : new Array(linearIndex.length - 1);
121
+ const totalSize = linearIndex[linearIndex.length - 1].blockPosition;
122
+ if (e > (linearIndex.length - 1) * v) {
123
+ throw new Error('query outside of range of linear index');
124
+ }
125
+ let currentPos = linearIndex[s / v].blockPosition;
126
+ for (let i = s / v, j = 0; i < e / v; i++, j++) {
127
+ depths[j] = {
128
+ score: linearIndex[i + 1].blockPosition - currentPos,
129
+ start: i * v,
130
+ end: i * v + v,
131
+ };
132
+ currentPos = linearIndex[i + 1].blockPosition;
133
+ }
134
+ return depths.map(d => ({
135
+ ...d,
136
+ score: (d.score * (stats?.lineCount || 0)) / totalSize,
137
+ }));
138
+ }
139
+ async blocksForRange(refId, min, max, opts = {}) {
140
+ if (min < 0) {
141
+ min = 0;
142
+ }
143
+ const indexData = await this.parse(opts);
144
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
145
+ if (!indexData) {
146
+ return [];
147
+ }
148
+ const ba = indexData.indices[refId];
149
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
150
+ if (!ba) {
151
+ return [];
152
+ }
153
+ // List of bin #s that overlap min, max
154
+ const overlappingBins = reg2bins(min, max);
155
+ const chunks = [];
156
+ // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
157
+ for (const [start, end] of overlappingBins) {
158
+ for (let bin = start; bin <= end; bin++) {
159
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
160
+ if (ba.binIndex[bin]) {
161
+ const binChunks = ba.binIndex[bin];
162
+ for (const binChunk of binChunks) {
163
+ chunks.push(new chunk_1.default(binChunk.minv, binChunk.maxv, bin));
177
164
  }
178
165
  }
179
166
  }
180
- // Use the linear index to find minimum file position of chunks that could
181
- // contain alignments in the region
182
- const nintv = ba.linearIndex.length;
183
- let lowest;
184
- const minLin = Math.min(min >> 14, nintv - 1);
185
- const maxLin = Math.min(max >> 14, nintv - 1);
186
- for (let i = minLin; i <= maxLin; ++i) {
187
- const vp = ba.linearIndex[i];
188
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
189
- if (vp && (!lowest || vp.compareTo(lowest) < 0)) {
190
- lowest = vp;
191
- }
167
+ }
168
+ // Use the linear index to find minimum file position of chunks that could
169
+ // contain alignments in the region
170
+ const nintv = ba.linearIndex.length;
171
+ let lowest;
172
+ const minLin = Math.min(min >> 14, nintv - 1);
173
+ const maxLin = Math.min(max >> 14, nintv - 1);
174
+ for (let i = minLin; i <= maxLin; ++i) {
175
+ const vp = ba.linearIndex[i];
176
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
177
+ if (vp && (!lowest || vp.compareTo(lowest) < 0)) {
178
+ lowest = vp;
192
179
  }
193
- return (0, util_1.optimizeChunks)(chunks, lowest);
194
- });
180
+ }
181
+ return (0, util_1.optimizeChunks)(chunks, lowest);
195
182
  }
196
- parse() {
197
- return __awaiter(this, arguments, void 0, function* (opts = {}) {
198
- if (!this.setupP) {
199
- this.setupP = this._parse(opts).catch((e) => {
200
- this.setupP = undefined;
201
- throw e;
202
- });
203
- }
204
- return this.setupP;
205
- });
183
+ async parse(opts = {}) {
184
+ if (!this.setupP) {
185
+ this.setupP = this._parse(opts).catch((e) => {
186
+ this.setupP = undefined;
187
+ throw e;
188
+ });
189
+ }
190
+ return this.setupP;
206
191
  }
207
- hasRefSeq(seqId_1) {
208
- return __awaiter(this, arguments, void 0, function* (seqId, opts = {}) {
209
- var _a;
210
- const header = yield this.parse(opts);
211
- return !!((_a = header.indices[seqId]) === null || _a === void 0 ? void 0 : _a.binIndex);
212
- });
192
+ async hasRefSeq(seqId, opts = {}) {
193
+ const header = await this.parse(opts);
194
+ return !!header.indices[seqId]?.binIndex;
213
195
  }
214
196
  }
215
197
  exports.default = BAI;
package/dist/bai.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}
package/dist/bamFile.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { Buffer } from 'buffer';
2
- import { GenericFilehandle } from 'generic-filehandle';
1
+ import { GenericFilehandle } from 'generic-filehandle2';
3
2
  import BAI from './bai';
4
3
  import CSI from './csi';
5
4
  import Chunk from './chunk';
@@ -60,17 +59,17 @@ export default class BamFile {
60
59
  streamRecordsForRange(chr: string, min: number, max: number, opts?: BamOpts): AsyncGenerator<BAMFeature[], void, unknown>;
61
60
  _fetchChunkFeatures(chunks: Chunk[], chrId: number, min: number, max: number, opts?: BamOpts): AsyncGenerator<BAMFeature[], void, unknown>;
62
61
  fetchPairs(chrId: number, feats: BAMFeature[][], opts: BamOpts): Promise<BAMFeature[]>;
63
- _readRegion(position: number, size: number, opts?: BaseOpts): Promise<Buffer>;
62
+ _readRegion(position: number, size: number, opts?: BaseOpts): Promise<Uint8Array<ArrayBuffer>>;
64
63
  _readChunk({ chunk, opts }: {
65
64
  chunk: Chunk;
66
65
  opts: BaseOpts;
67
66
  }): Promise<{
68
- data: Buffer;
67
+ data: Uint8Array<ArrayBuffer>;
69
68
  cpositions: number[];
70
69
  dpositions: number[];
71
70
  chunk: Chunk;
72
71
  }>;
73
- readBamFeatures(ba: Buffer, cpositions: number[], dpositions: number[], chunk: Chunk): Promise<BAMFeature[]>;
72
+ readBamFeatures(ba: Uint8Array, cpositions: number[], dpositions: number[], chunk: Chunk): Promise<BAMFeature[]>;
74
73
  hasRefSeq(seqName: string): Promise<boolean | undefined>;
75
74
  lineCount(seqName: string): Promise<number>;
76
75
  indexCov(seqName: string, start?: number, end?: number): Promise<{