Hi all,

here the code for Open3DALIGN:

        cids = generateConformers(mol, numConformers)
        prbPyMP = AllChem.MMFFGetMoleculeProperties(mol)  
        
        maxScore = 0;              
        for refCid in refCids:
            for cid in cids:
                alignment = AllChem.GetO3A(mol, refMol, prbPyMP, refPyMP, 
                        prbCid=cid, refCid=refCid,)
                score = alignment.Score()
                logger.debug('Score: %.2f', score)
                if score > maxScore:
                    logger.info('New max. Score: %.2f', score)
                    maxScore = score
                    refConformerId = refCid
                    molCid = cid
                    
        alignment = AllChem.GetO3A(mol, refMol, prbPyMP, refPyMP, 
prbCid=molCid, refCid=refConformerId)
        alignment.Align()
        # show in PyMol

One question I have is how I can align this to a specific fragment or the MCS? 
I tried using constraintMap but for some reason o3a does not want to align the 
2 structure on it. I suspect because then the rest of the alignment will not be 
very good in that case.

The code:

        constraintMap = []
        constraintWeights = []
        mcs = MCS.FindMCS([refMol,mol], bondCompare='bondtypes', 
ringMatchesRingOnly=False)        
        if mcs.completed == 1 and mcs.numAtoms > 0:
         
            core = Chem.MolFromSmarts(mcs.smarts) # or use specific smarts 
pattern through argument option
            logger.info('MCS: %s', Chem.MolToSmiles(core))
            
            refMatch = refMol.GetSubstructMatch(core) 
            match = mol.GetSubstructMatch(core)           
                        
            for idx, val in enumerate(match):
                constraintMap.append((val, refMatch[idx]))
                constraintWeights.append(100.0)
            logger.info(constraintMap)
...
        alignment = AllChem.GetO3A(mol, refMol, prbPyMP, refPyMP,  prbCid=cid, 
refCid=refCid, constraintMap=constraintMap,  
constraintWeights=constraintWeights)

The alinment is different but it still does not want to align to my defined 
fragment. even if I set constraintWeights to very high value. In my case I 
especially want to align heteroatoms properly. For that I tried:

for idx, val in enumerate(match):
                constraintMap.append((val, refMatch[idx]))                
                if mol.GetAtomWithIdx(val).GetAtomicNum() != 6:
                    constraintWeights.append(1000.0)
                    logger.info('Set weigth to 1000')
                else:
                    constraintWeights.append(10.0)

But the single hetero atoms in this my test case are still not aligned on each 
other.  I also tried ConstrainedEmbed (or how it is called) but that results in 
either an error or with relaxed parameters in a completely useless 
conformation, namely on a ring.

What are my options?
From: greg.land...@gmail.com
Date: Fri, 27 Jun 2014 08:20:56 +0200
Subject: Re: [Rdkit-discuss] 3D alignment in Python: align conformers of 2 
molecules
To: beginn...@hotmail.de
CC: rdkit-discuss@lists.sourceforge.net



On Fri, Jun 27, 2014 at 7:57 AM, Thomas Strunz <beginn...@hotmail.de> wrote:






thanks for your quick reply. This helped to improve the alignment.


I'm glad to hear it! 

How can I reproduce the alignment done in with the Open3DAlign Node in Python? 
Is it possible at all?

But of course. :-)There's some example code that shows how to do it on page 37 
of Paolo's presentation from the last RDKit UGM:

https://github.com/rdkit/UGM_2013/raw/master/Presentations/Tosco.RDKit_UGM2013.pdf

-greg

 
                                          
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to