UNPKG

pdbe-molstar

Version:
54 lines (53 loc) 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlphafoldTransparencyControls = void 0; const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const base_1 = require("molstar/lib/mol-plugin-ui/base"); const icons_1 = require("molstar/lib/mol-plugin-ui/controls/icons"); const parameters_1 = require("molstar/lib/mol-plugin-ui/controls/parameters"); const param_definition_1 = require("molstar/lib/mol-util/param-definition"); const alphafold_transparency_1 = require("../alphafold-transparency"); const plugin_custom_state_1 = require("../plugin-custom-state"); const TransparencyParams = { score: param_definition_1.ParamDefinition.Numeric(70, { min: 0, max: 100, step: 1 }, { label: 'pLDDT less than', description: 'pLDDT score value in the range of 0 to 100' }), opacity: param_definition_1.ParamDefinition.Numeric(0.2, { min: 0, max: 1, step: 0.01 }, { description: 'Opacity value in the range 0 to 1' }), }; class AlphafoldTransparencyControls extends base_1.CollapsableControls { constructor() { super(...arguments); this.updateTransparency = (val) => tslib_1.__awaiter(this, void 0, void 0, function* () { this.setState({ transpareny: val }); const superpositionState = (0, plugin_custom_state_1.PluginCustomState)(this.plugin).superpositionState; if (!superpositionState) throw new Error('customState.superpositionState has not been initialized'); const afStr = this.plugin.managers.structure.hierarchy.current.refs.get(superpositionState.alphafold.ref); yield (0, alphafold_transparency_1.clearStructureTransparency)(this.plugin, afStr.components); yield (0, alphafold_transparency_1.applyAFTransparency)(this.plugin, afStr, 1 - val.opacity, val.score); }); } defaultState() { return { isCollapsed: false, header: 'AlphaFold Structure Opacity', brand: { accent: 'gray', svg: icons_1.SuperpositionSvg }, isHidden: true, transpareny: { score: 70, opacity: 0.2, }, }; } componentDidMount() { this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection, sel => { const superpositionState = (0, plugin_custom_state_1.PluginCustomState)(this.plugin).superpositionState; if (superpositionState && superpositionState.alphafold.ref && superpositionState.alphafold.ref !== '') { this.setState({ isHidden: false }); } }); } renderControls() { return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(parameters_1.ParameterControls, { params: TransparencyParams, values: this.state.transpareny, onChangeValues: this.updateTransparency }) }); } } exports.AlphafoldTransparencyControls = AlphafoldTransparencyControls;