@gmod/cram 4.0.1 → 4.0.4

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 (105) hide show
  1. package/dist/cram-bundle.js +1 -1
  2. package/dist/cramFile/file.js +43 -9
  3. package/dist/cramFile/file.js.map +1 -1
  4. package/dist/cramFile/slice/decodeRecord.js +3 -3
  5. package/dist/cramFile/slice/decodeRecord.js.map +1 -1
  6. package/dist/cramFile/slice/index.d.ts +1 -1
  7. package/dist/cramFile/slice/index.js +3 -1
  8. package/dist/cramFile/slice/index.js.map +1 -1
  9. package/dist/cramFile/util.d.ts +0 -2
  10. package/dist/cramFile/util.js +3 -31
  11. package/dist/cramFile/util.js.map +1 -1
  12. package/dist/htscodecs/arith_gen.d.ts +5 -7
  13. package/dist/htscodecs/arith_gen.js +122 -105
  14. package/dist/htscodecs/arith_gen.js.map +1 -1
  15. package/dist/htscodecs/arith_sh.d.ts +1 -8
  16. package/dist/htscodecs/arith_sh.js +16 -10
  17. package/dist/htscodecs/arith_sh.js.map +1 -1
  18. package/dist/htscodecs/byte_model.d.ts +1 -6
  19. package/dist/htscodecs/byte_model.js +25 -17
  20. package/dist/htscodecs/byte_model.js.map +1 -1
  21. package/dist/htscodecs/fqzcomp.d.ts +1 -1
  22. package/dist/htscodecs/fqzcomp.js +98 -77
  23. package/dist/htscodecs/fqzcomp.js.map +1 -1
  24. package/dist/htscodecs/index.d.ts +5 -5
  25. package/dist/htscodecs/index.js +53 -16
  26. package/dist/htscodecs/index.js.map +1 -1
  27. package/dist/htscodecs/iostream.d.ts +9 -20
  28. package/dist/htscodecs/iostream.js +21 -116
  29. package/dist/htscodecs/iostream.js.map +1 -1
  30. package/dist/htscodecs/rans.d.ts +1 -1
  31. package/dist/htscodecs/rans.js +65 -54
  32. package/dist/htscodecs/rans.js.map +1 -1
  33. package/dist/htscodecs/rans4x16.d.ts +1 -1
  34. package/dist/htscodecs/rans4x16.js +151 -111
  35. package/dist/htscodecs/rans4x16.js.map +1 -1
  36. package/dist/htscodecs/tok3.d.ts +1 -2
  37. package/dist/htscodecs/tok3.js +82 -239
  38. package/dist/htscodecs/tok3.js.map +1 -1
  39. package/dist/indexedCramFile.d.ts +14 -8
  40. package/dist/indexedCramFile.js +16 -13
  41. package/dist/indexedCramFile.js.map +1 -1
  42. package/dist/util.d.ts +1 -0
  43. package/dist/util.js +20 -0
  44. package/dist/util.js.map +1 -0
  45. package/esm/cramFile/file.js +3 -2
  46. package/esm/cramFile/file.js.map +1 -1
  47. package/esm/cramFile/slice/decodeRecord.js +3 -3
  48. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  49. package/esm/cramFile/slice/index.d.ts +1 -1
  50. package/esm/cramFile/slice/index.js +3 -1
  51. package/esm/cramFile/slice/index.js.map +1 -1
  52. package/esm/cramFile/util.d.ts +0 -2
  53. package/esm/cramFile/util.js +3 -29
  54. package/esm/cramFile/util.js.map +1 -1
  55. package/esm/htscodecs/arith_gen.d.ts +5 -7
  56. package/esm/htscodecs/arith_gen.js +108 -97
  57. package/esm/htscodecs/arith_gen.js.map +1 -1
  58. package/esm/htscodecs/arith_sh.d.ts +1 -8
  59. package/esm/htscodecs/arith_sh.js +14 -11
  60. package/esm/htscodecs/arith_sh.js.map +1 -1
  61. package/esm/htscodecs/byte_model.d.ts +1 -6
  62. package/esm/htscodecs/byte_model.js +23 -18
  63. package/esm/htscodecs/byte_model.js.map +1 -1
  64. package/esm/htscodecs/fqzcomp.d.ts +1 -1
  65. package/esm/htscodecs/fqzcomp.js +91 -76
  66. package/esm/htscodecs/fqzcomp.js.map +1 -1
  67. package/esm/htscodecs/index.d.ts +5 -5
  68. package/esm/htscodecs/index.js +14 -20
  69. package/esm/htscodecs/index.js.map +1 -1
  70. package/esm/htscodecs/iostream.d.ts +9 -20
  71. package/esm/htscodecs/iostream.js +19 -117
  72. package/esm/htscodecs/iostream.js.map +1 -1
  73. package/esm/htscodecs/rans.d.ts +1 -1
  74. package/esm/htscodecs/rans.js +61 -56
  75. package/esm/htscodecs/rans.js.map +1 -1
  76. package/esm/htscodecs/rans4x16.d.ts +1 -1
  77. package/esm/htscodecs/rans4x16.js +143 -109
  78. package/esm/htscodecs/rans4x16.js.map +1 -1
  79. package/esm/htscodecs/tok3.d.ts +1 -2
  80. package/esm/htscodecs/tok3.js +41 -237
  81. package/esm/htscodecs/tok3.js.map +1 -1
  82. package/esm/indexedCramFile.d.ts +14 -8
  83. package/esm/indexedCramFile.js +16 -13
  84. package/esm/indexedCramFile.js.map +1 -1
  85. package/esm/util.d.ts +1 -0
  86. package/esm/util.js +17 -0
  87. package/esm/util.js.map +1 -0
  88. package/package.json +8 -9
  89. package/src/cramFile/file.ts +3 -2
  90. package/src/cramFile/slice/decodeRecord.ts +3 -5
  91. package/src/cramFile/slice/index.ts +3 -1
  92. package/src/cramFile/util.ts +6 -39
  93. package/src/htscodecs/{arith_gen.js → arith_gen.ts} +133 -95
  94. package/src/htscodecs/{arith_sh.js → arith_sh.ts} +17 -9
  95. package/src/htscodecs/{byte_model.js → byte_model.ts} +26 -16
  96. package/src/htscodecs/{fqzcomp.js → fqzcomp.ts} +108 -74
  97. package/src/htscodecs/{index.js → index.ts} +14 -20
  98. package/src/htscodecs/iostream.ts +159 -0
  99. package/src/htscodecs/{rans.js → rans.ts} +73 -56
  100. package/src/htscodecs/{rans4x16.js → rans4x16.ts} +180 -111
  101. package/src/htscodecs/tok3.ts +197 -0
  102. package/src/indexedCramFile.ts +24 -17
  103. package/src/util.ts +16 -0
  104. package/src/htscodecs/iostream.js +0 -257
  105. package/src/htscodecs/tok3.js +0 -413
