@gmod/bam 1.1.18 → 2.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 (79) hide show
  1. package/CHANGELOG.md +61 -25
  2. package/README.md +95 -57
  3. package/dist/bai.d.ts +34 -15
  4. package/dist/bai.js +87 -91
  5. package/dist/bai.js.map +1 -1
  6. package/dist/bamFile.d.ts +33 -27
  7. package/dist/bamFile.js +127 -121
  8. package/dist/bamFile.js.map +1 -1
  9. package/dist/chunk.d.ts +4 -8
  10. package/dist/chunk.js +2 -8
  11. package/dist/chunk.js.map +1 -1
  12. package/dist/csi.d.ts +74 -10
  13. package/dist/csi.js +78 -90
  14. package/dist/csi.js.map +1 -1
  15. package/dist/htsget.d.ts +5 -8
  16. package/dist/htsget.js +72 -47
  17. package/dist/htsget.js.map +1 -1
  18. package/dist/index.d.ts +5 -6
  19. package/dist/index.js +11 -11
  20. package/dist/index.js.map +1 -1
  21. package/dist/indexFile.d.ts +0 -6
  22. package/dist/indexFile.js +0 -35
  23. package/dist/indexFile.js.map +1 -1
  24. package/dist/nullIndex.d.ts +7 -0
  25. package/dist/nullIndex.js +33 -0
  26. package/dist/nullIndex.js.map +1 -0
  27. package/dist/record.d.ts +2 -2
  28. package/dist/record.js +34 -24
  29. package/dist/record.js.map +1 -1
  30. package/dist/sam.js +9 -7
  31. package/dist/sam.js.map +1 -1
  32. package/dist/util.d.ts +13 -1
  33. package/dist/util.js +47 -15
  34. package/dist/util.js.map +1 -1
  35. package/esm/bai.d.ts +34 -15
  36. package/esm/bai.js +86 -91
  37. package/esm/bai.js.map +1 -1
  38. package/esm/bamFile.d.ts +33 -27
  39. package/esm/bamFile.js +124 -120
  40. package/esm/bamFile.js.map +1 -1
  41. package/esm/chunk.d.ts +4 -8
  42. package/esm/chunk.js +2 -8
  43. package/esm/chunk.js.map +1 -1
  44. package/esm/csi.d.ts +74 -10
  45. package/esm/csi.js +85 -93
  46. package/esm/csi.js.map +1 -1
  47. package/esm/htsget.d.ts +5 -8
  48. package/esm/htsget.js +68 -43
  49. package/esm/htsget.js.map +1 -1
  50. package/esm/index.d.ts +5 -6
  51. package/esm/index.js +5 -6
  52. package/esm/index.js.map +1 -1
  53. package/esm/indexFile.d.ts +0 -6
  54. package/esm/indexFile.js +0 -22
  55. package/esm/indexFile.js.map +1 -1
  56. package/esm/nullIndex.d.ts +7 -0
  57. package/esm/nullIndex.js +16 -0
  58. package/esm/nullIndex.js.map +1 -0
  59. package/esm/record.d.ts +2 -2
  60. package/esm/record.js +34 -24
  61. package/esm/record.js.map +1 -1
  62. package/esm/sam.js +9 -7
  63. package/esm/sam.js.map +1 -1
  64. package/esm/util.d.ts +13 -1
  65. package/esm/util.js +40 -14
  66. package/esm/util.js.map +1 -1
  67. package/package.json +16 -17
  68. package/src/bai.ts +99 -102
  69. package/src/bamFile.ts +174 -198
  70. package/src/chunk.ts +6 -20
  71. package/src/csi.ts +102 -111
  72. package/src/htsget.ts +81 -61
  73. package/src/index.ts +5 -7
  74. package/src/indexFile.ts +0 -27
  75. package/src/nullIndex.ts +18 -0
  76. package/src/record.ts +34 -24
  77. package/src/sam.ts +9 -7
  78. package/src/util.ts +54 -13
  79. package/src/declare.d.ts +0 -2
