UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

31 lines (30 loc) 1.51 kB
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>; };