Skip to content
Snippets Groups Projects
Commit d58f4a73 authored by David Sehnal's avatar David Sehnal
Browse files

mol-model: fix for links with <1 occupancy atoms

parent 6a299257
No related branches found
No related tags found
No related merge requests found
...@@ -64,8 +64,10 @@ function findPairBonds(unitA: Unit.Atomic, unitB: Unit.Atomic, props: BondComput ...@@ -64,8 +64,10 @@ function findPairBonds(unitA: Unit.Atomic, unitB: Unit.Atomic, props: BondComput
// const { type_symbol: type_symbolB, label_alt_id: label_alt_idB } = unitB.model.atomicHierarchy.atoms; // const { type_symbol: type_symbolB, label_alt_id: label_alt_idB } = unitB.model.atomicHierarchy.atoms;
const { type_symbol: type_symbolA, label_alt_id: label_alt_idA, label_atom_id: label_atom_idA } = unitA.model.atomicHierarchy.atoms; const { type_symbol: type_symbolA, label_alt_id: label_alt_idA, label_atom_id: label_atom_idA } = unitA.model.atomicHierarchy.atoms;
const { type_symbol: type_symbolB, label_alt_id: label_alt_idB, label_atom_id: label_atom_idB } = unitB.model.atomicHierarchy.atoms; const { type_symbol: type_symbolB, label_alt_id: label_alt_idB, label_atom_id: label_atom_idB } = unitB.model.atomicHierarchy.atoms;
const { label_comp_id: label_comp_idA } = unitA.model.atomicHierarchy.residues; const { label_comp_id: label_comp_idA, auth_seq_id: auth_seq_idA } = unitA.model.atomicHierarchy.residues;
const { label_comp_id: label_comp_idB } = unitB.model.atomicHierarchy.residues; const { label_comp_id: label_comp_idB, auth_seq_id: auth_seq_idB } = unitB.model.atomicHierarchy.residues;
const { occupancy: occupancyA } = unitA.model.atomicConformation;
const { occupancy: occupancyB } = unitB.model.atomicConformation;
const { lookup3d } = unitB; const { lookup3d } = unitB;
const structConn = unitA.model === unitB.model && unitA.model.sourceData.kind === 'mmCIF' ? StructConn.get(unitA.model) : void 0; const structConn = unitA.model === unitB.model && unitA.model.sourceData.kind === 'mmCIF' ? StructConn.get(unitA.model) : void 0;
...@@ -125,6 +127,7 @@ function findPairBonds(unitA: Unit.Atomic, unitB: Unit.Atomic, props: BondComput ...@@ -125,6 +127,7 @@ function findPairBonds(unitA: Unit.Atomic, unitB: Unit.Atomic, props: BondComput
const metalA = MetalsSet.has(aeI); const metalA = MetalsSet.has(aeI);
const atomIdA = label_atom_idA.value(aI); const atomIdA = label_atom_idA.value(aI);
const compIdA = label_comp_idA.value(residueIndexA[aI]); const compIdA = label_comp_idA.value(residueIndexA[aI]);
const occA = occupancyA.value(aI);
for (let ni = 0; ni < count; ni++) { for (let ni = 0; ni < count; ni++) {
const _bI = indices[ni] as StructureElement.UnitIndex; const _bI = indices[ni] as StructureElement.UnitIndex;
...@@ -133,6 +136,14 @@ function findPairBonds(unitA: Unit.Atomic, unitB: Unit.Atomic, props: BondComput ...@@ -133,6 +136,14 @@ function findPairBonds(unitA: Unit.Atomic, unitB: Unit.Atomic, props: BondComput
const altB = label_alt_idB.value(bI); const altB = label_alt_idB.value(bI);
if (altA && altB && altA !== altB) continue; if (altA && altB && altA !== altB) continue;
// Do not include bonds between images of the same residue.
// TODO: is this condition good enough?
if (occupancyB.value(bI) < 1 && occA < 1) {
if (auth_seq_idA.value(aI) === auth_seq_idB.value(bI)) {
continue;
}
}
const beI = getElementIdx(type_symbolB.value(bI)!); const beI = getElementIdx(type_symbolB.value(bI)!);
const isMetal = metalA || MetalsSet.has(beI); const isMetal = metalA || MetalsSet.has(beI);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment