Quick follow up: as suggested by Greg, replacing the minimization step
"AllChem.UFFOptimizeMolecule(mol,confId=c)"
with the minimization using constraints (copied from
$RDBASE/rdkit/Chem/AllChem.py "ConstrainedEmbed()") produced the
results I was hoping for.

thanks again & cheers

Fabian



                    # from ConstrainedEmbed() , minimization using
constraints
                    # defined by MCS-matching atoms

                    ff = AllChem.UFFGetMoleculeForceField(mol,confId=c)

                    # distance constraints for minimization
                    for k in range(0, len(refat) ):
                        pt3  = refconf.GetAtomPosition(refat[k])
                        pIdx =
ff.AddExtraPoint(pt3.x,pt3.y,pt3.z,fixed=True)-1
                        ff.AddDistanceConstraint(pIdx,dbat[k],0,0,100.)

                    ff.Initialize()
                    n=4
                    more=ff.Minimize(energyTol=1e-4,forceTol=1e-3)
                    while more and n:
                        more=ff.Minimize(energyTol=1e-4,forceTol=1e-3)
                        n-=1



On Wed, Mar 20, 2013 at 3:53 PM, Fabian Dey <[email protected]> wrote:

>
> Thanks Greg and Andrew for the clarifications and tips, I will have
> another look!
>
> cheers
> Fabian
>
>
>
>
>
> On Wed, Mar 20, 2013 at 4:29 AM, Greg Landrum <[email protected]>wrote:
>
>> Fabian,
>>
>> On Tue, Mar 19, 2013 at 2:05 PM, Fabian Dey <[email protected]> wrote:
>> >
>> > I started writing a RDKIT-python-script including Andrew Dalke's MCS
>> > implementation (thanks by the way) for a ligand-based (MCS) alignment
>> and
>> > noticed some
>> > odd things - which might also be due to my implementation. The idea of
>> the
>> > program is that given a template molecule and a library (both as SDF),
>> the
>> > MCS
>> > is searched between the template and a particular library molecule. A
>> new
>> > conformation for the library molecule is generated using as a
>> "coordinate
>> > map"
>> > the atoms identified in the MCS with the template (using
>> > "EmbedMultipleConf(....)"). The conformations are optimized, redundancy
>> is
>> > removed and the most similar
>> > conformations are written to a new SDF (full code at end mail , start
>> with
>> > "python MCSalign.py template.sdf library.sdf out.sdf ").
>>
>> nice idea. I like it!
>>
>> > The points I noticed:
>> >
>> > - after running "EmbedMultipleConf(....)" the atoms of the MCS are
>> often not
>> > aligned (reference vs. library compound) although I specified a
>> coordinate
>> > map (I also tried increasing the
>> > force tolerance which did not help), and I have to do an additional
>> > alignment for the correct superposition - is this to be expected?
>>
>> Yes. The coordinate map is used to provide distance constraints for
>> the core. You need to do the alignment step to get the atoms in the
>> right place.
>>
>> > - Sometimes when I use the same molecule as reference and library
>> compound
>> > (for testing purposes), the conformations do not match even after the
>> > alignment ?
>> > (e.g. ZINC-molecule http://zinc.docking.org/substance/33006049)
>>
>> I assume that you're doing the alignment and looking at the results
>> before you call the force-field minimization? That would, of course,
>> lead to problems.
>>
>> Another possible source of a mismatch is that the embedding process
>> isn't perfect: the distance constraints you provide (the coordinates)
>> are not necessarily perfectly satisfied in the conformation that's
>> returned. What can help with this is to do a UFF optimization with
>> added constraints that force the core atoms of the new conformation to
>> match the core atoms in the reference molecule.
>>
>> You may find it useful to look at the the code in the function
>> ConstrainedEmbed in $RDBASE/rdkit/Chem/AllChem.py. This does a
>> constrained conformation generation for a molecule using a core as a
>> reference structure. It doesn't do the MCS analysis, but you could
>> pretty easily add that.
>>
>> > - in order to get a 1-1 correspondence of atom ids (to get the
>> coordinate
>> > map) I had to search the MCS-SMARTS match again against the original
>> files
>> > to
>> > get the atom-ids - is there a more direct way to do this?
>>
>> There's not, as Andrew already answered.
>>
>> -greg
>>
>
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to