@@ -1,4 +1,5 @@
1
- "use strict";
1
+ /* eslint-disable no-var */
2
+ // @ts-nocheck
2
3
  /*
3
4
  * Copyright (c) 2019 Genome Research Ltd.
4
5
  * Author(s): James Bonfield
@@ -36,26 +37,11 @@
36
37
  // This is a reference implementation designed to match the
37
38
  // written specification as closely as possible. It is *NOT*
38
39
  // an efficient implementation, but see comments below.
39
- const IOStream = require('./iostream');
40
- const rans = require('./rans4x16');
41
- const arith_gen = require('./arith_gen');
42
- function sum(array) {
43
- let sum = 0;
44
- for (const entry of array) {
45
- sum += entry.length;
46
- }
47
- return sum;
48
- }
49
- function concatUint8Array(args) {
50
- const mergedArray = new Uint8Array(sum(args));
51
- let offset = 0;
52
- for (const entry of args) {
53
- mergedArray.set(entry, offset);
54
- offset += entry.length;
55
- }
56
- return mergedArray;
57
- }
58
- var arith = new arith_gen();
40
+ import { concatUint8Array } from '../util';
41
+ import arith_gen from './arith_gen';
42
+ import IOStream from './iostream';
43
+ import * as rans from './rans4x16';
44
+ const arith = new arith_gen();
59
45
  const TOK_TYPE = 0;
60
46
  const TOK_STRING = 1;
61
47
  const TOK_CHAR = 2;
@@ -69,59 +55,57 @@ const TOK_DELTA0 = 9;
69
55
  const TOK_MATCH = 10;
70
56
  const TOK_NOP = 11;
71
57
  const TOK_END = 12;
72
- //----------------------------------------------------------------------
58
+ // ----------------------------------------------------------------------
73
59
  // Token byte streams
74
60
  function DecodeTokenByteStreams(src, in_size, use_arith, nnames) {
75
- var t = -1;
76
- var B = new Array(256);
61
+ let t = -1;
62
+ const B = new Array(256);
77
63
  while (!src.EOF()) {
78
- var ttype = src.ReadByte();
79
- var tok_new = ttype & 128;
80
- var tok_dup = ttype & 64;
81
- var type = ttype & 63;
64
+ const ttype = src.ReadByte();
65
+ const tok_new = ttype & 128;
66
+ const tok_dup = ttype & 64;
67
+ const type = ttype & 63;
82
68
  if (tok_new) {
83
69
  t++;
84
70
  B[t] = new Array(13);
85
71
  }
86
72
  if (type != TOK_TYPE && tok_new) {
87
- var M = new Array(nnames - 1).fill(TOK_MATCH);
73
+ const M = new Array(nnames - 1).fill(TOK_MATCH);
88
74
  B[t][TOK_TYPE] = new IOStream(concatUint8Array([new Uint8Array(type), M]));
89
75
  }
90
76
  if (tok_dup) {
91
- var dup_pos = src.ReadByte();
92
- var dup_type = src.ReadByte();
77
+ const dup_pos = src.ReadByte();
78
+ const dup_type = src.ReadByte();
93
79
  B[t][type] = new IOStream(B[dup_pos][dup_type].buf);
94
80
  }
95
81
  else {
96
- var clen = src.ReadUint7();
97
- var data = src.ReadData(clen);
98
- if (use_arith)
99
- B[t][type] = arith.decode(data);
100
- else
101
- B[t][type] = rans.decode(data);
82
+ const clen = src.ReadUint7();
83
+ const data = src.ReadData(clen);
84
+ B[t][type] = use_arith ? arith.decode(data) : rans.decode(data);
102
85
  B[t][type] = new IOStream(B[t][type]);
103
86
  }
104
87
  }
105
88
  return B;
106
89
  }
107
- //----------------------------------------------------------------------
90
+ // ----------------------------------------------------------------------
108
91
  // Token decode
109
92
  function LeftPadNumber(val, len) {
110
- var str = val + '';
111
- while (str.length < len)
93
+ let str = val + '';
94
+ while (str.length < len) {
112
95
  str = '0' + str;
96
+ }
113
97
  return str;
114
98
  }
115
99
  function DecodeSingleName(B, N, T, n) {
116
- var type = B[0][TOK_TYPE].ReadByte();
117
- var dist = B[0][type].ReadUint32();
118
- var m = n - dist;
100
+ let type = B[0][TOK_TYPE].ReadByte();
101
+ const dist = B[0][type].ReadUint32();
102
+ const m = n - dist;
119
103
  if (type == TOK_DUP) {
120
104
  N[n] = N[m];
121
105
  T[n] = T[m];
122
106
  return N[n];
123
107
  }
124
- var t = 1;
108
+ let t = 1;
125
109
  N[n] = '';
126
110
  T[n] = new Array(256);
127
111
  do {
@@ -160,204 +144,24 @@ function DecodeSingleName(B, N, T, n) {
160
144
  } while (type != TOK_END);
161
145
  return N[n];
162
146
  }
163
- //----------------------------------------------------------------------
147
+ // ----------------------------------------------------------------------
164
148
  // Main tokeniser decode entry function: decodes a compressed src and
165
149
  // returns the uncompressed buffer.
166
- function decode(src, len, separator) {
150
+ export function decode(src, len, separator) {
167
151
  var src = new IOStream(src);
168
- var ulen = src.ReadUint32();
169
- var nnames = src.ReadUint32();
170
- var use_arith = src.ReadByte();
171
- var B = DecodeTokenByteStreams(src, len, use_arith, nnames);
172
- var N = new Array(nnames);
173
- var T = new Array(nnames);
174
- var str = '';
175
- if (typeof separator === 'undefined')
152
+ const ulen = src.ReadUint32();
153
+ const nnames = src.ReadUint32();
154
+ const use_arith = src.ReadByte();
155
+ const B = DecodeTokenByteStreams(src, len, use_arith, nnames);
156
+ const N = new Array(nnames);
157
+ const T = new Array(nnames);
158
+ let str = '';
159
+ if (separator === undefined) {
176
160
  separator = '\n';
177
- for (var i = 0; i < nnames; i++)
178
- str += DecodeSingleName(B, N, T, i) + separator;
179
- return str;
180
- }
181
- //----------------------------------------------------------------------
182
- // Main tokeniser encode function
183
- // Encoder is trickier than decode as we have a lot of decisions to make.
184
- // However here we just make a simple guess without anything complex,
185
- // to demonstrate the basic idea. See the C implementation for further
186
- // expansion on this.
187
- function encode(src, use_arith) {
188
- // Convert buffer to array of names
189
- var str = src.toString();
190
- if (str[str.length - 1] == '\n')
191
- str = str.substring(0, str.length - 1);
192
- var names = str.split('\n');
193
- var out = new IOStream('', 0, str.length * 2 + 10000); // guess max size
194
- out.WriteUint32(str.length);
195
- out.WriteUint32(names.length);
196
- out.WriteByte(use_arith);
197
- // Tokenise names
198
- var T = new Array(names.length);
199
- var H = {};
200
- var F = new Array(256).fill(0); // DELTA vs DIGIT frequency
201
- var max_tok = 0;
202
- var max_len = 0;
203
- for (var i = 0; i < names.length; i++) {
204
- var [ntok, len] = TokeniseName(T, H, F, names[i], i);
205
- if (max_tok < ntok)
206
- max_tok = ntok;
207
- if (max_len < len)
208
- max_len = len;
209
- }
210
- // Convert tokens to byte streams and serialise
211
- for (var tnum = 0; tnum < max_tok; tnum++) {
212
- var B = new Array(TOK_END + 1);
213
- for (var type = 0; type <= TOK_END; type++)
214
- B[type] = new IOStream('', 0, names.length * max_len);
215
- FillByteStreams(B, T, tnum, names, max_tok, max_len);
216
- SerialiseByteStreams(B, tnum, use_arith, out);
217
- }
218
- return out.buf.slice(0, out.pos);
219
- }
220
- function FillByteStreams(B, T, tnum, names, max_tok, max_len) {
221
- // Create byte streams B[]
222
- for (var n = 0; n < names.length; n++) {
223
- if (tnum > 0 && T[n][0].type == TOK_DUP)
224
- continue;
225
- if (!T[n][tnum])
226
- continue;
227
- B[TOK_TYPE].WriteByte(T[n][tnum].type);
228
- switch (T[n][tnum].type) {
229
- case TOK_DIFF:
230
- B[TOK_DIFF].WriteUint32(T[n][tnum].val);
231
- break;
232
- case TOK_DUP:
233
- B[TOK_DUP].WriteUint32(T[n][tnum].val);
234
- break;
235
- case TOK_STRING:
236
- B[TOK_STRING].WriteString(T[n][tnum].val);
237
- break;
238
- case TOK_CHAR:
239
- B[TOK_CHAR].WriteChar(T[n][tnum].val);
240
- break;
241
- case TOK_DIGITS:
242
- B[TOK_DIGITS].WriteUint32(T[n][tnum].val);
243
- break;
244
- case TOK_DIGITS0:
245
- B[TOK_DIGITS0].WriteUint32(T[n][tnum].val);
246
- B[TOK_DZLEN].WriteByte(T[n][tnum].val.length);
247
- break;
248
- case TOK_DELTA:
249
- B[T[n][tnum].type].WriteByte(T[n][tnum].val);
250
- break;
251
- case TOK_DELTA0:
252
- B[T[n][tnum].type].WriteByte(T[n][tnum].val);
253
- break;
254
- }
255
- }
256
- }
257
- function SerialiseByteStreams(B, tnum, use_arith, out) {
258
- // Compress and serialise byte streams B[]
259
- for (var type = 0; type <= TOK_END; type++) {
260
- if (B[type].pos <= 0)
261
- continue;
262
- out.WriteByte(type + (type == 0 ? 128 : 0));
263
- // IOStream to sized buffer
264
- B[type] = B[type].buf.slice(0, B[type].pos);
265
- var comp = try_compress(B[type], use_arith);
266
- out.WriteUint7(comp.length);
267
- out.WriteData(comp, comp.length);
268
- }
269
- }
270
- function try_compress(src, use_arith) {
271
- var best = 1 << 30;
272
- var comp;
273
- var methods = [0, 1, 64, 65, 128, 129, 193 + 8];
274
- for (var i in methods) {
275
- var lvl = methods[i];
276
- if (lvl & 1 && src.length < 100)
277
- continue;
278
- if (lvl & 8 && src.length % 4 != 0)
279
- continue;
280
- try {
281
- var tmp = use_arith ? arith.encode(src, lvl) : rans.encode(src, lvl);
282
- }
283
- catch (e) {
284
- var tmp = 0;
285
- }
286
- if (tmp && best > tmp.length) {
287
- best = tmp.length;
288
- comp = tmp;
289
- }
290
- }
291
- return comp;
292
- }
293
- function TokeniseName(T, H, F, name, n) {
294
- var max_len = 0;
295
- // Always compare against last name only
296
- var p = n - 1;
297
- T[n] = new Array(256);
298
- if (H[name]) {
299
- //console.error(name,H[name],n)
300
- T[n][0] = {
301
- type: TOK_DUP,
302
- val: n - H[name],
303
- };
304
- }
305
- else {
306
- T[n][0] = {
307
- type: TOK_DIFF,
308
- val: n == 0 ? 0 : 1,
309
- };
310
161
  }
311
- H[name] = n;
312
- // Splits on alphanumerics, punctuation
313
- var tok = name.match(/([a-zA-Z0-9]{1,9})|([^a-zA-Z0-9]+)/g);
314
- for (var i = 0; i < tok.length; i++) {
315
- var t = i + 1; // token 0 = DIFF vs DUP
316
- var type = TOK_STRING;
317
- var val = tok[i];
318
- if (tok[i].match(/^0+[0-9]*$/g))
319
- type = TOK_DIGITS0;
320
- else if (tok[i].match(/^[0-9]+$/g))
321
- type = TOK_DIGITS;
322
- else if (tok[i].length == 1)
323
- type = TOK_CHAR;
324
- if (p >= 0 && T[p][t]) {
325
- if (T[p][t].str == tok[i]) {
326
- type = TOK_MATCH;
327
- val = '';
328
- }
329
- else if (T[p][t].type == TOK_DIGITS || T[p][t].type == TOK_DELTA) {
330
- var d = val - T[p][t].str;
331
- F[t]++;
332
- if (d >= 0 && d < 256 && F[t] > n / 2) {
333
- type = TOK_DELTA;
334
- val = d;
335
- }
336
- }
337
- else if ((T[p][t].type == TOK_DIGITS0 || T[p][t].type == TOK_DELTA0) &&
338
- T[p][t].str.length == val.length) {
339
- var d = val - T[p][t].str;
340
- F[t]++;
341
- if (d >= 0 && d < 256 && F[t] > n / 2) {
342
- type = TOK_DELTA0;
343
- val = d;
344
- }
345
- }
346
- }
347
- T[n][t] = {
348
- str: tok[i],
349
- val: val,
350
- type: type,
351
- };
352
- if (max_len < T[n][t].val.length + 3)
353
- // +3 for integers; 5 -> (Uint32)5
354
- max_len = T[n][t].val.length + 3;
355
- //console.error(t,T[n][t])
162
+ for (let i = 0; i < nnames; i++) {
163
+ str += DecodeSingleName(B, N, T, i) + separator;
356
164
  }
357
- T[n][++t] = {
358
- type: TOK_END,
359
- };
360
- return [t + 1, max_len];
165
+ return str;
361
166
  }
362
- module.exports = { encode, decode };
363
167
  //# sourceMappingURL=tok3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tok3.js","sourceRoot":"","sources":["../../src/htscodecs/tok3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tok3.js","sourceRoot":"","sources":["../../src/htscodecs/tok3.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,17 @@ export default class IndexedCramFile {
19
19
  *
20
20
  * @param {object} args
21
21
  * @param {CramFile} args.cram
22
- * @param {Index-like} args.index object that supports getEntriesForRange(seqId,start,end) -> Promise[Array[index entries]]
23
- * @param {number} [args.cacheSize] optional maximum number of CRAM records to cache. default 20,000
24
- * @param {boolean} [args.checkSequenceMD5] - default true. if false, disables verifying the MD5
25
- * checksum of the reference sequence underlying a slice. In some applications, this check can cause an inconvenient amount (many megabases) of sequences to be fetched.
22
+ *
23
+ * @param {Index-like} args.index object that supports
24
+ * getEntriesForRange(seqId,start,end) -> Promise[Array[index entries]]
25
+ *
26
+ * @param {number} [args.cacheSize] optional maximum number of CRAM records
27
+ * to cache. default 20,000
28
+ *
29
+ * @param {boolean} [args.checkSequenceMD5] - default true. if false,
30
+ * disables verifying the MD5 checksum of the reference sequence underlying a
31
+ * slice. In some applications, this check can cause an inconvenient amount
32
+ * (many megabases) of sequences to be fetched.
26
33
  */
