UNPKG

molstar

Version:

A comprehensive macromolecular library.

109 lines 5.68 kB
"use strict"; /** * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.StateElements = exports.ModelInfo = void 0; var tslib_1 = require("tslib"); var symmetry_1 = require("../../mol-model-formats/structure/property/symmetry"); var ModelInfo; (function (ModelInfo) { function getPreferredAssembly(ctx, model) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var id, src, json, data, assemblies, _i, assemblies_1, asm, e_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: if (model.entryId.length <= 3) return [2 /*return*/, void 0]; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); id = model.entryId.toLowerCase(); return [4 /*yield*/, ctx.runTask(ctx.fetch({ url: "https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/" + id }))]; case 2: src = _a.sent(); json = JSON.parse(src); data = json && json[id]; assemblies = data[0] && data[0].assemblies; if (!assemblies || !assemblies.length) return [2 /*return*/, void 0]; for (_i = 0, assemblies_1 = assemblies; _i < assemblies_1.length; _i++) { asm = assemblies_1[_i]; if (asm.preferred) { return [2 /*return*/, asm.assembly_id]; } } return [2 /*return*/, void 0]; case 3: e_1 = _a.sent(); console.warn('getPreferredAssembly', e_1); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); } function get(ctx, model, checkPreferred) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var residueCount, residueOffsets, chainIndex, pref, hetResidues, hetMap, rI, cI, eI, entityType, comp_id, lig, preferredAssemblyId, symmetry; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: residueCount = model.atomicHierarchy.residues._rowCount; residueOffsets = model.atomicHierarchy.residueAtomSegments.offsets; chainIndex = model.atomicHierarchy.chainAtomSegments.index; pref = checkPreferred ? getPreferredAssembly(ctx, model) : void 0; hetResidues = []; hetMap = new Map(); for (rI = 0; rI < residueCount; rI++) { cI = chainIndex[residueOffsets[rI]]; eI = model.atomicHierarchy.index.getEntityFromChain(cI); entityType = model.entities.data.type.value(eI); if (entityType !== 'non-polymer' && entityType !== 'branched') continue; comp_id = model.atomicHierarchy.atoms.label_comp_id.value(residueOffsets[rI]); lig = hetMap.get(comp_id); if (!lig) { lig = { name: comp_id, indices: [] }; hetResidues.push(lig); hetMap.set(comp_id, lig); } lig.indices.push(rI); } return [4 /*yield*/, pref]; case 1: preferredAssemblyId = _a.sent(); symmetry = symmetry_1.ModelSymmetry.Provider.get(model); return [2 /*return*/, { hetResidues: hetResidues, assemblies: symmetry ? symmetry.assemblies.map(function (a) { return ({ id: a.id, details: a.details, isPreferred: a.id === preferredAssemblyId }); }) : [], preferredAssemblyId: preferredAssemblyId }]; } }); }); } ModelInfo.get = get; })(ModelInfo = exports.ModelInfo || (exports.ModelInfo = {})); var StateElements; (function (StateElements) { StateElements["Model"] = "model"; StateElements["ModelProps"] = "model-props"; StateElements["Assembly"] = "assembly"; StateElements["VolumeStreaming"] = "volume-streaming"; StateElements["Sequence"] = "sequence"; StateElements["SequenceVisual"] = "sequence-visual"; StateElements["Het"] = "het"; StateElements["HetVisual"] = "het-visual"; StateElements["Het3DSNFG"] = "het-3dsnfg"; StateElements["Water"] = "water"; StateElements["WaterVisual"] = "water-visual"; StateElements["HetGroupFocus"] = "het-group-focus"; StateElements["HetGroupFocusGroup"] = "het-group-focus-group"; })(StateElements = exports.StateElements || (exports.StateElements = {})); //# sourceMappingURL=helpers.js.map