Hi, This mail turned out longer than I had expected. Some parts should probably be in the docs so I'll copy them :-) My main question is: Should I try to fix the recent SSSR bug (see link at the bottom).
Is anyone familiar with the SSSR code? Geoff's name is in the file but I don't know if there have been many ring perception bugs in the past. There is a recent bug report where not all SSSR rings are found. We have a DetermineFRJ which should give the correct number of SSSR rings. The missing ring in the first structure should be found (4x 3 rings, 1x 4 ring). FRJ = m - n + 1 = 16 - 12 + 1 = 5 (This is frère jacques number or Cauchy formula. Or even Euler's formula from which it was derived. This is the rule the bug report refers to) Only 4 are found, I haven't confirmed this but the report seems descent. Unless Geoff wants to try first, I can have a look to see what is wrong with the first structure. The second structure in the report contains a large ring, we seem to have a maximum ring size of 20 (or 40 with two paths, I only see one but don't know the code well). Was this limit ever updated? We could make this a setting though. Currently it is hard coded using a define: src/ring.cpp:523: #define OB_RTREE_CUTOFF 20 For the second structure, some performance tests are probably the best way to evaluate the max ring size. The current code is fast in determining ring membership (O(n)). With this information, a large but otherwise simple ring should be found in a fraction of a millisecond. For another project, I'm also planning to use the SSSR as a minimal cycle basis to generate a canonical ring set. See http://imagebin.org/101901 for examples or think about bridged rings and platonic solids (tetrahedron, cube, ...) where one ring is missing (all atoms and bonds of thos missing ring are part of other rings). Once I get it to work, adding this to OB should be easy. This would fix a bug in the MMFF94 atom typing and makes queries using atom ring count (i.e. R<n> in SMARTS) behave more intuitive for (computational) chemists. To be correct, it is just wrong to use the SSSR for R in smarts since finding a match might depend on atom order. This is how daylight still specifies it though. Bug report: http://sourceforge.net/tracker/?func=detail&atid=428740&aid=3017553&group_id=40728 Cheers, Tim ------------------------------------------------------------------------------ ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo _______________________________________________ OpenBabel-Devel mailing list OpenBabel-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-devel