27
34
  constructor(args: {
28
35
  index: CramIndexLike;
@@ -36,10 +43,9 @@ export default class IndexedCramFile {
36
43
  } & CramFileSource)));
37
44
  /**
38
45
  *
39
- * @param {number} seq numeric ID of the reference sequence
40
- * @param {number} start start of the range of interest. 1-based closed coordinates.
41
- * @param {number} end end of the range of interest. 1-based closed coordinates.
42
- * @returns {Promise[Array[CramRecord]]}
46
+ * @param seq numeric ID of the reference sequence
47
+ * @param start start of the range of interest. 1-based closed coordinates.
48
+ * @param end end of the range of interest. 1-based closed coordinates.
43
49
  */
44
50
  getRecordsForRange(seq: number, start: number, end: number, opts?: {
45
51
  viewAsPairs?: boolean;
@@ -5,13 +5,19 @@ export default class IndexedCramFile {
5
5
  *
6
6
  * @param {object} args
7
7
  * @param {CramFile} args.cram
8
- * @param {Index-like} args.index object that supports getEntriesForRange(seqId,start,end) -> Promise[Array[index entries]]
9
- * @param {number} [args.cacheSize] optional maximum number of CRAM records to cache. default 20,000
10
- * @param {boolean} [args.checkSequenceMD5] - default true. if false, disables verifying the MD5
11
- * checksum of the reference sequence underlying a slice. In some applications, this check can cause an inconvenient amount (many megabases) of sequences to be fetched.
8
+ *
9
+ * @param {Index-like} args.index object that supports
10
+ * getEntriesForRange(seqId,start,end) -> Promise[Array[index entries]]
11
+ *
12
+ * @param {number} [args.cacheSize] optional maximum number of CRAM records
13
+ * to cache. default 20,000
14
+ *
15
+ * @param {boolean} [args.checkSequenceMD5] - default true. if false,
16
+ * disables verifying the MD5 checksum of the reference sequence underlying a
17
+ * slice. In some applications, this check can cause an inconvenient amount
18
+ * (many megabases) of sequences to be fetched.
12
19
  */
13
20
  constructor(args) {
14
- // { cram, index, seqFetch /* fasta, fastaIndex */ }) {
15
21
  this.cram =
16
22
  args.cram ??
17
23
  new CramFile({
@@ -29,10 +35,9 @@ export default class IndexedCramFile {
29
35
  }
30
36
  /**
31
37
  *
32
- * @param {number} seq numeric ID of the reference sequence
33
- * @param {number} start start of the range of interest. 1-based closed coordinates.
34
- * @param {number} end end of the range of interest. 1-based closed coordinates.
35
- * @returns {Promise[Array[CramRecord]]}
38
+ * @param seq numeric ID of the reference sequence
39
+ * @param start start of the range of interest. 1-based closed coordinates.
40
+ * @param end end of the range of interest. 1-based closed coordinates.
36
41
  */
37
42
  async getRecordsForRange(seq, start, end, opts = {}) {
38
43
  opts.viewAsPairs = opts.viewAsPairs || false;
@@ -44,13 +49,11 @@ export default class IndexedCramFile {
44
49
  }
45
50
  const seqId = seq;
46
51
  const slices = await this.index.getEntriesForRange(seqId, start, end);
47
- // TODO: do we need to merge or de-duplicate the blocks?
48
52
  // fetch all the slices and parse the feature data
49
- const filter = (feature) => feature.sequenceId === seq &&
53
+ const sliceResults = await Promise.all(slices.map(slice => this.getRecordsInSlice(slice, feature => feature.sequenceId === seq &&
50
54
  feature.alignmentStart <= end &&
51
55
  feature.lengthOnRef !== undefined &&
52
- feature.alignmentStart + feature.lengthOnRef - 1 >= start;
53
- const sliceResults = await Promise.all(slices.map(slice => this.getRecordsInSlice(slice, filter)));
56
+ feature.alignmentStart + feature.lengthOnRef - 1 >= start)));
54
57
  let ret = Array.prototype.concat(...sliceResults);
55
58
  if (opts.viewAsPairs) {
56
59
  const readNames = {};
@@ -1 +1 @@
1
- {"version":3,"file":"indexedCramFile.js","sourceRoot":"","sources":["../src/indexedCramFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexedCramFile.js","sourceRoot":"","sources":["../src/indexedCramFile.ts"],"names":[],"mappings":"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"}
package/esm/util.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function concatUint8Array(args: Uint8Array[]): Uint8Array<ArrayBuffer>;
package/esm/util.js ADDED
@@ -0,0 +1,17 @@
1
+ function sum(array) {
2
+ let sum = 0;
3
+ for (const entry of array) {
4
+ sum += entry.length;
5
+ }
6
+ return sum;
7
+ }
8
+ export function concatUint8Array(args) {
9
+ const mergedArray = new Uint8Array(sum(args));
10
+ let offset = 0;
11
+ for (const entry of args) {
12
+ mergedArray.set(entry, offset);
13
+ offset += entry.length;
14
+ }
15
+ return mergedArray;
16
+ }
17
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,SAAS,GAAG,CAAC,KAAmB;IAC9B,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,GAAG,IAAI,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC9B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;IACxB,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmod/cram",
3
- "version": "4.0.1",
3
+ "version": "4.0.4",
4
4
  "description": "read CRAM files with pure Javascript",
5
5
  "license": "MIT",
6
6
  "repository": "GMOD/cram-js",
@@ -25,13 +25,13 @@
25
25
  "lint": "eslint --report-unused-disable-directives --max-warnings 0",
26
26
  "format": "prettier --write .",
27
27
  "docs": "documentation readme --shallow src/indexedCramFile.ts --section=IndexedCramFile; documentation readme --shallow src/cramFile/file.ts --section=CramFile; documentation readme --shallow src/craiIndex.ts --section=CraiIndex; documentation readme --shallow errors.ts '--section=Exception Classes'; documentation readme --shallow src/cramFile/file.ts --section=CramFile; documentation readme --shallow src/cramFile/record.ts --section=CramRecord",
28
- "prebuild": "npm run clean",
28
+ "prebuild": "yarn clean",
29
29
  "clean": "rimraf dist esm",
30
30
  "build:esm": "tsc --outDir esm",
31
31
  "build:es5": "tsc --module commonjs --outDir dist",
32
- "build": "npm run build:esm && npm run build:es5",
32
+ "build": "yarn build:esm && yarn build:es5",
33
33
  "postbuild": "webpack",
34
- "prepack": "npm test run && npm run build && cp dist/errors.js errors.js",
34
+ "preversion": "yarn test --run && yarn build && cp dist/errors.js errors.js",
35
35
  "postpublish": "rm errors.js",
36
36
  "postversion": "git push --follow-tags"
37
37
  },
@@ -44,16 +44,15 @@
44
44
  "dependencies": {
45
45
  "bzip2": "^0.1.1",
46
46
  "crc": "^4.3.2",
47
- "generic-filehandle2": "^0.0.2",
48
- "long": "^4.0.0",
47
+ "generic-filehandle2": "^1.0.0",
48
+ "longfn": "^1.3.1",
49
49
  "md5": "^2.2.1",
50
50
  "pako": "^1.0.4",
51
51
  "quick-lru": "^4.0.1",
52
52
  "xz-decompress": "^0.2.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@gmod/indexedfasta": "^2.1.0",
56
- "@types/long": "^4.0.0",
55
+ "@gmod/indexedfasta": "^3.0.0",
57
56
  "@types/md5": "^2.3.2",
58
57
  "@types/pako": "^1.0.3",
59
58
  "@typescript-eslint/eslint-plugin": "^8.0.0",
@@ -63,7 +62,7 @@
63
62
  "documentation": "^14.0.3",
64
63
  "eslint": "^9.9.0",
65
64
  "eslint-plugin-import": "^2.31.0",
66
- "eslint-plugin-unicorn": "^55.0.0",
65
+ "eslint-plugin-unicorn": "^56.0.1",
67
66
  "mock-fs": "^5.2.0",
68
67
  "prettier": "^3.2.5",
69
68
  "rimraf": "^6.0.1",
@@ -4,11 +4,12 @@ import QuickLRU from 'quick-lru'
4
4
  import { XzReadableStream } from 'xz-decompress'
5
5
 
6
6
  import { CramMalformedError, CramUnimplementedError } from '../errors'
7
- import htscodecs from '../htscodecs'
7
+ import * as htscodecs from '../htscodecs'
8
8
  import { open } from '../io'
9
9
  import ransuncompress from '../rans'
10
10
  import { parseHeaderText } from '../sam'
11
11
  import { unzip } from '../unzip'
12
+ import { concatUint8Array } from '../util'
12
13
  import CramContainer from './container'
13
14
  import CramRecord from './record'
14
15
  import {
@@ -17,7 +18,7 @@ import {
17
18
  cramFileDefinition,
18
19
  getSectionParsers,
19
20
  } from './sectionParsers'
20
- import { concatUint8Array, parseItem, tinyMemoize } from './util'
21
+ import { parseItem, tinyMemoize } from './util'
21
22
 
22
23
  import type { GenericFilehandle } from 'generic-filehandle2'
23
24
 
@@ -141,16 +141,14 @@ function decodeReadFeatures(
141
141
  const data = decodeDataSeries(dataSeriesName)
142
142
  if (type === 'character') {
143
143
  return String.fromCharCode(data)
144
- }
145
- if (type === 'string') {
144
+ } else if (type === 'string') {
146
145
  let r = ''
147
146
  for (let i = 0; i < data.byteLength; i++) {
148
147
  r += String.fromCharCode(data[i])
149
148
  }
150
149
  return r
151
- }
152
- if (type === 'numArray') {
153
- return data.toArray()
150
+ } else if (type === 'numArray') {
151
+ return Array.from(data)
154
152
  }
155
153
  // else if (type === 'number') {
156
154
  // return data[0]
@@ -267,6 +267,7 @@ export default class CramSlice {
267
267
 
268
268
  async getReferenceRegion() {
269
269
  // read the slice header
270
+ const decoder = new TextDecoder('utf8')
270
271
  const sliceHeader = (await this.getHeader()).parsedContent
271
272
  if (!isMappedSliceHeader(sliceHeader)) {
272
273
  throw new Error('slice header not mapped')
@@ -298,7 +299,8 @@ export default class CramSlice {
298
299
 
299
300
  // TODO verify
300
301
  return {
301
- seq: (refBlock as any).data.toString('utf8'),
302
+ // @ts-expect-error
303
+ seq: decoder.decode(refBlock.data),
302
304
  start: sliceHeader.refSeqStart,
303
305
  end: sliceHeader.refSeqStart + sliceHeader.refSeqSpan - 1,
304
306
  span: sliceHeader.refSeqSpan,