higlass
Version:
HiGlass Hi-C / genomic / large data viewer
89 lines (88 loc) • 3.22 kB
TypeScript
export default DenseDataExtrema1D;
/**
* @template {ArrayLike<number>} [T=ArrayLike<number>]
*/
declare class DenseDataExtrema1D<T extends ArrayLike<number> = ArrayLike<number>> {
/**
* This module efficiently computes extrema of arbitrary subsets of a given data array.
* The array is subdivided into 'numSubsets' subsets where extrema are precomputed.
* These values are used to compute extrema given arbitrary start and end indices via
* the getMinNonZeroInSubset and getMaxNonZeroInSubset methods.
* @param {T} data
*/
constructor(data: T);
/** @type {number} */
epsilon: number;
/** @type {T} */
data: T;
/** @type {number} */
tileSize: number;
/** @type {number} */
paddedTileSize: number;
/** @type {number} */
numSubsets: number;
/** @type {number} */
subsetSize: number;
subsetMinimums: number[];
subsetMaximums: number[];
minNonZeroInTile: number;
maxNonZeroInTile: number;
/**
* Computes the non-zero minimum in a subset using precomputed values,
* if possible. data[end] is not considered.
*
* @param {[start: number, end: number]} indexBounds
* @return {number} non-zero minium of the subset
*/
getMinNonZeroInSubset(indexBounds: [start: number, end: number]): number;
/**
* Computes the non-zero maximum in a subset using precomputed values, if possible
*
* @param {[start: number, end: number]} indexBounds
* @return {number} non-zero maxium of the subset
*/
getMaxNonZeroInSubset(indexBounds: [start: number, end: number]): number;
/**
* Precomputes non-zero minimums of subsets of the given data vector
*
* @returns {Array<number>} - Minimums of the regularly subdivided data vector
*/
computeSubsetNonZeroMinimums(): Array<number>;
/**
* Precomputes non-zero maximums of subsets of the given data vector
* @return {Array<number>} Maximums of the regularly subdivided data vector
*/
computeSubsetNonZeroMaximums(): Array<number>;
/**
* Computes the non-zero minimum in the entire data array using precomputed values
*
* @return {number} Non-zeros maximum of the data
*/
getMinNonZeroInTile(): number;
/**
* Computes the non-zero maximum in the entire data array using precomputed values
*
* @return {number} Non-zeros maximum of the data
*/
getMaxNonZeroInTile(): number;
/**
* Calculate the minimum non-zero value in the data from start
* to end. No precomputations are used to compute the min.
*
* @param {ArrayLike<number>} data
* @param {number} start
* @param {number} end
* @return {number} non-zero min in subset
*/
minNonZero(data: ArrayLike<number>, start: number, end: number): number;
/**
* Calculate the maximum non-zero value in the data from start
* to end. No precomputations are used to compute the max.
*
* @param {ArrayLike<number>} data
* @param {number} start
* @param {number} end
* @return {number} non-zero max in subset
*/
maxNonZero(data: ArrayLike<number>, start: number, end: number): number;
}