diff --git a/src/cli/structure-info/model.ts b/src/cli/structure-info/model.ts index b7cf39290cace0fb04bd67bfc69061f00500e45d..87ca5e63a04de70a7d5f856ab52ad17d2dde0664 100644 --- a/src/cli/structure-info/model.ts +++ b/src/cli/structure-info/model.ts @@ -39,7 +39,7 @@ export function atomLabel(model: Model, aI: number) { const { label_asym_id } = chains; const rI = residueAtomSegments.index[aI]; const cI = chainAtomSegments.index[aI]; - return `${label_asym_id.value(cI)} ${label_comp_id.value(rI)} ${label_seq_id.value(rI)} ${label_atom_id.value(aI)}`; + return `${label_asym_id.value(cI)} ${label_comp_id.value(aI)} ${label_seq_id.value(rI)} ${label_atom_id.value(aI)}`; } export function residueLabel(model: Model, rI: number) { @@ -47,8 +47,9 @@ export function residueLabel(model: Model, rI: number) { const { label_comp_id } = atoms; const { label_seq_id } = residues; const { label_asym_id } = chains; - const cI = chainAtomSegments.index[residueAtomSegments.offsets[rI]]; - return `${label_asym_id.value(cI)} ${label_comp_id.value(rI)} ${label_seq_id.value(rI)}`; + const aI = residueAtomSegments.offsets[rI]; + const cI = chainAtomSegments.index[aI]; + return `${label_asym_id.value(cI)} ${label_comp_id.value(aI)} ${label_seq_id.value(rI)}`; } export function printSecStructure(model: Model) { diff --git a/src/examples/proteopedia-wrapper/helpers.ts b/src/examples/proteopedia-wrapper/helpers.ts index 5535a8b76cf428c3bfeb527b50b0176e214b05d7..aad918fd23b9398ef90b4ad87dfc553ea3b63f52 100644 --- a/src/examples/proteopedia-wrapper/helpers.ts +++ b/src/examples/proteopedia-wrapper/helpers.ts @@ -58,7 +58,7 @@ export namespace ModelInfo { const entityType = model.entities.data.type.value(eI); if (entityType !== 'non-polymer' && entityType !== 'branched') continue; - const comp_id = model.atomicHierarchy.atoms.label_comp_id.value(rI); + const comp_id = model.atomicHierarchy.atoms.label_comp_id.value(residueOffsets[rI]); let lig = hetMap.get(comp_id); if (!lig) { diff --git a/src/mol-model-props/computed/chemistry/util.ts b/src/mol-model-props/computed/chemistry/util.ts index 8a7eaea7da11392ef5c5c059f4a0130a32833e68..73f83aab960ba73f479a5a24d0d938dbe57bd199 100644 --- a/src/mol-model-props/computed/chemistry/util.ts +++ b/src/mol-model-props/computed/chemistry/util.ts @@ -27,7 +27,7 @@ export function altLoc(unit: Unit.Atomic, index: StructureElement.UnitIndex) { } export function compId(unit: Unit.Atomic, index: StructureElement.UnitIndex) { - return unit.model.atomicHierarchy.atoms.label_comp_id.value(unit.getResidueIndex(index)); + return unit.model.atomicHierarchy.atoms.label_comp_id.value(unit.elements[index]); } // diff --git a/src/mol-model-props/computed/interactions/charged.ts b/src/mol-model-props/computed/interactions/charged.ts index a9735c4c820636f2e1ccffe0d754e1207a674cd2..e4c0359b994392e4d6aade1e318ae94ce23cb4c0 100644 --- a/src/mol-model-props/computed/interactions/charged.ts +++ b/src/mol-model-props/computed/interactions/charged.ts @@ -67,7 +67,7 @@ function addUnitPositiveCharges(structure: Structure, unit: Unit.Atomic, builder while (residueIt.hasNext) { const { index: residueIndex, start, end } = residueIt.move(); - const compId = label_comp_id.value(residueIndex); + const compId = label_comp_id.value(unit.model.atomicHierarchy.residueAtomSegments.offsets[residueIndex]); if (PositvelyCharged.includes(compId)) { builder.startState(); @@ -120,7 +120,7 @@ function addUnitNegativeCharges(structure: Structure, unit: Unit.Atomic, builder while (residueIt.hasNext) { const { index: residueIndex, start, end } = residueIt.move(); - const compId = label_comp_id.value(residueIndex); + const compId = label_comp_id.value(unit.model.atomicHierarchy.residueAtomSegments.offsets[residueIndex]); if (NegativelyCharged.includes(compId)) { builder.startState(); diff --git a/src/mol-model/structure/structure/carbohydrates/compute.ts b/src/mol-model/structure/structure/carbohydrates/compute.ts index 478145d0394cd42f79ddd6154785ed23f0e63b80..add42b5205730c0585f8488b379dd370e57b5d5f 100644 --- a/src/mol-model/structure/structure/carbohydrates/compute.ts +++ b/src/mol-model/structure/structure/carbohydrates/compute.ts @@ -168,7 +168,7 @@ export function computeCarbohydrates(structure: Structure): Carbohydrates { while (residueIt.hasNext) { const { index: residueIndex } = residueIt.move(); - const saccharideComp = getSaccharideComp(label_comp_id.value(residueIndex), model); + const saccharideComp = getSaccharideComp(label_comp_id.value(residueAtomSegments.offsets[residueIndex]), model); if (!saccharideComp) continue; if (!sugarResidueMap) { diff --git a/src/mol-model/structure/structure/unit/bonds/intra-compute.ts b/src/mol-model/structure/structure/unit/bonds/intra-compute.ts index f0899b5919581e5bf77f3747c21a1eda535f81b7..582866cce18dc215306e313e0200713e63e1fdc5 100644 --- a/src/mol-model/structure/structure/unit/bonds/intra-compute.ts +++ b/src/mol-model/structure/structure/unit/bonds/intra-compute.ts @@ -99,7 +99,7 @@ function _computeBonds(unit: Unit.Atomic, props: BondComputationProps): IntraUni } const raI = residueIndex[aI]; - const compId = label_comp_id.value(raI); + const compId = label_comp_id.value(aI); if (!props.forceCompute && raI !== lastResidue) { if (!!component && component.entries.has(compId)) { diff --git a/src/mol-model/structure/structure/unit/rings.ts b/src/mol-model/structure/structure/unit/rings.ts index 2bebe086f57f1a130ed5c4bbee0866de3a50af1f..ea87703f020f1ffacc41f767862c8076ef5aba20 100644 --- a/src/mol-model/structure/structure/unit/rings.ts +++ b/src/mol-model/structure/structure/unit/rings.ts @@ -102,7 +102,7 @@ namespace UnitRing { const { type_symbol, label_comp_id } = unit.model.atomicHierarchy.atoms; // ignore Proline (can be flat because of bad geometry) - if (label_comp_id.value(unit.getResidueIndex(ring[0])) === 'PRO') return false; + if (label_comp_id.value(unit.elements[ring[0]]) === 'PRO') return false; let aromaticBondCount = 0; let hasAromaticRingElement = false; diff --git a/src/mol-model/structure/util.ts b/src/mol-model/structure/util.ts index 93d80b88cf3116284c0fd0c8ec1bb3945d29e9ee..317d883fe1299c78edb1606a943aaa826e63c35f 100644 --- a/src/mol-model/structure/util.ts +++ b/src/mol-model/structure/util.ts @@ -45,27 +45,6 @@ export function getAtomIdForAtomRole(polymerType: PolymerType, atomRole: AtomRol return EmptyAtomIds; } -export function residueLabel(model: Model, rI: number) { - const { atoms, residues, chains, residueAtomSegments, chainAtomSegments } = model.atomicHierarchy; - const { label_comp_id } = atoms; - const { label_seq_id } = residues; - const { label_asym_id } = chains; - const cI = chainAtomSegments.index[residueAtomSegments.offsets[rI]]; - return `${label_asym_id.value(cI)} ${label_comp_id.value(rI)} ${label_seq_id.value(rI)}`; -} - -export function elementLabel(model: Model, index: ElementIndex) { - const { atoms, residues, chains, residueAtomSegments, chainAtomSegments } = model.atomicHierarchy; - const { label_atom_id, label_comp_id } = atoms; - const { auth_seq_id } = residues; - const { auth_asym_id } = chains; - - const residueIndex = residueAtomSegments.index[index]; - const chainIndex = chainAtomSegments.index[residueIndex]; - - return `[${label_comp_id.value(residueIndex)}]${auth_seq_id.value(residueIndex)}:${auth_asym_id.value(chainIndex)}.${label_atom_id.value(index)}`; -} - const tmpPositionsVec = Vec3.zero(); export function getPositions(unit: Unit, indices: ArrayLike<number>): NumberArray { const pos = unit.conformation.position; diff --git a/src/mol-plugin-ui/sequence/hetero.ts b/src/mol-plugin-ui/sequence/hetero.ts index b3028fbf2766d0eaceb4058083b2044d54743b78..1265a4963702b88be5383a2cce482d8dab29deda 100644 --- a/src/mol-plugin-ui/sequence/hetero.ts +++ b/src/mol-plugin-ui/sequence/hetero.ts @@ -81,7 +81,7 @@ export class HeteroSequenceWrapper extends SequenceWrapper<StructureUnit> { sequenceIndices.set(index, sequence.length); residueIndices.set(sequence.length, index); seqToUnit.set(sequence.length, unit); - sequence.push(atoms.label_comp_id.value(index)); + sequence.push(atoms.label_comp_id.value(residueAtomSegments.offsets[index])); } } diff --git a/src/mol-repr/structure/visual/nucleotide-block-mesh.ts b/src/mol-repr/structure/visual/nucleotide-block-mesh.ts index fbeeb02d53883c69b8440690442a5d89a2ebf253..4ddedf8674984101c28456cd7f490fccb37ad947 100644 --- a/src/mol-repr/structure/visual/nucleotide-block-mesh.ts +++ b/src/mol-repr/structure/visual/nucleotide-block-mesh.ts @@ -75,7 +75,7 @@ function createNucleotideBlockMesh(ctx: VisualContext, unit: Unit, structure: St const { index: residueIndex } = residueIt.move(); if (isNucleic(moleculeType[residueIndex])) { - const compId = label_comp_id.value(residueIndex); + const compId = label_comp_id.value(residueAtomSegments.offsets[residueIndex]); let idx1: ElementIndex | -1 = -1, idx2: ElementIndex | -1 = -1, idx3: ElementIndex | -1 = -1, idx4: ElementIndex | -1 = -1, idx5: ElementIndex | -1 = -1, idx6: ElementIndex | -1 = -1; let width = 4.5, height = 4.5, depth = 2.5 * sizeFactor; diff --git a/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts b/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts index b62c69213653cee60cc9a279df5f7c03fe117ba3..5d1cb9eb5439796a4017d416bef901c81abd2fa0 100644 --- a/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts +++ b/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts @@ -96,7 +96,7 @@ function createNucleotideRingMesh(ctx: VisualContext, unit: Unit, structure: Str const { index: residueIndex } = residueIt.move(); if (isNucleic(moleculeType[residueIndex])) { - const compId = label_comp_id.value(residueIndex); + const compId = label_comp_id.value(residueAtomSegments.offsets[residueIndex]); let idxTrace: ElementIndex | -1 = -1, idxN1: ElementIndex | -1 = -1, idxC2: ElementIndex | -1 = -1, idxN3: ElementIndex | -1 = -1, idxC4: ElementIndex | -1 = -1, idxC5: ElementIndex | -1 = -1, idxC6: ElementIndex | -1 = -1, idxN7: ElementIndex | -1 = -1, idxC8: ElementIndex | -1 = -1, idxN9: ElementIndex | -1 = -1;