@gmod/cram
Version:
read CRAM files with pure Javascript
64 lines (63 loc) • 2.49 kB
TypeScript
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 {};