UNPKG

@rcsb/rcsb-saguaro-3d

Version:
78 lines 3.95 kB
/* * Copyright (c) 2021 RCSB PDB and contributors, licensed under MIT, See LICENSE file for more info. * @author Joan Segura Mora <joan.segura@rcsb.org> */ import { __awaiter } from "tslib"; import { TrajectoryHierarchyPresetProvider } from "molstar/lib/mol-plugin-state/builder/structure/hierarchy-preset"; import { ParamDefinition as PD } from "molstar/lib/mol-util/param-definition"; import { StructureElement, StructureProperties as SP } from "molstar/lib/mol-model/structure"; import { FlexibleAlignmentRepresentationPresetProvider } from "./FlexibleAlignmentRepresentationPresetProvider"; import { FlexibleAlignmentBuiltIn } from "./FlexibleAlignmentBuiltIn"; export const FlexibleAlignmentTrajectoryPresetProvider = TrajectoryHierarchyPresetProvider({ id: 'alignment-to-reference', display: { name: 'Alignment to Reference' }, isApplicable: (trajectory, plugin) => true, params: (trajectory, plugin) => ({ pdb: PD.Value(undefined), modelIndex: PD.Value(0), transform: PD.Value(undefined), targetAlignment: PD.Value(undefined), }), apply: (trajectory, params, plugin) => __awaiter(void 0, void 0, void 0, function* () { var _a, _b; if (!params.pdb) return {}; const modelParams = { modelIndex: params.modelIndex || 0 }; const builder = plugin.builders.structure; const model = yield builder.createModel(trajectory, modelParams); const modelProperties = yield builder.insertModelProperties(model); let structure; let assemblyId = 1; let entityCheck = false; do { const structureParams = { name: 'assembly', params: { id: (assemblyId++).toString() } }; structure = yield builder.createStructure(modelProperties || model, structureParams); 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 = StructureElement.Location.create(strData); for (const unit of units) { StructureElement.Location.set(l, strData, unit, unit.elements[0]); entityCheck = (SP.chain.label_entity_id(l) == ("entityId" in params.pdb ? params.pdb.entityId : undefined) || SP.chain.label_asym_id(l) == ("instanceId" in params.pdb ? params.pdb.instanceId : undefined)); if (entityCheck) break; } } } if (!entityCheck) plugin.managers.structure.hierarchy.remove([ plugin.managers.structure.hierarchy.current.structures[plugin.managers.structure.hierarchy.current.structures.length - 1] ]); } while (!entityCheck); plugin.managers.structure.hierarchy.remove([ plugin.managers.structure.hierarchy.current.structures[plugin.managers.structure.hierarchy.current.structures.length - 1] ]); structure = yield plugin.state.data.build().to(modelProperties).apply(FlexibleAlignmentBuiltIn, { pdb: params.pdb, transform: params.transform }).commit(); const structureProperties = yield builder.insertStructureProperties(structure); const representation = yield plugin.builders.structure.representation.applyPreset(structure, FlexibleAlignmentRepresentationPresetProvider); //TODO what is the purpose of this return? return { model, modelProperties, structure, structureProperties, representation }; }) }); //# sourceMappingURL=FlexibleAlignmentTrajectoryPresetProvider.js.map