John May - 2013-06-09

"Those who don't know history are destined to repeat it." - Edmund Burke

Right, time to fix this once and for all!

Related:
http://sourceforge.net/mailarchive/message.php?msg_id=27600602

From looking at stuff the last couple of days I actually think I understand how this ESSSR is done now. I should also add for future discoveries ESSR != ESSSR although the abbreviations both mean nearly the same thing 'Extended Set of Smallest Rings' and 'Extended Smallest Set of Smallest Rings'. The ESSR is published but not a very nice algorithm, the ESSSR is specific to CACTVS and hence used by PubChem.

For that original post chemfp uses smarts matching. Having done those recent relavent cycle algorithms recently I think I can come up with a concise algorithm.

Going to add some links here for future reference and those who stumble across it.

http://85.214.192.197/Documentation/tcl_reference_online.pdf

This code fragment will do something with the rings, but filter out all envelope rings. An envelope
ring is a ring which can be constructed by the union of smaller rings. In naphthalene, all rings except
the six-membered rings are envelope rings. In norbornane, the six-membered base ring is not an
envelope, because it does not contain the bridge atom present the five-membered rings and is thus not a union. The envelope filter is a built-in filter which checks the value of property R_TYPE to be
envelope (and not esssr, or sssr).

http://ctr.wikia.com/wiki/Ring_counts_in_a_SMILES_file

For the ESSSR count (contains rings covering all 3-ringatom-chain, e.g. 6 rings in cubane) substitute property E_NESSSR

http://www.dalkescientific.com/writings/diary/archive/2011/06/04/dealing_with_sssr.html