The changes below have been moved to the trunk and will be part of the next RDKit release.
-greg On Wed, Feb 15, 2012 at 12:37 AM, Greg Landrum <[email protected]> wrote: > Dear all, > > A couple days ago I created a branch to work on adding some > sanitization changes to the RDKit > (http://rdkit.svn.sourceforge.net/viewvc/rdkit/branches/SanitizationChanges_11Feb2012/). > > I've added two things, the ability to specify which sanitization > operations should be carried out and the ability to get a return value > from the SanitizeMol function instead of having it raise an exception. > > Here's what it looks like: > > In [5]: Chem.SanitizeMol? > Type: function > Base Class: <type 'builtin_function_or_method'> > String Form:<Boost.Python.function object at 0x1ec6740> > Namespace: Interactive > Docstring: > SanitizeMol( (Mol)mol [, > (int)sanitizeOps=rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_ALL [, > (bool)catchErrors=False]]) -> SanitizeFlags : > Kekulize, check valencies, set aromaticity, conjugation and hybridization > > - The molecule is modified in place. > > - If sanitization fails, an exception will be thrown unless > catchErrors is set > > ARGUMENTS: > > - mol: the molecule to be modified > - sanitizeOps: (optional) sanitization operations to be carried out > these should be constructed by or'ing together the > operations in rdkit.Chem.SanitizeFlags > - catchErrors: (optional) if provided, instead of raising an exception > when sanitization fails (the default behavior), the > operations that failed (as defined in > rdkit.Chem.SanitizeFlags) > is returned. Zero is returned on success. > > > > C++ signature : > RDKit::MolOps::SanitizeFlags SanitizeMol(RDKit::ROMol {lvalue} > [,unsigned int=rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_ALL > [,bool=False]]) > > > > An example of using it: > > #--------------------------- > In [6]: m = Chem.MolFromSmiles('c1cccc1',sanitize=False) > > In [7]: Chem.SanitizeMol(m) > [06:17:24] Can't kekulize mol > > --------------------------------------------------------------------------- > ValueError Traceback (most recent call last) > /scratch/RDKit_sanit/<ipython-input-7-dd6845fa341c> in <module>() > ----> 1 Chem.SanitizeMol(m) > > ValueError: Sanitization error: Can't kekulize mol > #--------------------------- > > That's the same as the current behavior. > > Now let's see what the problem was: > > #--------------------------- > In [8]: m = Chem.MolFromSmiles('c1cccc1',sanitize=False) > > In [9]: Chem.SanitizeMol(m,catchErrors=True) > [06:17:41] Can't kekulize mol > > Out[9]: rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_KEKULIZE > #--------------------------- > > Ok, so it failed in sanitization, so let's try sanitizing the molecule > without doing the kekulization step: > > #--------------------------- > In [10]: m = Chem.MolFromSmiles('c1cccc1',sanitize=False) > > In [11]: > Chem.SanitizeMol(m,sanitizeOps=Chem.SanitizeFlags.SANITIZE_ALL^Chem.SanitizeFlags.SANITIZE_KEKULIZE) > Out[11]: rdkit.Chem.rdmolops.SanitizeFlags.SANITIZE_NONE > #--------------------------- > > Note that there is a change even in the default behavior in that > Chem.SanitizeMol now always returns a value. Previously it always > returned None, but now you get a value back. > > > Any comments or suggestions about the API? > -greg ------------------------------------------------------------------------------ Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 _______________________________________________ Rdkit-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

