diff --git a/src/mol-repr/structure/visual/nucleotide-block-mesh.ts b/src/mol-repr/structure/visual/nucleotide-block-mesh.ts index 36f7dc6f076269451db6c5f464ae5172a5df9463..55c8dfa68e7329e6d071048260f871e9ba58bfa1 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 8a1e820171c56fc2582b11f97a78e17171ce3962..871fe5364818ef593b93ed25e1634f56a7545377 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')