UNPKG

molstar

Version:

A comprehensive macromolecular library.

33 lines (32 loc) 1.8 kB
/** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { Interval } from './interval'; import { OrderedSet } from './ordered-set'; import * as Impl from './impl/segmentation'; declare namespace Segmentation { interface Segment<I extends number = number> { index: I; start: number; end: number; } const create: <T extends number = number, I extends number = number>(segs: ArrayLike<T>) => Segmentation<T, I>; const ofOffsets: <T extends number = number, I extends number = number>(offsets: ArrayLike<T>, bounds: Interval) => Segmentation<T, I>; const count: <T extends number = number, I extends number = number>(segs: Segmentation<T, I>) => number; const getSegment: <T extends number = number, I extends number = number>(segs: Segmentation<T, I>, value: T) => number; const projectValue: <T extends number = number, I extends number = number>(segs: Segmentation<T, I>, set: OrderedSet<T>, value: T) => Interval; /** Segment iterator that mutates a single segment object to mark all the segments. */ const transientSegments: <T extends number = number, I extends number = number>(segs: Segmentation<T, I>, set: OrderedSet<T>, segment?: Segment) => Impl.SegmentIterator<I>; type SegmentIterator<I extends number = number> = Impl.SegmentIterator<I>; } interface Segmentation<T extends number = number, I extends number = number> { '@type': 'segmentation'; /** All segments are defined by offsets [offsets[i], offsets[i + 1]) for i \in [0, count - 1] */ readonly offsets: ArrayLike<T>; /** Segment index of the i-th element */ readonly index: ArrayLike<I>; readonly count: number; } export { Segmentation };