/** * Copyright (c) 2019-2023 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose * @author David Sehnal */ import { UUID } from '../../../mol-util/index.js'; import { Cell } from '../../../mol-math/geometry/spacegroup/cell.js'; import { AtomicConformation } from '../model/properties/atomic.js'; import { Column } from '../../../mol-data/db.js'; export interface Frame { readonly elementCount: number; readonly time: Time; readonly x: ArrayLike; readonly y: ArrayLike; readonly z: ArrayLike; readonly cell?: Cell; readonly velocities?: { readonly vx: ArrayLike; readonly vy: ArrayLike; readonly vz: ArrayLike; }; readonly forces?: { readonly fx: ArrayLike; readonly fy: ArrayLike; readonly fz: ArrayLike; }; readonly xyzOrdering: { isIdentity: boolean; frozen?: boolean; index?: ArrayLike; }; } export { Time }; interface Time { value: number; unit: Time.Unit; } declare function Time(value: number, unit: Time.Unit): { value: number; unit: Time.Unit; }; declare namespace Time { type Unit = 'ps' | 'step'; } export { Coordinates }; interface Coordinates { readonly id: UUID; readonly frames: Frame[]; readonly hasCell: boolean; readonly hasVelocities: boolean; readonly hasForces: boolean; readonly deltaTime: Time; readonly timeOffset: Time; } declare namespace Coordinates { function create(frames: Frame[], deltaTime: Time, timeOffset: Time): Coordinates; /** * Only use ordering if it's not identity. */ function getAtomicConformation(frame: Frame, fields: { atomId: Column; occupancy?: Column; B_iso_or_equiv?: Column; }, ordering?: ArrayLike): AtomicConformation; }