UNPKG

@rcsb/rcsb-saguaro-3d

Version:
81 lines (80 loc) 4.28 kB
"use strict"; /* * Copyright (c) 2021 RCSB PDB and contributors, licensed under MIT, See LICENSE file for more info. * @author Joan Segura Mora <joan.segura@rcsb.org> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.FlexibleAlignmentTrajectoryPresetProvider = void 0; const tslib_1 = require("tslib"); const hierarchy_preset_1 = require("molstar/lib/mol-plugin-state/builder/structure/hierarchy-preset"); const param_definition_1 = require("molstar/lib/mol-util/param-definition"); const structure_1 = require("molstar/lib/mol-model/structure"); const FlexibleAlignmentRepresentationPresetProvider_1 = require("./FlexibleAlignmentRepresentationPresetProvider"); const FlexibleAlignmentBuiltIn_1 = require("./FlexibleAlignmentBuiltIn"); exports.FlexibleAlignmentTrajectoryPresetProvider = (0, hierarchy_preset_1.TrajectoryHierarchyPresetProvider)({ id: 'alignment-to-reference', display: { name: 'Alignment to Reference' }, isApplicable: (trajectory, plugin) => true, params: (trajectory, plugin) => ({ pdb: param_definition_1.ParamDefinition.Value(undefined), modelIndex: param_definition_1.ParamDefinition.Value(0), transform: param_definition_1.ParamDefinition.Value(undefined), targetAlignment: param_definition_1.ParamDefinition.Value(undefined), }), apply: (trajectory, params, plugin) => tslib_1.__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 = structure_1.StructureElement.Location.create(strData); for (const unit of units) { structure_1.StructureElement.Location.set(l, strData, unit, unit.elements[0]); entityCheck = (structure_1.StructureProperties.chain.label_entity_id(l) == ("entityId" in params.pdb ? params.pdb.entityId : undefined) || structure_1.StructureProperties.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_1.FlexibleAlignmentBuiltIn, { pdb: params.pdb, transform: params.transform }).commit(); const structureProperties = yield builder.insertStructureProperties(structure); const representation = yield plugin.builders.structure.representation.applyPreset(structure, FlexibleAlignmentRepresentationPresetProvider_1.FlexibleAlignmentRepresentationPresetProvider); //TODO what is the purpose of this return? return { model, modelProperties, structure, structureProperties, representation }; }) });