molstar
Version:
A comprehensive macromolecular library.
430 lines (429 loc) • 23.2 kB
TypeScript
/**
* Copyright (c) 2023-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Adam Midlik <midlik@gmail.com>
*/
import { RequiredField } from '../generic/field-schema.js';
import { SimpleParamsSchema } from '../generic/params-schema.js';
import { NodeFor, ParamsOfKind, SubtreeOfKind, TreeFor, TreeSchema } from '../generic/tree-schema.js';
import { MolstarParseFormatT } from '../mvs/param-types.js';
/** Schema for `MolstarTree` (intermediate tree representation between `MVSTree` and a real Molstar state) */
export declare const MolstarTreeSchema: TreeSchema<{
download: SimpleParamsSchema<{
/** Specifies whether file is downloaded as bytes array or string */
is_binary: RequiredField<boolean>;
url: RequiredField<string>;
}>;
parse: SimpleParamsSchema<{
/** File format */
format: RequiredField<MolstarParseFormatT>;
}>;
coordinates: SimpleParamsSchema<{
/** File format */
format: RequiredField<MolstarParseFormatT>;
}>;
trajectory: SimpleParamsSchema<{
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
/** File format */
format: RequiredField<MolstarParseFormatT>;
}>;
trajectory_with_coordinates: SimpleParamsSchema<{
/** Coordinates reference */
coordinates_ref: RequiredField<string>;
}>;
topology_with_coordinates: SimpleParamsSchema<{
format: RequiredField<MolstarParseFormatT>;
coordinates_ref: RequiredField<string>;
}>;
model: SimpleParamsSchema<Pick<{
type: RequiredField<import("../mvs/param-types.js").StructureTypeT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
model_index: RequiredField<number>;
assembly_id: RequiredField<string | null>;
radius: RequiredField<number>;
ijk_min: RequiredField<[number, number, number]>;
ijk_max: RequiredField<[number, number, number]>;
coordinates_ref: RequiredField<string | null>;
}, "model_index">>;
structure: SimpleParamsSchema<Omit<{
type: RequiredField<import("../mvs/param-types.js").StructureTypeT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
model_index: RequiredField<number>;
assembly_id: RequiredField<string | null>;
radius: RequiredField<number>;
ijk_min: RequiredField<[number, number, number]>;
ijk_max: RequiredField<[number, number, number]>;
coordinates_ref: RequiredField<string | null>;
}, "block_header" | "block_index" | "model_index" | "coordinates_ref">>;
root: SimpleParamsSchema<{}>;
transform: SimpleParamsSchema<{
rotation: RequiredField<number[]>;
translation: RequiredField<import("../mvs/param-types.js").Vector3>;
rotation_center: RequiredField<"centroid" | import("../mvs/param-types.js").Vector3 | null>;
matrix: RequiredField<number[] | null>;
}>;
instance: SimpleParamsSchema<{
rotation: RequiredField<number[]>;
translation: RequiredField<import("../mvs/param-types.js").Vector3>;
rotation_center: RequiredField<"centroid" | import("../mvs/param-types.js").Vector3 | null>;
matrix: RequiredField<number[] | null>;
}>;
component: SimpleParamsSchema<{
selector: RequiredField<import("../mvs/param-types.js").ComponentSelectorT | import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").ComponentExpressionT[]>;
}>;
component_from_uri: SimpleParamsSchema<{
field_name: RequiredField<string>;
field_values: RequiredField<string[] | null>;
uri: RequiredField<string>;
format: RequiredField<import("../mvs/param-types.js").SchemaFormatT>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
component_from_source: SimpleParamsSchema<{
field_name: RequiredField<string>;
field_values: RequiredField<string[] | null>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
representation: import("../generic/params-schema.js").UnionParamsSchema<"type", {
cartoon: SimpleParamsSchema<{
size_factor: RequiredField<number>;
tubular_helices: RequiredField<boolean>;
}>;
backbone: SimpleParamsSchema<{
size_factor: RequiredField<number>;
}>;
ball_and_stick: SimpleParamsSchema<{
size_factor: RequiredField<number>;
ignore_hydrogens: RequiredField<boolean>;
}>;
line: SimpleParamsSchema<{
size_factor: RequiredField<number>;
ignore_hydrogens: RequiredField<boolean>;
}>;
spacefill: SimpleParamsSchema<{
size_factor: RequiredField<number>;
ignore_hydrogens: RequiredField<boolean>;
}>;
carbohydrate: SimpleParamsSchema<{
size_factor: RequiredField<number>;
}>;
surface: SimpleParamsSchema<{
surface_type: RequiredField<"gaussian" | "molecular">;
size_factor: RequiredField<number>;
ignore_hydrogens: RequiredField<boolean>;
}>;
}>;
volume: SimpleParamsSchema<{
channel_id: RequiredField<string | null>;
}>;
volume_representation: import("../generic/params-schema.js").UnionParamsSchema<"type", {
isosurface: SimpleParamsSchema<{
relative_isovalue: RequiredField<number | null>;
absolute_isovalue: RequiredField<number | null>;
show_wireframe: RequiredField<boolean>;
show_faces: RequiredField<boolean>;
}>;
grid_slice: SimpleParamsSchema<{
dimension: RequiredField<"x" | "y" | "z">;
absolute_index: RequiredField<number | null>;
relative_index: RequiredField<number | null>;
relative_isovalue: RequiredField<number | null>;
absolute_isovalue: RequiredField<number | null>;
}>;
}>;
color: SimpleParamsSchema<{
color: RequiredField<import("../mvs/param-types.js").ColorT>;
selector: RequiredField<import("../mvs/param-types.js").ComponentSelectorT | import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").ComponentExpressionT[]>;
}>;
color_from_uri: SimpleParamsSchema<{
field_name: RequiredField<string>;
palette: RequiredField<import("../mvs/param-types.js").CategoricalPalette | import("../mvs/param-types.js").DiscretePalette | import("../mvs/param-types.js").ContinuousPalette | null>;
uri: RequiredField<string>;
format: RequiredField<import("../mvs/param-types.js").SchemaFormatT>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
color_from_source: SimpleParamsSchema<{
field_name: RequiredField<string>;
palette: RequiredField<import("../mvs/param-types.js").CategoricalPalette | import("../mvs/param-types.js").DiscretePalette | import("../mvs/param-types.js").ContinuousPalette | null>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
clip: import("../generic/params-schema.js").UnionParamsSchema<"type", {
plane: SimpleParamsSchema<{
normal: RequiredField<import("../mvs/param-types.js").Vector3>;
point: RequiredField<import("../mvs/param-types.js").Vector3>;
check_transform: RequiredField<number[] | null>;
invert: RequiredField<boolean>;
variant: RequiredField<"object" | "pixel">;
}>;
sphere: SimpleParamsSchema<{
center: RequiredField<import("../mvs/param-types.js").Vector3>;
radius: RequiredField<number>;
check_transform: RequiredField<number[] | null>;
invert: RequiredField<boolean>;
variant: RequiredField<"object" | "pixel">;
}>;
box: SimpleParamsSchema<{
center: RequiredField<import("../mvs/param-types.js").Vector3>;
size: RequiredField<import("../mvs/param-types.js").Vector3>;
rotation: RequiredField<number[]>;
check_transform: RequiredField<number[] | null>;
invert: RequiredField<boolean>;
variant: RequiredField<"object" | "pixel">;
}>;
}>;
opacity: SimpleParamsSchema<{
opacity: RequiredField<number>;
}>;
label: SimpleParamsSchema<{
text: RequiredField<string>;
}>;
label_from_uri: SimpleParamsSchema<{
field_name: RequiredField<string>;
uri: RequiredField<string>;
format: RequiredField<import("../mvs/param-types.js").SchemaFormatT>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
label_from_source: SimpleParamsSchema<{
field_name: RequiredField<string>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
tooltip: SimpleParamsSchema<{
text: RequiredField<string>;
}>;
tooltip_from_uri: SimpleParamsSchema<{
field_name: RequiredField<string>;
uri: RequiredField<string>;
format: RequiredField<import("../mvs/param-types.js").SchemaFormatT>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
tooltip_from_source: SimpleParamsSchema<{
field_name: RequiredField<string>;
schema: RequiredField<import("../mvs/param-types.js").SchemaT>;
block_header: RequiredField<string | null>;
block_index: RequiredField<number>;
category_name: RequiredField<string | null>;
field_remapping: RequiredField<{
[x: string]: string | null;
}>;
}>;
focus: SimpleParamsSchema<{
direction: RequiredField<import("../mvs/param-types.js").Vector3>;
up: RequiredField<import("../mvs/param-types.js").Vector3>;
radius: RequiredField<number | null>;
radius_factor: RequiredField<number>;
radius_extent: RequiredField<number>;
}>;
camera: SimpleParamsSchema<{
target: RequiredField<import("../mvs/param-types.js").Vector3>;
position: RequiredField<import("../mvs/param-types.js").Vector3>;
up: RequiredField<import("../mvs/param-types.js").Vector3>;
near: RequiredField<number | null>;
}>;
canvas: SimpleParamsSchema<{
background_color: RequiredField<import("../mvs/param-types.js").ColorT>;
}>;
primitives: SimpleParamsSchema<{
color: RequiredField<import("../mvs/param-types.js").ColorT>;
label_color: RequiredField<import("../mvs/param-types.js").ColorT>;
tooltip: RequiredField<string | null>;
opacity: RequiredField<number>;
label_opacity: RequiredField<number>;
label_show_tether: RequiredField<boolean>;
label_tether_length: RequiredField<number>;
label_attachment: RequiredField<import("../mvs/param-types.js").LabelAttachments>;
label_background_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
snapshot_key: RequiredField<string | null>;
instances: RequiredField<number[][] | null>;
}>;
primitives_from_uri: SimpleParamsSchema<{
uri: RequiredField<string>;
format: RequiredField<"mvs-node-json">;
references: RequiredField<string[]>;
}>;
primitive: import("../generic/params-schema.js").UnionParamsSchema<"kind", {
mesh: SimpleParamsSchema<{
vertices: RequiredField<number[]>;
indices: RequiredField<number[]>;
triangle_groups: RequiredField<number[] | null>;
group_colors: RequiredField<{
[x: number]: import("../mvs/param-types.js").ColorT;
}>;
group_tooltips: RequiredField<{
[x: number]: string;
}>;
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
tooltip: RequiredField<string | null>;
show_triangles: RequiredField<boolean>;
show_wireframe: RequiredField<boolean>;
wireframe_width: RequiredField<number>;
wireframe_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
}>;
lines: SimpleParamsSchema<{
vertices: RequiredField<number[]>;
indices: RequiredField<number[]>;
line_groups: RequiredField<number[] | null>;
group_colors: RequiredField<{
[x: number]: import("../mvs/param-types.js").ColorT;
}>;
group_tooltips: RequiredField<{
[x: number]: string;
}>;
group_widths: RequiredField<{
[x: number]: number;
}>;
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
tooltip: RequiredField<string | null>;
width: RequiredField<number>;
}>;
tube: SimpleParamsSchema<{
tooltip: RequiredField<string | null>;
start: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
end: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
radius: RequiredField<number>;
dash_length: RequiredField<number | null>;
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
}>;
arrow: SimpleParamsSchema<{
start: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
end: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT | null>;
direction: RequiredField<import("../mvs/param-types.js").Vector3 | null>;
length: RequiredField<number | null>;
show_start_cap: RequiredField<boolean>;
start_cap_length: RequiredField<number | null>;
start_cap_radius: RequiredField<number | null>;
show_end_cap: RequiredField<boolean>;
end_cap_length: RequiredField<number | null>;
end_cap_radius: RequiredField<number | null>;
show_tube: RequiredField<boolean>;
tube_radius: RequiredField<number>;
tube_dash_length: RequiredField<number | null>;
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
tooltip: RequiredField<string | null>;
}>;
distance_measurement: SimpleParamsSchema<{
label_template: RequiredField<string>;
label_size: RequiredField<number | null>;
label_auto_size_scale: RequiredField<number>;
label_auto_size_min: RequiredField<number>;
label_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
start: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
end: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
radius: RequiredField<number>;
dash_length: RequiredField<number | null>;
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
}>;
angle_measurement: SimpleParamsSchema<{
a: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
b: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
c: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
label_template: RequiredField<string>;
label_size: RequiredField<number | null>;
label_auto_size_scale: RequiredField<number>;
label_auto_size_min: RequiredField<number>;
label_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
show_vector: RequiredField<boolean>;
vector_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
vector_radius: RequiredField<number>;
show_section: RequiredField<boolean>;
section_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
section_radius: RequiredField<number | null>;
section_radius_scale: RequiredField<number>;
}>;
label: SimpleParamsSchema<{
position: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
text: RequiredField<string>;
label_size: RequiredField<number>;
label_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
label_offset: RequiredField<number>;
}>;
ellipse: SimpleParamsSchema<{
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
as_circle: RequiredField<boolean>;
center: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
major_axis: RequiredField<import("../mvs/param-types.js").Vector3 | null>;
minor_axis: RequiredField<import("../mvs/param-types.js").Vector3 | null>;
major_axis_endpoint: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT | null>;
minor_axis_endpoint: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT | null>;
radius_major: RequiredField<number | null>;
radius_minor: RequiredField<number | null>;
theta_start: RequiredField<number>;
theta_end: RequiredField<number>;
tooltip: RequiredField<string | null>;
}>;
ellipsoid: SimpleParamsSchema<{
color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
center: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
major_axis: RequiredField<import("../mvs/param-types.js").Vector3 | null>;
minor_axis: RequiredField<import("../mvs/param-types.js").Vector3 | null>;
major_axis_endpoint: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT | null>;
minor_axis_endpoint: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT | null>;
radius: RequiredField<number | import("../mvs/param-types.js").Vector3 | null>;
radius_extent: RequiredField<number | import("../mvs/param-types.js").Vector3 | null>;
tooltip: RequiredField<string | null>;
}>;
box: SimpleParamsSchema<{
center: RequiredField<import("../mvs/param-types.js").ComponentExpressionT | import("../mvs/param-types.js").Vector3 | import("../mvs/param-types.js").PrimitiveComponentExpressionT>;
extent: RequiredField<import("../mvs/param-types.js").Vector3 | null>;
show_faces: RequiredField<boolean>;
face_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
show_edges: RequiredField<boolean>;
edge_radius: RequiredField<number>;
edge_color: RequiredField<import("../mvs/param-types.js").ColorT | null>;
tooltip: RequiredField<string | null>;
}>;
}>;
}, "root">;
/** Node kind in a `MolstarTree` */
export type MolstarKind = keyof typeof MolstarTreeSchema.nodes;
/** Node in a `MolstarTree` */
export type MolstarNode<TKind extends MolstarKind = MolstarKind> = NodeFor<typeof MolstarTreeSchema, TKind>;
/** Params for a specific node kind in a `MolstarTree` */
export type MolstarNodeParams<TKind extends MolstarKind> = ParamsOfKind<MolstarTree, TKind>;
/** Intermediate tree representation between `MVSTree` and a real Molstar state */
export type MolstarTree = TreeFor<typeof MolstarTreeSchema>;
/** Any subtree in a `MolstarTree` (e.g. its root doesn't need to be 'root') */
export type MolstarSubtree<TKind extends MolstarKind = MolstarKind> = SubtreeOfKind<MolstarTree, TKind>;