UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

58 lines (57 loc) 2.35 kB
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[]>; }