@gmod/bam
Version:
Parser for BAM and BAM index (bai) files
54 lines (53 loc) • 1.98 kB
TypeScript
import Chunk from './chunk.ts';
import type { Offset, VirtualOffset } from './virtualOffset.ts';
export interface TagFilter {
tag: string;
value?: string;
}
export interface FilterBy {
flagInclude?: number;
flagExclude?: number;
tagFilter?: TagFilter;
}
export interface BamOpts {
viewAsPairs?: boolean;
pairAcrossChr?: boolean;
maxInsertSize?: number;
signal?: AbortSignal;
filterBy?: FilterBy;
}
export interface BaseOpts {
signal?: AbortSignal;
}
export declare function optimizeChunks(chunks: Chunk[], lowest?: Offset): Chunk[];
export declare function parsePseudoBin(bytes: Uint8Array, offset: number): {
lineCount: number;
};
export declare function parseRefSeqs(uncba: Uint8Array, start: number, renameRefSeq: (s: string) => string): {
chrToIndex: Record<string, number>;
indexToChr: {
refName: string;
length: number;
}[];
} | undefined;
export declare function findFirstData(firstDataLine: VirtualOffset | undefined, virtualOffset: VirtualOffset): VirtualOffset;
export declare function parseNameBytes(namesBytes: Uint8Array, renameRefSeq?: (arg: string) => string): {
refNameToId: Record<string, number>;
refIdToName: string[];
};
export declare function concatUint8Array(args: Uint8Array[]): Uint8Array<ArrayBuffer>;
export declare function filterReadFlag(flags: number, flagInclude: number, flagExclude: number): boolean;
export declare function filterTagValue(readVal: unknown, filterVal?: string): boolean;
export declare function filterCacheKey(filterBy?: FilterBy): string;
interface Filterable {
flags: number;
tags: Record<string, unknown>;
}
export declare function applyFilters<T extends Filterable>(records: T[], filterBy: FilterBy): T[];
interface Positioned {
ref_id: number;
start: number;
end: number;
}
export declare function appendInRange<T extends Positioned>(records: T[], chrId: number, min: number, max: number, out?: T[]): T[];
export {};