@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.
- package/dist/cram-bundle.js +1 -1
- package/dist/cramFile/file.js +43 -9
- package/dist/cramFile/file.js.map +1 -1
- package/dist/cramFile/slice/decodeRecord.js +3 -3
- package/dist/cramFile/slice/decodeRecord.js.map +1 -1
- package/dist/cramFile/slice/index.d.ts +1 -1
- package/dist/cramFile/slice/index.js +3 -1
- package/dist/cramFile/slice/index.js.map +1 -1
- package/dist/cramFile/util.d.ts +0 -2
- package/dist/cramFile/util.js +3 -31
- package/dist/cramFile/util.js.map +1 -1
- package/dist/htscodecs/arith_gen.d.ts +5 -7
- package/dist/htscodecs/arith_gen.js +122 -105
- package/dist/htscodecs/arith_gen.js.map +1 -1
- package/dist/htscodecs/arith_sh.d.ts +1 -8
- package/dist/htscodecs/arith_sh.js +16 -10
- package/dist/htscodecs/arith_sh.js.map +1 -1
- package/dist/htscodecs/byte_model.d.ts +1 -6
- package/dist/htscodecs/byte_model.js +25 -17
- package/dist/htscodecs/byte_model.js.map +1 -1
- package/dist/htscodecs/fqzcomp.d.ts +1 -1
- package/dist/htscodecs/fqzcomp.js +98 -77
- package/dist/htscodecs/fqzcomp.js.map +1 -1
- package/dist/htscodecs/index.d.ts +5 -5
- package/dist/htscodecs/index.js +53 -16
- package/dist/htscodecs/index.js.map +1 -1
- package/dist/htscodecs/iostream.d.ts +9 -20
- package/dist/htscodecs/iostream.js +21 -116
- package/dist/htscodecs/iostream.js.map +1 -1
- package/dist/htscodecs/rans.d.ts +1 -1
- package/dist/htscodecs/rans.js +65 -54
- package/dist/htscodecs/rans.js.map +1 -1
- package/dist/htscodecs/rans4x16.d.ts +1 -1
- package/dist/htscodecs/rans4x16.js +151 -111
- package/dist/htscodecs/rans4x16.js.map +1 -1
- package/dist/htscodecs/tok3.d.ts +1 -2
- package/dist/htscodecs/tok3.js +82 -239
- package/dist/htscodecs/tok3.js.map +1 -1
- package/dist/indexedCramFile.d.ts +14 -8
- package/dist/indexedCramFile.js +16 -13
- package/dist/indexedCramFile.js.map +1 -1
- package/dist/util.d.ts +1 -0
- package/dist/util.js +20 -0
- package/dist/util.js.map +1 -0
- package/esm/cramFile/file.js +3 -2
- package/esm/cramFile/file.js.map +1 -1
- package/esm/cramFile/slice/decodeRecord.js +3 -3
- package/esm/cramFile/slice/decodeRecord.js.map +1 -1
- package/esm/cramFile/slice/index.d.ts +1 -1
- package/esm/cramFile/slice/index.js +3 -1
- package/esm/cramFile/slice/index.js.map +1 -1
- package/esm/cramFile/util.d.ts +0 -2
- package/esm/cramFile/util.js +3 -29
- package/esm/cramFile/util.js.map +1 -1
- package/esm/htscodecs/arith_gen.d.ts +5 -7
- package/esm/htscodecs/arith_gen.js +108 -97
- package/esm/htscodecs/arith_gen.js.map +1 -1
- package/esm/htscodecs/arith_sh.d.ts +1 -8
- package/esm/htscodecs/arith_sh.js +14 -11
- package/esm/htscodecs/arith_sh.js.map +1 -1
- package/esm/htscodecs/byte_model.d.ts +1 -6
- package/esm/htscodecs/byte_model.js +23 -18
- package/esm/htscodecs/byte_model.js.map +1 -1
- package/esm/htscodecs/fqzcomp.d.ts +1 -1
- package/esm/htscodecs/fqzcomp.js +91 -76
- package/esm/htscodecs/fqzcomp.js.map +1 -1
- package/esm/htscodecs/index.d.ts +5 -5
- package/esm/htscodecs/index.js +14 -20
- package/esm/htscodecs/index.js.map +1 -1
- package/esm/htscodecs/iostream.d.ts +9 -20
- package/esm/htscodecs/iostream.js +19 -117
- package/esm/htscodecs/iostream.js.map +1 -1
- package/esm/htscodecs/rans.d.ts +1 -1
- package/esm/htscodecs/rans.js +61 -56
- package/esm/htscodecs/rans.js.map +1 -1
- package/esm/htscodecs/rans4x16.d.ts +1 -1
- package/esm/htscodecs/rans4x16.js +143 -109
- package/esm/htscodecs/rans4x16.js.map +1 -1
- package/esm/htscodecs/tok3.d.ts +1 -2
- package/esm/htscodecs/tok3.js +41 -237
- package/esm/htscodecs/tok3.js.map +1 -1
- package/esm/indexedCramFile.d.ts +14 -8
- package/esm/indexedCramFile.js +16 -13
- package/esm/indexedCramFile.js.map +1 -1
- package/esm/util.d.ts +1 -0
- package/esm/util.js +17 -0
- package/esm/util.js.map +1 -0
- package/package.json +8 -9
- package/src/cramFile/file.ts +3 -2
- package/src/cramFile/slice/decodeRecord.ts +3 -5
- package/src/cramFile/slice/index.ts +3 -1
- package/src/cramFile/util.ts +6 -39
- package/src/htscodecs/{arith_gen.js → arith_gen.ts} +133 -95
- package/src/htscodecs/{arith_sh.js → arith_sh.ts} +17 -9
- package/src/htscodecs/{byte_model.js → byte_model.ts} +26 -16
- package/src/htscodecs/{fqzcomp.js → fqzcomp.ts} +108 -74
- package/src/htscodecs/{index.js → index.ts} +14 -20
- package/src/htscodecs/iostream.ts +159 -0
- package/src/htscodecs/{rans.js → rans.ts} +73 -56
- package/src/htscodecs/{rans4x16.js → rans4x16.ts} +180 -111
- package/src/htscodecs/tok3.ts +197 -0
- package/src/indexedCramFile.ts +24 -17
- package/src/util.ts +16 -0
- package/src/htscodecs/iostream.js +0 -257
- package/src/htscodecs/tok3.js +0 -413
package/esm/htscodecs/tok3.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
76
|
-
|
|
61
|
+
let t = -1;
|
|
62
|
+
const B = new Array(256);
|
|
77
63
|
while (!src.EOF()) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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
|
-
|
|
92
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if (
|
|
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
|
-
|
|
312
|
-
|
|
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
|
-
|
|
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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"}
|
package/esm/indexedCramFile.d.ts
CHANGED
|
@@ -19,10 +19,17 @@ export default class IndexedCramFile {
|
|
|
19
19
|
*
|
|
20
20
|
* @param {object} args
|
|
21
21
|
* @param {CramFile} args.cram
|
|
22
|
-
*
|
|
23
|
-
* @param {
|
|
24
|
-
*
|
|
25
|
-
*
|
|
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
|
|
40
|
-
* @param
|
|
41
|
-
* @param
|
|
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;
|
package/esm/indexedCramFile.js
CHANGED
|
@@ -5,13 +5,19 @@ export default class IndexedCramFile {
|
|
|
5
5
|
*
|
|
6
6
|
* @param {object} args
|
|
7
7
|
* @param {CramFile} args.cram
|
|
8
|
-
*
|
|
9
|
-
* @param {
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
|
33
|
-
* @param
|
|
34
|
-
* @param
|
|
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
|
|
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":"AACA,OAAO,QAAQ,MAAM,YAAY,CAAA;AAGjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAmBjD,MAAM,CAAC,OAAO,OAAO,eAAe;IAIlC
|
|
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
|
package/esm/util.js.map
ADDED
|
@@ -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.
|
|
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": "
|
|
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": "
|
|
32
|
+
"build": "yarn build:esm && yarn build:es5",
|
|
33
33
|
"postbuild": "webpack",
|
|
34
|
-
"
|
|
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
|
|
48
|
-
"
|
|
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": "^
|
|
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": "^
|
|
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",
|
package/src/cramFile/file.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
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,
|