UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

64 lines (63 loc) 2.49 kB
import { type DecodeOptions, type MateRecord, type ReadFeature } from '../record.ts'; import { type SliceHeader } from './index.ts'; import type { CramFileBlock } from '../file.ts'; import type CramSlice from './index.ts'; import type { Cursors } from '../codecs/_base.ts'; import type CramContainerCompressionScheme from '../container/compressionScheme.ts'; export interface BoundDecoders { BF(): number; CF(): number; RI(): number; RL(): number; AP(): number; RG(): number; RN(): Uint8Array; MF(): number; NS(): number; NP(): number; TS(): number; NF(): number; TL(): number; FN(): number; FC(): number; FP(): number; DL(): number; BB(): Uint8Array; QQ(): Uint8Array; BS(): number; IN(): Uint8Array; RS(): number; PD(): number; HC(): number; SC(): Uint8Array; MQ(): number; BA(): number; QS(): number; TC(): number; TN(): number; } type RFData = string | number | number[] | [string, number]; export type RFEntry = readonly [code: string, fn: () => RFData]; export declare function buildRFSchema(bd: BoundDecoders, majorVersion: number): (RFEntry | undefined)[]; export type BulkByteRawDecoder = (dataSeriesName: 'QS' | 'BA', length: number) => Uint8Array | undefined; export type BoundTagDecoders = Record<string, () => Uint8Array | number | undefined>; export default function decodeRecord(slice: CramSlice, bd: BoundDecoders, rfSchema: (RFEntry | undefined)[], boundTagDecoders: BoundTagDecoders, compressionScheme: CramContainerCompressionScheme, sliceHeader: SliceHeader, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors, majorVersion: number, recordNumber: number, uniqueId: number, decodeOptions?: Required<DecodeOptions>, decodeBulkBytesRaw?: BulkByteRawDecoder): { readLength: number; sequenceId: number; cramFlags: number; flags: number; alignmentStart: number; readGroupId: number; readNameRaw: Uint8Array<ArrayBufferLike> | undefined; mate: MateRecord | undefined; templateSize: number | undefined; mateRecordNumber: number | undefined; readFeatures: ReadFeature[] | undefined; lengthOnRef: number | undefined; mappingQuality: number | undefined; qualityScores: Uint8Array<ArrayBufferLike> | null | undefined; readBases: string | null | undefined; tags: Record<string, string | number | number[] | undefined>; uniqueId: number; }; export {};