Skip to content

Commit 8032dff

Browse files
committed
Watch out for cyclic cumulenes (bogus input) when checking for DB stereochemistry.
1 parent 5eebd3a commit 8032dff

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

storage/smiles/src/main/java/org/openscience/cdk/smiles/BeamToCDK.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,11 +300,19 @@ private void addDoubleBondStereochemistry(Graph g, IAtomContainer ac) {
300300
List<Edge> edges = new ArrayList<>();
301301
edges.add(e);
302302
Edge f = findCumulatedEdge(g, v, e);
303+
int beg = v;
303304
while (f != null) {
304305
edges.add(f);
305306
v = f.other(v);
306307
f = findCumulatedEdge(g, v, f);
308+
if (beg == v) {
309+
beg = -1;
310+
break;
311+
}
307312
}
313+
// cumulated loop
314+
if (beg < 0)
315+
continue;
308316
// only odd number of cumulated bonds here, otherwise is
309317
// extended tetrahedral
310318
if ((edges.size() & 0x1) == 0)

storage/smiles/src/test/java/org/openscience/cdk/smiles/BeamToCDKTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,12 @@ public void extendedTetrahedral_cw() throws Exception {
512512
"caffeine compound");
513513
}
514514

515+
/** GitHub Issue #723 */
516+
@Test public void cumulatedCycle() throws Exception {
517+
assertEquals(convert("C=1(=N(=C=1)(CC)CC)/N=C(/N1CCC(C2=CC=CC#C2)(CN2C(=NC3=C2C=CC=C3)C)CC1)\\NCC").getBondCount(),
518+
39);
519+
}
520+
515521
IAtomContainer convert(String smi) throws IOException {
516522
BeamToCDK g2c = new BeamToCDK(SilentChemObjectBuilder.getInstance());
517523
Graph g = Graph.fromSmiles(smi);

0 commit comments

Comments
 (0)