pdbe-molstar
Version:
Molstar implementation for PDBe
54 lines (53 loc) • 2.98 kB
JavaScript
;
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;