UNPKG

@gmod/bam

Version:

Parser for BAM and BAM index (bai) files

41 lines (36 loc) 1.13 kB
export interface Offset { blockPosition: number dataPosition: number toString(): string compareTo(arg: Offset): number } export class VirtualOffset { public blockPosition: number public dataPosition: number constructor(blockPosition: number, dataPosition: number) { this.blockPosition = blockPosition // < offset of the compressed data block this.dataPosition = dataPosition // < offset into the uncompressed data } toString() { return `${this.blockPosition}:${this.dataPosition}` } compareTo(b: VirtualOffset) { return ( this.blockPosition - b.blockPosition || this.dataPosition - b.dataPosition ) } } export function fromBytes(bytes: Uint8Array, offset = 0, bigendian = false) { if (bigendian) { throw new Error('big-endian virtual file offsets not implemented') } return new VirtualOffset( bytes[offset + 7]! * 0x10000000000 + bytes[offset + 6]! * 0x100000000 + bytes[offset + 5]! * 0x1000000 + bytes[offset + 4]! * 0x10000 + bytes[offset + 3]! * 0x100 + bytes[offset + 2]!, (bytes[offset + 1]! << 8) | bytes[offset]!, ) }