drugflow-molstar
Version:
Molstar implementation for DrugFlow
903 lines (902 loc) • 33.6 kB
TypeScript
import { PluginContext } from 'molstar/lib/mol-plugin/context';
import { StateObject } from 'molstar/lib/mol-state';
import { PluginStateObject } from 'molstar/lib/mol-plugin-state/objects';
import { StateBuilder } from 'molstar/lib/mol-state';
import { Loci } from 'molstar/lib/mol-model/loci';
import { QueryParam } from './helpers';
import { Structure } from "molstar/lib/mol-model/structure";
import { StructureElement } from 'molstar/lib/mol-model/structure';
import { Representation } from 'molstar/lib/mol-repr/representation';
import { StructureRepresentationProvider } from 'molstar/lib/mol-repr/structure/representation';
import { ParamDefinition as PD } from 'molstar/lib/mol-util/param-definition';
declare class DrugflowMolstarPlugin {
private _ev;
readonly events: {
loadComplete: import("rxjs").Subject<boolean>;
};
plugin: PluginContext;
assemblyRef: string;
granularity: string;
selected_info: any;
selectedParams: any;
isHighlightColorUpdated: boolean;
private hiddenState;
init(targetElement: HTMLElement, params?: any): Promise<void>;
get state(): import("Molstar/mol-state/state").State;
private applyState;
private create_ligand_view;
create_tmp_label_comp(): Promise<void>;
create_surf_comp(name?: string): Promise<void>;
create_tmp_ligand_comp(chain_id: string, ligand_res_id: number): Promise<void>;
remove_tmp_comp(comp_ref: string, _structure_id?: string): Promise<void>;
/**
* 创建配体查询(排除水分子)
*/
private createLigandQuery;
/**
* 创建多肽链查询(auth_asym_id包含'p')
*/
private createPeptideQuery;
/**
* 创建非多肽聚合物查询(排除多肽链)
*/
private createNonPeptidePolymerQuery;
/**
* 创建基础结构(从model)
*/
createBaseStructure(model: any, structureId: string): StateBuilder.To<PluginStateObject.Molecule.Structure, import("Molstar/mol-state/transformer").StateTransformer<PluginStateObject.Molecule.Model, PluginStateObject.Molecule.Structure, PD.Normalize<{
type: PD.NamedParams<PD.Normalize<{
dynamicBonds: any;
}>, "auto"> | PD.NamedParams<PD.Normalize<{
dynamicBonds: any;
id: any;
}>, "assembly"> | PD.NamedParams<PD.Normalize<{
dynamicBonds: any;
ijkMin: any;
ijkMax: any;
}>, "symmetry"> | PD.NamedParams<PD.Normalize<{
dynamicBonds: any;
}>, "model"> | PD.NamedParams<PD.Normalize<{
dynamicBonds: any;
radius: any;
}>, "symmetry-mates"> | PD.NamedParams<PD.Normalize<{
dynamicBonds: any;
generators: any;
}>, "symmetry-assembly">;
}>>>;
/**
* 异步构建完整蛋白结构(推荐使用)
* 使用 createComponent API,结构更清晰
*/
buildFullProteinStructureAsync(structureId?: string, options?: {
polymer?: boolean;
ligand?: boolean;
water?: boolean;
}): Promise<string[]>;
/**
* 异步构建配体口袋组件
* 创建配体和周围环境两个组件
*/
private buildLigandPocketComponentsAsync;
/**
* 异步构建多肽链组件
* 创建多肽链组件和可选的背景组件
*/
private buildPeptideComponentsAsync;
/**
* 加载数据(从URL或字符串)
*/
loadData(params: {
url?: string;
pdbString?: string;
isBinary?: boolean;
}): Promise<import("Molstar/mol-state/object").StateObjectSelector<PluginStateObject.Data.String | PluginStateObject.Data.Binary, import("Molstar/mol-state/transformer").StateTransformer<StateObject<any, StateObject.Type<any>>, StateObject<any, StateObject.Type<any>>, any>>>;
/**
* 解析轨迹并创建模型
*/
parseAndCreateModel(data: any, format: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', modelIndex?: number): Promise<import("Molstar/mol-state/object").StateObjectSelector<PluginStateObject.Molecule.Model, import("Molstar/mol-state/transformer").StateTransformer<StateObject<any, StateObject.Type<any>>, StateObject<any, StateObject.Type<any>>, any>>>;
/**
* 更新assemblyRef
*/
private updateAssemblyRef;
/**
* 获取所有已加载的结构列表
* @returns 结构信息数组
*/
getLoadedStructures(): {
index: number;
ref: string;
label: string;
components: {
key: string | undefined;
ref: string;
label: string | undefined;
}[];
}[];
/**
* 获取指定组件的所有表示
* @param componentRef - 组件引用
* @returns 表示信息数组
*/
getRepresentations(componentRef: string): any[];
/**
* 获取指定 Structure 的所有 contact
* @param structureRef - Structure 引用(如 'Structure_0')
* @returns Contact 信息数组
*/
getContacts(structureRef: string): any[];
/**
* 获取所有组件及其表示的完整树形结构
* @returns 完整的结构树
*/
getStructureTree(): {
components: {
representations: any[];
key: string | undefined;
ref: string;
label: string | undefined;
}[];
contacts: any[];
index: number;
ref: string;
label: string;
}[];
/**
* 更新表示参数
* @param reprRef - 表示引用
* @param params - 新的参数
*/
updateRepresentation(reprRef: string, params: any): Promise<void>;
/**
* 删除指定的表示
* @param reprRef - 表示引用
*/
deleteRepresentation(reprRef: string): Promise<void>;
/**
* 切换表示的可见性
* @param reprRef - 表示引用
*/
toggleRepresentationVisibility(reprRef: string): void;
/**
* 切换 contact 的可见性
* @param contactRef - contact 引用
*/
toggleContactVisibility(contactRef: string): void;
/**
* 删除组件及其所有表示
* @param componentRef - 组件引用
*/
deleteComponent(componentRef: string): Promise<void>;
/**
* 删除整个结构(Structure)及其所有组件和表示
* @param structureId - 结构ID(如 '0', '1', 'ref-1' 等)
* @returns 是否成功删除
*/
deleteStructure(structureId: string): Promise<boolean>;
/**
* 创建新组件
* @param options - 组件配置选项
* @returns 组件引用
*/
createComponent(options: {
/** 组件类型: 'polymer', 'ligand', 'water', 'ion', 'all', 'custom' */
type: 'polymer' | 'ligand' | 'water' | 'ion' | 'all' | 'custom';
/** 组件引用(可选,自动生成) */
componentRef?: string;
/** 结构ID(可选,默认'0') */
structureId?: string;
/** 自定义查询表达式(type='custom'时使用) */
expression?: any;
/** 组件标签(可选) */
label?: string;
}): Promise<string | null>;
/**
* 获取当前用户选择的 Expression
* @returns 选择的 MolScript Expression,如果没有选择则返回 null
*/
getSelectionExpression(): Promise<any | null>;
/**
* 修改表示的显示类型
* @param reprRef - 表示引用
* @param type - 新的类型 (cartoon, ball-and-stick, surface等)
* @param params - 额外参数
*/
changeRepresentationType(reprRef: string, type: string, params?: any): Promise<void>;
/**
* 修改表示的颜色主题
* @param reprRef - 表示引用
* @param colorTheme - 颜色主题名称
*/
changeRepresentationColor(reprRef: string, colorTheme: string): Promise<void>;
/**
* 修改表示的透明度
* @param reprRef - 表示引用
* @param alpha - 透明度 (0-1)
*/
changeRepresentationAlpha(reprRef: string, alpha: number): Promise<void>;
/**
* 加载并渲染完整蛋白结构
* @param url - PDB文件URL
* @param format - 文件格式 (mmcif, pdb, sdf等)
* @param options - 可选参数
*/
/**
* 加载完整蛋白结构
* 流程:Load Data → Parse Model → Add Structure → Create Components
*
* @param url - 蛋白文件URL
* @param format - 文件格式
* @param options - 加载选项
* @returns 创建的组件引用列表
*/
loadFullProtein(url: string, format?: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', options?: {
isBinary?: boolean;
modelIndex?: number;
showPolymer?: boolean;
showLigand?: boolean;
showWater?: boolean;
pdbString?: string;
}): Promise<{
componentRefs: string[];
structureId: string;
}>;
/**
* 加载并渲染配体口袋
* 流程:Load Data → Parse Model → Add Structure → Create Ligand Pocket Components
*
* 支持多次调用创建多个配体口袋叠加视图进行比较
*
* @param url - PDB文件URL
* @param ligandInfo - 配体信息
* @param format - 文件格式
* @param options - 可选参数
* @returns 创建的组件引用列表 [ligandRef, surroundingsRef]
*
*/
loadLigandPocket(url: string, ligandInfo: {
name?: string;
site?: string;
ligandId?: string;
}, format?: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', options?: {
isBinary?: boolean;
modelIndex?: number;
pdbString?: string;
clearPrevious?: boolean;
radius?: number;
}): Promise<{
componentRefs: string[];
structureId: string;
}>;
/**
* 加载并渲染多肽链
* 流程:Load Data → Parse Model → Add Structure → Create Peptide Components
*
* @param url - PDB文件URL
* @param format - 文件格式
* @param options - 可选参数
* @returns 创建的组件引用列表
*
* @example
* ```javascript
* // 只显示多肽链
* const components = await viewer.loadPeptide('protein.pdb', 'pdb', {
* showBackground: false,
* showLigand: true
* });
*
* // 显示多肽链和背景
* const components = await viewer.loadPeptide('protein.pdb', 'pdb', {
* showBackground: true,
* showLigand: true,
* showWater: false
* });
* ```
*/
loadPeptide(url: string, format?: 'mmcif' | 'pdb' | 'sdf' | 'mol' | 'mol2' | 'xyz' | 'gro' | 'pdbqt' | 'cifCore', options?: {
isBinary?: boolean;
modelIndex?: number;
showBackground?: boolean;
showLigand?: boolean;
showWater?: boolean;
pdbString?: string;
clearPrevious?: boolean;
peptideId?: string;
}): Promise<{
componentRefs: string[];
structureId: string;
}>;
private getObj;
/**
* 为组件添加3D表示
*
* @example
* ```javascript
* // 添加cartoon表示
* await viewer.add_repr({
* componentRef: 'Polymer',
* type: 'cartoon',
* colorTheme: 'secondary-structure'
* });
*
* // 添加半透明surface
* await viewer.add_repr({
* componentRef: 'Polymer',
* type: 'molecular-surface',
* colorTheme: 'hydrophobicity',
* alpha: 0.5
* });
* ```
*
* @param options - 表示配置选项
* @returns 表示引用
*/
add_repr(options: {
/** 组件引用,如 'Polymer', 'Ligand' */
componentRef: string;
/** 表示引用(可选,自动生成) */
reprRef?: string;
/**
* 表示类型
* 常用值: 'cartoon', 'ball-and-stick', 'spacefill', 'molecular-surface', 'line', 'point'
*/
type: string;
/**
* 颜色主题(可选)
* 常用值: 'secondary-structure', 'element-symbol', 'chain-id', 'residue-name',
* 'uniform', 'hydrophobicity', 'atom-id', 'residue-index'
*/
colorTheme?: string;
/** 透明度 0-1(可选,默认1) */
alpha?: number;
/** 是否初始可见(默认true) */
visible?: boolean;
/** 结构ID(可选,默认'0') */
structureId?: string;
/** 额外的类型参数(可选) */
params?: any;
}): Promise<string | null>;
private visual_tree;
private parse_selection_info;
private update_selected_info;
set_visibility(ref: string): void;
clear(): Promise<void>;
add_click_listener(): void;
add_mouse_event(func: any): void;
private add_selection_info;
/**
* 根据参数获取 Loci
* @param params - 查询参数
* @param structureNumber - 结构编号(1-based,可选)
* @param _expand - 扩展范围(可选,保留用于兼容性)
* @param structureRef - 结构引用(如 'Structure_0',可选)
* @returns Loci 对象
*/
getLociForParams(params: QueryParam[], structureNumber?: number, _expand?: number, structureRef?: string): {
kind: "empty-loci";
} | StructureElement.Loci;
get_basic_info(): any;
canvas: {
toggleControls: (isVisible?: boolean) => void;
toggleExpanded: (isExpanded?: boolean) => void;
setBgColor: (color?: {
r: number;
g: number;
b: number;
}) => void;
applySettings: (settings?: {
color?: {
r: number;
g: number;
b: number;
};
lighting?: string;
}) => void;
toggleSelect: (isSelect?: boolean) => void;
};
measure: {
add_distance: () => Promise<void>;
add_angle: () => Promise<void>;
add_dihedral: () => Promise<void>;
add_orientation: () => Promise<void>;
add_plane: () => Promise<void>;
clean_all_measure: () => Promise<void>;
};
visual: {
select_all: () => Promise<void>;
select_none: () => void;
expand_select: (expand: number, type?: string) => Promise<void>;
deselect_current: () => Promise<void>;
inverse_select: () => Promise<void>;
hideSelect: () => Promise<void>;
_showSelect: (type?: string) => Promise<0 | -1>;
changeProps: (val: any) => Promise<void>;
toggleSpin: (isSpinning?: boolean, resetCamera?: boolean) => void;
focus: (params: QueryParam[], structureNumber?: number, expand_num?: number) => void;
get_current_loci: () => Promise<{
kind: "empty-loci";
}>;
focus_loci: (loci: Loci | Loci[]) => void;
focus_now: () => Promise<void>;
select: (params: QueryParam[], deselect?: boolean) => void;
camera_reset: () => Promise<void>;
/**
* 应用所有隐藏状态(内部方法)
*/
_applyHiddenState: () => Promise<void>;
/**
* 使用透明度隐藏指定的链
* @param chainId 链ID,例如 'A', 'B'
*/
hideChain: (chainId: string) => Promise<void>;
/**
* 清除指定链的透明度来显示
* @param chainId 链ID,例如 'A', 'B'
*/
showChain: (chainId: string) => Promise<void>;
/**
* 使用透明度隐藏指定链中的残基
* @param chainId 链ID,例如 'A', 'B'
* @param residueIds 残基序号数组,例如 [10, 15, 20] 或范围 { start: 10, end: 20 }
*/
hideResidues: (chainId: string, residueIds: number[] | {
start: number;
end: number;
}) => Promise<void>;
/**
* 清除指定链中残基的透明度来显示
* @param chainId 链ID,例如 'A', 'B'
* @param residueIds 残基序号数组,例如 [10, 15, 20] 或范围 { start: 10, end: 20 }
*/
showResidues: (chainId: string, residueIds: number[] | {
start: number;
end: number;
}) => Promise<void>;
/**
* 切换残基的显示/隐藏状态
* @param chainId 链ID
* @param residueIds 残基序号数组或范围
* @param visible true显示,false隐藏
*/
toggleResidues: (chainId: string, residueIds: number[] | {
start: number;
end: number;
}, visible: boolean) => Promise<void>;
/**
* 使用透明度隐藏指定的配体
* @param chainId 链ID
* @param resId 残基序号(可选)
* @param resName 残基名称(可选)
*/
hideLigand: (chainId: string, resId?: number, resName?: string) => Promise<void>;
/**
* 清除指定配体的透明度来显示
* @param chainId 链ID
* @param resId 残基序号(可选)
* @param resName 残基名称(可选)
*/
showLigand: (chainId: string, resId?: number, resName?: string) => Promise<void>;
/**
* 批量隐藏多个链
* @param chainIds 链ID数组,例如 ['A', 'B', 'C']
*/
hideChains: (chainIds: string[]) => Promise<void>;
/**
* 批量显示多个链
* @param chainIds 链ID数组,例如 ['A', 'B', 'C']
*/
showChains: (chainIds: string[]) => Promise<void>;
/**
* 切换链的显示/隐藏状态
* @param chainId 链ID
* @param visible true显示,false隐藏
*/
toggleChain: (chainId: string, visible: boolean) => Promise<void>;
/**
* 切换配体的显示/隐藏状态
* @param chainId 链ID
* @param visible true显示,false隐藏
* @param resId 残基序号(可选)
* @param resName 残基名称(可选)
*/
toggleLigand: (chainId: string, visible: boolean, resId?: number, resName?: string) => Promise<void>;
/**
* 清除所有透明度,恢复所有被隐藏的元素
*/
clearAllTransparency: () => Promise<void>;
/**
* 获取当前隐藏状态
*/
getHiddenState: () => {
chains: string[];
ligands: string[];
residues: {
[chainId: string]: number[];
};
};
};
add_shape(structure: any, params: any): Promise<import("Molstar/mol-state/object").StateObjectSelector<PluginStateObject.Molecule.Structure.Representation3D, import("Molstar/mol-state/transformer").StateTransformer<StateObject<any, StateObject.Type<any>>, StateObject<any, StateObject.Type<any>>, any>>>;
remove_shape(selector: any): void;
add_contact(contactPair: {
structure_ref: string;
start_query: QueryParam[];
end_query: QueryParam[];
interactionType: string;
color: number;
id: string;
}): Promise<void>;
/**
* 添加自动计算的相互作用表示(使用 molstar 内置的 Interactions)
* 此方法会自动计算和显示选定区域的所有相互作用(氢键、疏水作用、π-π堆积等)
*
* @param componentRef - 组件引用(如 'Ligand_0')
* @param options - 可选参数
* @returns 表示引用
*
* @example
* ```javascript
* // 为配体添加相互作用表示
* await viewer.add_interactions_repr({
* componentRef: 'Ligand_0',
* structureId: '0'
* });
*
* // 自定义相互作用参数
* await viewer.add_interactions_repr({
* componentRef: 'Ligand_plus_0',
* structureId: '0',
* interactionTypes: ['hydrogen-bond', 'hydrophobic', 'pi-stacking']
* });
*
* // 只显示跨链相互作用(多肽场景)
* await viewer.add_interactions_repr({
* componentRef: 'Polymer_p_plus_1',
* structureId: '1',
* interChainOnly: true // 只显示不同链之间的相互作用
* });
* ```
*/
add_interactions_repr(options: {
/** 组件引用 */
componentRef: string;
/** 表示引用(可选,自动生成) */
reprRef?: string;
/** 结构ID(可选,默认'0') */
structureId?: string;
/**
* 相互作用类型(可选)
* 可用值: 'hydrogen-bond', 'halogen-bond', 'ionic', 'metal-coordination',
* 'cation-pi', 'pi-stacking', 'hydrophobic', 'weak-hydrogen-bond'
*/
interactionTypes?: string[];
/** 是否只显示跨链相互作用(默认false) */
interChainOnly?: boolean;
/** 是否初始可见(默认true) */
visible?: boolean;
/** 额外参数(可选) */
params?: any;
}): Promise<string | null>;
/**
* 为指定组件自动计算并显示相互作用
* 这是一个通用方法,可用于任意组件(配体、多肽、聚合物等)
*
* @param componentRef - 组件引用(如 'Polymer_p1', 'Ligand_plus_0' 等)
* @param structureId - 结构ID(可选,默认'0')
* @param interactionTypes - 相互作用类型(可选)
* @param interChainOnly - 是否只显示跨链相互作用(可选,默认自动判断)
* @returns 创建的 interactions 表示引用
*
* @example
* ```javascript
* // 为多肽显示相互作用(自动启用跨链过滤)
* await viewer.show_component_interactions('Polymer_p_plus_1', '1');
*
* // 为配体显示相互作用
* await viewer.show_component_interactions('Ligand_plus_0', '0');
*
* // 自定义相互作用类型
* await viewer.show_component_interactions('Polymer_p2', '2', ['hydrogen-bond', 'ionic']);
* ```
*/
show_component_interactions(componentRef: string, structureId?: string, interactionTypes?: string[], interChainOnly?: boolean): Promise<string | null>;
/**
* 创建多肽周围环境组件(包含多肽本身+周围残基)
* 用于计算多肽与周围残基之间的相互作用
*
* @param options - 配置选项
* @returns 周围环境组件引用
*
* @example
* ```javascript
* await viewer.create_peptide_surroundings_component({
* peptideId: '1',
* peptideChainName: 'p',
* structureId: '1',
* radius: 5
* });
* ```
*/
create_peptide_surroundings_component(options: {
peptideId: string;
peptideChainName: string;
structureId: string;
radius?: number;
}): Promise<string | null>;
/**
* 创建背景肽链周围环境组件(包含背景肽链+背景蛋白)
* 用于计算背景肽链与背景蛋白之间的相互作用
*
* @param options - 配置选项
* @returns 周围环境组件引用
*
* @example
* ```javascript
* await viewer.create_peptide_background_surroundings_component({
* structureId: 'Original',
* radius: 5
* });
* ```
*/
create_peptide_background_surroundings_component(options: {
structureId: string;
radius?: number;
}): Promise<string | null>;
/**
* 导出 Molstar 内置计算的 Interaction 数据
* 可用于绘制 2D interaction 图
*
* @param componentRef - 组件引用(如 'Ligand_plus_0')
* @param structureId - 结构ID(可选,默认'0')
* @param filterResId - 可选的残基ID,如果提供则只返回与该残基相关的相互作用
* @returns Interaction 数据数组
*
* @example
* ```javascript
* // 导出配体周围的所有相互作用数据
* const interactions = await viewer.exportInteractionsData('Ligand_plus_0');
*
* // 只导出与残基 1102 相关的相互作用
* const ligandInteractions = await viewer.exportInteractionsData('Ligand_plus_0', '0', 1102);
* console.log(ligandInteractions);
* // [
* // {
* // type: 'hydrogen-bond',
* // atomA: { chainId: 'A', resId: 1102, resName: 'KY9', atomName: 'O38', atomId: 38 },
* // atomB: { chainId: 'A', resId: 745, resName: 'LYS', atomName: 'NZ', atomId: null },
* // distance: 2.87
* // },
* // ...
* // ]
* ```
*/
exportInteractionsData(componentRef: string, structureId?: string, filterResId?: number): Promise<any[]>;
/**
* 辅助方法:从 structure、unit、features 和 feature index 获取原子信息
* @private
*/
private getAtomInfoFromFeature;
/**
* 导出配体为 SDF 格式(用于 RDKit.js 等)
*
* @param ligandComponentRef - 配体组件引用(如 'Ligand_MK1')
* @param structureId - 结构ID(可选,默认'0')
* @returns SDF 格式字符串
*
* @example
* ```javascript
* // 导出配体为 SDF
* const sdf = await viewer.exportLigandAsSDF('Ligand_MK1', '0');
*
* // 然后用 RDKit.js 生成 2D 坐标
* const mol = RDKit.get_mol(sdf);
* mol.generate_2d_coords();
* ```
*/
exportLigandAsSDF(ligandComponentRef: string, structureId?: string): Promise<string>;
/**
* 导出配体为 MOL 格式(备用方案)
*
* @param ligandComponentRef - 配体组件引用
* @param structureId - 结构ID
* @returns MOL 格式字符串
*/
exportLigandAsMOL(ligandComponentRef: string, structureId?: string): Promise<string>;
/**
* 导出配体的完整信息(包括原子、键、坐标)
* 返回更结构化的数据,方便后续处理
*
* @param ligandComponentRef - 配体组件引用
* @param structureId - 结构ID
* @returns 配体信息对象
*/
exportLigandStructure(ligandComponentRef: string, structureId?: string): Promise<any>;
/**
* 删除指定的 contact/interaction 表示
* @param contactId - contact 的 ID(通常是 prolif_id)
*/
remove_contact(contactId: string): Promise<void>;
addInteractionRepr(a: any, b: any, s_ref: string, options?: any): Promise<void>;
ArbitrarySphereVisuals: {
'arbitrary-sphere': (ctx: any, getParams: any) => import("molstar/lib/mol-repr/structure/representation").StructureRepresentation<{
x: PD.Numeric;
y: PD.Numeric;
z: PD.Numeric;
l1: PD.Numeric;
l2: PD.Numeric;
l3: PD.Numeric;
unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
includeParent: PD.BooleanParam;
doubleSided: PD.BooleanParam;
flipSided: PD.BooleanParam;
flatShaded: PD.BooleanParam;
ignoreLight: PD.BooleanParam;
xrayShaded: PD.Select<boolean | "inverted">;
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
bumpFrequency: PD.Numeric;
bumpAmplitude: PD.Numeric;
alpha: PD.Numeric;
quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
material: PD.Group<PD.Normalize<{
metalness: number;
roughness: number;
bumpiness: number;
}>>;
clip: PD.Group<PD.Normalize<{
variant: import("Molstar/mol-util/clip").Clip.Variant;
objects: PD.Normalize<{
type: any;
invert: any;
position: any;
rotation: any;
scale: any;
}>[];
}>>;
instanceGranularity: PD.BooleanParam;
}>;
};
ArbitrarySphereParams: {
x: PD.Numeric;
y: PD.Numeric;
z: PD.Numeric;
l1: PD.Numeric;
l2: PD.Numeric;
l3: PD.Numeric;
unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
includeParent: PD.BooleanParam;
doubleSided: PD.BooleanParam;
flipSided: PD.BooleanParam;
flatShaded: PD.BooleanParam;
ignoreLight: PD.BooleanParam;
xrayShaded: PD.Select<boolean | "inverted">;
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
bumpFrequency: PD.Numeric;
bumpAmplitude: PD.Numeric;
alpha: PD.Numeric;
quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
material: PD.Group<PD.Normalize<{
metalness: number;
roughness: number;
bumpiness: number;
}>>;
clip: PD.Group<PD.Normalize<{
variant: import("Molstar/mol-util/clip").Clip.Variant;
objects: PD.Normalize<{
type: any;
invert: any;
position: any;
rotation: any;
scale: any;
}>[];
}>>;
instanceGranularity: PD.BooleanParam;
};
ArbitrarySphereVisual: (materialId: any) => import("molstar/lib/mol-repr/structure/units-visual").UnitsVisual<{
x: PD.Numeric;
y: PD.Numeric;
z: PD.Numeric;
l1: PD.Numeric;
l2: PD.Numeric;
l3: PD.Numeric;
unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
includeParent: PD.BooleanParam;
doubleSided: PD.BooleanParam;
flipSided: PD.BooleanParam;
flatShaded: PD.BooleanParam;
ignoreLight: PD.BooleanParam;
xrayShaded: PD.Select<boolean | "inverted">;
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
bumpFrequency: PD.Numeric;
bumpAmplitude: PD.Numeric;
alpha: PD.Numeric;
quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
material: PD.Group<PD.Normalize<{
metalness: number;
roughness: number;
bumpiness: number;
}>>;
clip: PD.Group<PD.Normalize<{
variant: import("Molstar/mol-util/clip").Clip.Variant;
objects: PD.Normalize<{
type: any;
invert: any;
position: any;
rotation: any;
scale: any;
}>[];
}>>;
instanceGranularity: PD.BooleanParam;
}>;
ConfalPyramidsRepresentation: (ctx: any, getParams: any) => Representation<Structure, {
x: PD.Numeric;
y: PD.Numeric;
z: PD.Numeric;
l1: PD.Numeric;
l2: PD.Numeric;
l3: PD.Numeric;
unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
includeParent: PD.BooleanParam;
doubleSided: PD.BooleanParam;
flipSided: PD.BooleanParam;
flatShaded: PD.BooleanParam;
ignoreLight: PD.BooleanParam;
xrayShaded: PD.Select<boolean | "inverted">;
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
bumpFrequency: PD.Numeric;
bumpAmplitude: PD.Numeric;
alpha: PD.Numeric;
quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
material: PD.Group<PD.Normalize<{
metalness: number;
roughness: number;
bumpiness: number;
}>>;
clip: PD.Group<PD.Normalize<{
variant: import("Molstar/mol-util/clip").Clip.Variant;
objects: PD.Normalize<{
type: any;
invert: any;
position: any;
rotation: any;
scale: any;
}>[];
}>>;
instanceGranularity: PD.BooleanParam;
}, import("molstar/lib/mol-repr/structure/representation").StructureRepresentationState>;
ArbitrarySphereRepresentationProvider: StructureRepresentationProvider<{
x: PD.Numeric;
y: PD.Numeric;
z: PD.Numeric;
l1: PD.Numeric;
l2: PD.Numeric;
l3: PD.Numeric;
unitKinds: PD.MultiSelect<"spheres" | "gaussians" | "atomic">;
includeParent: PD.BooleanParam;
doubleSided: PD.BooleanParam;
flipSided: PD.BooleanParam;
flatShaded: PD.BooleanParam;
ignoreLight: PD.BooleanParam;
xrayShaded: PD.Select<boolean | "inverted">;
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
bumpFrequency: PD.Numeric;
bumpAmplitude: PD.Numeric;
alpha: PD.Numeric;
quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
material: PD.Group<PD.Normalize<{
metalness: number;
roughness: number;
bumpiness: number;
}>>;
clip: PD.Group<PD.Normalize<{
variant: import("Molstar/mol-util/clip").Clip.Variant;
objects: PD.Normalize<{
type: any;
invert: any;
position: any;
rotation: any;
scale: any;
}>[];
}>>;
instanceGranularity: PD.BooleanParam;
}, "arbitrary-sphere">;
createArbitrarySphereMesh: (ctx: any, unit: any, structure: any, theme: any, props: any, mesh: any) => import("Molstar/mol-geo/geometry/mesh/mesh").Mesh;
}
export default DrugflowMolstarPlugin;