@gmod/bam 1.1.8 → 1.1.9

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 (73) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +2 -3
  3. package/dist/bai.d.ts +2 -0
  4. package/dist/bai.js +300 -548
  5. package/dist/bai.js.map +1 -0
  6. package/dist/bamFile.d.ts +4 -6
  7. package/dist/bamFile.js +675 -1203
  8. package/dist/bamFile.js.map +1 -0
  9. package/dist/chunk.js +34 -69
  10. package/dist/chunk.js.map +1 -0
  11. package/dist/constants.js +27 -35
  12. package/dist/constants.js.map +1 -0
  13. package/dist/csi.js +317 -515
  14. package/dist/csi.js.map +1 -0
  15. package/dist/errors.js +64 -120
  16. package/dist/errors.js.map +1 -0
  17. package/dist/htsget.js +275 -396
  18. package/dist/htsget.js.map +1 -0
  19. package/dist/index.js +16 -54
  20. package/dist/index.js.map +1 -0
  21. package/dist/indexFile.d.ts +1 -2
  22. package/dist/indexFile.js +77 -163
  23. package/dist/indexFile.js.map +1 -0
  24. package/dist/record.js +496 -707
  25. package/dist/record.js.map +1 -0
  26. package/dist/sam.js +16 -49
  27. package/dist/sam.js.map +1 -0
  28. package/dist/util.d.ts +0 -1
  29. package/dist/util.js +115 -126
  30. package/dist/util.js.map +1 -0
  31. package/dist/virtualOffset.js +44 -77
  32. package/dist/virtualOffset.js.map +1 -0
  33. package/esm/bai.d.ts +26 -0
  34. package/esm/bai.js +191 -0
  35. package/esm/bai.js.map +1 -0
  36. package/esm/bamFile.d.ts +77 -0
  37. package/esm/bamFile.js +388 -0
  38. package/esm/bamFile.js.map +1 -0
  39. package/esm/chunk.d.ts +18 -0
  40. package/esm/chunk.js +33 -0
  41. package/esm/chunk.js.map +1 -0
  42. package/esm/constants.d.ts +15 -0
  43. package/esm/constants.js +27 -0
  44. package/esm/constants.js.map +1 -0
  45. package/esm/csi.d.ts +35 -0
  46. package/esm/csi.js +209 -0
  47. package/esm/csi.js.map +1 -0
  48. package/esm/errors.d.ts +23 -0
  49. package/esm/errors.js +24 -0
  50. package/esm/errors.js.map +1 -0
  51. package/esm/htsget.d.ts +33 -0
  52. package/esm/htsget.js +100 -0
  53. package/esm/htsget.js.map +1 -0
  54. package/esm/index.d.ts +6 -0
  55. package/esm/index.js +7 -0
  56. package/esm/index.js.map +1 -0
  57. package/esm/indexFile.d.ts +27 -0
  58. package/esm/indexFile.js +27 -0
  59. package/esm/indexFile.js.map +1 -0
  60. package/esm/record.d.ts +88 -0
  61. package/esm/record.js +534 -0
  62. package/esm/record.js.map +1 -0
  63. package/esm/sam.d.ts +7 -0
  64. package/esm/sam.js +16 -0
  65. package/esm/sam.js.map +1 -0
  66. package/esm/util.d.ts +35 -0
  67. package/esm/util.js +92 -0
  68. package/esm/util.js.map +1 -0
  69. package/esm/virtualOffset.d.ts +10 -0
  70. package/esm/virtualOffset.js +37 -0
  71. package/esm/virtualOffset.js.map +1 -0
  72. package/package.json +21 -29
  73. package/dist/declare.d.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bamFile.js","sourceRoot":"","sources":["../src/bamFile.ts"],"names":[],"mappings":"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"}