package/dist/bai.js CHANGED
@@ -12,11 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const long_1 = __importDefault(require("long"));
16
15
  const virtualOffset_1 = require("./virtualOffset");
17
16
  const chunk_1 = __importDefault(require("./chunk"));
18
- const indexFile_1 = __importDefault(require("./indexFile"));
19
17
  const util_1 = require("./util");
18
+ const indexFile_1 = __importDefault(require("./indexFile"));
20
19
  const BAI_MAGIC = 21578050; // BAI\1
21
20
  function roundDown(n, multiple) {
22
21
  return n - (n % multiple);
@@ -24,91 +23,93 @@ function roundDown(n, multiple) {
24
23
  function roundUp(n, multiple) {
25
24
  return n - (n % multiple) + multiple;
26
25
  }
26
+ function reg2bins(beg, end) {
27
+ end -= 1;
28
+ return [
29
+ [0, 0],
30
+ [1 + (beg >> 26), 1 + (end >> 26)],
31
+ [9 + (beg >> 23), 9 + (end >> 23)],
32
+ [73 + (beg >> 20), 73 + (end >> 20)],
33
+ [585 + (beg >> 17), 585 + (end >> 17)],
34
+ [4681 + (beg >> 14), 4681 + (end >> 14)],
35
+ ];
36
+ }
27
37
  class BAI extends indexFile_1.default {
28
- parsePseudoBin(bytes, offset) {
29
- const lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 16, offset + 24), true));
30
- return { lineCount };
31
- }
32
- lineCount(refId, opts = {}) {
38
+ lineCount(refId, opts) {
39
+ var _a, _b;
33
40
  return __awaiter(this, void 0, void 0, function* () {
34
- const prom = yield this.parse(opts);
35
- const index = prom.indices[refId];
36
- if (!index) {
37
- return -1;
38
- }
39
- const ret = index.stats || {};
40
- return ret.lineCount === undefined ? -1 : ret.lineCount;
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;
41
43
  });
42
44
  }
43
- fetchBai(opts = {}) {
44
- if (!this.baiP) {
45
- this.baiP = this.filehandle.readFile(opts).catch(e => {
46
- this.baiP = undefined;
47
- throw e;
48
- });
49
- }
50
- return this.baiP;
51
- }
52
45
  // fetch and parse the index
53
- _parse() {
46
+ _parse(opts) {
54
47
  return __awaiter(this, void 0, void 0, function* () {
55
- const data = { bai: true, maxBlockSize: 1 << 16 };
56
- const bytes = yield this.fetchBai();
48
+ const bytes = (yield this.filehandle.readFile(opts));
57
49
  // check BAI magic numbers
58
50
  if (bytes.readUInt32LE(0) !== BAI_MAGIC) {
59
51
  throw new Error('Not a BAI file');
60
52
  }
61
- data.refCount = bytes.readInt32LE(4);
53
+ const refCount = bytes.readInt32LE(4);
62
54
  const depth = 5;
63
55
  const binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
64
56
  // read the indexes for each reference sequence
65
- data.indices = new Array(data.refCount);
66
- let currOffset = 8;
67
- for (let i = 0; i < data.refCount; i += 1) {
57
+ let curr = 8;
58
+ let firstDataLine;
59
+ const indices = new Array(refCount);
60
+ for (let i = 0; i < refCount; i++) {
68
61
  // the binning index
69
- const binCount = bytes.readInt32LE(currOffset);
62
+ const binCount = bytes.readInt32LE(curr);
70
63
  let stats;
71
- currOffset += 4;
64
+ curr += 4;
72
65
  const binIndex = {};
73
66
  for (let j = 0; j < binCount; j += 1) {
74
- const bin = bytes.readUInt32LE(currOffset);
75
- currOffset += 4;
67
+ const bin = bytes.readUInt32LE(curr);
68
+ curr += 4;
76
69
  if (bin === binLimit + 1) {
77
- currOffset += 4;
78
- stats = this.parsePseudoBin(bytes, currOffset);
79
- currOffset += 32;
70
+ curr += 4;
71
+ stats = (0, util_1.parsePseudoBin)(bytes, curr + 16);
72
+ curr += 32;
80
73
  }
81
74
  else if (bin > binLimit + 1) {
82
75
  throw new Error('bai index contains too many bins, please use CSI');
83
76
  }
84
77
  else {
85
- const chunkCount = bytes.readInt32LE(currOffset);
86
- currOffset += 4;
78
+ const chunkCount = bytes.readInt32LE(curr);
79
+ curr += 4;
87
80
  const chunks = new Array(chunkCount);
88
- for (let k = 0; k < chunkCount; k += 1) {
89
- const u = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
90
- const v = (0, virtualOffset_1.fromBytes)(bytes, currOffset + 8);
91
- currOffset += 16;
92
- this._findFirstData(data, u);
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);
93
87
  chunks[k] = new chunk_1.default(u, v, bin);
94
88
  }
95
89
  binIndex[bin] = chunks;
96
90
  }
97
91
  }
98
- const linearCount = bytes.readInt32LE(currOffset);
99
- currOffset += 4;
100
- // as we're going through the linear index, figure out
101
- // the smallest virtual offset in the indexes, which
102
- // tells us where the BAM header ends
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
103
97
  const linearIndex = new Array(linearCount);
104
- for (let k = 0; k < linearCount; k += 1) {
105
- linearIndex[k] = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
106
- currOffset += 8;
107
- this._findFirstData(data, linearIndex[k]);
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;
108
103
  }
109
- data.indices[i] = { binIndex, linearIndex, stats };
104
+ indices[i] = { binIndex, linearIndex, stats };
110
105
  }
111
- return data;
106
+ return {
107
+ bai: true,
108
+ firstDataLine,
109
+ maxBlockSize: 1 << 16,
110
+ indices,
111
+ refCount,
112
+ };
112
113
  });
113
114
  }
114
115
  indexCov(seqId, start, end, opts = {}) {
@@ -121,18 +122,14 @@ class BAI extends indexFile_1.default {
121
122
  return [];
122
123
  }
123
124
  const { linearIndex = [], stats } = seqIdx;
124
- if (!linearIndex.length) {
125
+ if (linearIndex.length === 0) {
125
126
  return [];
126
127
  }
127
- const e = end !== undefined ? roundUp(end, v) : (linearIndex.length - 1) * v;
128
- const s = start !== undefined ? roundDown(start, v) : 0;
129
- let depths;
130
- if (range) {
131
- depths = new Array((e - s) / v);
132
- }
133
- else {
134
- depths = new Array(linearIndex.length - 1);
135
- }
128
+ const e = end === undefined ? (linearIndex.length - 1) * v : roundUp(end, v);
129
+ const s = start === undefined ? 0 : roundDown(start, v);
130
+ const depths = range
131
+ ? new Array((e - s) / v)
132
+ : new Array(linearIndex.length - 1);
136
133
  const totalSize = linearIndex[linearIndex.length - 1].blockPosition;
137
134
  if (e > (linearIndex.length - 1) * v) {
138
135
  throw new Error('query outside of range of linear index');
@@ -146,26 +143,9 @@ class BAI extends indexFile_1.default {
146
143
  };
147
144
  currentPos = linearIndex[i + 1].blockPosition;
148
145
  }
149
- return depths.map(d => {
150
- return Object.assign(Object.assign({}, d), { score: (d.score * stats.lineCount) / totalSize });
151
- });
146
+ return depths.map(d => (Object.assign(Object.assign({}, d), { score: (d.score * ((stats === null || stats === void 0 ? void 0 : stats.lineCount) || 0)) / totalSize })));
152
147
  });
153
148
  }
154
- /**
155
- * calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
156
- * @returns {Array[number]}
157
- */
158
- reg2bins(beg, end) {
159
- end -= 1;
160
- return [
161
- [0, 0],
162
- [1 + (beg >> 26), 1 + (end >> 26)],
163
- [9 + (beg >> 23), 9 + (end >> 23)],
164
- [73 + (beg >> 20), 73 + (end >> 20)],
165
- [585 + (beg >> 17), 585 + (end >> 17)],
166
- [4681 + (beg >> 14), 4681 + (end >> 14)],
167
- ];
168
- }
169
149
  blocksForRange(refId, min, max, opts = {}) {
170
150
  return __awaiter(this, void 0, void 0, function* () {
171
151
  if (min < 0) {
@@ -180,15 +160,15 @@ class BAI extends indexFile_1.default {
180
160
  return [];
181
161
  }
182
162
  // List of bin #s that overlap min, max
183
- const overlappingBins = this.reg2bins(min, max);
163
+ const overlappingBins = reg2bins(min, max);
184
164
  const chunks = [];
185
165
  // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
186
166
  for (const [start, end] of overlappingBins) {
187
167
  for (let bin = start; bin <= end; bin++) {
188
168
  if (ba.binIndex[bin]) {
189
169
  const binChunks = ba.binIndex[bin];
190
- for (let c = 0; c < binChunks.length; ++c) {
191
- chunks.push(new chunk_1.default(binChunks[c].minv, binChunks[c].maxv, bin));
170
+ for (const binChunk of binChunks) {
171
+ chunks.push(binChunk);
192
172
  }
193
173
  }
194
174
  }
@@ -196,20 +176,36 @@ class BAI extends indexFile_1.default {
196
176
  // Use the linear index to find minimum file position of chunks that could
197
177
  // contain alignments in the region
198
178
  const nintv = ba.linearIndex.length;
199
- let lowest = null;
179
+ let lowest;
200
180
  const minLin = Math.min(min >> 14, nintv - 1);
201
181
  const maxLin = Math.min(max >> 14, nintv - 1);
202
182
  for (let i = minLin; i <= maxLin; ++i) {
203
183
  const vp = ba.linearIndex[i];
204
- if (vp) {
205
- if (!lowest || vp.compareTo(lowest) < 0) {
206
- lowest = vp;
207
- }
184
+ if (vp && (!lowest || vp.compareTo(lowest) < 0)) {
185
+ lowest = vp;
208
186
  }
209
187
  }
210
188
  return (0, util_1.optimizeChunks)(chunks, lowest);
211
189
  });
212
190
  }
191
+ parse(opts = {}) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ if (!this.setupP) {
194
+ this.setupP = this._parse(opts).catch(e => {
195
+ this.setupP = undefined;
196
+ throw e;
197
+ });
198
+ }
199
+ return this.setupP;
200
+ });
201
+ }
202
+ hasRefSeq(seqId, opts = {}) {
203
+ var _a;
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ const header = yield this.parse(opts);
206
+ return !!((_a = header.indices[seqId]) === null || _a === void 0 ? void 0 : _a.binIndex);
207
+ });
208
+ }
213
209
  }
