From bf0b37895d5512f83836add8f5890058796d216f Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Tue, 23 Jul 2019 15:51:17 -0700 Subject: [PATCH] handle modified base rings (DP, DZ) --- .../structure/visual/nucleotide-block-mesh.ts | 4 ++++ .../structure/visual/nucleotide-ring-mesh.ts | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/mol-repr/structure/visual/nucleotide-block-mesh.ts b/src/mol-repr/structure/visual/nucleotide-block-mesh.ts index 36f7dc6f0..55c8dfa68 100644 --- a/src/mol-repr/structure/visual/nucleotide-block-mesh.ts +++ b/src/mol-repr/structure/visual/nucleotide-block-mesh.ts @@ -107,6 +107,10 @@ function createNucleotideBlockMesh(ctx: VisualContext, unit: Unit, structure: St idx3 = atomicIndex.findAtomOnResidue(residueIndex, 'C4') idx4 = atomicIndex.findAtomOnResidue(residueIndex, 'C2') idx5 = atomicIndex.findAtomOnResidue(residueIndex, 'N1') + if (idx5 === -1) { + // modified ring, e.g. DZ + idx5 = atomicIndex.findAtomOnResidue(residueIndex, 'C1') + } idx6 = traceElementIndex[residueIndex] } diff --git a/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts b/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts index 8a1e82017..871fe5364 100644 --- a/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts +++ b/src/mol-repr/structure/visual/nucleotide-ring-mesh.ts @@ -122,8 +122,16 @@ function createNucleotideRingMesh(ctx: VisualContext, unit: Unit, structure: Str idxN3 = atomicIndex.findAtomOnResidue(residueIndex, 'N3') idxC4 = atomicIndex.findAtomOnResidue(residueIndex, 'C4') idxC5 = atomicIndex.findAtomOnResidue(residueIndex, 'C5') + if (idxC5 === -1) { + // modified ring, e.g. DP + idxC5 = atomicIndex.findAtomOnResidue(residueIndex, 'N5') + } idxC6 = atomicIndex.findAtomOnResidue(residueIndex, 'C6') idxN7 = atomicIndex.findAtomOnResidue(residueIndex, 'N7') + if (idxN7 === -1) { + // modified ring, e.g. DP + idxN7 = atomicIndex.findAtomOnResidue(residueIndex, 'C7') + } idxC8 = atomicIndex.findAtomOnResidue(residueIndex, 'C8') idxN9 = atomicIndex.findAtomOnResidue(residueIndex, 'N9') @@ -148,6 +156,10 @@ function createNucleotideRingMesh(ctx: VisualContext, unit: Unit, structure: Str } else if (isPyrimidine) { idxTrace = traceElementIndex[residueIndex] idxN1 = atomicIndex.findAtomOnResidue(residueIndex, 'N1') + if (idxN1 === -1) { + // modified ring, e.g. DZ + idxN1 = atomicIndex.findAtomOnResidue(residueIndex, 'C1') + } idxC2 = atomicIndex.findAtomOnResidue(residueIndex, 'C2') idxN3 = atomicIndex.findAtomOnResidue(residueIndex, 'N3') idxC4 = atomicIndex.findAtomOnResidue(residueIndex, 'C4') -- GitLab