UNPKG

molstar

Version:

A comprehensive macromolecular library.

430 lines (429 loc) 23.2 kB
/** * 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>;