On Thu, Jul 1, 2010 at 2:44 PM, Noel O'Boyle <[email protected]> wrote:
> On 1 July 2010 12:17, Tim Vandermeersch <[email protected]> wrote:
>> On Thu, Jul 1, 2010 at 11:02 AM, Noel O'Boyle <[email protected]> wrote:
>>> On 30 June 2010 16:44, Geoffrey Hutchison <[email protected]> wrote:
>>>>> bliss. bliss is GPLv2 and available from
>>>>> http://www.tcs.hut.fi/Software/bliss/. My code also has a dependency
>>>>> on Eigen2.
>>>>
>>>> I'm not thrilled at the idea of adding additional dependencies. I know 
>>>> people like Kabsch alignment, but we can also distribute a "contributed" 
>>>> program for those who want it and are willing to install bliss separately.
>>>
>>> Hmmm...well, the additional dependency could be circumvented if we had
>>> an isomorphism tester (essentially, do these two sets of atoms map
>>> onto each other?). This would not be as efficient as using bliss, but
>>> it would work. I'll hold the code back (well, it's available on my
>>> github mirror) then until we have one of these.
>>
>> Writing an efficient automorphism algorithm is not trivial. Checking
>> all permutations for equivalent symmetry classes is not acceptable for
>> general use (I used it for validation in the past). Inositol could
>> easily take several hours.
>
> Well, I would say it is acceptable for the majority of cases, and for
> a minority of cases, it has really terrible performance. However, the
> CDK has had an Isomorphism Tester for years (it wouldn't have taken
> symmetry into account AFAIK though). It may have been updated since,
> but several years ago it simply had a time-out if it failed to finish
> after 10 seconds (or something). It's a very useful function to have.

We also have a isomorphism tester, the SMARTS substructure search. You
could use a smiles to get all mappings for a molecule. These would be
the automorphisms (I haven't tested this but it should work AFAIK).
There are many optimizations that would be missed here though. The
symmetry classes are the most obvious optimization, we can start with
unique symmetry classes already mapped.

A timeout is a good idea.

As a long term goal, we should separate the query from the mapper
algorithm. There are other formats that support queries. This more
work and not for the next release though.

>> I have not tried to make use of connectivity yet (like we do for
>> substructure isomorphisms) but this might be enough to make
>> performance acceptable. For inositol, there are 12 automorphisms. If
>> the first of the 6 C atom is placed, there are two paths to close the
>> ring resulting in 12 automorphisms. Bliss & nauty probably has many
>> more of these optimizations.
>>
>> We could also provide an interface with multiple backends... (our own
>> version, bliss, nauty)
>
> Something like that I think would keep everyone happy, although it's a
> bit more work.

Yes but I have some time for this. It's better to do this now before
releasing... (adding the nauty back-end isn't high on my priority list
though)

Tim

>> Tim
>>
>>>>> How about Eigen2? Should I just optionally compile?
>>>>
>>>> Eigen2 is already optionally detected if installed. Some of the charge 
>>>> models use it (namely QEq and QTPIE).
>>>>
>>>> Hope that helps,
>>>> -Geoff
>>>> ------------------------------------------------------------------------------
>>>> This SF.net email is sponsored by Sprint
>>>> What will you do first with EVO, the first 4G phone?
>>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>>> _______________________________________________
>>>> OpenBabel-Devel mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/openbabel-devel
>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by Sprint
>>> What will you do first with EVO, the first 4G phone?
>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>> _______________________________________________
>>> OpenBabel-Devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/openbabel-devel
>>>
>>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbabel-devel

Reply via email to