molstar
Version:
A comprehensive macromolecular library.
42 lines (41 loc) • 1.76 kB
TypeScript
/**
* Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { Iterator } from '../../iterator';
import { OrderedSet } from '../ordered-set';
import { Interval } from '../interval';
import { SortedArray } from '../sorted-array';
import { Segmentation as Segs } from '../segmentation';
interface Segmentation {
/** Segments stored as a sorted array */
offsets: SortedArray;
/** Mapping of values to segments */
index: Int32Array;
/** Number of segments */
count: number;
}
export declare function create(values: ArrayLike<number>): Segmentation;
export declare function ofOffsets(offsets: ArrayLike<number>, bounds: Interval): Segmentation;
/** Get number of segments in a segmentation */
export declare function count({ count }: Segmentation): number;
export declare function getSegment({ index }: Segmentation, value: number): number;
export declare function projectValue({ offsets }: Segmentation, set: OrderedSet, value: number): Interval;
export declare class SegmentIterator<I extends number = number> implements Iterator<Segs.Segment<I>> {
private segments;
private segmentMap;
private set;
private segmentMin;
private segmentMax;
private setRange;
private value;
hasNext: boolean;
move(): Segs.Segment<I>;
private updateValue;
private updateSegmentRange;
setSegment(segment: Segs.Segment<number>): void;
constructor(segments: SortedArray, segmentMap: Int32Array, set: OrderedSet, inputRange: Interval);
}
export declare function segments(segs: Segmentation, set: OrderedSet, segment?: Segs.Segment): SegmentIterator<number>;
export {};