UNPKG

molstar

Version:

A comprehensive macromolecular library.

81 lines 3.74 kB
"use strict"; /** * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.getAtomicDerivedData = void 0; var atomic_1 = require("../atomic"); var types_1 = require("../../types"); var util_1 = require("../../../../../mol-model/structure/util"); var debug_1 = require("../../../../../mol-util/debug"); function getAtomicDerivedData(data, segments, index, chemicalComponentMap) { var _a = data.atoms, label_comp_id = _a.label_comp_id, type_symbol = _a.type_symbol, atomCount = _a._rowCount; var residueCount = data.residues._rowCount; var offsets = segments.residueAtomSegments.offsets; var atomicNumber = new Uint8Array(atomCount); for (var i = 0; i < atomCount; ++i) { atomicNumber[i] = (0, atomic_1.AtomNumber)(type_symbol.value(i)); } var traceElementIndex = new Int32Array(residueCount); var directionFromElementIndex = new Int32Array(residueCount); var directionToElementIndex = new Int32Array(residueCount); var moleculeType = new Uint8Array(residueCount); var polymerType = new Uint8Array(residueCount); var moleculeTypeMap = new Map(); var polymerTypeMap = new Map(); for (var i = 0; i < residueCount; ++i) { var compId = label_comp_id.value(offsets[i]); var chemCompMap = chemicalComponentMap; var molType = void 0; var polyType = void 0; if (moleculeTypeMap.has(compId)) { molType = moleculeTypeMap.get(compId); polyType = polymerTypeMap.get(compId); } else { var type = void 0; if (chemCompMap.has(compId)) { type = chemCompMap.get(compId).type; } else { if (!debug_1.isProductionMode) console.info('chemComp not found', compId); type = (0, types_1.getComponentType)(compId); } molType = (0, types_1.getMoleculeType)(type, compId); // TODO if unknown molecule type, use atom names to guess molecule type polyType = (0, types_1.getPolymerType)(type, molType); moleculeTypeMap.set(compId, molType); polymerTypeMap.set(compId, polyType); } moleculeType[i] = molType; polymerType[i] = polyType; var traceAtomId = (0, util_1.getAtomIdForAtomRole)(polyType, 'trace'); var traceIndex = index.findAtomsOnResidue(i, traceAtomId); if (traceIndex === -1) { var coarseAtomId = (0, util_1.getAtomIdForAtomRole)(polyType, 'coarseBackbone'); traceIndex = index.findAtomsOnResidue(i, coarseAtomId); } traceElementIndex[i] = traceIndex; var directionFromAtomId = (0, util_1.getAtomIdForAtomRole)(polyType, 'directionFrom'); directionFromElementIndex[i] = index.findAtomsOnResidue(i, directionFromAtomId); var directionToAtomId = (0, util_1.getAtomIdForAtomRole)(polyType, 'directionTo'); directionToElementIndex[i] = index.findAtomsOnResidue(i, directionToAtomId); } return { atom: { atomicNumber: atomicNumber }, residue: { traceElementIndex: traceElementIndex, directionFromElementIndex: directionFromElementIndex, directionToElementIndex: directionToElementIndex, moleculeType: moleculeType, polymerType: polymerType, } }; } exports.getAtomicDerivedData = getAtomicDerivedData; //# sourceMappingURL=atomic-derived.js.map