@gmod/cram
Version:
read CRAM files with pure Javascript
257 lines (256 loc) • 7.97 kB
TypeScript
import { TupleOf } from '../typescript.ts';
import { DataSeriesEncodingMap } from './codecs/dataSeriesTypes.ts';
import { 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: CompressionMethod;
};
};
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: CompressionMethod;
};
};
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 {};