@rcsb/rcsb-saguaro-3d
Version:
RCSB Molstar/Saguaro Web App
68 lines (67 loc) • 3.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssemblyTrajectoryPresetProvider = void 0;
const tslib_1 = require("tslib");
const param_definition_1 = require("molstar/lib/mol-util/param-definition");
const hierarchy_preset_1 = require("molstar/lib/mol-plugin-state/builder/structure/hierarchy-preset");
const AssemblyRepresentationPresetProvider_1 = require("./AssemblyRepresentationPresetProvider");
const structure_1 = require("molstar/lib/mol-model/structure");
const FocusColoring_1 = require("./FocusTheme/FocusColoring");
exports.AssemblyTrajectoryPresetProvider = (0, hierarchy_preset_1.TrajectoryHierarchyPresetProvider)({
id: "rcsb-saguaro-3d",
display: {
name: 'Feature View 3D'
},
params: (trajectory, plugin) => ({
assemblyId: param_definition_1.ParamDefinition.Value("1"),
asymId: param_definition_1.ParamDefinition.Value(undefined),
modelIndex: param_definition_1.ParamDefinition.Value(0)
}),
apply(trajectory, params, plugin) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
var _a, _b;
const builder = plugin.builders.structure;
const model = yield builder.createModel(trajectory, { modelIndex: params.modelIndex });
const modelProperties = yield builder.insertModelProperties(model);
let assemblyId = params.assemblyId;
let structure = yield builder.createStructure(modelProperties, (assemblyId != "" && assemblyId != "0") ? { name: 'assembly', params: { id: assemblyId } } : { name: "model", params: {} });
if (params.asymId) {
let asymCheck = false;
let assemblyId = 1;
do {
plugin.managers.structure.hierarchy.remove([
plugin.managers.structure.hierarchy.current.structures[plugin.managers.structure.hierarchy.current.structures.length - 1]
]);
structure = yield builder.createStructure(modelProperties, { name: 'assembly', params: { id: (assemblyId++).toString() } });
const cell = structure.cell;
if (cell) {
const units = (_b = (_a = structure.cell) === null || _a === void 0 ? void 0 : _a.obj) === null || _b === void 0 ? void 0 : _b.data.units;
const strData = cell.obj.data;
if (units) {
const l = structure_1.StructureElement.Location.create(strData);
for (const unit of units) {
structure_1.StructureElement.Location.set(l, strData, unit, unit.elements[0]);
asymCheck = (structure_1.StructureProperties.chain.label_asym_id(l) == params.asymId);
if (asymCheck)
break;
}
}
}
} while (!asymCheck);
}
const structureProperties = yield builder.insertStructureProperties(structure);
if (!plugin.representation.structure.themes.colorThemeRegistry.has(FocusColoring_1.FocusResidueColorThemeProvider))
plugin.representation.structure.themes.colorThemeRegistry.add(FocusColoring_1.FocusResidueColorThemeProvider);
const unitcell = yield builder.tryCreateUnitcell(modelProperties, undefined, { isHidden: true });
const representation = yield plugin.builders.structure.representation.applyPreset(structureProperties, AssemblyRepresentationPresetProvider_1.AssemblyRepresentationPresetProvider);
return {
model,
modelProperties,
unitcell,
structure,
structureProperties,
representation
};
});
}
});