molstar
Version:
A comprehensive macromolecular library.
81 lines • 3.74 kB
JavaScript
/**
* 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
;