@gmod/cram
Version:
read CRAM files with pure Javascript
58 lines (57 loc) • 2.35 kB
TypeScript
import { type CramFileBlock } from '../file.ts';
import CramRecord from '../record.ts';
import type { DecodeOptions } from '../record.ts';
import type { MappedSliceHeader, UnmappedSliceHeader } from '../sectionParsers.ts';
import type CramContainer from '../container/index.ts';
export type SliceHeader = CramFileBlock & {
parsedContent: MappedSliceHeader | UnmappedSliceHeader;
};
export default class CramSlice {
private file;
container: CramContainer;
containerPosition: number;
sliceSize: number;
private _headerResult?;
private _blocksResult?;
private _blocksContentIdIndexResult?;
constructor(container: CramContainer, containerPosition: number, sliceSize: number);
getHeader(): Promise<{
parsedContent: {
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;
} & {
_endPosition: number;
_size: number;
};
compressionMethod: import("../sectionParsers.ts").CompressionMethod;
contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA";
contentId: number;
compressedSize: number;
uncompressedSize: number;
_endPosition: number;
contentPosition: number;
_size: number;
content: Uint8Array;
crc32?: number;
}>;
private _fetchHeader;
getBlocks(): Promise<CramFileBlock[]>;
private _fetchBlocks;
getCoreDataBlock(): Promise<CramFileBlock | undefined>;
_getBlocksContentIdIndex(): Promise<Record<number, CramFileBlock>>;
private _fetchBlocksContentIdIndex;
getBlockByContentId(id: number): Promise<CramFileBlock | undefined>;
getReferenceRegion(): Promise<{
seq: string;
start: number;
end: number;
span: number;
} | undefined>;
getAllRecords(): Promise<CramRecord[]>;
_fetchRecords(decodeOptions: Required<DecodeOptions>): Promise<CramRecord[]>;
getRecords(filterFunction: (r: CramRecord) => boolean, decodeOptions?: DecodeOptions): Promise<CramRecord[]>;
}