drugflow-molstar
Version:
Molstar implementation for DrugFlow
66 lines (65 loc) • 3.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AlphafoldTransparencyControls = void 0;
var tslib_1 = require("tslib");
var jsx_runtime_1 = require("react/jsx-runtime");
var base_1 = require("Molstar/mol-plugin-ui/base");
var icons_1 = require("Molstar/mol-plugin-ui/controls/icons");
var param_definition_1 = require("Molstar/mol-util/param-definition");
var parameters_1 = require("Molstar/mol-plugin-ui/controls/parameters");
var alphafold_transparency_1 = require("../alphafold-transparency");
var 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' })
};
var AlphafoldTransparencyControls = /** @class */ (function (_super) {
tslib_1.__extends(AlphafoldTransparencyControls, _super);
function AlphafoldTransparencyControls() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.updateTransparency = function (val) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var superpositionState, afStr;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
this.setState({ transpareny: val });
superpositionState = this.plugin.customState.superpositionState;
afStr = this.plugin.managers.structure.hierarchy.current.refs.get(superpositionState.alphafold.ref);
return [4 /*yield*/, (0, alphafold_transparency_1.clearStructureTransparency)(this.plugin, afStr.components)];
case 1:
_a.sent();
return [4 /*yield*/, (0, alphafold_transparency_1.applyAFTransparency)(this.plugin, afStr, 1 - val.opacity, val.score)];
case 2:
_a.sent();
return [2 /*return*/];
}
});
}); };
return _this;
}
AlphafoldTransparencyControls.prototype.defaultState = function () {
return {
isCollapsed: false,
header: 'AlphaFold Structure Opacity',
brand: { accent: 'gray', svg: icons_1.SuperpositionSvg },
isHidden: true,
transpareny: {
score: 70,
opacity: 0.2
}
};
};
AlphafoldTransparencyControls.prototype.componentDidMount = function () {
var _this = this;
this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection, function (sel) {
var superpositionState = _this.plugin.customState.superpositionState;
if (superpositionState && superpositionState.alphafold.ref && superpositionState.alphafold.ref !== '') {
_this.setState({ isHidden: false });
}
});
};
AlphafoldTransparencyControls.prototype.renderControls = function () {
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 }) });
};
return AlphafoldTransparencyControls;
}(base_1.CollapsableControls));
exports.AlphafoldTransparencyControls = AlphafoldTransparencyControls;