214
210
  exports.default = BAI;
215
211
  //# sourceMappingURL=bai.js.map
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,28 +1,27 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from 'buffer';
2
3
  import { GenericFilehandle } from 'generic-filehandle';
4
+ import BAI from './bai';
5
+ import CSI from './csi';
3
6
  import Chunk from './chunk';
4
7
  import BAMFeature from './record';
5
8
  import { BamOpts, BaseOpts } from './util';
6
9
  export declare const BAM_MAGIC = 21840194;
7
10
  export default class BamFile {
8
- private renameRefSeq;
9
- private bam;
10
- private index;
11
- private chunkSizeLimit;
12
- private fetchSizeLimit;
13
- private header;
14
- protected chrToIndex: any;
15
- protected indexToChr: any;
16
- private yieldThreadTime;
11
+ renameRefSeq: (a: string) => string;
12
+ bam: GenericFilehandle;
13
+ header?: string;
14
+ chrToIndex?: Record<string, number>;
15
+ indexToChr?: {
16
+ refName: string;
17
+ length: number;
18
+ }[];
19
+ yieldThreadTime: number;
20
+ index?: BAI | CSI;
21
+ htsget: boolean;
22
+ headerP?: ReturnType<BamFile['getHeaderPre']>;
17
23
  private featureCache;
18
- /**
19
- * @param {object} args
20
- * @param {string} [args.bamPath]
21
- * @param {FileHandle} [args.bamFilehandle]
22
- * @param {string} [args.baiPath]
23
- * @param {FileHandle} [args.baiFilehandle]
24
- */
25
- constructor({ bamFilehandle, bamPath, bamUrl, baiPath, baiFilehandle, baiUrl, csiPath, csiFilehandle, csiUrl, fetchSizeLimit, chunkSizeLimit, yieldThreadTime, renameRefSeqs, }: {
24
+ constructor({ bamFilehandle, bamPath, bamUrl, baiPath, baiFilehandle, baiUrl, csiPath, csiFilehandle, csiUrl, htsget, yieldThreadTime, renameRefSeqs, }: {
26
25
  bamFilehandle?: GenericFilehandle;
27
26
  bamPath?: string;
28
27
  bamUrl?: string;
@@ -32,19 +31,25 @@ export default class BamFile {
32
31
  csiPath?: string;
33
32
  csiFilehandle?: GenericFilehandle;
34
33
  csiUrl?: string;
35
- fetchSizeLimit?: number;
36
- chunkSizeLimit?: number;
37
34
  renameRefSeqs?: (a: string) => string;
38
35
  yieldThreadTime?: number;
36
+ htsget?: boolean;
39
37
  });
40
- getHeader(origOpts?: AbortSignal | BaseOpts): Promise<{
38
+ getHeaderPre(origOpts?: BaseOpts): Promise<{
41
39
  tag: string;
42
40
  data: {
43
41
  tag: string;
44
42
  value: string;
45
43
  }[];
46
- }[]>;
47
- getHeaderText(opts?: BaseOpts): Promise<any>;
44
+ }[] | undefined>;
45
+ getHeader(opts?: BaseOpts): Promise<{
46
+ tag: string;
47
+ data: {
48
+ tag: string;
49
+ value: string;
50
+ }[];
51
+ }[] | undefined>;
52
+ getHeaderText(opts?: BaseOpts): Promise<string | undefined>;
48
53
  _readRefSeqs(start: number, refSeqBytes: number, opts?: BaseOpts): Promise<{
49
54
  chrToIndex: {
50
55
  [key: string]: number;
@@ -56,19 +61,20 @@ export default class BamFile {
56
61
  }>;
57
62
  getRecordsForRange(chr: string, min: number, max: number, opts?: BamOpts): Promise<BAMFeature[]>;
58
63
  streamRecordsForRange(chr: string, min: number, max: number, opts?: BamOpts): AsyncGenerator<BAMFeature[], void, unknown>;
59
- _fetchChunkFeatures(chunks: Chunk[], chrId: number, min: number, max: number, opts: BamOpts): AsyncGenerator<BAMFeature[], void, unknown>;
64
+ _fetchChunkFeatures(chunks: Chunk[], chrId: number, min: number, max: number, opts?: BamOpts): AsyncGenerator<BAMFeature[], void, unknown>;
60
65
  fetchPairs(chrId: number, feats: BAMFeature[][], opts: BamOpts): Promise<BAMFeature[]>;
66
+ _readRegion(position: number, size: number, opts?: BaseOpts): Promise<Buffer>;
61
67
  _readChunk({ chunk, opts }: {
62
68
  chunk: Chunk;
63
69
  opts: BaseOpts;
64
70
  }): Promise<{
65
- data: any;
66
- cpositions: any;
67
- dpositions: any;
71
+ data: Buffer;
72
+ cpositions: number[];
73
+ dpositions: number[];
68
74
  chunk: Chunk;
69
75
  }>;
70
76
  readBamFeatures(ba: Buffer, cpositions: number[], dpositions: number[], chunk: Chunk): Promise<BAMFeature[]>;
71
- hasRefSeq(seqName: string): Promise<boolean>;
77
+ hasRefSeq(seqName: string): Promise<boolean | undefined>;
72
78
  lineCount(seqName: string): Promise<number>;
73
79
  indexCov(seqName: string, start?: number, end?: number): Promise<{
74
80
  start: number;