@gmod/cram
Version:
read CRAM files with pure Javascript
31 lines (30 loc) • 1.51 kB
TypeScript
import { Cursors, DataTypeMapping } from '../codecs/_base.ts';
import { DataSeriesEncodingKey } from '../codecs/dataSeriesTypes.ts';
import CramContainerCompressionScheme, { DataSeriesTypes } from '../container/compressionScheme.ts';
import { ReadFeature } from '../record.ts';
import CramSlice, { SliceHeader } from './index.ts';
import { CramFileBlock } from '../file.ts';
export type DataSeriesDecoder = <T extends DataSeriesEncodingKey>(dataSeriesName: T) => DataTypeMapping[DataSeriesTypes[T]] | undefined;
export default function decodeRecord(slice: CramSlice, decodeDataSeries: DataSeriesDecoder, compressionScheme: CramContainerCompressionScheme, sliceHeader: SliceHeader, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors, majorVersion: number, recordNumber: number): {
readLength: number;
sequenceId: number | undefined;
cramFlags: number;
flags: number;
alignmentStart: number;
readGroupId: number;
readName: string | undefined;
mateToUse: {
mateFlags: number;
mateSequenceId: number;
mateAlignmentStart: number;
mateReadName: string | undefined;
} | undefined;
templateSize: number | undefined;
mateRecordNumber: number | undefined;
readFeatures: ReadFeature[] | undefined;
lengthOnRef: number | undefined;
mappingQuality: number | undefined;
qualityScores: number[] | null | undefined;
readBases: string | null | undefined;
tags: Record<string, any>;
};