@gmod/cram 1.6.3 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/craiIndex.d.ts +19 -12
- package/dist/craiIndex.js +63 -123
- package/dist/craiIndex.js.map +1 -1
- package/dist/cram-bundle.js +2 -17
- package/dist/cram-bundle.js.LICENSE.txt +17 -0
- package/dist/cramFile/codecs/_base.d.ts +26 -5
- package/dist/cramFile/codecs/_base.js +3 -39
- package/dist/cramFile/codecs/_base.js.map +1 -1
- package/dist/cramFile/codecs/beta.d.ts +7 -3
- package/dist/cramFile/codecs/beta.js +13 -31
- package/dist/cramFile/codecs/beta.js.map +1 -1
- package/dist/cramFile/codecs/byteArrayLength.d.ts +13 -7
- package/dist/cramFile/codecs/byteArrayLength.js +22 -41
- package/dist/cramFile/codecs/byteArrayLength.js.map +1 -1
- package/dist/cramFile/codecs/byteArrayStop.d.ts +9 -5
- package/dist/cramFile/codecs/byteArrayStop.js +25 -46
- package/dist/cramFile/codecs/byteArrayStop.js.map +1 -1
- package/dist/cramFile/codecs/dataSeriesTypes.d.ts +4 -0
- package/dist/cramFile/codecs/dataSeriesTypes.js +3 -0
- package/dist/cramFile/codecs/dataSeriesTypes.js.map +1 -0
- package/dist/cramFile/codecs/external.d.ts +10 -6
- package/dist/cramFile/codecs/external.js +26 -44
- package/dist/cramFile/codecs/external.js.map +1 -1
- package/dist/cramFile/codecs/gamma.d.ts +7 -3
- package/dist/cramFile/codecs/gamma.js +16 -34
- package/dist/cramFile/codecs/gamma.js.map +1 -1
- package/dist/cramFile/codecs/getBits.d.ts +7 -0
- package/dist/cramFile/codecs/getBits.js +26 -0
- package/dist/cramFile/codecs/getBits.js.map +1 -0
- package/dist/cramFile/codecs/huffman.d.ts +17 -13
- package/dist/cramFile/codecs/huffman.js +76 -85
- package/dist/cramFile/codecs/huffman.js.map +1 -1
- package/dist/cramFile/codecs/index.d.ts +4 -2
- package/dist/cramFile/codecs/index.js +12 -13
- package/dist/cramFile/codecs/index.js.map +1 -1
- package/dist/cramFile/codecs/subexp.d.ts +7 -3
- package/dist/cramFile/codecs/subexp.js +19 -36
- package/dist/cramFile/codecs/subexp.js.map +1 -1
- package/dist/cramFile/constants.d.ts +35 -35
- package/dist/cramFile/constants.js +1 -1
- package/dist/cramFile/constants.js.map +1 -1
- package/dist/cramFile/container/compressionScheme.d.ts +57 -11
- package/dist/cramFile/container/compressionScheme.js +37 -32
- package/dist/cramFile/container/compressionScheme.js.map +1 -1
- package/dist/cramFile/container/index.d.ts +23 -9
- package/dist/cramFile/container/index.js +74 -144
- package/dist/cramFile/container/index.js.map +1 -1
- package/dist/cramFile/encoding.d.ts +78 -0
- package/dist/cramFile/encoding.js +3 -0
- package/dist/cramFile/encoding.js.map +1 -0
- package/dist/cramFile/file.d.ts +91 -41
- package/dist/cramFile/file.js +234 -368
- package/dist/cramFile/file.js.map +1 -1
- package/dist/cramFile/filehandle.d.ts +2 -0
- package/dist/cramFile/filehandle.js +3 -0
- package/dist/cramFile/filehandle.js.map +1 -0
- package/dist/cramFile/index.d.ts +1 -1
- package/dist/cramFile/index.js +1 -1
- package/dist/cramFile/index.js.map +1 -1
- package/dist/cramFile/record.d.ts +61 -17
- package/dist/cramFile/record.js +153 -77
- package/dist/cramFile/record.js.map +1 -1
- package/dist/cramFile/sectionParsers.d.ts +99 -8
- package/dist/cramFile/sectionParsers.js +70 -80
- package/dist/cramFile/sectionParsers.js.map +1 -1
- package/dist/cramFile/slice/decodeRecord.d.ts +30 -2
- package/dist/cramFile/slice/decodeRecord.js +148 -118
- package/dist/cramFile/slice/decodeRecord.js.map +1 -1
- package/dist/cramFile/slice/index.d.ts +21 -14
- package/dist/cramFile/slice/index.js +286 -381
- package/dist/cramFile/slice/index.js.map +1 -1
- package/dist/cramFile/util.d.ts +11 -5
- package/dist/cramFile/util.js +19 -97
- package/dist/cramFile/util.js.map +1 -1
- package/dist/errors.d.ts +5 -10
- package/dist/errors.js +11 -62
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/indexedCramFile.d.ts +37 -12
- package/dist/indexedCramFile.js +114 -154
- package/dist/indexedCramFile.js.map +1 -1
- package/dist/io/index.d.ts +5 -5
- package/dist/io/index.js +9 -9
- package/dist/io/index.js.map +1 -1
- package/dist/rans/constants.js +3 -3
- package/dist/rans/constants.js.map +1 -1
- package/dist/rans/d04.js +15 -15
- package/dist/rans/d04.js.map +1 -1
- package/dist/rans/d14.js +21 -21
- package/dist/rans/d14.js.map +1 -1
- package/dist/rans/decoding.js +27 -30
- package/dist/rans/decoding.js.map +1 -1
- package/dist/rans/frequencies.js +11 -11
- package/dist/rans/frequencies.js.map +1 -1
- package/dist/rans/index.js +46 -49
- package/dist/rans/index.js.map +1 -1
- package/dist/sam.d.ts +8 -1
- package/dist/sam.js +7 -7
- package/dist/sam.js.map +1 -1
- package/dist/typescript.d.ts +3 -0
- package/dist/typescript.js +11 -0
- package/dist/typescript.js.map +1 -0
- package/dist/unzip-pako.js +1 -1
- package/dist/unzip-pako.js.map +1 -1
- package/dist/unzip.js +1 -1
- package/dist/unzip.js.map +1 -1
- package/errors.js +11 -62
- package/esm/craiIndex.d.ts +19 -12
- package/esm/craiIndex.js +8 -24
- package/esm/craiIndex.js.map +1 -1
- package/esm/cramFile/codecs/_base.d.ts +26 -5
- package/esm/cramFile/codecs/_base.js +1 -35
- package/esm/cramFile/codecs/_base.js.map +1 -1
- package/esm/cramFile/codecs/beta.d.ts +7 -3
- package/esm/cramFile/codecs/beta.js +4 -3
- package/esm/cramFile/codecs/beta.js.map +1 -1
- package/esm/cramFile/codecs/byteArrayLength.d.ts +13 -7
- package/esm/cramFile/codecs/byteArrayLength.js +1 -1
- package/esm/cramFile/codecs/byteArrayLength.js.map +1 -1
- package/esm/cramFile/codecs/byteArrayStop.d.ts +9 -5
- package/esm/cramFile/codecs/byteArrayStop.js +7 -9
- package/esm/cramFile/codecs/byteArrayStop.js.map +1 -1
- package/esm/cramFile/codecs/dataSeriesTypes.d.ts +4 -0
- package/esm/cramFile/codecs/dataSeriesTypes.js +2 -0
- package/esm/cramFile/codecs/dataSeriesTypes.js.map +1 -0
- package/esm/cramFile/codecs/external.d.ts +10 -6
- package/esm/cramFile/codecs/external.js +4 -3
- package/esm/cramFile/codecs/external.js.map +1 -1
- package/esm/cramFile/codecs/gamma.d.ts +7 -3
- package/esm/cramFile/codecs/gamma.js +5 -4
- package/esm/cramFile/codecs/gamma.js.map +1 -1
- package/esm/cramFile/codecs/getBits.d.ts +7 -0
- package/esm/cramFile/codecs/getBits.js +21 -0
- package/esm/cramFile/codecs/getBits.js.map +1 -0
- package/esm/cramFile/codecs/huffman.d.ts +17 -13
- package/esm/cramFile/codecs/huffman.js +22 -9
- package/esm/cramFile/codecs/huffman.js.map +1 -1
- package/esm/cramFile/codecs/index.d.ts +4 -2
- package/esm/cramFile/codecs/index.js +1 -1
- package/esm/cramFile/codecs/index.js.map +1 -1
- package/esm/cramFile/codecs/subexp.d.ts +7 -3
- package/esm/cramFile/codecs/subexp.js +7 -5
- package/esm/cramFile/codecs/subexp.js.map +1 -1
- package/esm/cramFile/constants.d.ts +35 -35
- package/esm/cramFile/constants.js.map +1 -1
- package/esm/cramFile/container/compressionScheme.d.ts +57 -11
- package/esm/cramFile/container/compressionScheme.js +15 -8
- package/esm/cramFile/container/compressionScheme.js.map +1 -1
- package/esm/cramFile/container/index.d.ts +23 -9
- package/esm/cramFile/container/index.js +11 -9
- package/esm/cramFile/container/index.js.map +1 -1
- package/esm/cramFile/encoding.d.ts +78 -0
- package/esm/cramFile/encoding.js +2 -0
- package/esm/cramFile/encoding.js.map +1 -0
- package/esm/cramFile/file.d.ts +91 -41
- package/esm/cramFile/file.js +59 -47
- package/esm/cramFile/file.js.map +1 -1
- package/esm/cramFile/filehandle.d.ts +2 -0
- package/esm/cramFile/filehandle.js +2 -0
- package/esm/cramFile/filehandle.js.map +1 -0
- package/esm/cramFile/index.d.ts +1 -1
- package/esm/cramFile/index.js.map +1 -1
- package/esm/cramFile/record.d.ts +61 -17
- package/esm/cramFile/record.js +83 -5
- package/esm/cramFile/record.js.map +1 -1
- package/esm/cramFile/sectionParsers.d.ts +99 -8
- package/esm/cramFile/sectionParsers.js +7 -17
- package/esm/cramFile/sectionParsers.js.map +1 -1
- package/esm/cramFile/slice/decodeRecord.d.ts +30 -2
- package/esm/cramFile/slice/decodeRecord.js +102 -70
- package/esm/cramFile/slice/decodeRecord.js.map +1 -1
- package/esm/cramFile/slice/index.d.ts +21 -14
- package/esm/cramFile/slice/index.js +77 -38
- package/esm/cramFile/slice/index.js.map +1 -1
- package/esm/cramFile/util.d.ts +11 -5
- package/esm/cramFile/util.js +11 -82
- package/esm/cramFile/util.js.map +1 -1
- package/esm/errors.d.ts +5 -10
- package/esm/errors.js +0 -5
- package/esm/errors.js.map +1 -1
- package/esm/index.d.ts +3 -3
- package/esm/index.js.map +1 -1
- package/esm/indexedCramFile.d.ts +37 -12
- package/esm/indexedCramFile.js +19 -8
- package/esm/indexedCramFile.js.map +1 -1
- package/esm/io/index.d.ts +5 -5
- package/esm/io/index.js +3 -3
- package/esm/io/index.js.map +1 -1
- package/esm/sam.d.ts +8 -1
- package/esm/sam.js.map +1 -1
- package/esm/typescript.d.ts +3 -0
- package/esm/typescript.js +7 -0
- package/esm/typescript.js.map +1 -0
- package/package.json +18 -11
- package/src/{craiIndex.js → craiIndex.ts} +37 -31
- package/src/cramFile/codecs/_base.ts +45 -0
- package/src/cramFile/codecs/beta.ts +34 -0
- package/src/cramFile/codecs/{byteArrayLength.js → byteArrayLength.ts} +27 -5
- package/src/cramFile/codecs/{byteArrayStop.js → byteArrayStop.ts} +25 -12
- package/src/cramFile/codecs/dataSeriesTypes.ts +39 -0
- package/src/cramFile/codecs/{external.js → external.ts} +28 -12
- package/src/cramFile/codecs/gamma.ts +42 -0
- package/src/cramFile/codecs/getBits.ts +28 -0
- package/src/cramFile/codecs/{huffman.js → huffman.ts} +48 -15
- package/src/cramFile/codecs/{index.js → index.ts} +9 -3
- package/src/cramFile/codecs/subexp.ts +45 -0
- package/src/cramFile/{constants.js → constants.ts} +0 -0
- package/src/cramFile/container/{compressionScheme.js → compressionScheme.ts} +50 -18
- package/src/cramFile/container/{index.js → index.ts} +13 -13
- package/src/cramFile/encoding.ts +98 -0
- package/src/cramFile/{file.js → file.ts} +136 -62
- package/src/cramFile/filehandle.ts +3 -0
- package/src/cramFile/{index.js → index.ts} +0 -0
- package/src/cramFile/{record.js → record.ts} +185 -14
- package/src/cramFile/{sectionParsers.js → sectionParsers.ts} +148 -20
- package/src/cramFile/slice/{decodeRecord.js → decodeRecord.ts} +158 -105
- package/src/cramFile/slice/{index.js → index.ts} +138 -63
- package/src/cramFile/{util.js → util.ts} +28 -17
- package/src/{errors.js → errors.ts} +0 -5
- package/src/{index.js → index.ts} +0 -0
- package/src/{indexedCramFile.js → indexedCramFile.ts} +79 -19
- package/src/io/{index.js → index.ts} +10 -5
- package/src/{sam.js → sam.ts} +7 -2
- package/src/typescript.ts +17 -0
- package/src/typings/binary-parser.d.ts +44 -0
- package/src/typings/bzip2.d.ts +7 -0
- package/src/typings/htscodecs.d.ts +6 -0
- package/dist/io/bufferCache.d.ts +0 -12
- package/dist/io/bufferCache.js +0 -112
- package/dist/io/bufferCache.js.map +0 -1
- package/dist/io/localFile.d.ts +0 -10
- package/dist/io/localFile.js +0 -108
- package/dist/io/localFile.js.map +0 -1
- package/dist/io/remoteFile.d.ts +0 -16
- package/dist/io/remoteFile.js +0 -143
- package/dist/io/remoteFile.js.map +0 -1
- package/esm/io/bufferCache.d.ts +0 -12
- package/esm/io/bufferCache.js +0 -54
- package/esm/io/bufferCache.js.map +0 -1
- package/esm/io/localFile.d.ts +0 -10
- package/esm/io/localFile.js +0 -31
- package/esm/io/localFile.js.map +0 -1
- package/esm/io/remoteFile.d.ts +0 -16
- package/esm/io/remoteFile.js +0 -64
- package/esm/io/remoteFile.js.map +0 -1
- package/src/cramFile/codecs/_base.js +0 -49
- package/src/cramFile/codecs/beta.js +0 -23
- package/src/cramFile/codecs/gamma.js +0 -30
- package/src/cramFile/codecs/subexp.js +0 -32
- package/src/io/bufferCache.js +0 -66
- package/src/io/localFile.js +0 -35
- package/src/io/remoteFile.js +0 -71
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import CramCodec from './_base';
|
|
2
|
+
import { CramEncoding } from '../encoding';
|
|
3
|
+
import { DataType } from './dataSeriesTypes';
|
|
4
|
+
export declare function instantiateCodec<TResult extends DataType = DataType>(encodingData: CramEncoding, dataType: DataType | 'ignore'): CramCodec<TResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/index.
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD,OAAO,eAAe,MAAM,WAAW,CAAA;AACvC,OAAO,aAAa,MAAM,YAAY,CAAA;AACtC,OAAO,kBAAkB,MAAM,iBAAiB,CAAA;AAChD,OAAO,oBAAoB,MAAM,mBAAmB,CAAA;AACpD,OAAO,SAAS,MAAM,QAAQ,CAAA;AAC9B,OAAO,UAAU,MAAM,SAAS,CAAA;AAChC,OAAO,WAAW,MAAM,UAAU,CAAA;AAKlC,MAAM,YAAY,GAAG;IACnB,CAAC,EAAE,aAAa;IAChB,kBAAkB;IAClB,CAAC,EAAE,eAAe;IAClB,CAAC,EAAE,oBAAoB;IACvB,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,WAAW;IACd,sBAAsB;IACtB,CAAC,EAAE,UAAU;CACd,CAAA;AAED,SAAS,mBAAmB,CAAC,EAAU;IACrC,OAAQ,YAAoB,CAAC,EAAE,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAA0B,EAC1B,QAA6B;IAE7B,MAAM,UAAU,GAAG,mBAAmB,CACpC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CACjD,CAAA;IACD,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,sBAAsB,CAC9B,qCAAqC,YAAY,CAAC,OAAO,EAAE,CAC5D,CAAA;KACF;IAED,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAA;AAC5E,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import CramCodec, { Cursors } from './_base';
|
|
2
|
+
import CramSlice from '../slice';
|
|
3
|
+
import { CramFileBlock } from '../file';
|
|
4
|
+
import { SubexpEncoding } from '../encoding';
|
|
5
|
+
export default class SubexpCodec extends CramCodec<'int', SubexpEncoding['parameters']> {
|
|
6
|
+
constructor(parameters: SubexpEncoding['parameters'], dataType: 'int');
|
|
7
|
+
decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): number;
|
|
3
8
|
}
|
|
4
|
-
import CramCodec from "./_base";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CramUnimplementedError } from '../../errors';
|
|
2
2
|
import CramCodec from './_base';
|
|
3
|
+
import { getBits } from './getBits';
|
|
3
4
|
export default class SubexpCodec extends CramCodec {
|
|
4
|
-
constructor(parameters
|
|
5
|
+
constructor(parameters, dataType) {
|
|
5
6
|
super(parameters, dataType);
|
|
6
7
|
if (this.dataType !== 'int') {
|
|
7
8
|
throw new CramUnimplementedError(`${this.dataType} decoding not yet implemented by SUBEXP codec`);
|
|
@@ -9,18 +10,19 @@ export default class SubexpCodec extends CramCodec {
|
|
|
9
10
|
}
|
|
10
11
|
decode(slice, coreDataBlock, blocksByContentId, cursors) {
|
|
11
12
|
let numLeadingOnes = 0;
|
|
12
|
-
while (
|
|
13
|
-
numLeadingOnes
|
|
13
|
+
while (getBits(coreDataBlock.content, cursors.coreBlock, 1)) {
|
|
14
|
+
numLeadingOnes = numLeadingOnes + 1;
|
|
14
15
|
}
|
|
15
16
|
let b;
|
|
16
17
|
let n;
|
|
17
18
|
if (numLeadingOnes === 0) {
|
|
18
19
|
b = this.parameters.K;
|
|
19
|
-
n =
|
|
20
|
+
n = getBits(coreDataBlock.content, cursors.coreBlock, b);
|
|
20
21
|
}
|
|
21
22
|
else {
|
|
22
23
|
b = numLeadingOnes + this.parameters.K - 1;
|
|
23
|
-
|
|
24
|
+
const bits = getBits(coreDataBlock.content, cursors.coreBlock, b);
|
|
25
|
+
n = (1 << b) | bits;
|
|
24
26
|
}
|
|
25
27
|
return n - this.parameters.offset;
|
|
26
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subexp.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/subexp.
|
|
1
|
+
{"version":3,"file":"subexp.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/subexp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,SAAsB,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAGxC;IACC,YAAY,UAAwC,EAAE,QAAe;QACnE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B,MAAM,IAAI,sBAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,+CAA+C,CAChE,CAAA;SACF;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;YAC3D,cAAc,GAAG,cAAc,GAAG,CAAC,CAAA;SACpC;QAED,IAAI,CAAC,CAAA;QACL,IAAI,CAAC,CAAA;QACL,IAAI,cAAc,KAAK,CAAC,EAAE;YACxB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YACrB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;SACzD;aAAM;YACL,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YACjE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;SACpB;QAED,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;IACnC,CAAC;CACF"}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
+
declare const Constants: {
|
|
2
|
+
CRAM_FLAG_PRESERVE_QUAL_SCORES: number;
|
|
3
|
+
CRAM_FLAG_DETACHED: number;
|
|
4
|
+
CRAM_FLAG_MATE_DOWNSTREAM: number;
|
|
5
|
+
CRAM_FLAG_NO_SEQ: number;
|
|
6
|
+
CRAM_FLAG_MASK: number;
|
|
7
|
+
CRAM_M_REVERSE: number;
|
|
8
|
+
CRAM_M_UNMAP: number;
|
|
9
|
+
BAM_FPAIRED: number;
|
|
10
|
+
BAM_FPROPER_PAIR: number;
|
|
11
|
+
BAM_FUNMAP: number;
|
|
12
|
+
BAM_FMUNMAP: number;
|
|
13
|
+
BAM_FREVERSE: number;
|
|
14
|
+
BAM_FMREVERSE: number;
|
|
15
|
+
BAM_FREAD1: number;
|
|
16
|
+
BAM_FREAD2: number;
|
|
17
|
+
BAM_FSECONDARY: number;
|
|
18
|
+
BAM_FQCFAIL: number;
|
|
19
|
+
BAM_FDUP: number;
|
|
20
|
+
BAM_FSUPPLEMENTARY: number;
|
|
21
|
+
BAM_CMATCH: number;
|
|
22
|
+
BAM_CINS: number;
|
|
23
|
+
BAM_CDEL: number;
|
|
24
|
+
BAM_CREF_SKIP: number;
|
|
25
|
+
BAM_CSOFT_CLIP: number;
|
|
26
|
+
BAM_CHARD_CLIP: number;
|
|
27
|
+
BAM_CPAD: number;
|
|
28
|
+
BAM_CEQUAL: number;
|
|
29
|
+
BAM_CDIFF: number;
|
|
30
|
+
BAM_CBACK: number;
|
|
31
|
+
BAM_CIGAR_STR: string;
|
|
32
|
+
BAM_CIGAR_SHIFT: number;
|
|
33
|
+
BAM_CIGAR_MASK: number;
|
|
34
|
+
BAM_CIGAR_TYPE: number;
|
|
35
|
+
};
|
|
1
36
|
export default Constants;
|
|
2
|
-
declare namespace Constants {
|
|
3
|
-
const CRAM_FLAG_PRESERVE_QUAL_SCORES: number;
|
|
4
|
-
const CRAM_FLAG_DETACHED: number;
|
|
5
|
-
const CRAM_FLAG_MATE_DOWNSTREAM: number;
|
|
6
|
-
const CRAM_FLAG_NO_SEQ: number;
|
|
7
|
-
const CRAM_FLAG_MASK: number;
|
|
8
|
-
const CRAM_M_REVERSE: number;
|
|
9
|
-
const CRAM_M_UNMAP: number;
|
|
10
|
-
const BAM_FPAIRED: number;
|
|
11
|
-
const BAM_FPROPER_PAIR: number;
|
|
12
|
-
const BAM_FUNMAP: number;
|
|
13
|
-
const BAM_FMUNMAP: number;
|
|
14
|
-
const BAM_FREVERSE: number;
|
|
15
|
-
const BAM_FMREVERSE: number;
|
|
16
|
-
const BAM_FREAD1: number;
|
|
17
|
-
const BAM_FREAD2: number;
|
|
18
|
-
const BAM_FSECONDARY: number;
|
|
19
|
-
const BAM_FQCFAIL: number;
|
|
20
|
-
const BAM_FDUP: number;
|
|
21
|
-
const BAM_FSUPPLEMENTARY: number;
|
|
22
|
-
const BAM_CMATCH: number;
|
|
23
|
-
const BAM_CINS: number;
|
|
24
|
-
const BAM_CDEL: number;
|
|
25
|
-
const BAM_CREF_SKIP: number;
|
|
26
|
-
const BAM_CSOFT_CLIP: number;
|
|
27
|
-
const BAM_CHARD_CLIP: number;
|
|
28
|
-
const BAM_CPAD: number;
|
|
29
|
-
const BAM_CEQUAL: number;
|
|
30
|
-
const BAM_CDIFF: number;
|
|
31
|
-
const BAM_CBACK: number;
|
|
32
|
-
const BAM_CIGAR_STR: string;
|
|
33
|
-
const BAM_CIGAR_SHIFT: number;
|
|
34
|
-
const BAM_CIGAR_MASK: number;
|
|
35
|
-
const BAM_CIGAR_TYPE: number;
|
|
36
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cramFile/constants.
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cramFile/constants.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG;IAChB,8BAA8B,EAAE,CAAC,IAAI,CAAC;IACtC,kBAAkB,EAAE,CAAC,IAAI,CAAC;IAC1B,yBAAyB,EAAE,CAAC,IAAI,CAAC;IACjC,gBAAgB,EAAE,CAAC,IAAI,CAAC;IACxB,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IAE5B,wBAAwB;IACxB,cAAc,EAAE,CAAC;IACjB,yBAAyB;IACzB,YAAY,EAAE,CAAC;IAEf,8EAA8E;IAC9E,WAAW,EAAE,CAAC;IACd,uCAAuC;IACvC,gBAAgB,EAAE,CAAC;IACnB,kEAAkE;IAClE,UAAU,EAAE,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,CAAC;IACd,4CAA4C;IAC5C,YAAY,EAAE,EAAE;IAChB,4CAA4C;IAC5C,aAAa,EAAE,EAAE;IACjB,iBAAiB;IACjB,UAAU,EAAE,EAAE;IACd,iBAAiB;IACjB,UAAU,EAAE,GAAG;IACf,yBAAyB;IACzB,cAAc,EAAE,GAAG;IACnB,cAAc;IACd,WAAW,EAAE,GAAG;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,IAAI;IACd,2BAA2B;IAC3B,kBAAkB,EAAE,IAAI;IAExB,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,CAAC;IACjB,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IAEZ,aAAa,EAAE,YAAY;IAC3B,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,OAAO;CACxB,CAAA;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -1,23 +1,69 @@
|
|
|
1
|
+
import CramCodec from '../codecs/_base';
|
|
2
|
+
import { CramCompressionHeader } from '../sectionParsers';
|
|
3
|
+
import { CramEncoding } from '../encoding';
|
|
4
|
+
import { DataSeriesEncodingKey, DataSeriesEncodingMap } from '../codecs/dataSeriesTypes';
|
|
5
|
+
declare const dataSeriesTypes: {
|
|
6
|
+
readonly BF: "int";
|
|
7
|
+
readonly CF: "int";
|
|
8
|
+
readonly RI: "int";
|
|
9
|
+
readonly RL: "int";
|
|
10
|
+
readonly AP: "int";
|
|
11
|
+
readonly RG: "int";
|
|
12
|
+
readonly MF: "int";
|
|
13
|
+
readonly NS: "int";
|
|
14
|
+
readonly NP: "int";
|
|
15
|
+
readonly TS: "int";
|
|
16
|
+
readonly NF: "int";
|
|
17
|
+
readonly TC: "byte";
|
|
18
|
+
readonly TN: "int";
|
|
19
|
+
readonly FN: "int";
|
|
20
|
+
readonly FC: "byte";
|
|
21
|
+
readonly FP: "int";
|
|
22
|
+
readonly BS: "byte";
|
|
23
|
+
readonly IN: "byteArray";
|
|
24
|
+
readonly SC: "byteArray";
|
|
25
|
+
readonly DL: "int";
|
|
26
|
+
readonly BA: "byte";
|
|
27
|
+
readonly BB: "byteArray";
|
|
28
|
+
readonly RS: "int";
|
|
29
|
+
readonly PD: "int";
|
|
30
|
+
readonly HC: "int";
|
|
31
|
+
readonly MQ: "int";
|
|
32
|
+
readonly RN: "byteArray";
|
|
33
|
+
readonly QS: "byte";
|
|
34
|
+
readonly QQ: "byteArray";
|
|
35
|
+
readonly TL: "int";
|
|
36
|
+
};
|
|
37
|
+
export declare type DataSeriesTypes = typeof dataSeriesTypes;
|
|
38
|
+
declare type DataSeriesCache = {
|
|
39
|
+
[K in DataSeriesEncodingKey]?: CramCodec<DataSeriesTypes[K]>;
|
|
40
|
+
};
|
|
1
41
|
export default class CramContainerCompressionScheme {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
APdelta: any;
|
|
42
|
+
readNamesIncluded: boolean;
|
|
43
|
+
APdelta: boolean;
|
|
5
44
|
referenceRequired: boolean;
|
|
6
|
-
tagIdsDictionary:
|
|
7
|
-
substitutionMatrix:
|
|
8
|
-
dataSeriesCodecCache:
|
|
9
|
-
tagCodecCache:
|
|
45
|
+
tagIdsDictionary: Record<number, string[]>;
|
|
46
|
+
substitutionMatrix: string[][];
|
|
47
|
+
dataSeriesCodecCache: DataSeriesCache;
|
|
48
|
+
tagCodecCache: Record<string, CramCodec>;
|
|
49
|
+
tagEncoding: Record<string, CramEncoding>;
|
|
50
|
+
dataSeriesEncoding: DataSeriesEncodingMap;
|
|
51
|
+
private preservation;
|
|
52
|
+
private _endPosition;
|
|
53
|
+
private _size;
|
|
54
|
+
constructor(content: CramCompressionHeader);
|
|
10
55
|
/**
|
|
11
56
|
* @param {string} tagName three-character tag name
|
|
12
57
|
* @private
|
|
13
58
|
*/
|
|
14
|
-
|
|
59
|
+
getCodecForTag(tagName: string): CramCodec;
|
|
15
60
|
/**
|
|
16
61
|
*
|
|
17
62
|
* @param {number} tagListId ID of the tag list to fetch from the tag dictionary
|
|
18
63
|
* @private
|
|
19
64
|
*/
|
|
20
|
-
|
|
21
|
-
getCodecForDataSeries(dataSeriesName:
|
|
22
|
-
toJSON():
|
|
65
|
+
getTagNames(tagListId: number): string[];
|
|
66
|
+
getCodecForDataSeries<TDataSeries extends DataSeriesEncodingKey>(dataSeriesName: TDataSeries): CramCodec<DataSeriesTypes[TDataSeries]> | undefined;
|
|
67
|
+
toJSON(): any;
|
|
23
68
|
}
|
|
69
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CramMalformedError } from '../../errors';
|
|
2
1
|
import { instantiateCodec } from '../codecs';
|
|
2
|
+
import { CramMalformedError } from '../../errors';
|
|
3
3
|
// the hardcoded data type to be decoded for each core
|
|
4
4
|
// data field
|
|
5
5
|
const dataSeriesTypes = {
|
|
@@ -33,8 +33,8 @@ const dataSeriesTypes = {
|
|
|
33
33
|
QS: 'byte',
|
|
34
34
|
QQ: 'byteArray',
|
|
35
35
|
TL: 'int',
|
|
36
|
-
TM: 'ignore',
|
|
37
|
-
TV: 'ignore',
|
|
36
|
+
// TM: 'ignore',
|
|
37
|
+
// TV: 'ignore',
|
|
38
38
|
};
|
|
39
39
|
function parseSubstitutionMatrix(byteArray) {
|
|
40
40
|
const matrix = new Array(5);
|
|
@@ -65,15 +65,21 @@ function parseSubstitutionMatrix(byteArray) {
|
|
|
65
65
|
}
|
|
66
66
|
export default class CramContainerCompressionScheme {
|
|
67
67
|
constructor(content) {
|
|
68
|
-
|
|
68
|
+
this.dataSeriesCodecCache = {};
|
|
69
|
+
this.tagCodecCache = {};
|
|
70
|
+
this.tagEncoding = {};
|
|
71
|
+
// Object.assign(this, content)
|
|
69
72
|
// interpret some of the preservation map tags for convenient use
|
|
70
73
|
this.readNamesIncluded = content.preservation.RN;
|
|
71
74
|
this.APdelta = content.preservation.AP;
|
|
72
75
|
this.referenceRequired = !!content.preservation.RR;
|
|
73
76
|
this.tagIdsDictionary = content.preservation.TD;
|
|
74
77
|
this.substitutionMatrix = parseSubstitutionMatrix(content.preservation.SM);
|
|
75
|
-
this.
|
|
76
|
-
this.
|
|
78
|
+
this.dataSeriesEncoding = content.dataSeriesEncoding;
|
|
79
|
+
this.tagEncoding = content.tagEncoding;
|
|
80
|
+
this.preservation = content.preservation;
|
|
81
|
+
this._size = content._size;
|
|
82
|
+
this._endPosition = content._endPosition;
|
|
77
83
|
}
|
|
78
84
|
/**
|
|
79
85
|
* @param {string} tagName three-character tag name
|
|
@@ -97,7 +103,7 @@ export default class CramContainerCompressionScheme {
|
|
|
97
103
|
return this.tagIdsDictionary[tagListId];
|
|
98
104
|
}
|
|
99
105
|
getCodecForDataSeries(dataSeriesName) {
|
|
100
|
-
let r = this.dataSeriesCodecCache
|
|
106
|
+
let r = this.dataSeriesCodecCache[dataSeriesName];
|
|
101
107
|
if (r === undefined) {
|
|
102
108
|
const encodingData = this.dataSeriesEncoding[dataSeriesName];
|
|
103
109
|
if (encodingData) {
|
|
@@ -106,7 +112,8 @@ export default class CramContainerCompressionScheme {
|
|
|
106
112
|
throw new CramMalformedError(`data series name ${dataSeriesName} not defined in file compression header`);
|
|
107
113
|
}
|
|
108
114
|
r = instantiateCodec(encodingData, dataType);
|
|
109
|
-
this
|
|
115
|
+
// didn't find a way to make TS understand this
|
|
116
|
+
this.dataSeriesCodecCache[dataSeriesName] = r;
|
|
110
117
|
}
|
|
111
118
|
}
|
|
112
119
|
return r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compressionScheme.js","sourceRoot":"","sources":["../../../src/cramFile/container/compressionScheme.
|
|
1
|
+
{"version":3,"file":"compressionScheme.js","sourceRoot":"","sources":["../../../src/cramFile/container/compressionScheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAI5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMjD,sDAAsD;AACtD,aAAa;AACb,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,gBAAgB;IAChB,gBAAgB;CACR,CAAA;AAIV,SAAS,uBAAuB,CAAC,SAAmB;IAClD,MAAM,MAAM,GAAe,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;KACzB;IAED,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;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"}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import CramSlice from '../slice';
|
|
3
|
+
import CramContainerCompressionScheme from './compressionScheme';
|
|
4
|
+
import CramFile from '../file';
|
|
1
5
|
export default class CramContainer {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
filePosition:
|
|
6
|
+
file: CramFile;
|
|
7
|
+
filePosition: number;
|
|
8
|
+
constructor(file: CramFile, filePosition: number);
|
|
5
9
|
getHeader(): Promise<any>;
|
|
6
|
-
getCompressionHeaderBlock(): Promise<
|
|
7
|
-
|
|
10
|
+
getCompressionHeaderBlock(): Promise<{
|
|
11
|
+
parsedContent: import("../util").ParsedItem<import("../sectionParsers").CramCompressionHeader>;
|
|
12
|
+
compressionMethod: import("../sectionParsers").CompressionMethod;
|
|
13
|
+
contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA";
|
|
14
|
+
contentId: number;
|
|
15
|
+
compressedSize: number;
|
|
16
|
+
uncompressedSize: number;
|
|
17
|
+
_endPosition: number;
|
|
18
|
+
contentPosition: number;
|
|
19
|
+
_size: number;
|
|
20
|
+
content: Buffer;
|
|
21
|
+
crc32?: number | undefined;
|
|
22
|
+
} | null | undefined>;
|
|
23
|
+
getFirstBlock(): Promise<import("../file").CramFileBlock | undefined>;
|
|
8
24
|
getCompressionScheme(): Promise<CramContainerCompressionScheme | undefined>;
|
|
9
|
-
getSlice(slicePosition:
|
|
10
|
-
_readContainerHeader(position:
|
|
25
|
+
getSlice(slicePosition: number, sliceSize: number): CramSlice;
|
|
26
|
+
_readContainerHeader(position: number): Promise<any>;
|
|
11
27
|
}
|
|
12
|
-
import CramContainerCompressionScheme from "./compressionScheme";
|
|
13
|
-
import CramSlice from "../slice";
|
|
@@ -3,12 +3,9 @@ import { itf8Size, parseItem, tinyMemoize } from '../util';
|
|
|
3
3
|
import CramSlice from '../slice';
|
|
4
4
|
import CramContainerCompressionScheme from './compressionScheme';
|
|
5
5
|
export default class CramContainer {
|
|
6
|
-
constructor(
|
|
7
|
-
|
|
8
|
-
this.
|
|
9
|
-
// position of this container in the file
|
|
10
|
-
this.filePosition = position;
|
|
11
|
-
// console.log(`container: ${this.filePosition}`)
|
|
6
|
+
constructor(file, filePosition) {
|
|
7
|
+
this.file = file;
|
|
8
|
+
this.filePosition = filePosition;
|
|
12
9
|
}
|
|
13
10
|
// memoize
|
|
14
11
|
getHeader() {
|
|
@@ -23,12 +20,17 @@ export default class CramContainer {
|
|
|
23
20
|
}
|
|
24
21
|
const sectionParsers = await this.file.getSectionParsers();
|
|
25
22
|
const block = await this.getFirstBlock();
|
|
23
|
+
if (block === undefined) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
26
|
if (block.contentType !== 'COMPRESSION_HEADER') {
|
|
27
27
|
throw new CramMalformedError(`invalid content type ${block.contentType} in what is supposed to be the compression header block`);
|
|
28
28
|
}
|
|
29
29
|
const content = parseItem(block.content, sectionParsers.cramCompressionHeader.parser, 0, block.contentPosition);
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
return {
|
|
31
|
+
...block,
|
|
32
|
+
parsedContent: content,
|
|
33
|
+
};
|
|
32
34
|
}
|
|
33
35
|
async getFirstBlock() {
|
|
34
36
|
const containerHeader = await this.getHeader();
|
|
@@ -41,7 +43,7 @@ export default class CramContainer {
|
|
|
41
43
|
if (!header) {
|
|
42
44
|
return undefined;
|
|
43
45
|
}
|
|
44
|
-
return new CramContainerCompressionScheme(header.
|
|
46
|
+
return new CramContainerCompressionScheme(header.parsedContent);
|
|
45
47
|
}
|
|
46
48
|
getSlice(slicePosition, sliceSize) {
|
|
47
49
|
// note: slicePosition is relative to the end of the container header
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/container/index.
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/container/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export declare type NullEncoding = {
|
|
2
|
+
codecId: 0;
|
|
3
|
+
parametersBytes: number;
|
|
4
|
+
parameters: Record<string, never>;
|
|
5
|
+
};
|
|
6
|
+
export declare type ExternalCramEncoding = {
|
|
7
|
+
codecId: 1;
|
|
8
|
+
parametersBytes: number;
|
|
9
|
+
parameters: {
|
|
10
|
+
blockContentId: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export declare type GolombEncoding = {
|
|
14
|
+
codecId: 2;
|
|
15
|
+
parametersBytes: number;
|
|
16
|
+
parameters: {
|
|
17
|
+
offset: number;
|
|
18
|
+
M: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare type HuffmanEncoding = {
|
|
22
|
+
codecId: 3;
|
|
23
|
+
parametersBytes: number;
|
|
24
|
+
parameters: {
|
|
25
|
+
numCodes: number;
|
|
26
|
+
symbols: number[];
|
|
27
|
+
numLengths: number;
|
|
28
|
+
bitLengths: number[];
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export declare type ByteArrayLengthEncoding = {
|
|
32
|
+
codecId: 4;
|
|
33
|
+
parametersBytes: number;
|
|
34
|
+
parameters: {
|
|
35
|
+
lengthsEncoding: CramEncoding;
|
|
36
|
+
valuesEncoding: CramEncoding;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export declare type ByteArrayStopCramEncoding = {
|
|
40
|
+
codecId: 5;
|
|
41
|
+
parametersBytes: number;
|
|
42
|
+
parameters: {
|
|
43
|
+
stopByte: number;
|
|
44
|
+
blockContentId: number;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export declare type BetaEncoding = {
|
|
48
|
+
codecId: 6;
|
|
49
|
+
parametersBytes: number;
|
|
50
|
+
parameters: {
|
|
51
|
+
offset: number;
|
|
52
|
+
length: number;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export declare type SubexpEncoding = {
|
|
56
|
+
codecId: 7;
|
|
57
|
+
parametersBytes: number;
|
|
58
|
+
parameters: {
|
|
59
|
+
offset: number;
|
|
60
|
+
K: number;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export declare type GolombRiceEncoding = {
|
|
64
|
+
codecId: 8;
|
|
65
|
+
parametersBytes: number;
|
|
66
|
+
parameters: {
|
|
67
|
+
offset: number;
|
|
68
|
+
log2m: number;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
export declare type GammaEncoding = {
|
|
72
|
+
codecId: 9;
|
|
73
|
+
parametersBytes: number;
|
|
74
|
+
parameters: {
|
|
75
|
+
offset: number;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export declare type CramEncoding = NullEncoding | ExternalCramEncoding | GolombEncoding | HuffmanEncoding | ByteArrayLengthEncoding | ByteArrayStopCramEncoding | BetaEncoding | SubexpEncoding | GolombRiceEncoding | GammaEncoding;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/cramFile/encoding.ts"],"names":[],"mappings":""}
|