Skip to content
Snippets Groups Projects
Commit 9850426a authored by Alexander Rose's avatar Alexander Rose
Browse files

use findAtomOnResidue

parent a967953b
Branches
Tags
No related merge requests found
......@@ -12,7 +12,7 @@ import { MeshBuilder } from '../../../geometry/mesh/mesh-builder';
import { Vec3, Mat4 } from 'mol-math/linear-algebra';
import { Segmentation } from 'mol-data/int';
import { MoleculeType, isNucleic, isPurinBase, isPyrimidineBase } from 'mol-model/structure/model/types';
import { getElementIndexForAtomId, getElementIndexForAtomRole } from 'mol-model/structure/util';
import { getElementIndexForAtomRole } from 'mol-model/structure/util';
import { UnitsMeshVisual, UnitsMeshParams } from '../units-visual';
import { addCylinder } from '../../../geometry/mesh/builder/cylinder';
import { Box } from '../../../primitive/box';
......@@ -42,7 +42,7 @@ async function createNucleotideBlockMesh(ctx: RuntimeContext, unit: Unit, struct
const { elements, model } = unit
const { chemicalComponentMap, modifiedResidues } = model.properties
const { chainAtomSegments, residueAtomSegments, residues } = model.atomicHierarchy
const { chainAtomSegments, residueAtomSegments, residues, index: atomicIndex } = model.atomicHierarchy
const { label_comp_id } = residues
const pos = unit.conformation.invariantPosition
......@@ -67,19 +67,19 @@ async function createNucleotideBlockMesh(ctx: RuntimeContext, unit: Unit, struct
if (isPurinBase(compId)) {
height = 4.5
idx1 = getElementIndexForAtomId(model, residueIndex, 'N1')
idx2 = getElementIndexForAtomId(model, residueIndex, 'C4')
idx3 = getElementIndexForAtomId(model, residueIndex, 'C6')
idx4 = getElementIndexForAtomId(model, residueIndex, 'C2')
idx5 = getElementIndexForAtomId(model, residueIndex, 'N9')
idx1 = atomicIndex.findAtomOnResidue(residueIndex, 'N1')
idx2 = atomicIndex.findAtomOnResidue(residueIndex, 'C4')
idx3 = atomicIndex.findAtomOnResidue(residueIndex, 'C6')
idx4 = atomicIndex.findAtomOnResidue(residueIndex, 'C2')
idx5 = atomicIndex.findAtomOnResidue(residueIndex, 'N9')
idx6 = getElementIndexForAtomRole(model, residueIndex, 'trace')
} else if (isPyrimidineBase(compId)) {
height = 3.0
idx1 = getElementIndexForAtomId(model, residueIndex, 'N3')
idx2 = getElementIndexForAtomId(model, residueIndex, 'C6')
idx3 = getElementIndexForAtomId(model, residueIndex, 'C4')
idx4 = getElementIndexForAtomId(model, residueIndex, 'C2')
idx5 = getElementIndexForAtomId(model, residueIndex, 'N1')
idx1 = atomicIndex.findAtomOnResidue(residueIndex, 'N3')
idx2 = atomicIndex.findAtomOnResidue(residueIndex, 'C6')
idx3 = atomicIndex.findAtomOnResidue(residueIndex, 'C4')
idx4 = atomicIndex.findAtomOnResidue(residueIndex, 'C2')
idx5 = atomicIndex.findAtomOnResidue(residueIndex, 'N1')
idx6 = getElementIndexForAtomRole(model, residueIndex, 'trace')
}
......
......@@ -49,18 +49,9 @@ export function getAtomIdForAtomRole(moleculeType: MoleculeType, atomRole: AtomR
return ''
}
export function getElementIndexForAtomId(model: Model, rI: ResidueIndex, atomId: string): ElementIndex | -1 {
const { offsets } = model.atomicHierarchy.residueAtomSegments
const { label_atom_id } = model.atomicHierarchy.atoms
for (let j = offsets[rI], _j = offsets[rI + 1]; j < _j; j++) {
if (label_atom_id.value(j) === atomId) return j as ElementIndex
}
return -1
}
export function getElementIndexForAtomRole(model: Model, rI: ResidueIndex, atomRole: AtomRole) {
const atomId = getAtomIdForAtomRole(getAtomicMoleculeType(model, rI), atomRole)
return getElementIndexForAtomId(model, rI, atomId)
return model.atomicHierarchy.index.findAtomOnResidue(rI, atomId)
}
export function residueLabel(model: Model, rI: number) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment