Calling SanitizeMol() does call UpdatePropertyCache(). The function is just 
there for the times one doesn't want/need to do a full sanitization.






On Sun, Sep 4, 2016 at 6:53 AM +0200, "Ling Chan" <lingtrek...@gmail.com> wrote:










Hello Greg,
Is UpdatePropertyCache "heavy"? If not, is it possible to fold it into 
SanitizeMol, so that users only need to remember the SanitizeMol function for 
refreshing a molecule?
Thank you.
Ling
On Mon, Aug 29, 2016 at 10:41 PM, Greg Landrum <greg.land...@gmail.com> wrote:
Hi Brian,
On Tue, Aug 30, 2016 at 6:41 AM, Bennion, Brian <benni...@llnl.gov> wrote:








I have seemed to hit a wall with what seems like a simple task.



First, I have ~9800 compounds that have a primary amine for a reaction that I 
am completing in rdkit.

About 250 of those compounds have a tertiary alkylamine that is most likely 
protonated at pH 7.4.



The dataset is a set of smiles strings for which the tertiary amine is not 
protonated.   I thought this would be easy enough to fix, just use a smarts 
substructure search, set the formal charge on any hits to one and then AddHs, 
sanitize, embed, and then minimize.



Well, what I get is [N+] with all the other carbons with explicit atoms in the 
resulting smiles files, and if output to sdf I get a positively charged  
diradical positioned at the tertiary nitrogen.

Yes, what's happening here is that AddHs() is using the implicit valence on the 
N atoms to determine how many Hs to add. Since the implicit valence is not 
recomputed when you set the formal charge, you end up with the wrong number of 
Hs attached to the N. A call to UpdatePropertyCache() will fix this:
n [16]: m = Chem.MolFromSmiles('CN')
In [17]: AllChem.CalcMolFormula(m)Out[17]: 'CH5N'
In [18]: m.GetAtomWithIdx(1).SetFormalCharge(1)
In [19]: AllChem.CalcMolFormula(m)Out[19]: 'CH5N+'
In [20]: m.UpdatePropertyCache()
In [21]: AllChem.CalcMolFormula(m)Out[21]: 'CH6N+'
In [22]: mh = Chem.AddHs(m)
In [24]: mh.GetAtomWithIdx(1).GetDegree()
Out[24]: 4

Thank you for such a great tool
You're welcome! Thanks for saying thanks. :-)
Hope this helps,-greg



------------------------------------------------------------------------------


_______________________________________________

Rdkit-discuss mailing list

Rdkit-discuss@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/rdkit-discuss









------------------------------------------------------------------------------
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to