@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/csi.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import VirtualOffset from './virtualOffset';
2
3
  import Chunk from './chunk';
3
4
  import { BaseOpts } from './util';
4
5
  import IndexFile from './indexFile';
@@ -6,30 +7,93 @@ export default class CSI extends IndexFile {
6
7
  private maxBinNumber;
7
8
  private depth;
8
9
  private minShift;
9
- constructor(args: any);
10
- lineCount(refId: number): Promise<number>;
10
+ setupP?: ReturnType<CSI['_parse']>;
11
+ lineCount(refId: number, opts?: BaseOpts): Promise<number>;
11
12
  indexCov(): Promise<never[]>;
12
- parseAuxData(bytes: Buffer, offset: number, auxLength: number): {
13
- [key: string]: any;
14
- };
15
- _parseNameBytes(namesBytes: Buffer): {
13
+ parseAuxData(bytes: Buffer, offset: number): {
16
14
  refNameToId: {
17
15
  [key: string]: number;
18
16
  };
19
17
  refIdToName: string[];
18
+ columnNumbers: {
19
+ ref: number;
20
+ start: number;
21
+ end: number;
22
+ };
23
+ coordinateType: string;
24
+ metaValue: number;
25
+ metaChar: string;
26
+ skipLines: number;
27
+ format: string;
28
+ formatFlags: number;
20
29
  };
21
30
  _parse(opts: {
22
31
  signal?: AbortSignal;
23
32
  }): Promise<{
24
- [key: string]: any;
33
+ refNameToId?: {
34
+ [key: string]: number;
35
+ } | undefined;
36
+ refIdToName?: string[] | undefined;
37
+ columnNumbers?: {
38
+ ref: number;
39
+ start: number;
40
+ end: number;
41
+ } | undefined;
42
+ coordinateType?: string | undefined;
43
+ metaValue?: number | undefined;
44
+ metaChar?: string | undefined;
45
+ skipLines?: number | undefined;
46
+ format?: string | undefined;
47
+ formatFlags?: number | undefined;
48
+ csiVersion: number;
49
+ firstDataLine: VirtualOffset | undefined;
50
+ indices: {
51
+ binIndex: {
52
+ [key: string]: Chunk[];
53
+ };
54
+ stats?: {
55
+ lineCount: number;
56
+ } | undefined;
57
+ }[];
58
+ refCount: number;
59
+ csi: boolean;
60
+ maxBlockSize: number;
25
61
  }>;
26
- parsePseudoBin(bytes: Buffer, offset: number): {
27
- lineCount: number;
28
- };
29
62
  blocksForRange(refId: number, min: number, max: number, opts?: BaseOpts): Promise<Chunk[]>;
30
63
  /**
31
64
  * calculate the list of bins that may overlap with region [beg,end)
32
65
  * (zero-based half-open)
33
66
  */
34
67
  reg2bins(beg: number, end: number): number[][];
68
+ parse(opts?: BaseOpts): Promise<{
69
+ refNameToId?: {
70
+ [key: string]: number;
71
+ } | undefined;
72
+ refIdToName?: string[] | undefined;
73
+ columnNumbers?: {
74
+ ref: number;
75
+ start: number;
76
+ end: number;
77
+ } | undefined;
78
+ coordinateType?: string | undefined;
79
+ metaValue?: number | undefined;
80
+ metaChar?: string | undefined;
81
+ skipLines?: number | undefined;
82
+ format?: string | undefined;
83
+ formatFlags?: number | undefined;
84
+ csiVersion: number;
85
+ firstDataLine: VirtualOffset | undefined;
86
+ indices: {
87
+ binIndex: {
88
+ [key: string]: Chunk[];
89
+ };
90
+ stats?: {
91
+ lineCount: number;
92
+ } | undefined;
93
+ }[];
94
+ refCount: number;
95
+ csi: boolean;
96
+ maxBlockSize: number;
97
+ }>;
98
+ hasRefSeq(seqId: number, opts?: BaseOpts): Promise<boolean>;
35
99
  }
package/dist/csi.js CHANGED
@@ -35,7 +35,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- const long_1 = __importDefault(require("long"));
39
38
  const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
40
39
  const virtualOffset_1 = __importStar(require("./virtualOffset"));
41
40
  const chunk_1 = __importDefault(require("./chunk"));
@@ -50,27 +49,17 @@ function rshift(num, bits) {
50
49
  return Math.floor(num / Math.pow(2, bits));
51
50
  }
52
51
  class CSI extends indexFile_1.default {
53
- constructor(args) {
54
- super(args);
52
+ constructor() {
53
+ super(...arguments);
55
54
  this.maxBinNumber = 0;
56
55
  this.depth = 0;
57
56
  this.minShift = 0;
58
57
  }
59
- lineCount(refId) {
58
+ lineCount(refId, opts) {
59
+ var _a, _b;
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
- const indexData = yield this.parse();
62
- if (!indexData) {
63
- return -1;
64
- }
65
- const idx = indexData.indices[refId];
66
- if (!idx) {
67
- return -1;
68
- }
69
- const { stats } = indexData.indices[refId];
70
- if (stats) {
71
- return stats.lineCount;
72
- }
73
- return -1;
61
+ const indexData = yield this.parse(opts);
62
+ return ((_b = (_a = indexData.indices[refId]) === null || _a === void 0 ? void 0 : _a.stats) === null || _b === void 0 ? void 0 : _b.lineCount) || 0;
74
63
  });
75
64
  }
76
65
  indexCov() {
@@ -78,61 +67,42 @@ class CSI extends indexFile_1.default {
78
67
  return [];
79
68
  });
80
69
  }
81
- parseAuxData(bytes, offset, auxLength) {
82
- if (auxLength < 30) {
83
- return {};
84
- }
85
- const data = {};
86
- data.formatFlags = bytes.readInt32LE(offset);
87
- data.coordinateType =
88
- data.formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
89
- data.format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[data.formatFlags & 0xf];
90
- if (!data.format) {
91
- throw new Error(`invalid Tabix preset format flags ${data.formatFlags}`);
70
+ parseAuxData(bytes, offset) {
71
+ const formatFlags = bytes.readInt32LE(offset);
72
+ const coordinateType = formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
73
+ const format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[formatFlags & 0xf];
74
+ if (!format) {
75
+ throw new Error(`invalid Tabix preset format flags ${formatFlags}`);
92
76
  }
93
- data.columnNumbers = {
77
+ const columnNumbers = {
94
78
  ref: bytes.readInt32LE(offset + 4),
95
79
  start: bytes.readInt32LE(offset + 8),
96
80
  end: bytes.readInt32LE(offset + 12),
97
81
  };
98
- data.metaValue = bytes.readInt32LE(offset + 16);
99
- data.metaChar = data.metaValue ? String.fromCharCode(data.metaValue) : '';
100
- data.skipLines = bytes.readInt32LE(offset + 20);
82
+ const metaValue = bytes.readInt32LE(offset + 16);
83
+ const metaChar = metaValue ? String.fromCharCode(metaValue) : '';
84
+ const skipLines = bytes.readInt32LE(offset + 20);
101
85
  const nameSectionLength = bytes.readInt32LE(offset + 24);
102
- Object.assign(data, this._parseNameBytes(bytes.subarray(offset + 28, offset + 28 + nameSectionLength)));
103
- return data;
104
- }
105
- _parseNameBytes(namesBytes) {
106
- let currRefId = 0;
107
- let currNameStart = 0;
108
- const refIdToName = [];
109
- const refNameToId = {};
110
- for (let i = 0; i < namesBytes.length; i += 1) {
111
- if (!namesBytes[i]) {
112
- if (currNameStart < i) {
113
- let refName = namesBytes.toString('utf8', currNameStart, i);
114
- refName = this.renameRefSeq(refName);
115
- refIdToName[currRefId] = refName;
116
- refNameToId[refName] = currRefId;
117
- }
118
- currNameStart = i + 1;
119
- currRefId += 1;
120
- }
121
- }
122
- return { refNameToId, refIdToName };
86
+ return Object.assign({ columnNumbers,
87
+ coordinateType,
88
+ metaValue,
89
+ metaChar,
90
+ skipLines,
91
+ format,
92
+ formatFlags }, (0, util_1.parseNameBytes)(bytes.subarray(offset + 28, offset + 28 + nameSectionLength), this.renameRefSeq));
123
93
  }
124
94
  // fetch and parse the index
125
95
  _parse(opts) {
126
96
  return __awaiter(this, void 0, void 0, function* () {
127
- const data = { csi: true, maxBlockSize: 1 << 16 };
128
- const buffer = (yield this.filehandle.readFile(opts));
97
+ const buffer = yield this.filehandle.readFile(opts);
129
98
  const bytes = yield (0, bgzf_filehandle_1.unzip)(buffer);
99
+ let csiVersion;
130
100
  // check TBI magic numbers
131
101
  if (bytes.readUInt32LE(0) === CSI1_MAGIC) {
132
- data.csiVersion = 1;
102
+ csiVersion = 1;
133
103
  }
134
104
  else if (bytes.readUInt32LE(0) === CSI2_MAGIC) {
135
- data.csiVersion = 2;
105
+ csiVersion = 2;
136
106
  }
137
107
  else {
138
108
  throw new Error('Not a CSI file');
@@ -142,53 +112,50 @@ class CSI extends indexFile_1.default {
142
112
  this.depth = bytes.readInt32LE(8);
143
113
  this.maxBinNumber = ((1 << ((this.depth + 1) * 3)) - 1) / 7;
144
114
  const auxLength = bytes.readInt32LE(12);
145
- if (auxLength) {
146
- Object.assign(data, this.parseAuxData(bytes, 16, auxLength));
147
- }
148
- data.refCount = bytes.readInt32LE(16 + auxLength);
115
+ const aux = auxLength >= 30 ? this.parseAuxData(bytes, 16) : undefined;
116
+ const refCount = bytes.readInt32LE(16 + auxLength);
149
117
  // read the indexes for each reference sequence
150
- data.indices = new Array(data.refCount);
151
- let currOffset = 16 + auxLength + 4;
152
- for (let i = 0; i < data.refCount; i += 1) {
153
- yield (0, util_1.abortBreakPoint)(opts.signal);
118
+ let curr = 16 + auxLength + 4;
119
+ let firstDataLine;
120
+ const indices = new Array(refCount);
121
+ for (let i = 0; i < refCount; i++) {
154
122
  // the binning index
155
- const binCount = bytes.readInt32LE(currOffset);
156
- currOffset += 4;
123
+ const binCount = bytes.readInt32LE(curr);
124
+ curr += 4;
157
125
  const binIndex = {};
158
126
  let stats; // < provided by parsing a pseudo-bin, if present
159
- for (let j = 0; j < binCount; j += 1) {
160
- const bin = bytes.readUInt32LE(currOffset);
127
+ for (let j = 0; j < binCount; j++) {
128
+ const bin = bytes.readUInt32LE(curr);
129
+ curr += 4;
161
130
  if (bin > this.maxBinNumber) {
162
- // this is a fake bin that actually has stats information
163
- // about the reference sequence in it
164
- stats = this.parsePseudoBin(bytes, currOffset + 4);
165
- currOffset += 4 + 8 + 4 + 16 + 16;
131
+ stats = (0, util_1.parsePseudoBin)(bytes, curr + 28);
132
+ curr += 28 + 16;
166
133
  }
167
134
  else {
168
- const loffset = (0, virtualOffset_1.fromBytes)(bytes, currOffset + 4);
169
- this._findFirstData(data, loffset);
170
- const chunkCount = bytes.readInt32LE(currOffset + 12);
171
- currOffset += 16;
135
+ firstDataLine = (0, util_1.findFirstData)(firstDataLine, (0, virtualOffset_1.fromBytes)(bytes, curr));
136
+ curr += 8;
137
+ const chunkCount = bytes.readInt32LE(curr);
138
+ curr += 4;
172
139
  const chunks = new Array(chunkCount);
173
140
  for (let k = 0; k < chunkCount; k += 1) {
174
- const u = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
175
- const v = (0, virtualOffset_1.fromBytes)(bytes, currOffset + 8);
176
- currOffset += 16;
177
- // this._findFirstData(data, u)
141
+ const u = (0, virtualOffset_1.fromBytes)(bytes, curr);
142
+ curr += 8;
143
+ const v = (0, virtualOffset_1.fromBytes)(bytes, curr);
144
+ curr += 8;
145
+ firstDataLine = (0, util_1.findFirstData)(firstDataLine, u);
178
146
  chunks[k] = new chunk_1.default(u, v, bin);
179
147
  }
180
148
  binIndex[bin] = chunks;
181
149
  }
182
150
  }
183
- data.indices[i] = { binIndex, stats };
151
+ indices[i] = { binIndex, stats };
184
152
  }
185
- return data;
153
+ return Object.assign({ csiVersion,
154
+ firstDataLine,
155
+ indices,
156
+ refCount, csi: true, maxBlockSize: 1 << 16 }, aux);
186
157
  });
187
158
  }
188
- parsePseudoBin(bytes, offset) {
189
- const lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 28, offset + 36), true));
190
- return { lineCount };
191
- }
192
159
  blocksForRange(refId, min, max, opts = {}) {
193
160
  return __awaiter(this, void 0, void 0, function* () {
194
161
  if (min < 0) {
@@ -199,15 +166,18 @@ class CSI extends indexFile_1.default {
199
166
  if (!ba) {
200
167
  return [];
201
168
  }
202
- const overlappingBins = this.reg2bins(min, max); // List of bin #s that overlap min, max
169
+ const overlappingBins = this.reg2bins(min, max);
170
+ if (overlappingBins.length === 0) {
171
+ return [];
172
+ }
203
173
  const chunks = [];
204
174
  // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
205
175
  for (const [start, end] of overlappingBins) {
206
176
  for (let bin = start; bin <= end; bin++) {
207
177
  if (ba.binIndex[bin]) {
208
178
  const binChunks = ba.binIndex[bin];
209
- for (let c = 0; c < binChunks.length; ++c) {
210
- chunks.push(new chunk_1.default(binChunks[c].minv, binChunks[c].maxv, bin));
179
+ for (const c of binChunks) {
180
+ chunks.push(c);
211
181
  }
212
182
  }
213
183
  }
@@ -242,6 +212,24 @@ class CSI extends indexFile_1.default {
242
212
  }
243
213
  return bins;
244
214
  }
215
+ parse(opts = {}) {
216
+ return __awaiter(this, void 0, void 0, function* () {
217
+ if (!this.setupP) {
218
+ this.setupP = this._parse(opts).catch(e => {
219
+ this.setupP = undefined;
220
+ throw e;
221
+ });
222
+ }
223
+ return this.setupP;
224
+ });
225
+ }
226
+ hasRefSeq(seqId, opts = {}) {
227
+ var _a;
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ const header = yield this.parse(opts);
230
+ return !!((_a = header.indices[seqId]) === null || _a === void 0 ? void 0 : _a.binIndex);
231
+ });
232
+ }
245
233
  }
246
234
  exports.default = CSI;
247
235
  //# sourceMappingURL=csi.js.map
package/dist/csi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,2DAA6C;AAC7C,iEAA0D;AAC1D,oDAA2B;AAC3B,iCAAgF;AAEhF,4DAAmC;AAEnC,MAAM,UAAU,GAAG,QAAQ,CAAA,CAAC,QAAQ;AACpC,MAAM,UAAU,GAAG,QAAQ,CAAA,CAAC,QAAQ;AAEpC,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,GAAG,GAAG,SAAA,CAAC,EAAI,IAAI,CAAA,CAAA;AACxB,CAAC;AACD,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAA,CAAC,EAAI,IAAI,CAAA,CAAC,CAAA;AACpC,CAAC;AAED,MAAqB,GAAI,SAAQ,mBAAS;IAIxC,YAAY,IAAS;QACnB,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IACnB,CAAC;IACK,SAAS,CAAC,KAAa;;YAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YACpC,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO,CAAC,CAAC,CAAA;aACV;YACD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,CAAC,CAAC,CAAA;aACV;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,KAAK,EAAE;gBACT,OAAO,KAAK,CAAC,SAAS,CAAA;aACvB;YACD,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;KAAA;IAEK,QAAQ;;YACZ,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAED,YAAY,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB;QAC3D,IAAI,SAAS,GAAG,EAAE,EAAE;YAClB,OAAO,EAAE,CAAA;SACV;QAED,MAAM,IAAI,GAA2B,EAAE,CAAA;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAA;QACxE,IAAI,CAAC,MAAM,GACT,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAGnC,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;SACzE;QACD,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;SACpC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACzE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC/C,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAExD,MAAM,CAAC,MAAM,CACX,IAAI,EACJ,IAAI,CAAC,eAAe,CAClB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAC7D,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,MAAM,WAAW,GAAG,EAAE,CAAA;QACtB,MAAM,WAAW,GAA8B,EAAE,CAAA;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAClB,IAAI,aAAa,GAAG,CAAC,EAAE;oBACrB,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;oBAC3D,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACpC,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAA;oBAChC,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;iBACjC;gBACD,aAAa,GAAG,CAAC,GAAG,CAAC,CAAA;gBACrB,SAAS,IAAI,CAAC,CAAA;aACf;SACF;QACD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;IACrC,CAAC;IAED,4BAA4B;IACtB,MAAM,CAAC,IAA8B;;YACzC,MAAM,IAAI,GAA2B,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAA;YACzE,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAW,CAAA;YAC/D,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAK,EAAC,MAAM,CAAC,CAAA;YAEjC,0BAA0B;YAC1B,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;aACpB;iBAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBAC/C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;aACpB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBACjC,oDAAoD;aACrD;YAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YACjC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACvC,IAAI,SAAS,EAAE;gBACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAA;aAC7D;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC,CAAA;YAEjD,+CAA+C;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,UAAU,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC,CAAA;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;gBACzC,MAAM,IAAA,sBAAe,EAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAClC,oBAAoB;gBACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBAC9C,UAAU,IAAI,CAAC,CAAA;gBACf,MAAM,QAAQ,GAA+B,EAAE,CAAA;gBAC/C,IAAI,KAAK,CAAA,CAAC,iDAAiD;gBAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;oBACpC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;oBAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;wBAC3B,yDAAyD;wBACzD,qCAAqC;wBACrC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;wBAClD,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;qBAClC;yBAAM;wBACL,MAAM,OAAO,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;wBAChD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;wBAClC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC,CAAA;wBACrD,UAAU,IAAI,EAAE,CAAA;wBAChB,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;wBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;4BACtC,MAAM,CAAC,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,UAAU,CAAC,CAAA;4BACtC,MAAM,CAAC,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;4BAC1C,UAAU,IAAI,EAAE,CAAA;4BAChB,+BAA+B;4BAC/B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,eAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;yBACjC;wBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;qBACvB;iBACF;gBAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;aACtC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,MAAM,SAAS,GAAG,IAAA,mBAAY,EAC5B,cAAI,CAAC,WAAW,CACd,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,EAC3D,IAAI,CACL,CACF,CAAA;QACD,OAAO,EAAE,SAAS,EAAE,CAAA;IACtB,CAAC;IAEK,cAAc,CAClB,KAAa,EACb,GAAW,EACX,GAAW,EACX,OAAiB,EAAE;;YAEnB,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,GAAG,GAAG,CAAC,CAAA;aACR;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACxC,MAAM,EAAE,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,CAAC,EAAE,EAAE;gBACP,OAAO,EAAE,CAAA;aACV;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,uCAAuC;YACvF,MAAM,MAAM,GAAG,EAAE,CAAA;YAEjB,sEAAsE;YACtE,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,eAAe,EAAE;gBAC1C,KAAK,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE;oBACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACpB,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;wBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;4BACzC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;yBAClE;qBACF;iBACF;aACF;YAED,OAAO,IAAA,qBAAc,EAAC,MAAM,EAAE,IAAI,uBAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC;KAAA;IAED;;;OAGG;IACH,QAAQ,CAAC,GAAW,EAAE,GAAW;QAC/B,GAAG,IAAI,CAAC,CAAA,CAAC,8BAA8B;QACvC,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC,CAAA;SACR;QACD,IAAI,GAAG,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,EAAE;YACjB,GAAG,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,CAAA;SACd,CAAC,wCAAwC;QAC1C,GAAG,IAAI,CAAC,CAAA;QACR,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;gBAC3C,MAAM,IAAI,KAAK,CACb,SAAS,GAAG,IAAI,GAAG,mDAAmD,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,KAAK,0DAA0D,CACnK,CAAA;aACF;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SAClB;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAhOD,sBAgOC"}
1
+ {"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"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"}
package/dist/htsget.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from 'buffer';
2
3
  import { BaseOpts, BamOpts } from './util';
3
4
  import BamFile from './bamFile';
4
- import 'cross-fetch/polyfill';
5
5
  import Chunk from './chunk';
6
6
  export default class HtsgetFile extends BamFile {
7
7
  private baseUrl;
@@ -11,16 +11,13 @@ export default class HtsgetFile extends BamFile {
11
11
  baseUrl: string;
12
12
  });
13
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
- };
14
+ _readChunk({ chunk }: {
15
+ chunk: Chunk;
19
16
  opts: BaseOpts;
20
17
  }): Promise<{
21
18
  data: Buffer;
22
- cpositions: null;
23
- dpositions: null;
19
+ cpositions: never[];
20
+ dpositions: never[];
24
21
  chunk: Chunk;
25
22
  }>;
26
23
  getHeader(opts?: BaseOpts): Promise<{
package/dist/htsget.js CHANGED
@@ -53,7 +53,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
53
53
  var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
54
54
  var i, p;
55
55
  return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
56
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
56
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
57
57
  };
58
58
  var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
59
59
  if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
@@ -67,72 +67,93 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
67
67
  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
68
68
  };
69
69
  Object.defineProperty(exports, "__esModule", { value: true });
70
- const bamFile_1 = __importStar(require("./bamFile"));
71
- require("cross-fetch/polyfill");
72
70
  const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
71
+ const buffer_1 = require("buffer");
72
+ const bamFile_1 = __importStar(require("./bamFile"));
73
73
  const sam_1 = require("./sam");
74
74
  function concat(arr, opts) {
75
75
  return __awaiter(this, void 0, void 0, function* () {
76
76
  const res = yield Promise.all(arr.map((chunk) => __awaiter(this, void 0, void 0, function* () {
77
77
  const { url, headers } = chunk;
78
78
  if (url.startsWith('data:')) {
79
- return Buffer.from(url.split(',')[1], 'base64');
79
+ return buffer_1.Buffer.from(url.split(',')[1], 'base64');
80
80
  }
81
81
  else {
82
82
  //remove referer header, it is not even allowed to be specified
83
- //@ts-ignore
83
+ // @ts-expect-error
84
84
  //eslint-disable-next-line @typescript-eslint/no-unused-vars
85
85
  const { referer } = headers, rest = __rest(headers, ["referer"]);
86
- const res = yield fetch(url, Object.assign(Object.assign({}, opts), { headers: Object.assign(Object.assign({}, opts.headers), rest) }));
86
+ const res = yield fetch(url, Object.assign(Object.assign({}, opts), { headers: Object.assign(Object.assign({}, opts === null || opts === void 0 ? void 0 : opts.headers), rest) }));
87
87
  if (!res.ok) {
88
- throw new Error(`Failed to fetch ${res.statusText}`);
88
+ throw new Error(`HTTP ${res.status} fetching ${url}: ${yield res.text()}`);
89
89
  }
90
- return Buffer.from(yield res.arrayBuffer());
90
+ return buffer_1.Buffer.from(yield res.arrayBuffer());
91
91
  }
92
92
  })));
93
- return Buffer.concat(yield Promise.all(res.map(elt => (0, bgzf_filehandle_1.unzip)(elt))));
93
+ return buffer_1.Buffer.concat(yield Promise.all(res.map(elt => (0, bgzf_filehandle_1.unzip)(elt))));
94
94
  });
95
95
  }
96
96
  class HtsgetFile extends bamFile_1.default {
97
97
  constructor(args) {
98
- // @ts-ignore override bam defaults
99
- super({ bamFilehandle: '?', baiFilehandle: '?' });
98
+ super({ htsget: true });
100
99
  this.baseUrl = args.baseUrl;
101
100
  this.trackId = args.trackId;
102
101
  }
103
- streamRecordsForRange(chr, min, max, opts = {
104
- viewAsPairs: false,
105
- pairAcrossChr: false,
106
- maxInsertSize: 200000,
107
- }) {
102
+ streamRecordsForRange(chr, min, max, opts) {
103
+ var _a;
108
104
  return __asyncGenerator(this, arguments, function* streamRecordsForRange_1() {
109
105
  const base = `${this.baseUrl}/${this.trackId}`;
110
106
  const url = `${base}?referenceName=${chr}&start=${min}&end=${max}&format=BAM`;
111
- const chrId = this.chrToIndex && this.chrToIndex[chr];
112
- const result = yield __await(fetch(url, Object.assign({}, opts)));
113
- if (!result.ok) {
114
- throw new Error(result.statusText);
107
+ const chrId = (_a = this.chrToIndex) === null || _a === void 0 ? void 0 : _a[chr];
108
+ if (chrId === undefined) {
109
+ yield yield __await([]);
110
+ }
111
+ else {
112
+ const result = yield __await(fetch(url, Object.assign({}, opts)));
113
+ if (!result.ok) {
114
+ throw new Error(`HTTP ${result.status} fetching ${url}: ${yield __await(result.text())}`);
115
+ }
116
+ const data = yield __await(result.json());
117
+ const uncba = yield __await(concat(data.htsget.urls.slice(1), opts));
118
+ yield __await(yield* __asyncDelegator(__asyncValues(this._fetchChunkFeatures([
119
+ // fake stuff to pretend to be a Chunk
120
+ {
121
+ buffer: uncba,
122
+ _fetchedSize: undefined,
123
+ bin: 0,
124
+ compareTo() {
125
+ return 0;
126
+ },
127
+ toUniqueString() {
128
+ return `${chr}_${min}_${max}`;
129
+ },
130
+ fetchedSize() {
131
+ return 0;
132
+ },
133
+ minv: {
134
+ dataPosition: 0,
135
+ blockPosition: 0,
136
+ compareTo: () => 0,
137
+ },
138
+ maxv: {
139
+ dataPosition: Number.MAX_SAFE_INTEGER,
140
+ blockPosition: 0,
141
+ compareTo: () => 0,
142
+ },
143
+ toString() {
144
+ return `${chr}_${min}_${max}`;
145
+ },
146
+ },
147
+ ], chrId, min, max, opts))));
115
148
  }
116
- const data = yield __await(result.json());
117
- const uncba = yield __await(concat(data.htsget.urls.slice(1), opts));
118
- const chunk = {
119
- buffer: uncba,
120
- chunk: { minv: { dataPosition: 0 } },
121
- toString() {
122
- return `${chr}_${min}_${max}`;
123
- },
124
- };
125
- yield __await(yield* __asyncDelegator(__asyncValues(this._fetchChunkFeatures(
126
- // @ts-ignore
127
- [chunk], chrId, min, max, opts))));
128
149
  });
129
150
  }
130
- //@ts-ignore
131
- _readChunk(params) {
151
+ _readChunk({ chunk }) {
132
152
  return __awaiter(this, void 0, void 0, function* () {
133
- const { chunk } = params;
134
- const { buffer, chunk: c2 } = chunk;
135
- return { data: buffer, cpositions: null, dpositions: null, chunk: c2 };
153
+ if (!chunk.buffer) {
154
+ throw new Error('expected chunk.buffer in htsget');
155
+ }
156
+ return { data: chunk.buffer, cpositions: [], dpositions: [], chunk };
136
157
  });
137
158
  }
138
159
  getHeader(opts = {}) {
@@ -140,7 +161,7 @@ class HtsgetFile extends bamFile_1.default {
140
161
  const url = `${this.baseUrl}/${this.trackId}?referenceName=na&class=header`;
141
162
  const result = yield fetch(url, opts);
142
163
  if (!result.ok) {
143
- throw new Error(`Failed to fetch ${result.statusText}`);
164
+ throw new Error(`HTTP ${result.status} fetching ${url}: ${yield result.text()}`);
144
165
  }
145
166
  const data = yield result.json();
146
167
  const uncba = yield concat(data.htsget.urls, opts);
@@ -154,17 +175,21 @@ class HtsgetFile extends bamFile_1.default {
154
175
  // mapping between ref ref ID numbers and names
155
176
  const idToName = [];
156
177
  const nameToId = {};
157
- const sqLines = samHeader.filter((l) => l.tag === 'SQ');
158
- sqLines.forEach((sqLine, refId) => {
159
- sqLine.data.forEach((item) => {
178
+ const sqLines = samHeader.filter(l => l.tag === 'SQ');
179
+ for (const [refId, sqLine] of sqLines.entries()) {
180
+ let refName = '';
181
+ let length = 0;
182
+ for (const item of sqLine.data) {
160
183
  if (item.tag === 'SN') {
161
- // this is the ref name
162
- const refName = item.value;
163
- nameToId[refName] = refId;
164
- idToName[refId] = refName;
184
+ refName = item.value;
185
+ }
186
+ else if (item.tag === 'LN') {
187
+ length = +item.value;
165
188
  }
166
- });
167
- });
189
+ }
190
+ nameToId[refName] = refId;
191
+ idToName[refId] = { refName, length };
192
+ }
168
193
  this.chrToIndex = nameToId;
169
194
  this.indexToChr = idToName;
170
195
  return samHeader;
@@ -1 +1 @@
1
- {"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"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"}