UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

257 lines (256 loc) 8.13 kB
import type { TupleOf } from '../typescript.ts'; import type { DataSeriesEncodingMap } from './codecs/dataSeriesTypes.ts'; import type { CramEncoding } from './encoding.ts'; export declare function cramFileDefinition(): { parser: (b: Uint8Array, _startOffset?: number) => { value: { magic: string; majorVersion: number; minorVersion: number; fileId: string; }; offset: number; }; maxLength: number; }; export declare function cramBlockHeader(): { parser: (buffer: Uint8Array, _startOffset?: number) => { offset: number; value: { uncompressedSize: number; compressedSize: number; contentId: number; contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA"; compressionMethod: "raw" | "gzip" | "bzip2" | "lzma" | "rans" | "rans4x16" | "arith" | "fqzcomp" | "tok3"; }; }; maxLength: number; }; export declare function cramBlockCrc32(): { parser: (buffer: Uint8Array, offset: number) => { offset: number; value: { crc32: number; }; }; maxLength: number; }; export type CramTagDictionary = string[][]; export declare function cramTagDictionary(): { parser: (buffer: Uint8Array, offset: number) => { value: { size: number; ents: string[][]; }; offset: number; }; }; export interface CramPreservationMap { MI?: boolean; UI?: boolean; PI?: boolean; RN?: boolean; AP?: boolean; RR?: boolean; SM: [number, number, number, number, number]; TD: CramTagDictionary; } export declare function cramPreservationMap(): { parser: (buffer: Uint8Array, offset: number) => { value: { mapSize: number; mapCount: number; ents: ({ key: string; value: boolean; } | { key: string; value: number[]; } | { key: string; value: string[][]; })[]; }; offset: number; }; }; export interface MappedSliceHeader { refSeqId: number; refSeqStart: number; refSeqSpan: number; numRecords: number; recordCounter: number; numBlocks: number; numContentIds: number; contentIds: number[]; refBaseBlockId: number; md5?: TupleOf<number, 16>; } export interface UnmappedSliceHeader { numRecords: number; recordCounter: number; numBlocks: number; numContentIds: number; contentIds: number[]; md5?: TupleOf<number, 16>; } export declare function isMappedSliceHeader(header: unknown): header is MappedSliceHeader; interface Value { codecId: number; parametersBytes: number; parameters: Record<string, unknown>; } export type CompressionMethod = 'raw' | 'gzip' | 'bzip2' | 'lzma' | 'rans' | 'rans4x16' | 'arith' | 'fqzcomp' | 'tok3'; export interface BlockHeader { compressionMethod: CompressionMethod; contentType: 'FILE_HEADER' | 'COMPRESSION_HEADER' | 'MAPPED_SLICE_HEADER' | 'UNMAPPED_SLICE_HEADER' | 'EXTERNAL_DATA' | 'CORE_DATA'; contentId: number; compressedSize: number; uncompressedSize: number; } export interface CramCompressionHeader { preservation: CramPreservationMap; dataSeriesEncoding: DataSeriesEncodingMap; tagEncoding: Record<string, CramEncoding>; _size: number; _endPosition: number; } export declare function getSectionParsers(majorVersion: number): { cramFileDefinition: { parser: (b: Uint8Array, _startOffset?: number) => { value: { magic: string; majorVersion: number; minorVersion: number; fileId: string; }; offset: number; }; maxLength: number; }; cramBlockHeader: { parser: (buffer: Uint8Array, _startOffset?: number) => { offset: number; value: { uncompressedSize: number; compressedSize: number; contentId: number; contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA"; compressionMethod: "raw" | "gzip" | "bzip2" | "lzma" | "rans" | "rans4x16" | "arith" | "fqzcomp" | "tok3"; }; }; maxLength: number; }; cramBlockCrc32: { parser: (buffer: Uint8Array, offset: number) => { offset: number; value: { crc32: number; }; }; maxLength: number; }; cramDataSeriesEncodingMap: { parser: (buffer: Uint8Array, offset: number) => { value: { mapSize: number; ents: { key: string; value: Value; }[]; mapCount: number; }; offset: number; }; }; cramTagEncodingMap: { parser: (buffer: Uint8Array, offset: number) => { value: { mapSize: number; ents: { key: string; value: Value; }[]; mapCount: number; }; offset: number; }; }; cramCompressionHeader: { parser: (buffer: Uint8Array, offset: number) => { value: { dataSeriesEncoding: DataSeriesEncodingMap; preservation: CramPreservationMap; tagEncoding: Record<string, CramEncoding>; }; offset: number; }; }; cramEncoding: { parser: (buffer: Uint8Array, offset: number) => { value: Value; offset: number; }; }; cramUnmappedSliceHeader: { parser: (buffer: Uint8Array, offset: number) => { value: { recordCounter: number; md5: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number] | undefined; contentIds: number[]; numContentIds: number; numBlocks: number; numRecords: number; }; offset: number; }; maxLength: (numContentIds: number) => number; }; cramMappedSliceHeader: { parser: (buffer: Uint8Array, offset: number) => { value: { md5: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number] | undefined; numBlocks: number; numRecords: number; numContentIds: number; refSeqSpan: number; refSeqId: number; refSeqStart: number; recordCounter: number; refBaseBlockId: number; contentIds: number[]; }; offset: number; }; maxLength: (numContentIds: number) => number; }; cramContainerHeader1: { maxLength: number; parser: (buffer: Uint8Array, offset: number) => { value: { length: number; refSeqId: number; refSeqStart: number; alignmentSpan: number; numBlocks: number; numLandmarks: number; numBases: number | undefined; recordCounter: number; numRecords: number; }; offset: number; }; }; cramContainerHeader2: { parser: (buffer: Uint8Array, offset: number) => { value: { numLandmarks: number; landmarks: number[]; crc32?: number | undefined; }; offset: number; }; maxLength: (numLandmarks: number) => number; }; }; export {};