@gmod/cram 7.0.3 → 8.0.1
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/codecs/beta.js +27 -3
- package/dist/cramFile/codecs/beta.js.map +1 -1
- package/dist/cramFile/codecs/external.d.ts +1 -0
- package/dist/cramFile/codecs/external.js +15 -0
- package/dist/cramFile/codecs/external.js.map +1 -1
- package/dist/cramFile/codecs/gamma.js +44 -8
- package/dist/cramFile/codecs/gamma.js.map +1 -1
- package/dist/cramFile/codecs/getBits.js +18 -2
- package/dist/cramFile/codecs/getBits.js.map +1 -1
- package/dist/cramFile/codecs/huffman.js +37 -3
- package/dist/cramFile/codecs/huffman.js.map +1 -1
- package/dist/cramFile/codecs/subexp.js +37 -15
- package/dist/cramFile/codecs/subexp.js.map +1 -1
- package/dist/cramFile/file.d.ts +1 -0
- package/dist/cramFile/file.js +44 -1
- package/dist/cramFile/file.js.map +1 -1
- package/dist/cramFile/record.d.ts +12 -1
- package/dist/cramFile/record.js +18 -5
- package/dist/cramFile/record.js.map +1 -1
- package/dist/cramFile/slice/decodeRecord.d.ts +4 -3
- package/dist/cramFile/slice/decodeRecord.js +95 -53
- package/dist/cramFile/slice/decodeRecord.js.map +1 -1
- package/dist/cramFile/slice/index.d.ts +3 -3
- package/dist/cramFile/slice/index.js +82 -9
- package/dist/cramFile/slice/index.js.map +1 -1
- package/dist/indexedCramFile.d.ts +3 -3
- package/dist/indexedCramFile.js +12 -9
- package/dist/indexedCramFile.js.map +1 -1
- package/dist/wasm/htscodecs.js +0 -0
- package/dist/wasm/htscodecs.js.map +1 -1
- package/dist/wasm/noodles-cram/noodles_cram_wasm.d.ts +1 -0
- package/dist/wasm/noodles-cram/noodles_cram_wasm.js +44 -0
- package/dist/wasm/noodles-cram/noodles_cram_wasm.js.map +1 -0
- package/dist/wasm/noodles-cram/noodles_cram_wasm_bg.d.ts +94 -0
- package/dist/wasm/noodles-cram/noodles_cram_wasm_bg.js +578 -0
- package/dist/wasm/noodles-cram/noodles_cram_wasm_bg.js.map +1 -0
- package/esm/cramFile/codecs/beta.js +27 -3
- package/esm/cramFile/codecs/beta.js.map +1 -1
- package/esm/cramFile/codecs/external.d.ts +1 -0
- package/esm/cramFile/codecs/external.js +15 -0
- package/esm/cramFile/codecs/external.js.map +1 -1
- package/esm/cramFile/codecs/gamma.js +43 -7
- package/esm/cramFile/codecs/gamma.js.map +1 -1
- package/esm/cramFile/codecs/getBits.js +18 -2
- package/esm/cramFile/codecs/getBits.js.map +1 -1
- package/esm/cramFile/codecs/huffman.js +37 -3
- package/esm/cramFile/codecs/huffman.js.map +1 -1
- package/esm/cramFile/codecs/subexp.js +36 -14
- package/esm/cramFile/codecs/subexp.js.map +1 -1
- package/esm/cramFile/file.d.ts +1 -0
- package/esm/cramFile/file.js +44 -1
- package/esm/cramFile/file.js.map +1 -1
- package/esm/cramFile/record.d.ts +12 -1
- package/esm/cramFile/record.js +17 -4
- package/esm/cramFile/record.js.map +1 -1
- package/esm/cramFile/slice/decodeRecord.d.ts +4 -3
- package/esm/cramFile/slice/decodeRecord.js +95 -53
- package/esm/cramFile/slice/decodeRecord.js.map +1 -1
- package/esm/cramFile/slice/index.d.ts +3 -3
- package/esm/cramFile/slice/index.js +49 -9
- package/esm/cramFile/slice/index.js.map +1 -1
- package/esm/indexedCramFile.d.ts +3 -3
- package/esm/indexedCramFile.js +12 -9
- package/esm/indexedCramFile.js.map +1 -1
- package/esm/wasm/htscodecs.js +0 -0
- package/esm/wasm/htscodecs.js.map +1 -1
- package/esm/wasm/noodles-cram/noodles_cram_wasm.d.ts +1 -0
- package/esm/wasm/noodles-cram/noodles_cram_wasm.js +6 -0
- package/esm/wasm/noodles-cram/noodles_cram_wasm.js.map +1 -0
- package/esm/wasm/noodles-cram/noodles_cram_wasm_bg.d.ts +94 -0
- package/esm/wasm/noodles-cram/noodles_cram_wasm_bg.js +529 -0
- package/esm/wasm/noodles-cram/noodles_cram_wasm_bg.js.map +1 -0
- package/package.json +8 -6
- package/src/cramFile/codecs/beta.ts +38 -4
- package/src/cramFile/codecs/external.ts +25 -0
- package/src/cramFile/codecs/gamma.ts +54 -12
- package/src/cramFile/codecs/getBits.ts +21 -2
- package/src/cramFile/codecs/huffman.ts +45 -3
- package/src/cramFile/codecs/subexp.ts +53 -16
- package/src/cramFile/file.ts +83 -1
- package/src/cramFile/record.ts +25 -5
- package/src/cramFile/slice/decodeRecord.ts +107 -55
- package/src/cramFile/slice/index.ts +82 -11
- package/src/indexedCramFile.ts +35 -27
- package/src/wasm/htscodecs.js +0 -0
- package/src/wasm/noodles-cram/.gitignore +1 -0
- package/src/wasm/noodles-cram/noodles_cram_wasm.d.ts +42 -0
- package/src/wasm/noodles-cram/noodles_cram_wasm.js +5 -0
- package/src/wasm/noodles-cram/noodles_cram_wasm_bg.js +541 -0
- package/src/wasm/noodles-cram/noodles_cram_wasm_bg.wasm +0 -0
- package/src/wasm/noodles-cram/noodles_cram_wasm_bg.wasm.d.ts +18 -0
- package/src/wasm/noodles-cram/package.json +17 -0
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const _base_ts_1 = __importDefault(require("./_base.js"));
|
|
7
|
-
const getBits_ts_1 = require("./getBits.js");
|
|
8
7
|
const errors_ts_1 = require("../../errors.js");
|
|
9
8
|
class BetaCodec extends _base_ts_1.default {
|
|
10
9
|
constructor(parameters, dataType) {
|
|
@@ -14,9 +13,34 @@ class BetaCodec extends _base_ts_1.default {
|
|
|
14
13
|
}
|
|
15
14
|
}
|
|
16
15
|
decode(_slice, coreDataBlock, _blocksByContentId, cursors) {
|
|
17
|
-
|
|
18
|
-
return fromBits - this.parameters.offset;
|
|
16
|
+
return decodeBetaInline(coreDataBlock.content, cursors.coreBlock, this.parameters.length, this.parameters.offset);
|
|
19
17
|
}
|
|
20
18
|
}
|
|
21
19
|
exports.default = BetaCodec;
|
|
20
|
+
/**
|
|
21
|
+
* Optimized beta decoder with inlined bit reading.
|
|
22
|
+
*/
|
|
23
|
+
function decodeBetaInline(data, cursor, numBits, offset) {
|
|
24
|
+
let { bytePosition, bitPosition } = cursor;
|
|
25
|
+
// Fast path: reading exactly 8 bits when byte-aligned
|
|
26
|
+
if (numBits === 8 && bitPosition === 7) {
|
|
27
|
+
const val = data[bytePosition];
|
|
28
|
+
cursor.bytePosition = bytePosition + 1;
|
|
29
|
+
return val - offset;
|
|
30
|
+
}
|
|
31
|
+
// General case
|
|
32
|
+
let val = 0;
|
|
33
|
+
for (let i = 0; i < numBits; i++) {
|
|
34
|
+
val <<= 1;
|
|
35
|
+
val |= (data[bytePosition] >> bitPosition) & 1;
|
|
36
|
+
bitPosition -= 1;
|
|
37
|
+
if (bitPosition < 0) {
|
|
38
|
+
bytePosition += 1;
|
|
39
|
+
bitPosition = 7;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
cursor.bytePosition = bytePosition;
|
|
43
|
+
cursor.bitPosition = bitPosition;
|
|
44
|
+
return val - offset;
|
|
45
|
+
}
|
|
22
46
|
//# sourceMappingURL=beta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beta.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/beta.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"beta.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/beta.ts"],"names":[],"mappings":";;;;;AAAA,0DAAuD;AACvD,+CAAwD;AAKxD,MAAqB,SAAU,SAAQ,kBAGtC;IACC,YAAY,UAAsC,EAAE,QAAe;QACjE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,kCAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,6CAA6C,CAC9D,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,MAAiB,EACjB,aAA4B,EAC5B,kBAAiD,EACjD,OAAgB;QAEhB,OAAO,gBAAgB,CACrB,aAAa,CAAC,OAAO,EACrB,OAAO,CAAC,SAAS,EACjB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CACvB,CAAA;IACH,CAAC;CACF;AA1BD,4BA0BC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,IAAgB,EAChB,MAAc,EACd,OAAe,EACf,MAAc;IAEd,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAE1C,sDAAsD;IACtD,IAAI,OAAO,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAE,CAAA;QAC/B,MAAM,CAAC,YAAY,GAAG,YAAY,GAAG,CAAC,CAAA;QACtC,OAAO,GAAG,GAAG,MAAM,CAAA;IACrB,CAAC;IAED,eAAe;IACf,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,GAAG,KAAK,CAAC,CAAA;QACT,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QAC/C,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,YAAY,IAAI,CAAC,CAAA;YACjB,WAAW,GAAG,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,OAAO,GAAG,GAAG,MAAM,CAAA;AACrB,CAAC"}
|
|
@@ -5,4 +5,5 @@ import { ExternalCramEncoding } from '../encoding.ts';
|
|
|
5
5
|
export default class ExternalCodec extends CramCodec<'int' | 'byte', ExternalCramEncoding['parameters']> {
|
|
6
6
|
constructor(parameters: ExternalCramEncoding['parameters'], dataType: 'int' | 'byte');
|
|
7
7
|
decode(_slice: CramSlice, _coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): number | undefined;
|
|
8
|
+
getBytesSubarray(blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors, length: number): Uint8Array | undefined;
|
|
8
9
|
}
|
|
@@ -33,6 +33,21 @@ class ExternalCodec extends _base_ts_1.default {
|
|
|
33
33
|
return contentBlock.content[cursor.bytePosition++];
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
+
getBytesSubarray(blocksByContentId, cursors, length) {
|
|
37
|
+
const { blockContentId } = this.parameters;
|
|
38
|
+
const contentBlock = blocksByContentId[blockContentId];
|
|
39
|
+
if (!contentBlock) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const cursor = cursors.externalBlocks.getCursor(blockContentId);
|
|
43
|
+
const start = cursor.bytePosition;
|
|
44
|
+
const end = start + length;
|
|
45
|
+
if (end > contentBlock.content.length) {
|
|
46
|
+
throw new getBits_ts_1.CramBufferOverrunError('attempted to read beyond end of block. this file seems truncated.');
|
|
47
|
+
}
|
|
48
|
+
cursor.bytePosition = end;
|
|
49
|
+
return contentBlock.content.subarray(start, end);
|
|
50
|
+
}
|
|
36
51
|
}
|
|
37
52
|
exports.default = ExternalCodec;
|
|
38
53
|
//# sourceMappingURL=external.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/external.ts"],"names":[],"mappings":";;;;;AAAA,0DAA+C;AAC/C,+CAAwD;AAGxD,wCAAsC;AACtC,6CAAqD;AAGrD,MAAqB,aAAc,SAAQ,kBAG1C;IACC,YACE,UAA8C,EAC9C,QAAwB;QAExB,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxD,MAAM,IAAI,kCAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,iDAAiD,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,MAAiB,EACjB,cAA6B,EAC7B,iBAAgD,EAChD,OAAgB;QAEhB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAE/D,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,mBAAS,EACnC,YAAY,CAAC,OAAO,EACpB,MAAM,CAAC,YAAY,CACpB,CAAA;YACD,MAAM,CAAC,YAAY,IAAI,SAAS,CAAA;YAChC,OAAO,MAAM,CAAA;QACf,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvD,MAAM,IAAI,mCAAsB,CAC9B,mEAAmE,CACpE,CAAA;YACH,CAAC;YACD,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAE,CAAA;QACrD,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/external.ts"],"names":[],"mappings":";;;;;AAAA,0DAA+C;AAC/C,+CAAwD;AAGxD,wCAAsC;AACtC,6CAAqD;AAGrD,MAAqB,aAAc,SAAQ,kBAG1C;IACC,YACE,UAA8C,EAC9C,QAAwB;QAExB,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxD,MAAM,IAAI,kCAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,iDAAiD,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,MAAiB,EACjB,cAA6B,EAC7B,iBAAgD,EAChD,OAAgB;QAEhB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAE/D,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,mBAAS,EACnC,YAAY,CAAC,OAAO,EACpB,MAAM,CAAC,YAAY,CACpB,CAAA;YACD,MAAM,CAAC,YAAY,IAAI,SAAS,CAAA;YAChC,OAAO,MAAM,CAAA;QACf,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvD,MAAM,IAAI,mCAAsB,CAC9B,mEAAmE,CACpE,CAAA;YACH,CAAC;YACD,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAE,CAAA;QACrD,CAAC;IACH,CAAC;IAED,gBAAgB,CACd,iBAAgD,EAChD,OAAgB,EAChB,MAAc;QAEd,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAA;QACjC,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAA;QAE1B,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,mCAAsB,CAC9B,mEAAmE,CACpE,CAAA;QACH,CAAC;QAED,MAAM,CAAC,YAAY,GAAG,GAAG,CAAA;QACzB,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAClD,CAAC;CACF;AAvED,gCAuEC"}
|
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const _base_ts_1 = __importDefault(require("./_base.js"));
|
|
7
|
-
const getBits_ts_1 = require("./getBits.js");
|
|
8
7
|
const errors_ts_1 = require("../../errors.js");
|
|
9
8
|
class GammaCodec extends _base_ts_1.default {
|
|
10
9
|
constructor(parameters, dataType) {
|
|
@@ -14,14 +13,51 @@ class GammaCodec extends _base_ts_1.default {
|
|
|
14
13
|
}
|
|
15
14
|
}
|
|
16
15
|
decode(_slice, coreDataBlock, _blocksByContentId, cursors) {
|
|
17
|
-
|
|
18
|
-
while ((0, getBits_ts_1.getBits)(coreDataBlock.content, cursors.coreBlock, 1) === 0) {
|
|
19
|
-
length = length + 1;
|
|
20
|
-
}
|
|
21
|
-
const readBits = (0, getBits_ts_1.getBits)(coreDataBlock.content, cursors.coreBlock, length - 1);
|
|
22
|
-
const value = readBits | (1 << (length - 1));
|
|
23
|
-
return value - this.parameters.offset;
|
|
16
|
+
return decodeGammaInline(coreDataBlock.content, cursors.coreBlock, this.parameters.offset);
|
|
24
17
|
}
|
|
25
18
|
}
|
|
26
19
|
exports.default = GammaCodec;
|
|
20
|
+
/**
|
|
21
|
+
* Optimized gamma decoder with inlined bit reading.
|
|
22
|
+
* Avoids function call overhead by inlining the getBits logic.
|
|
23
|
+
*/
|
|
24
|
+
function decodeGammaInline(data, cursor, offset) {
|
|
25
|
+
let { bytePosition, bitPosition } = cursor;
|
|
26
|
+
let length = 1;
|
|
27
|
+
// Count leading zeros (each 0 bit increases length)
|
|
28
|
+
// Inline single-bit reads for the while loop
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
30
|
+
while (true) {
|
|
31
|
+
const bit = (data[bytePosition] >> bitPosition) & 1;
|
|
32
|
+
bitPosition -= 1;
|
|
33
|
+
if (bitPosition < 0) {
|
|
34
|
+
bytePosition += 1;
|
|
35
|
+
bitPosition = 7;
|
|
36
|
+
}
|
|
37
|
+
if (bit === 1) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
length += 1;
|
|
41
|
+
}
|
|
42
|
+
// Now read (length - 1) more bits for the value
|
|
43
|
+
let readBits = 0;
|
|
44
|
+
const bitsToRead = length - 1;
|
|
45
|
+
if (bitsToRead > 0) {
|
|
46
|
+
// Optimized multi-bit read
|
|
47
|
+
for (let i = 0; i < bitsToRead; i++) {
|
|
48
|
+
readBits <<= 1;
|
|
49
|
+
readBits |= (data[bytePosition] >> bitPosition) & 1;
|
|
50
|
+
bitPosition -= 1;
|
|
51
|
+
if (bitPosition < 0) {
|
|
52
|
+
bytePosition += 1;
|
|
53
|
+
bitPosition = 7;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Update cursor
|
|
58
|
+
cursor.bytePosition = bytePosition;
|
|
59
|
+
cursor.bitPosition = bitPosition;
|
|
60
|
+
const value = readBits | (1 << (length - 1));
|
|
61
|
+
return value - offset;
|
|
62
|
+
}
|
|
27
63
|
//# sourceMappingURL=gamma.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gamma.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/gamma.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"gamma.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/gamma.ts"],"names":[],"mappings":";;;;;AAAA,0DAAuD;AACvD,+CAAwD;AAKxD,MAAqB,UAAW,SAAQ,kBAGvC;IACC,YAAY,UAAuC,EAAE,QAAe;QAClE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,kCAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,8CAA8C,CAC/D,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,MAAiB,EACjB,aAA4B,EAC5B,kBAAiD,EACjD,OAAgB;QAEhB,OAAO,iBAAiB,CACtB,aAAa,CAAC,OAAO,EACrB,OAAO,CAAC,SAAS,EACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CACvB,CAAA;IACH,CAAC;CACF;AAzBD,6BAyBC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,IAAgB,EAChB,MAAc,EACd,MAAc;IAEd,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,oDAAoD;IACpD,6CAA6C;IAC7C,uEAAuE;IACvE,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QACpD,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,YAAY,IAAI,CAAC,CAAA;YACjB,WAAW,GAAG,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,MAAK;QACP,CAAC;QACD,MAAM,IAAI,CAAC,CAAA;IACb,CAAC;IAED,gDAAgD;IAChD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAA;IAC7B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,2BAA2B;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,QAAQ,KAAK,CAAC,CAAA;YACd,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;YACpD,WAAW,IAAI,CAAC,CAAA;YAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,YAAY,IAAI,CAAC,CAAA;gBACjB,WAAW,GAAG,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,MAAM,CAAC,WAAW,GAAG,WAAoC,CAAA;IAEzD,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5C,OAAO,KAAK,GAAG,MAAM,CAAA;AACvB,CAAC"}
|
|
@@ -6,13 +6,29 @@ class CramBufferOverrunError extends Error {
|
|
|
6
6
|
}
|
|
7
7
|
exports.CramBufferOverrunError = CramBufferOverrunError;
|
|
8
8
|
function getBits(data, cursor, numBits) {
|
|
9
|
-
let val = 0;
|
|
10
9
|
if (cursor.bytePosition + (7 - cursor.bitPosition + numBits) / 8 >
|
|
11
10
|
data.length) {
|
|
12
11
|
throw new CramBufferOverrunError('read error during decoding. the file seems to be truncated.');
|
|
13
12
|
}
|
|
13
|
+
// Fast path: reading exactly 8 bits when byte-aligned
|
|
14
|
+
if (numBits === 8 && cursor.bitPosition === 7) {
|
|
15
|
+
const val = data[cursor.bytePosition];
|
|
16
|
+
cursor.bytePosition += 1;
|
|
17
|
+
return val;
|
|
18
|
+
}
|
|
19
|
+
// Fast path: reading exactly 1 bit
|
|
20
|
+
if (numBits === 1) {
|
|
21
|
+
const val = (data[cursor.bytePosition] >> cursor.bitPosition) & 1;
|
|
22
|
+
cursor.bitPosition -= 1;
|
|
23
|
+
if (cursor.bitPosition < 0) {
|
|
24
|
+
cursor.bytePosition += 1;
|
|
25
|
+
cursor.bitPosition = 7;
|
|
26
|
+
}
|
|
27
|
+
return val;
|
|
28
|
+
}
|
|
29
|
+
// General case: bit-by-bit loop
|
|
30
|
+
let val = 0;
|
|
14
31
|
for (let dlen = numBits; dlen; dlen--) {
|
|
15
|
-
// get the next `dlen` bits in the input, put them in val
|
|
16
32
|
val <<= 1;
|
|
17
33
|
val |= (data[cursor.bytePosition] >> cursor.bitPosition) & 1;
|
|
18
34
|
cursor.bitPosition -= 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBits.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/getBits.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"getBits.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/getBits.ts"],"names":[],"mappings":";;;AAEA,0BA4CC;AA9CD,MAAa,sBAAuB,SAAQ,KAAK;CAAG;AAApD,wDAAoD;AAEpD,SAAgB,OAAO,CACrB,IAAgB,EAChB,MAAqD,EACrD,OAAe;IAEf,IACE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5D,IAAI,CAAC,MAAM,EACX,CAAC;QACD,MAAM,IAAI,sBAAsB,CAC9B,6DAA6D,CAC9D,CAAA;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAE,CAAA;QACtC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAA;QACxB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAE,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAClE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAA;QACvB,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAA;YACxB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,gCAAgC;IAChC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACtC,GAAG,KAAK,CAAC,CAAA;QACT,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAE,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC7D,MAAM,CAAC,WAAW,IAAI,CAAC,CAAA;QACvB,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAA;QAC1B,CAAC;QACD,MAAM,CAAC,WAAW,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -4,8 +4,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const _base_ts_1 = __importDefault(require("./_base.js"));
|
|
7
|
-
const getBits_ts_1 = require("./getBits.js");
|
|
8
7
|
const errors_ts_1 = require("../../errors.js");
|
|
8
|
+
/**
|
|
9
|
+
* Inlined getBits for huffman decoding - avoids function call overhead
|
|
10
|
+
*/
|
|
11
|
+
function getBitsInline(data, cursor, numBits) {
|
|
12
|
+
let { bytePosition, bitPosition } = cursor;
|
|
13
|
+
// Fast path for single bit (common in huffman)
|
|
14
|
+
if (numBits === 1) {
|
|
15
|
+
const val = (data[bytePosition] >> bitPosition) & 1;
|
|
16
|
+
bitPosition -= 1;
|
|
17
|
+
if (bitPosition < 0) {
|
|
18
|
+
bytePosition += 1;
|
|
19
|
+
bitPosition = 7;
|
|
20
|
+
}
|
|
21
|
+
cursor.bytePosition = bytePosition;
|
|
22
|
+
cursor.bitPosition = bitPosition;
|
|
23
|
+
return val;
|
|
24
|
+
}
|
|
25
|
+
// General case
|
|
26
|
+
let val = 0;
|
|
27
|
+
for (let i = 0; i < numBits; i++) {
|
|
28
|
+
val <<= 1;
|
|
29
|
+
val |= (data[bytePosition] >> bitPosition) & 1;
|
|
30
|
+
bitPosition -= 1;
|
|
31
|
+
if (bitPosition < 0) {
|
|
32
|
+
bytePosition += 1;
|
|
33
|
+
bitPosition = 7;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
cursor.bytePosition = bytePosition;
|
|
37
|
+
cursor.bitPosition = bitPosition;
|
|
38
|
+
return val;
|
|
39
|
+
}
|
|
9
40
|
function numberOfSetBits(ii) {
|
|
10
41
|
let i = (ii - (ii >> 1)) & 0x55555555;
|
|
11
42
|
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
|
|
@@ -103,8 +134,11 @@ class HuffmanIntCodec extends _base_ts_1.default {
|
|
|
103
134
|
let bits = 0;
|
|
104
135
|
for (let i = 0; i < this.sortedCodes.length; i += 1) {
|
|
105
136
|
const length = this.sortedCodes[i].bitLength;
|
|
106
|
-
|
|
107
|
-
|
|
137
|
+
const bitsToRead = length - prevLen;
|
|
138
|
+
if (bitsToRead > 0) {
|
|
139
|
+
bits <<= bitsToRead;
|
|
140
|
+
bits |= getBitsInline(input, coreCursor, bitsToRead);
|
|
141
|
+
}
|
|
108
142
|
prevLen = length;
|
|
109
143
|
{
|
|
110
144
|
const index = this.bitCodeToValue[bits];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huffman.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/huffman.ts"],"names":[],"mappings":";;;;;AAAA,0DAAuD;AACvD
|
|
1
|
+
{"version":3,"file":"huffman.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/huffman.ts"],"names":[],"mappings":";;;;;AAAA,0DAAuD;AACvD,+CAAoD;AAKpD;;GAEG;AACH,SAAS,aAAa,CACpB,IAAgB,EAChB,MAAc,EACd,OAAe;IAEf,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAE1C,+CAA+C;IAC/C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QACpD,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,YAAY,IAAI,CAAC,CAAA;YACjB,WAAW,GAAG,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;QAClC,MAAM,CAAC,WAAW,GAAG,WAAoC,CAAA;QACzD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,eAAe;IACf,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,GAAG,KAAK,CAAC,CAAA;QACT,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QAC/C,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,YAAY,IAAI,CAAC,CAAA;YACjB,WAAW,GAAG,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;IACrC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA;IAC9C,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAA;AAC3D,CAAC;AAQD,MAAqB,eAAgB,SAAQ,kBAG5C;IASC,YACE,UAAyC,EACzC,QAAwB;QAExB,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAZrB,UAAK,GAAyB,EAAE,CAAA;QAChC,aAAQ,GAA6B,EAAE,CAAA;QACvC,gBAAW,GAAW,EAAE,CAAA;QACxB,0BAAqB,GAAa,EAAE,CAAA;QACpC,mBAAc,GAAa,EAAE,CAAA;QAC7B,8BAAyB,GAAa,EAAE,CAAA;QACxC,mBAAc,GAAa,EAAE,CAAA;QAOnC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,SAAS,CACjB,GAAG,IAAI,CAAC,QAAQ,oDAAoD,CACrE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,qEAAqE;QACrE,WAAW;QACX,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,aAAa;QACX,8DAA8D;QAC9D,IAAI,KAAK,GAAG,IAAI,KAAK,CACnB,IAAI,CAAC,UAAU,CAAC,QAAQ,CACzB,CAAA;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,KAAK,CAAC,CAAC,CAAC,GAAG;gBACT,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE;gBACnC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAE;aAC1C,CAAA;QACH,CAAC;QACD,gDAAgD;QAChD,KAAK,GAAG,KAAK,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC3D,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;YACpC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA,CAAC,8CAA8C;QAC9D,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;QAClB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE;YAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YACnD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvB,MAAM,IAAI,GAAG;oBACX,SAAS,EAAE,YAAY;oBACvB,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,CAAC;iBACX,CAAA;gBACD,SAAS,GAAG,SAAS,GAAG,CAAC,CAAA;gBACzB,MAAM,KAAK,GAAG,YAAY,GAAG,UAAU,CAAA,CAAC,cAAc;gBACtD,SAAS,GAAG,SAAS,IAAI,KAAK,CAAA,CAAC,eAAe;gBAC9C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA,CAAC,2BAA2B;gBACpD,UAAU,GAAG,UAAU,GAAG,KAAK,CAAA,CAAC,6BAA6B;gBAE7D,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;oBAC9C,MAAM,IAAI,8BAAkB,CAAC,qBAAqB,CAAC,CAAA;gBACrD,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;YAC3B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,WAAW;QACT,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAC7D,CAAA;QAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAC1D,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAA;QAEnD,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,kBAAiD,EACjD,OAAgB;QAEhB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9D,CAAC;IAED,kBAAkB;IAClB,cAAc;IACd,IAAI;IAEJ,yCAAyC;IACzC,qBAAqB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,KAAK,CAAA;IACnC,CAAC;IAED,OAAO,CAAC,MAAiB,EAAE,aAA4B,EAAE,UAAkB;QACzE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAA;QAEnC,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,SAAS,CAAA;YAC7C,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;YACnC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,KAAK,UAAU,CAAA;gBACnB,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;YACtD,CAAC;YACD,OAAO,GAAG,MAAM,CAAA;YAChB,CAAC;gBACC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAE,CAAA;gBACxC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;oBACnE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAE,CAAA;gBAC3C,CAAC;gBAED,KACE,IAAI,CAAC,GAAG,CAAC,EACT,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,SAAS,KAAK,MAAM;oBAC7C,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAC3B,CAAC,IAAI,CAAC,EACN,CAAC;oBACD,CAAC,IAAI,CAAC,CAAA;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,8BAAkB,CAAC,2BAA2B,CAAC,CAAA;IAC3D,CAAC;CACF;AAvJD,kCAuJC"}
|
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const _base_ts_1 = __importDefault(require("./_base.js"));
|
|
7
|
-
const getBits_ts_1 = require("./getBits.js");
|
|
8
7
|
const errors_ts_1 = require("../../errors.js");
|
|
9
8
|
class SubexpCodec extends _base_ts_1.default {
|
|
10
9
|
constructor(parameters, dataType) {
|
|
@@ -14,23 +13,46 @@ class SubexpCodec extends _base_ts_1.default {
|
|
|
14
13
|
}
|
|
15
14
|
}
|
|
16
15
|
decode(_slice, coreDataBlock, _blocksByContentId, cursors) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
return decodeSubexpInline(coreDataBlock.content, cursors.coreBlock, this.parameters.K, this.parameters.offset);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = SubexpCodec;
|
|
20
|
+
/**
|
|
21
|
+
* Optimized subexp decoder with inlined bit reading.
|
|
22
|
+
*/
|
|
23
|
+
function decodeSubexpInline(data, cursor, K, offset) {
|
|
24
|
+
let { bytePosition, bitPosition } = cursor;
|
|
25
|
+
// Count leading ones (inline single-bit reads)
|
|
26
|
+
let numLeadingOnes = 0;
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
28
|
+
while (true) {
|
|
29
|
+
const bit = (data[bytePosition] >> bitPosition) & 1;
|
|
30
|
+
bitPosition -= 1;
|
|
31
|
+
if (bitPosition < 0) {
|
|
32
|
+
bytePosition += 1;
|
|
33
|
+
bitPosition = 7;
|
|
20
34
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (numLeadingOnes === 0) {
|
|
24
|
-
b = this.parameters.K;
|
|
25
|
-
n = (0, getBits_ts_1.getBits)(coreDataBlock.content, cursors.coreBlock, b);
|
|
35
|
+
if (bit === 0) {
|
|
36
|
+
break;
|
|
26
37
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
numLeadingOnes += 1;
|
|
39
|
+
}
|
|
40
|
+
// Determine how many bits to read for the value
|
|
41
|
+
const b = numLeadingOnes === 0 ? K : numLeadingOnes + K - 1;
|
|
42
|
+
// Read b bits
|
|
43
|
+
let bits = 0;
|
|
44
|
+
for (let i = 0; i < b; i++) {
|
|
45
|
+
bits <<= 1;
|
|
46
|
+
bits |= (data[bytePosition] >> bitPosition) & 1;
|
|
47
|
+
bitPosition -= 1;
|
|
48
|
+
if (bitPosition < 0) {
|
|
49
|
+
bytePosition += 1;
|
|
50
|
+
bitPosition = 7;
|
|
31
51
|
}
|
|
32
|
-
return n - this.parameters.offset;
|
|
33
52
|
}
|
|
53
|
+
cursor.bytePosition = bytePosition;
|
|
54
|
+
cursor.bitPosition = bitPosition;
|
|
55
|
+
const n = numLeadingOnes === 0 ? bits : (1 << b) | bits;
|
|
56
|
+
return n - offset;
|
|
34
57
|
}
|
|
35
|
-
exports.default = SubexpCodec;
|
|
36
58
|
//# sourceMappingURL=subexp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subexp.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/subexp.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"subexp.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/subexp.ts"],"names":[],"mappings":";;;;;AAAA,0DAAuD;AACvD,+CAAwD;AAKxD,MAAqB,WAAY,SAAQ,kBAGxC;IACC,YAAY,UAAwC,EAAE,QAAe;QACnE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,kCAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,+CAA+C,CAChE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,MAAiB,EACjB,aAA4B,EAC5B,kBAAiD,EACjD,OAAgB;QAEhB,OAAO,kBAAkB,CACvB,aAAa,CAAC,OAAO,EACrB,OAAO,CAAC,SAAS,EACjB,IAAI,CAAC,UAAU,CAAC,CAAC,EACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CACvB,CAAA;IACH,CAAC;CACF;AA1BD,8BA0BC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,IAAgB,EAChB,MAAc,EACd,CAAS,EACT,MAAc;IAEd,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAE1C,+CAA+C;IAC/C,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,uEAAuE;IACvE,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QACpD,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,YAAY,IAAI,CAAC,CAAA;YACjB,WAAW,GAAG,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,MAAK;QACP,CAAC;QACD,cAAc,IAAI,CAAC,CAAA;IACrB,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAA;IAE3D,cAAc;IACd,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,CAAA;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QAChD,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,YAAY,IAAI,CAAC,CAAA;YACjB,WAAW,GAAG,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,MAAM,CAAC,WAAW,GAAG,WAAoC,CAAA;IAEzD,MAAM,CAAC,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;IACvD,OAAO,CAAC,GAAG,MAAM,CAAA;AACnB,CAAC"}
|
package/dist/cramFile/file.d.ts
CHANGED
|
@@ -75,4 +75,5 @@ export default class CramFile {
|
|
|
75
75
|
_uncompressPre(compressionMethod: CompressionMethod, inputBuffer: Uint8Array, uncompressedSize: number): Promise<Uint8Array<ArrayBufferLike>>;
|
|
76
76
|
_uncompress(compressionMethod: CompressionMethod, inputBuffer: Uint8Array, uncompressedSize: number): Promise<Uint8Array<ArrayBufferLike>>;
|
|
77
77
|
readBlock(position: number): Promise<CramFileBlock>;
|
|
78
|
+
readBlockFromBuffer(buffer: Uint8Array, bufferOffset: number, filePosition: number): Promise<CramFileBlock>;
|
|
78
79
|
}
|
package/dist/cramFile/file.js
CHANGED
|
@@ -36,8 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const crc32_1 = __importDefault(require("crc/calculators/crc32"));
|
|
40
39
|
const quick_lru_1 = __importDefault(require("@jbrowse/quick-lru"));
|
|
40
|
+
const crc32_1 = __importDefault(require("crc/calculators/crc32"));
|
|
41
41
|
const errors_ts_1 = require("../errors.js");
|
|
42
42
|
const htscodecs = __importStar(require("../htscodecs/index.js"));
|
|
43
43
|
const io_ts_1 = require("../io.js");
|
|
@@ -299,6 +299,49 @@ class CramFile {
|
|
|
299
299
|
}
|
|
300
300
|
return block;
|
|
301
301
|
}
|
|
302
|
+
async readBlockFromBuffer(buffer, bufferOffset, filePosition) {
|
|
303
|
+
const { majorVersion } = await this.getDefinition();
|
|
304
|
+
if (!this._sectionParsers) {
|
|
305
|
+
this._sectionParsers = (0, sectionParsers_ts_1.getSectionParsers)(majorVersion);
|
|
306
|
+
}
|
|
307
|
+
const sectionParsers = this._sectionParsers;
|
|
308
|
+
const { cramBlockHeader } = sectionParsers;
|
|
309
|
+
const headerBytes = buffer.subarray(bufferOffset, bufferOffset + cramBlockHeader.maxLength);
|
|
310
|
+
const blockHeader = (0, util_ts_1.parseItem)(headerBytes, cramBlockHeader.parser, 0, filePosition);
|
|
311
|
+
const blockContentPosition = blockHeader._endPosition;
|
|
312
|
+
const contentOffset = bufferOffset + blockHeader._size;
|
|
313
|
+
const d = buffer.subarray(contentOffset, contentOffset + blockHeader.compressedSize);
|
|
314
|
+
const uncompressedData = blockHeader.compressionMethod !== 'raw'
|
|
315
|
+
? await this._uncompress(blockHeader.compressionMethod, d, blockHeader.uncompressedSize)
|
|
316
|
+
: d;
|
|
317
|
+
const block = {
|
|
318
|
+
...blockHeader,
|
|
319
|
+
_endPosition: blockContentPosition,
|
|
320
|
+
contentPosition: blockContentPosition,
|
|
321
|
+
content: uncompressedData,
|
|
322
|
+
};
|
|
323
|
+
if (majorVersion >= 3) {
|
|
324
|
+
const crcOffset = contentOffset + blockHeader.compressedSize;
|
|
325
|
+
const crcBytes = buffer.subarray(crcOffset, crcOffset + sectionParsers.cramBlockCrc32.maxLength);
|
|
326
|
+
const crc = (0, util_ts_1.parseItem)(crcBytes, sectionParsers.cramBlockCrc32.parser, 0, blockContentPosition + blockHeader.compressedSize);
|
|
327
|
+
block.crc32 = crc.crc32;
|
|
328
|
+
if (this.validateChecksums) {
|
|
329
|
+
const blockData = buffer.subarray(bufferOffset, bufferOffset + blockHeader._size + blockHeader.compressedSize);
|
|
330
|
+
const calculatedCrc32 = (0, crc32_1.default)(blockData) >>> 0;
|
|
331
|
+
if (calculatedCrc32 !== crc.crc32) {
|
|
332
|
+
throw new errors_ts_1.CramMalformedError(`crc mismatch in block data: recorded CRC32 = ${crc.crc32}, but calculated CRC32 = ${calculatedCrc32}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
block._endPosition = crc._endPosition;
|
|
336
|
+
block._size =
|
|
337
|
+
block.compressedSize + sectionParsers.cramBlockCrc32.maxLength;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
block._endPosition = blockContentPosition + block.compressedSize;
|
|
341
|
+
block._size = block.compressedSize;
|
|
342
|
+
}
|
|
343
|
+
return block;
|
|
344
|
+
}
|
|
302
345
|
}
|
|
303
346
|
exports.default = CramFile;
|
|
304
347
|
'getDefinition getSectionParsers getSamHeader'.split(' ').forEach(method => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/cramFile/file.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/cramFile/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,11 @@ export interface ReadFeature {
|
|
|
13
13
|
ref?: string;
|
|
14
14
|
sub?: string;
|
|
15
15
|
}
|
|
16
|
+
export interface DecodeOptions {
|
|
17
|
+
/** Whether to parse tags. If false, raw tag data is stored for lazy parsing. Default true. */
|
|
18
|
+
decodeTags?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const defaultDecodeOptions: Required<DecodeOptions>;
|
|
16
21
|
export interface MateRecord {
|
|
17
22
|
readName?: string;
|
|
18
23
|
sequenceId: number;
|
|
@@ -54,10 +59,16 @@ export default class CramRecord {
|
|
|
54
59
|
sequenceId: number;
|
|
55
60
|
readGroupId: number;
|
|
56
61
|
mappingQuality: number | undefined;
|
|
57
|
-
qualityScores:
|
|
62
|
+
qualityScores: Uint8Array | null | undefined;
|
|
58
63
|
constructor({ flags, cramFlags, readLength, mappingQuality, lengthOnRef, qualityScores, mateRecordNumber, readBases, readFeatures, mateToUse, readGroupId, readName, sequenceId, uniqueId, templateSize, alignmentStart, tags, }: ReturnType<typeof decodeRecord> & {
|
|
59
64
|
uniqueId: number;
|
|
60
65
|
});
|
|
66
|
+
/**
|
|
67
|
+
* Get a single quality score at the given index.
|
|
68
|
+
* @param index 0-based index into the quality scores
|
|
69
|
+
* @returns the quality score at that index, or undefined if not available
|
|
70
|
+
*/
|
|
71
|
+
qualityScoreAt(index: number): number | undefined;
|
|
61
72
|
/**
|
|
62
73
|
* @returns {boolean} true if the read is paired, regardless of whether both segments are mapped
|
|
63
74
|
*/
|
package/dist/cramFile/record.js
CHANGED
|
@@ -3,8 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MateFlagsDecoder = exports.CramFlagsDecoder = exports.BamFlagsDecoder = exports.MateFlags = exports.CramFlags = exports.BamFlags = void 0;
|
|
6
|
+
exports.MateFlagsDecoder = exports.CramFlagsDecoder = exports.BamFlagsDecoder = exports.MateFlags = exports.CramFlags = exports.BamFlags = exports.defaultDecodeOptions = void 0;
|
|
7
7
|
const constants_ts_1 = __importDefault(require("./constants.js"));
|
|
8
|
+
exports.defaultDecodeOptions = {
|
|
9
|
+
decodeTags: true,
|
|
10
|
+
};
|
|
8
11
|
function decodeReadSequence(cramRecord, refRegion) {
|
|
9
12
|
// if it has no length, it has no sequence
|
|
10
13
|
if (!cramRecord.lengthOnRef && !cramRecord.readLength) {
|
|
@@ -203,6 +206,14 @@ class CramRecord {
|
|
|
203
206
|
this.mateRecordNumber = mateRecordNumber;
|
|
204
207
|
}
|
|
205
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Get a single quality score at the given index.
|
|
211
|
+
* @param index 0-based index into the quality scores
|
|
212
|
+
* @returns the quality score at that index, or undefined if not available
|
|
213
|
+
*/
|
|
214
|
+
qualityScoreAt(index) {
|
|
215
|
+
return this.qualityScores?.[index];
|
|
216
|
+
}
|
|
206
217
|
/**
|
|
207
218
|
* @returns {boolean} true if the read is paired, regardless of whether both segments are mapped
|
|
208
219
|
*/
|
|
@@ -292,8 +303,7 @@ class CramRecord {
|
|
|
292
303
|
if (!this.isSegmentUnmapped() &&
|
|
293
304
|
this.isPaired() &&
|
|
294
305
|
!this.isMateUnmapped() &&
|
|
295
|
-
this.mate
|
|
296
|
-
this.sequenceId === this.mate.sequenceId) {
|
|
306
|
+
this.sequenceId === this.mate?.sequenceId) {
|
|
297
307
|
const s1 = this.isReverseComplemented() ? 'R' : 'F';
|
|
298
308
|
const s2 = this.isMateReverseComplemented() ? 'R' : 'F';
|
|
299
309
|
let o1 = ' ';
|
|
@@ -347,11 +357,11 @@ class CramRecord {
|
|
|
347
357
|
if (this.readFeatures) {
|
|
348
358
|
// use the reference bases to decode the bases substituted in each base
|
|
349
359
|
// substitution
|
|
350
|
-
this.readFeatures
|
|
360
|
+
for (const readFeature of this.readFeatures) {
|
|
351
361
|
if (readFeature.code === 'X') {
|
|
352
362
|
decodeBaseSubstitution(this, refRegion, compressionScheme, readFeature);
|
|
353
363
|
}
|
|
354
|
-
}
|
|
364
|
+
}
|
|
355
365
|
}
|
|
356
366
|
// if this region completely covers this read,
|
|
357
367
|
// keep a reference to it
|
|
@@ -371,6 +381,9 @@ class CramRecord {
|
|
|
371
381
|
data[k] = this[k];
|
|
372
382
|
});
|
|
373
383
|
data.readBases = this.getReadBases();
|
|
384
|
+
data.qualityScores = this.qualityScores
|
|
385
|
+
? Array.from(this.qualityScores)
|
|
386
|
+
: this.qualityScores;
|
|
374
387
|
return data;
|
|
375
388
|
}
|
|
376
389
|
}
|