UNPKG

@gmod/bbi

Version:

Parser for BigWig/BigBed files

89 lines (76 loc) 2.19 kB
import { decompressAndParseBigWig, decompressAndParseSummary, inflateRawBatch, } from './wasm/inflate-wasm-inlined.js' import type { BigWigFeatureArrays as WasmBigWigFeatureArrays, SummaryFeatureArrays as WasmSummaryFeatureArrays, } from './wasm/inflate-wasm-inlined.js' export interface UnzipBatchResult { data: Uint8Array offsets: number[] } export async function unzipBatch( data: Uint8Array, blocks: { offset: number; length: number }[], maxOutputSize: number, ): Promise<UnzipBatchResult> { const inputOffsets = new Uint32Array(blocks.length) const inputLengths = new Uint32Array(blocks.length) for (let i = 0; i < blocks.length; i++) { const block = blocks[i]! inputOffsets[i] = block.offset inputLengths[i] = block.length } return inflateRawBatch(data, inputOffsets, inputLengths, maxOutputSize) } export async function decompressAndParseBigWigBlocks( data: Uint8Array, blocks: { offset: number; length: number }[], maxOutputSize: number, reqStart: number, reqEnd: number, ): Promise<WasmBigWigFeatureArrays> { const inputOffsets = new Uint32Array(blocks.length) const inputLengths = new Uint32Array(blocks.length) for (let i = 0; i < blocks.length; i++) { const block = blocks[i]! inputOffsets[i] = block.offset inputLengths[i] = block.length } return decompressAndParseBigWig( data, inputOffsets, inputLengths, maxOutputSize, reqStart, reqEnd, ) } export async function decompressAndParseSummaryBlocks( data: Uint8Array, blocks: { offset: number; length: number }[], maxOutputSize: number, reqChrId: number, reqStart: number, reqEnd: number, ): Promise<WasmSummaryFeatureArrays> { const inputOffsets = new Uint32Array(blocks.length) const inputLengths = new Uint32Array(blocks.length) for (let i = 0; i < blocks.length; i++) { const block = blocks[i]! inputOffsets[i] = block.offset inputLengths[i] = block.length } return decompressAndParseSummary( data, inputOffsets, inputLengths, maxOutputSize, reqChrId, reqStart, reqEnd, ) } export type { BigWigFeatureArrays, SummaryFeatureArrays } from './types.ts'