package/esm/chunk.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import VirtualOffset from './virtualOffset';
2
+ export default class Chunk {
3
+ minv: VirtualOffset;
4
+ maxv: VirtualOffset;
5
+ bin: number;
6
+ _fetchedSize?: number;
7
+ /**
8
+ * @param {VirtualOffset} minv
9
+ * @param {VirtualOffset} maxv
10
+ * @param {number} bin
11
+ * @param {number} [fetchedSize]
12
+ */
13
+ constructor(minv: VirtualOffset, maxv: VirtualOffset, bin: number, fetchedSize?: undefined);
14
+ toUniqueString(): string;
15
+ toString(): string;
16
+ compareTo(b: Chunk): number;
17
+ fetchedSize(): number;
18
+ }
package/esm/chunk.js ADDED
@@ -0,0 +1,33 @@
1
+ // little class representing a chunk in the index
2
+ export default class Chunk {
3
+ /**
4
+ * @param {VirtualOffset} minv
5
+ * @param {VirtualOffset} maxv
6
+ * @param {number} bin
7
+ * @param {number} [fetchedSize]
8
+ */
9
+ constructor(minv, maxv, bin, fetchedSize = undefined) {
10
+ this.minv = minv;
11
+ this.maxv = maxv;
12
+ this.bin = bin;
13
+ this._fetchedSize = fetchedSize;
14
+ }
15
+ toUniqueString() {
16
+ return `${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`;
17
+ }
18
+ toString() {
19
+ return this.toUniqueString();
20
+ }
21
+ compareTo(b) {
22
+ return (this.minv.compareTo(b.minv) ||
23
+ this.maxv.compareTo(b.maxv) ||
24
+ this.bin - b.bin);
25
+ }
26
+ fetchedSize() {
27
+ if (this._fetchedSize !== undefined) {
28
+ return this._fetchedSize;
29
+ }
30
+ return this.maxv.blockPosition + (1 << 16) - this.minv.blockPosition;
31
+ }
32
+ }
33
+ //# sourceMappingURL=chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,KAAK;IAMxB;;;;;OAKG;IACH,YACE,IAAmB,EACnB,IAAmB,EACnB,GAAW,EACX,WAAW,GAAG,SAAS;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,cAAc;QACZ,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,SAC/B,IAAI,CAAC,GACP,iBAAiB,IAAI,CAAC,WAAW,EAAE,GAAG,CAAA;IACxC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;IAC9B,CAAC;IAED,SAAS,CAAC,CAAQ;QAChB,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CACjB,CAAA;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACnC,OAAO,IAAI,CAAC,YAAY,CAAA;SACzB;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IACtE,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ declare const _default: {
2
+ BAM_FPAIRED: number;
3
+ BAM_FPROPER_PAIR: number;
4
+ BAM_FUNMAP: number;
5
+ BAM_FMUNMAP: number;
6
+ BAM_FREVERSE: number;
7
+ BAM_FMREVERSE: number;
8
+ BAM_FREAD1: number;
9
+ BAM_FREAD2: number;
10
+ BAM_FSECONDARY: number;
11
+ BAM_FQCFAIL: number;
12
+ BAM_FDUP: number;
13
+ BAM_FSUPPLEMENTARY: number;
14
+ };
15
+ export default _default;
@@ -0,0 +1,27 @@
1
+ export default {
2
+ // the read is paired in sequencing, no matter whether it is mapped in a pair
3
+ BAM_FPAIRED: 1,
4
+ // the read is mapped in a proper pair
5
+ BAM_FPROPER_PAIR: 2,
6
+ // the read itself is unmapped; conflictive with BAM_FPROPER_PAIR
7
+ BAM_FUNMAP: 4,
8
+ // the mate is unmapped
9
+ BAM_FMUNMAP: 8,
10
+ // the read is mapped to the reverse strand
11
+ BAM_FREVERSE: 16,
12
+ // the mate is mapped to the reverse strand
13
+ BAM_FMREVERSE: 32,
14
+ // this is read1
15
+ BAM_FREAD1: 64,
16
+ // this is read2
17
+ BAM_FREAD2: 128,
18
+ // not primary alignment
19
+ BAM_FSECONDARY: 256,
20
+ // QC failure
21
+ BAM_FQCFAIL: 512,
22
+ // optical or PCR duplicate
23
+ BAM_FDUP: 1024,
24
+ // supplementary alignment
25
+ BAM_FSUPPLEMENTARY: 2048,
26
+ };
27
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,8EAA8E;IAC9E,WAAW,EAAE,CAAC;IACd,uCAAuC;IACvC,gBAAgB,EAAE,CAAC;IACnB,kEAAkE;IAClE,UAAU,EAAE,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,CAAC;IACd,4CAA4C;IAC5C,YAAY,EAAE,EAAE;IAChB,4CAA4C;IAC5C,aAAa,EAAE,EAAE;IACjB,iBAAiB;IACjB,UAAU,EAAE,EAAE;IACd,iBAAiB;IACjB,UAAU,EAAE,GAAG;IACf,yBAAyB;IACzB,cAAc,EAAE,GAAG;IACnB,cAAc;IACd,WAAW,EAAE,GAAG;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,IAAI;IACd,2BAA2B;IAC3B,kBAAkB,EAAE,IAAI;CACzB,CAAA"}
package/esm/csi.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ /// <reference types="node" />
2
+ import Chunk from './chunk';
3
+ import { BaseOpts } from './util';
4
+ import IndexFile from './indexFile';
5
+ export default class CSI extends IndexFile {
6
+ private maxBinNumber;
7
+ private depth;
8
+ private minShift;
9
+ constructor(args: any);
10
+ lineCount(refId: number): Promise<number>;
11
+ indexCov(): Promise<never[]>;
12
+ parseAuxData(bytes: Buffer, offset: number, auxLength: number): {
13
+ [key: string]: any;
14
+ };
15
+ _parseNameBytes(namesBytes: Buffer): {
16
+ refNameToId: {
17
+ [key: string]: number;
18
+ };
19
+ refIdToName: string[];
20
+ };
21
+ _parse(opts: {
22
+ signal?: AbortSignal;
23
+ }): Promise<{
24
+ [key: string]: any;
25
+ }>;
26
+ parsePseudoBin(bytes: Buffer, offset: number): {
27
+ lineCount: number;
28
+ };
29
+ blocksForRange(refId: number, min: number, max: number, opts?: BaseOpts): Promise<Chunk[]>;
30
+ /**
31
+ * calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
32
+ * @returns {Array[number]}
33
+ */
34
+ reg2bins(beg: number, end: number): number[][];
35
+ }
package/esm/csi.js ADDED
@@ -0,0 +1,209 @@
1
+ import Long from 'long';
2
+ import { unzip } from '@gmod/bgzf-filehandle';
3
+ import VirtualOffset, { fromBytes } from './virtualOffset';
4
+ import Chunk from './chunk';
5
+ import { longToNumber, abortBreakPoint, optimizeChunks } from './util';
6
+ import IndexFile from './indexFile';
7
+ const CSI1_MAGIC = 21582659; // CSI\1
8
+ const CSI2_MAGIC = 38359875; // CSI\2
9
+ function lshift(num, bits) {
10
+ return num * 2 ** bits;
11
+ }
12
+ function rshift(num, bits) {
13
+ return Math.floor(num / 2 ** bits);
14
+ }
15
+ export default class CSI extends IndexFile {
16
+ constructor(args) {
17
+ super(args);
18
+ this.maxBinNumber = 0;
19
+ this.depth = 0;
20
+ this.minShift = 0;
21
+ }
22
+ async lineCount(refId) {
23
+ const indexData = await this.parse();
24
+ if (!indexData) {
25
+ return -1;
26
+ }
27
+ const idx = indexData.indices[refId];
28
+ if (!idx) {
29
+ return -1;
30
+ }
31
+ const { stats } = indexData.indices[refId];
32
+ if (stats) {
33
+ return stats.lineCount;
34
+ }
35
+ return -1;
36
+ }
37
+ async indexCov() {
38
+ return [];
39
+ }
40
+ parseAuxData(bytes, offset, auxLength) {
41
+ if (auxLength < 30) {
42
+ return {};
43
+ }
44
+ const data = {};
45
+ data.formatFlags = bytes.readInt32LE(offset);
46
+ data.coordinateType =
47
+ data.formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
48
+ data.format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[data.formatFlags & 0xf];
49
+ if (!data.format) {
50
+ throw new Error(`invalid Tabix preset format flags ${data.formatFlags}`);
51
+ }
52
+ data.columnNumbers = {
53
+ ref: bytes.readInt32LE(offset + 4),
54
+ start: bytes.readInt32LE(offset + 8),
55
+ end: bytes.readInt32LE(offset + 12),
56
+ };
57
+ data.metaValue = bytes.readInt32LE(offset + 16);
58
+ data.metaChar = data.metaValue ? String.fromCharCode(data.metaValue) : '';
59
+ data.skipLines = bytes.readInt32LE(offset + 20);
60
+ const nameSectionLength = bytes.readInt32LE(offset + 24);
61
+ Object.assign(data, this._parseNameBytes(bytes.slice(offset + 28, offset + 28 + nameSectionLength)));
62
+ return data;
63
+ }
64
+ _parseNameBytes(namesBytes) {
65
+ let currRefId = 0;
66
+ let currNameStart = 0;
67
+ const refIdToName = [];
68
+ const refNameToId = {};
69
+ for (let i = 0; i < namesBytes.length; i += 1) {
70
+ if (!namesBytes[i]) {
71
+ if (currNameStart < i) {
72
+ let refName = namesBytes.toString('utf8', currNameStart, i);
73
+ refName = this.renameRefSeq(refName);
74
+ refIdToName[currRefId] = refName;
75
+ refNameToId[refName] = currRefId;
76
+ }
77
+ currNameStart = i + 1;
78
+ currRefId += 1;
79
+ }
80
+ }
81
+ return { refNameToId, refIdToName };
82
+ }
83
+ // fetch and parse the index
84
+ async _parse(opts) {
85
+ const data = { csi: true, maxBlockSize: 1 << 16 };
86
+ const buffer = (await this.filehandle.readFile(opts));
87
+ const bytes = await unzip(buffer);
88
+ // check TBI magic numbers
89
+ if (bytes.readUInt32LE(0) === CSI1_MAGIC) {
90
+ data.csiVersion = 1;
91
+ }
92
+ else if (bytes.readUInt32LE(0) === CSI2_MAGIC) {
93
+ data.csiVersion = 2;
94
+ }
95
+ else {
96
+ throw new Error('Not a CSI file');
97
+ // TODO: do we need to support big-endian CSI files?
98
+ }
99
+ this.minShift = bytes.readInt32LE(4);
100
+ this.depth = bytes.readInt32LE(8);
101
+ this.maxBinNumber = ((1 << ((this.depth + 1) * 3)) - 1) / 7;
102
+ const auxLength = bytes.readInt32LE(12);
103
+ if (auxLength) {
104
+ Object.assign(data, this.parseAuxData(bytes, 16, auxLength));
105
+ }
106
+ data.refCount = bytes.readInt32LE(16 + auxLength);
107
+ // read the indexes for each reference sequence
108
+ data.indices = new Array(data.refCount);
109
+ let currOffset = 16 + auxLength + 4;
110
+ for (let i = 0; i < data.refCount; i += 1) {
111
+ await abortBreakPoint(opts.signal);
112
+ // the binning index
113
+ const binCount = bytes.readInt32LE(currOffset);
114
+ currOffset += 4;
115
+ const binIndex = {};
116
+ let stats; // < provided by parsing a pseudo-bin, if present
117
+ for (let j = 0; j < binCount; j += 1) {
118
+ const bin = bytes.readUInt32LE(currOffset);
119
+ if (bin > this.maxBinNumber) {
120
+ // this is a fake bin that actually has stats information
121
+ // about the reference sequence in it
122
+ stats = this.parsePseudoBin(bytes, currOffset + 4);
123
+ currOffset += 4 + 8 + 4 + 16 + 16;
124
+ }
125
+ else {
126
+ const loffset = fromBytes(bytes, currOffset + 4);
127
+ this._findFirstData(data, loffset);
128
+ const chunkCount = bytes.readInt32LE(currOffset + 12);
129
+ currOffset += 16;
130
+ const chunks = new Array(chunkCount);
131
+ for (let k = 0; k < chunkCount; k += 1) {
132
+ const u = fromBytes(bytes, currOffset);
133
+ const v = fromBytes(bytes, currOffset + 8);
134
+ currOffset += 16;
135
+ // this._findFirstData(data, u)
136
+ chunks[k] = new Chunk(u, v, bin);
137
+ }
138
+ binIndex[bin] = chunks;
139
+ }
140
+ }
141
+ data.indices[i] = { binIndex, stats };
142
+ }
143
+ return data;
144
+ }
145
+ parsePseudoBin(bytes, offset) {
146
+ // const one = Long.fromBytesLE(bytes.slice(offset + 4, offset + 12), true)
147
+ // const two = Long.fromBytesLE(bytes.slice(offset + 12, offset + 20), true)
148
+ // const three = longToNumber(
149
+ // Long.fromBytesLE(bytes.slice(offset + 20, offset + 28), true),
150
+ // )
151
+ const lineCount = longToNumber(Long.fromBytesLE(Array.prototype.slice.call(bytes, offset + 28, offset + 36), true));
152
+ return { lineCount };
153
+ }
154
+ async blocksForRange(refId, min, max, opts = {}) {
155
+ if (min < 0) {
156
+ min = 0;
157
+ }
158
+ const indexData = await this.parse(opts);
159
+ if (!indexData) {
160
+ return [];
161
+ }
162
+ const ba = indexData.indices[refId];
163
+ if (!ba) {
164
+ return [];
165
+ }
166
+ const overlappingBins = this.reg2bins(min, max); // List of bin #s that overlap 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
+ if (ba.binIndex[bin]) {
172
+ const binChunks = ba.binIndex[bin];
173
+ for (let c = 0; c < binChunks.length; ++c) {
174
+ chunks.push(new Chunk(binChunks[c].minv, binChunks[c].maxv, bin));
175
+ }
176
+ }
177
+ }
178
+ }
179
+ return optimizeChunks(chunks, new VirtualOffset(0, 0));
180
+ }
181
+ /**
182
+ * calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
183
+ * @returns {Array[number]}
184
+ */
185
+ reg2bins(beg, end) {
186
+ beg -= 1; // < convert to 1-based closed
187
+ if (beg < 1) {
188
+ beg = 1;
189
+ }
190
+ if (end > 2 ** 50) {
191
+ end = 2 ** 34;
192
+ } // 17 GiB ought to be enough for anybody
193
+ end -= 1;
194
+ let l = 0;
195
+ let t = 0;
196
+ let s = this.minShift + this.depth * 3;
197
+ const bins = [];
198
+ for (; l <= this.depth; s -= 3, t += lshift(1, l * 3), l += 1) {
199
+ const b = t + rshift(beg, s);
200
+ const e = t + rshift(end, s);
201
+ if (e - b + bins.length > this.maxBinNumber) {
202
+ throw new Error(`query ${beg}-${end} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);
203
+ }
204
+ bins.push([b, e]);
205
+ }
206
+ return bins;
207
+ }
208
+ }
209
+ //# sourceMappingURL=csi.js.map
package/esm/csi.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare class BamError extends Error {
2
+ }
3
+ /** Error caused by encountering a part of the BAM spec that has not yet been implemented */
4
+ export declare class BamUnimplementedError extends Error {
5
+ }
6
+ /** An error caused by malformed data. */
7
+ export declare class BamMalformedError extends BamError {
8
+ }
9
+ /**
10
+ * An error caused by attempting to read beyond the end of the defined data.
11
+ */
12
+ export declare class BamBufferOverrunError extends BamMalformedError {
13
+ }
14
+ /**
15
+ * An error caused by data being too big, exceeding a size limit.
16
+ */
17
+ export declare class BamSizeLimitError extends BamError {
18
+ }
19
+ /**
20
+ * An invalid argument was supplied to a bam-js method or object.
21
+ */
22
+ export declare class BamArgumentError extends BamError {
23
+ }
package/esm/errors.js ADDED
@@ -0,0 +1,24 @@
1
+ export class BamError extends Error {
2
+ }
3
+ /** Error caused by encountering a part of the BAM spec that has not yet been implemented */
4
+ export class BamUnimplementedError extends Error {
5
+ }
6
+ /** An error caused by malformed data. */
7
+ export class BamMalformedError extends BamError {
8
+ }
9
+ /**
10
+ * An error caused by attempting to read beyond the end of the defined data.
11
+ */
12
+ export class BamBufferOverrunError extends BamMalformedError {
13
+ }
14
+ /**
15
+ * An error caused by data being too big, exceeding a size limit.
16
+ */
17
+ export class BamSizeLimitError extends BamError {
18
+ }
19
+ /**
20
+ * An invalid argument was supplied to a bam-js method or object.
21
+ */
22
+ export class BamArgumentError extends BamError {
23
+ }
24
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;CAAG;AAEtC,4FAA4F;AAC5F,MAAM,OAAO,qBAAsB,SAAQ,KAAK;CAAG;AAEnD,0CAA0C;AAC1C,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;CAAG;AAElD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;CAAG;AAE/D;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;CAAG;AAElD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;CAAG"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { BaseOpts, BamOpts } from './util';
3
+ import BamFile from './bamFile';
4
+ import 'cross-fetch/polyfill';
5
+ import Chunk from './chunk';
6
+ export default class HtsgetFile extends BamFile {
7
+ private baseUrl;
8
+ private trackId;
9
+ constructor(args: {
10
+ trackId: string;
11
+ baseUrl: string;
12
+ });
13
+ streamRecordsForRange(chr: string, min: number, max: number, opts?: BamOpts): AsyncGenerator<import("./record").default[], void, unknown>;
14
+ _readChunk(params: {
15
+ chunk: {
16
+ buffer: Buffer;
17
+ chunk: Chunk;
18
+ };
19
+ opts: BaseOpts;
20
+ }): Promise<{
21
+ data: Buffer;
22
+ cpositions: null;
23
+ dpositions: null;
24
+ chunk: Chunk;
25
+ }>;
26
+ getHeader(opts?: BaseOpts): Promise<{
27
+ tag: string;
28
+ data: {
29
+ tag: string;
30
+ value: string;
31
+ }[];
32
+ }[]>;
33
+ }
package/esm/htsget.js ADDED
@@ -0,0 +1,100 @@
1
+ import BamFile, { BAM_MAGIC } from './bamFile';
2
+ import 'cross-fetch/polyfill';
3
+ import { unzip } from '@gmod/bgzf-filehandle';
4
+ import { parseHeaderText } from './sam';
5
+ async function concat(arr, opts) {
6
+ const res = await Promise.all(arr.map(async (chunk) => {
7
+ const { url, headers } = chunk;
8
+ if (url.startsWith('data:')) {
9
+ return Buffer.from(url.split(',')[1], 'base64');
10
+ }
11
+ else {
12
+ //remove referer header, it is not even allowed to be specified
13
+ //@ts-ignore
14
+ //eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ const { referer, ...rest } = headers;
16
+ const res = await fetch(url, {
17
+ ...opts,
18
+ headers: { ...opts.headers, ...rest },
19
+ });
20
+ if (!res.ok) {
21
+ throw new Error(`Failed to fetch ${res.statusText}`);
22
+ }
23
+ return Buffer.from(await res.arrayBuffer());
24
+ }
25
+ }));
26
+ return Buffer.concat(await Promise.all(res.map(elt => unzip(elt))));
27
+ }
28
+ export default class HtsgetFile extends BamFile {
29
+ constructor(args) {
30
+ // @ts-ignore override bam defaults
31
+ super({ bamFilehandle: '?', baiFilehandle: '?' });
32
+ this.baseUrl = args.baseUrl;
33
+ this.trackId = args.trackId;
34
+ }
35
+ async *streamRecordsForRange(chr, min, max, opts = {
36
+ viewAsPairs: false,
37
+ pairAcrossChr: false,
38
+ maxInsertSize: 200000,
39
+ }) {
40
+ const base = `${this.baseUrl}/${this.trackId}`;
41
+ const url = `${base}?referenceName=${chr}&start=${min}&end=${max}&format=BAM`;
42
+ const chrId = this.chrToIndex && this.chrToIndex[chr];
43
+ const result = await fetch(url, { ...opts });
44
+ if (!result.ok) {
45
+ throw new Error(result.statusText);
46
+ }
47
+ const data = await result.json();
48
+ const uncba = await concat(data.htsget.urls.slice(1), opts);
49
+ const chunk = {
50
+ buffer: uncba,
51
+ chunk: { minv: { dataPosition: 0 } },
52
+ toString() {
53
+ return `${chr}_${min}_${max}`;
54
+ },
55
+ };
56
+ yield* this._fetchChunkFeatures(
57
+ // @ts-ignore
58
+ [chunk], chrId, min, max, opts);
59
+ }
60
+ //@ts-ignore
61
+ async _readChunk(params) {
62
+ const { chunk } = params;
63
+ const { buffer, chunk: c2 } = chunk;
64
+ return { data: buffer, cpositions: null, dpositions: null, chunk: c2 };
65
+ }
66
+ async getHeader(opts = {}) {
67
+ const url = `${this.baseUrl}/${this.trackId}?referenceName=na&class=header`;
68
+ const result = await fetch(url, opts);
69
+ if (!result.ok) {
70
+ throw new Error(`Failed to fetch ${result.statusText}`);
71
+ }
72
+ const data = await result.json();
73
+ const uncba = await concat(data.htsget.urls, opts);
74
+ if (uncba.readInt32LE(0) !== BAM_MAGIC) {
75
+ throw new Error('Not a BAM file');
76
+ }
77
+ const headLen = uncba.readInt32LE(4);
78
+ const headerText = uncba.toString('utf8', 8, 8 + headLen);
79
+ const samHeader = parseHeaderText(headerText);
80
+ // use the @SQ lines in the header to figure out the
81
+ // mapping between ref ref ID numbers and names
82
+ const idToName = [];
83
+ const nameToId = {};
84
+ const sqLines = samHeader.filter((l) => l.tag === 'SQ');
85
+ sqLines.forEach((sqLine, refId) => {
86
+ sqLine.data.forEach((item) => {
87
+ if (item.tag === 'SN') {
88
+ // this is the ref name
89
+ const refName = item.value;
90
+ nameToId[refName] = refId;
91
+ idToName[refId] = refName;
92
+ }
93
+ });
94
+ });
95
+ this.chrToIndex = nameToId;
96
+ this.indexToChr = idToName;
97
+ return samHeader;
98
+ }
99
+ }
100
+ //# sourceMappingURL=htsget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"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"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import BAI from './bai';
2
+ import CSI from './csi';
3
+ import BamFile from './bamFile';
4
+ import HtsgetFile from './htsget';
5
+ import BamRecord from './record';
6
+ export { BAI, CSI, BamFile, BamRecord, HtsgetFile };
package/esm/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import BAI from './bai';
2
+ import CSI from './csi';
3
+ import BamFile from './bamFile';
4
+ import HtsgetFile from './htsget';
5
+ import BamRecord from './record';
6
+ export { BAI, CSI, BamFile, BamRecord, HtsgetFile };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,UAAU,MAAM,UAAU,CAAA;AACjC,OAAO,SAAS,MAAM,UAAU,CAAA;AAEhC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { GenericFilehandle } from 'generic-filehandle';
2
+ import VirtualOffset from './virtualOffset';
3
+ import Chunk from './chunk';
4
+ import { BaseOpts } from './util';
5
+ export default abstract class IndexFile {
6
+ filehandle: GenericFilehandle;
7
+ renameRefSeq: (s: string) => string;
8
+ /**
9
+ * @param {filehandle} filehandle
10
+ * @param {function} [renameRefSeqs]
11
+ */
12
+ constructor({ filehandle, renameRefSeq, }: {
13
+ filehandle: GenericFilehandle;
14
+ renameRefSeq?: (a: string) => string;
15
+ });
16
+ abstract lineCount(refId: number): Promise<number>;
17
+ protected abstract _parse(opts?: BaseOpts): Promise<any>;
18
+ abstract indexCov(refId: number, start?: number, end?: number): Promise<{
19
+ start: number;
20
+ end: number;
21
+ score: number;
22
+ }[]>;
23
+ abstract blocksForRange(chrId: number, start: number, end: number, opts: BaseOpts): Promise<Chunk[]>;
24
+ _findFirstData(data: any, virtualOffset: VirtualOffset): void;
25
+ parse(opts?: BaseOpts): Promise<any>;
26
+ hasRefSeq(seqId: number, opts?: BaseOpts): Promise<boolean>;
27
+ }