molstar
Version:
A comprehensive macromolecular library.
82 lines (81 loc) • 3.45 kB
TypeScript
/**
* Copyright (c) 2018-2026 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { SpacegroupCell, Box3D, Sphere3D } from '../../mol-math/geometry.js';
import { Tensor, Mat4, Vec3 } from '../../mol-math/linear-algebra.js';
import { Histogram } from '../../mol-math/histogram.js';
/** The basic unit cell that contains the grid data. */
interface Grid {
readonly transform: Grid.Transform;
readonly cells: Tensor;
readonly stats: Readonly<{
min: number;
max: number;
mean: number;
sigma: number;
}>;
}
declare namespace Grid {
export const One: Grid;
export type Transform = {
kind: 'spacegroup';
cell: SpacegroupCell;
fractionalBox: Box3D;
} | {
kind: 'matrix';
matrix: Mat4;
};
export function getGridToCartesianTransform(grid: Grid): Mat4;
export function areEquivalent(gridA: Grid, gridB: Grid): boolean;
export function isEmpty(grid: Grid): boolean;
export function getBoundingSphere(grid: Grid, boundingSphere?: Sphere3D): Sphere3D;
/**
* Compute histogram with given bin count.
* Cached on the Grid object.
*/
export function getHistogram(grid: Grid, binCount: number): Histogram;
export function makeGetTrilinearlyInterpolated(grid: Grid, transform: 'none' | 'relative'): (position: Vec3) => number;
/**
* Core trilinear interpolation function.
* @param gridCoords - Position in grid coordinates (fractional indices)
* @param mi, mj, mk - Grid dimensions
* @param getValue - Function to get value at integer grid coordinates
* @returns Interpolated value or NaN if out of bounds
*/
export function trilinearlyInterpolate(gridCoords: Vec3, mi: number, mj: number, mk: number, getValue: (i: number, j: number, k: number) => number): number;
/**
* Core trilinear interpolation function for Vec3 values.
* More efficient for interleaved data like gradients since getValue is called once per grid point.
* @param gridCoords - Position in grid coordinates (fractional indices)
* @param mi, mj, mk - Grid dimensions
* @param getValue - Function to get Vec3 value at integer grid coordinates
* @param out - Output Vec3
* @returns true if interpolation succeeded, false if out of bounds
*/
export function trilinearlyInterpolateVec3(gridCoords: Vec3, mi: number, mj: number, mk: number, getValue: (i: number, j: number, k: number, out: Vec3) => void, out: Vec3): boolean;
type Gradients = {
values: Float32Array;
magnitude: {
min: number;
max: number;
mean: number;
sigma: number;
};
};
/**
* Pre-compute gradients at each grid cell using central differences.
* Returns a single Float32Array with interleaved xyz components (x1, y1, z1, x2, y2, z2, ...).
* Cached on the Grid object.
*/
export function getGradients(grid: Grid): Gradients;
/**
* Create a function that returns trilinearly interpolated gradient at a grid position.
* The gradient is pre-computed at grid cells and interpolated for smooth results.
*/
export function makeGetInterpolatedGradient(grid: Grid): (gridCoords: Vec3, out: Vec3) => boolean;
export {};
}
export { Grid };