UNPKG

higlass

Version:

HiGlass Hi-C / genomic / large data viewer

110 lines (109 loc) 2.96 kB
/** * Interval tree. * * @public * @constructor */ export class IntervalTree { /** * Root node of the tree. * @type {IntervalTreeNode | null} */ root: IntervalTreeNode | null; /** * Add new interval to the tree. * * @public * @param {Interval} interval - Array with start and end points of the interval. */ public add(interval: Interval): void; /** * Checks or point belongs to at least one intarval from the tree.<br><br> * Complexity: O(log N). * * @public * @method * @param {Number} point Point which should be checked. * @return {Boolean} True if point belongs to one of the intervals. */ public contains(point: number): boolean; /** * Checks or interval belongs to at least one intarval from the tree.<br><br> * Complexity: O(log N). * * @public * @method * @param {Interval} interval Interval which should be checked. * @return {boolean} True if interval intersects with one of the intervals. */ public intersects(interval: Interval): boolean; /** * Returns height of the tree. * * @public * @method * @return {Number} Height of the tree. */ public height(): number; /** * Returns node with the max endpoint in subtree. * * @public * @method * @param {IntervalTreeNode} node Root node of subtree. * @return {IntervalTreeNode | null} IntervalTreeNode with the largest endpoint. */ public findMax(node: IntervalTreeNode): IntervalTreeNode | null; /** * Adjust the max value. * * @param {Interval} interval * @param {IntervalTreeNode | null} node */ _removeHelper(interval: Interval, node: IntervalTreeNode | null): void; /** * Remove interval from the tree. * * @public * @method * @param {Interval} interval - Array with start and end of the interval. */ public remove(interval: Interval): void; } export type Interval = [start: number, end: number]; /** @typedef {[start: number, end: number]} Interval */ declare class IntervalTreeNode { /** * @param {number} start * @param {number} end * @param {IntervalTreeNode} [left] * @param {IntervalTreeNode} [right] */ constructor(start: number, end: number, left?: IntervalTreeNode, right?: IntervalTreeNode); /** * Node interval. * @type {Interval} */ interval: Interval; /** * Max endpoint in subtree which starts from this node. * @type {number} */ max: number; /** * Parent node. * @type {IntervalTreeNode | null} */ parentNode: IntervalTreeNode | null; /** * Left child node. * @type {IntervalTreeNode | null} */ left: IntervalTreeNode | null; /** * Right child node. * @type {IntervalTreeNode | null} */ right: IntervalTreeNode | null; } export {};