UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

30 lines 1.12 kB
import CramCodec from "./_base.js"; import { getBits } from "./getBits.js"; import { CramUnimplementedError } from "../../errors.js"; export default class SubexpCodec extends CramCodec { constructor(parameters, dataType) { super(parameters, dataType); if (this.dataType !== 'int') { throw new CramUnimplementedError(`${this.dataType} decoding not yet implemented by SUBEXP codec`); } } decode(_slice, coreDataBlock, _blocksByContentId, cursors) { let numLeadingOnes = 0; while (getBits(coreDataBlock.content, cursors.coreBlock, 1)) { numLeadingOnes = numLeadingOnes + 1; } let b; let n; if (numLeadingOnes === 0) { b = this.parameters.K; n = getBits(coreDataBlock.content, cursors.coreBlock, b); } else { b = numLeadingOnes + this.parameters.K - 1; const bits = getBits(coreDataBlock.content, cursors.coreBlock, b); n = (1 << b) | bits; } return n - this.parameters.offset; } } //# sourceMappingURL=subexp.js.map