UNPKG

molstar

Version:

A comprehensive macromolecular library.

60 lines (59 loc) 2.6 kB
"use strict"; /** * Copyright (c) 2018-2019 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.getPositions = exports.getAtomIdForAtomRole = exports.getAtomicMoleculeType = exports.getElementMoleculeType = exports.getCoarseBegCompId = void 0; var types_1 = require("./model/types"); var linear_algebra_1 = require("../../mol-math/linear-algebra"); function getCoarseBegCompId(unit, element) { var entityKey = unit.coarseElements.entityKey[element]; var seq = unit.model.sequence.byEntityKey[entityKey].sequence; var seq_id_begin = unit.coarseElements.seq_id_begin.value(element); return seq.compId.value(seq_id_begin - 1); // 1-indexed } exports.getCoarseBegCompId = getCoarseBegCompId; function getElementMoleculeType(unit, element) { switch (unit.kind) { case 0 /* Unit.Kind.Atomic */: return unit.model.atomicHierarchy.derived.residue.moleculeType[unit.residueIndex[element]]; case 1 /* Unit.Kind.Spheres */: case 2 /* Unit.Kind.Gaussians */: // TODO add unit.model.coarseHierarchy.derived.residue.moleculeType var compId = getCoarseBegCompId(unit, element); var cc = unit.model.properties.chemicalComponentMap.get(compId); if (cc) return (0, types_1.getMoleculeType)(cc.type, compId); } return 0 /* MoleculeType.Unknown */; } exports.getElementMoleculeType = getElementMoleculeType; function getAtomicMoleculeType(model, rI) { return model.atomicHierarchy.derived.residue.moleculeType[rI]; } exports.getAtomicMoleculeType = getAtomicMoleculeType; var EmptyAtomIds = new Set(); function getAtomIdForAtomRole(polymerType, atomRole) { var p = types_1.PolymerTypeAtomRoleId[polymerType]; if (p !== undefined) { var a = p[atomRole]; if (a !== undefined) return a; } return EmptyAtomIds; } exports.getAtomIdForAtomRole = getAtomIdForAtomRole; var tmpPositionsVec = linear_algebra_1.Vec3.zero(); function getPositions(unit, indices) { var pos = unit.conformation.position; var positions = new Float32Array(indices.length * 3); var elements = unit.elements; for (var i = 0, il = indices.length; i < il; ++i) { pos(elements[indices[i]], tmpPositionsVec); linear_algebra_1.Vec3.toArray(tmpPositionsVec, positions, i * 3); } return positions; } exports.getPositions = getPositions;