On Tue, Jun 22, 2010 at 6:28 PM, Craig A. James <cja...@emolecules.com> wrote:
> On 6/21/10 2:49 PM, Tim Vandermeersch wrote:
>
>>> The LSSR algorithm is simple:
>>>
>>>  for S in (3, 4, 5, 6, ...)
>>>    find all rings of size S, add to LSSR
>>>    if all cyclic atoms and bonds are included in at
>>>      least one ring in the LSSR, quit
>>
>> This would give 10 rings for cubane with a 6 ring attached:
>> (structure image: http://imagebin.org/102164)
>>
>>     ring: 1 2 3 4
>>     ring: 5 6 3 4
>>     ring: 1 4 5 8
>>     ring: 7 8 5 6
>>     ring: 2 3 6 7
>>     ring: 1 2 7 8
>>     ring: 7 2 1 4 5 6
>>     ring: 1 4 5 6 3 2
>>     ring: 4 3 6 7 2 1
>>     ring: 9 10 11 12 13 14
>>
>> The first three 6 rings are found in the cubane part of the molecule.
>> I know these rings are unexpected but they are found and should be
>> removed (for use in substructure search).
>>
>> The algorithm would be:
>>
>>   for S in (3, 4, 5, 6, ...)
>>     find all rings of size S, add to LSSR if not contained in the
>> union of all smaller rings
>>     if all cyclic atoms and bonds are included in at
>>       least one ring in the LSSR, quit
>>
>> The first 3 6-rings are now found in the union of the 3-rings. The
>> final, attached cyclohexane ring is still found. This might not be
>> important for aromaticity but having a single canonical ring set is
>> better IMHO. The small change shouldn't affect the results you
>> require.
>
> Sorry, I left out the first step of the algorithm.  Before you do any SSSR
> or LSSR, you always divide the molecule into "ring groups."  You
> (conceptually) remove all non-ring bonds, and end up with a set of
> disconnected structures.  Each of these is a "ring group" that has its own
> SSSR and LSSR.  The molecule's SSSR and LSSR are just the union of the sets
> of all of the ring groups.  (Does anyone know a more formal name from
> chemistry or mathematics for "ring groups"?)

Ring system is often used.

> In the example you provided (cubane with a cyclohexane attached by a single
> bond), there are two ring groups.  The LSSR would have six rings of size
> four and one of size six.

Correct. However, the 6 ring can be in the same ring system:
http://imagebin.org/102279   This case remains problematic...

Considering each ring system should not make the result different but
would be a great performance enhancement for proteins etc.

I now have the version you describe "working". It correctly gives the
expected rings for relevant structures and the rings are canonical.
Some examples:

6 ring, 1,4-bridged by 2 atoms: 3 rings
tetrahedron: 4 rings
cube: 6 rings
...
fullerene c20: 12 rings
fullurene c60: 32 rings

All tests pass with aromaticity detection using the LSSR.

The result for the new cubane structure is:

# sssr = 6
    ring: 1 2 3 4
    ring: 5 6 3 4
    ring: 1 4 5 8
    ring: 7 8 5 6
    ring: 2 3 6 7
    ring: 9 11 12 10 7 6
# lssr = 8
    ring: 1 2 3 4
    ring: 5 6 3 4
    ring: 1 4 5 8
    ring: 7 8 5 6
    ring: 2 3 6 7
    ring: 1 2 7 8
    ring: 9 11 12 10 7 6
    ring: 4 3 6 7 2 1

The second 6 ring in the LSSR should not be there. If you make the
criteria more strict, not enough rings are found.

Most canonical ring sets (e.g. ESSR) use the SSSR (as minimum cycle
basis) to generate the extended set. I'm not sure it is possible to
directly compute a LSSR ring set for all cases...

Tim

> This always greatly simplifies ring analysis because when you're doing
> kekule assignment and aromaticity, you only work with one ring group at a
> time.  The bonds of one ring group can't affect another ring group.
>
> The new kekule.cpp code works this way (although don't explicitely say so).
>  The way it "walks" outward across a ring group guarantees that it will
> finish one ring group completely before starting on the next ring group.
>
> Craig
>

------------------------------------------------------------------------------
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

Reply via email to