molstar
Version:
A comprehensive macromolecular library.
50 lines (49 loc) • 2.77 kB
JavaScript
/**
* Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Adam Midlik <midlik@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.StructureSurroundings = exports.StructureSurroundingsParams = void 0;
const structure_1 = require("../../../mol-model/structure");
const structure_component_1 = require("../../../mol-plugin-state/helpers/structure-component");
const objects_1 = require("../../../mol-plugin-state/objects");
const builder_1 = require("../../../mol-script/language/builder");
const param_definition_1 = require("../../../mol-util/param-definition");
exports.StructureSurroundingsParams = {
radius: param_definition_1.ParamDefinition.Numeric(5, { min: 0 }, { description: 'Surroundings radius in Angstroms' }),
includeSelf: param_definition_1.ParamDefinition.Boolean(true, { description: 'Include parent selection itself in the surroundings' }),
wholeResidues: param_definition_1.ParamDefinition.Boolean(true, { description: 'Include whole residues, instead of individual atoms' }),
nullIfEmpty: param_definition_1.ParamDefinition.Optional(param_definition_1.ParamDefinition.Boolean(true, { isHidden: true })),
};
exports.StructureSurroundings = objects_1.PluginStateTransform.BuiltIn({
name: 'structure-surroundings',
display: { name: 'Surroundings', description: 'Surroundings of a structure component.' },
from: objects_1.PluginStateObject.Molecule.Structure,
to: objects_1.PluginStateObject.Molecule.Structure,
params: exports.StructureSurroundingsParams,
})({
apply({ a, params, cache }) {
var _a;
const struct = a.data;
const rootStruct = (_a = struct.parent) !== null && _a !== void 0 ? _a : struct;
const targetBundle = structure_1.StructureElement.Bundle.fromSubStructure(rootStruct, struct);
const targetExpr = structure_1.StructureElement.Bundle.toExpression(targetBundle);
let surroundingsExpr = builder_1.MolScriptBuilder.struct.modifier.includeSurroundings({
0: targetExpr,
radius: params.radius,
'as-whole-residues': params.wholeResidues,
});
if (!params.includeSelf) {
surroundingsExpr = builder_1.MolScriptBuilder.struct.modifier.exceptBy({
0: surroundingsExpr,
by: targetExpr,
});
}
return (0, structure_component_1.createStructureComponent)(rootStruct, { label: `Surroundings (${params.radius} Å)`, type: { name: 'expression', params: surroundingsExpr }, nullIfEmpty: params.nullIfEmpty }, cache);
},
dispose({ b }) {
b === null || b === void 0 ? void 0 : b.data.customPropertyDescriptors.dispose();
}
});
;