Brian - Thank you! (on OSX 10.11.5, jupyter 4.1.0)
rdkit.Chem.WrapLogs() does hide the messages. I could not figure out how to access them though once they are hidden. To capture warnings, this mechanism seems to work - but it is ugly. ``` import os ## switch the streams stderr_fn = 'stderr.log' orig_stderr = sys.stderr sys.stderr = open(stderr_fn, 'w') ## RDKit code producing warnings goes here ## switch back stderr, process the warnings sys.stderr.flush() sys.stderr = orig_stderr with open(stderr_fn, 'r') as f: err_data = f.read() os.remove(stderr_fn) print(len(err_data)) ``` Assuming it is all even necessary, this could be made much nicer by using a context manager/decorator to handle stderr capture and return the warnings text in an extra argument, along the lines of http://stackoverflow.com/questions/5136611/capture-stdout-from-a-script-in-python == But also I noticed something weird: If I re-run the notebook cell with code that produces warnings, I get *no warnings* every third or sometimes second invocation. And when I run this with data that produce a lot of warnings (hundreds), I get different number of warnings between runs, at least with this call: ``` #dff is a pandas dataframe dff['InChI'] = dff['ROMol'].map(Chem.MolToInchi) ``` it cycles higher-number -> lower-number -> higher-number ... Not sure what to make of it. Something screwed up with my system? Dmitri > On Jun 28, 2016, at 8:24 AM, Brian Kelley <[email protected]> wrote: > > Dmitri, if you import rdkit.Chem.Draw.IPythonConsole the c++ errors and > warnings should be seen in IPython. This doesn't appear to work on Windows > yet, sadly. > > This is enabled by the command > rdkit.Chem.WrapLogs() > > We are also doing a second pass soon to get better exception details in > python which has been a pet peeve of mine for a while. > ---- > Brian Kelley > > On Jun 28, 2016, at 4:04 AM, DmitriR <[email protected]> wrote: > >> Hi Greg - >> >> Thank you very much for the clear and detailed explanation! >> >> (and, now that I have a chance to say this, thank you for putting the >> project together; being able to work with chemistry in the python notebook >> is great, and having hooks into pandas is really cool) >> >> In this case I was basically just going through the example code and ran >> into some behaviors that I did not understand (and you kindly explained). So >> it's all clear now. Uppercase aromatic atoms in MCS output does appear to be >> a bug; Hs on aromatic nitrogens I'll need to fix manually or with a >> transform. >> >> == >> >> Separately, on another thing that came up in my working through that data: >> >> I'd like to add my 2cents-equivalent of vote toward a bit fuller control of >> warnings produced by the C++ backend. In that example's data I was getting a >> lot of (fully valid, I think) warnings about stereochemistry, but I could >> not do anything to catch or hide them - and in an ipython notebook, it can >> get less than tidy. I did see this mentioned in other threads, so I >> understand that logging is a known issue somewhere on the stack. For now I >> just clean up manually. >> >> Thanks again! >> >> Kind regards, >> Dmitri >> >> >> >>> On Jun 28, 2016, at 1:39 AM, Greg Landrum <[email protected]> wrote: >>> >>> Hi Dmitri, >>> >>> The results that come back from the MCS in that examples really describe >>> queries, not necessarily stable molecules or things that can be accurately >>> translated into SMILES. >>> >>> I'll describe below what's going on to cause the error, but the more >>> important question is: what are you trying to do? >>> >>> In this case there are two problems. One has to do with the aromatic bonds >>> in the SMILES coming from C atoms that are written as capital letters. >>> Here's a simplified version of your example: >>> >>> In [11]: Chem.MolFromSmiles('O=C1:[NH]:C:N:N2:C:*:C:C:1:2') >>> [06:43:37] Explicit valence for atom # 1 C, 5, is greater than permitted >>> >>> If I rewrite the SMILES to have the atoms with aromatic bonds written with >>> lower case letters everything is fine: >>> >>> In [12]: Chem.MolFromSmiles('O=c1:[nH]:c:n:n2:c:*:c:c:1:2') >>> Out[12]: <rdkit.Chem.rdchem.Mol at 0x7f3204024440> >>> >>> This shouldn't make a difference in SMILES, so I'm inclined to think that >>> it's a bug. >>> >>> The second problem was the missing hydrogen specification on the aromatic >>> nitrogen that has an H (I fixed this in the SMILES above). Since the RDKit >>> does not attempt to guess at chemistry, the general rule is that aromatic >>> heteroatoms should have Hs specified if they have any. There have been a >>> number of mailing list threads on this topic. >>> >>> Best, >>> -greg >>> >>> >>> >>> >>> On Mon, Jun 27, 2016 at 8:26 PM, DmitriR <[email protected]> wrote: >>> Dear RDKitters, >>> >>> I would appreciate any comments on the following: >>> >>> I am looking at the 'SureChEMBL iPython Notebook Tutorial' >>> http://nbviewer.jupyter.org/github/rdkit/UGM_2014/blob/master/Notebooks/Vardenafil.ipynb >>> >>> following along with rdkit '2016.03.1' on OSX >>> >>> In Cell 142, there is this SMILES: >>> >>> MCS SMILES: O=C1:N:C(C2:C:C:C:C:C:2):N:N2:C:[*]:C:C:1:2 >>> This is a representation of a generalized structure, not any particular >>> molecule. >>> >>> It was generated with Chem.MolToSmiles(mcsM,isomericSmiles=True) >>> >>> But when I try >>> Chem.MolFromSmiles('O=C1:N:C(C2:C:C:C:C:C:2):N:N2:C:[*]:C:C:1:2') >>> >>> I get "RDKit ERROR: [14:11:32] Explicit valence for atom # 1 C, 5, is >>> greater than permitted" >>> >>> So there is no "round-trip" possible here. >>> >>> Which behavior is "correct", given the aromaticity and structure as >>> specified? >>> Should this be rendering/creating molecule, or failing? >>> >>> Thanks! >>> >>> (MarvinSketch does display the SMILES without complaints.; >>> image is attached) >>> >>> Dmitri >>> >>> >>> <PastedGraphic-3.png> >>> >>> ------------------------------------------------------------------------------ >>> Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San >>> Francisco, CA to explore cutting-edge tech and listen to tech luminaries >>> present their vision of the future. This family event has something for >>> everyone, including kids. Get more information and register today. >>> http://sdm.link/attshape >>> _______________________________________________ >>> Rdkit-discuss mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >>> >>> >> >> ------------------------------------------------------------------------------ >> Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San >> Francisco, CA to explore cutting-edge tech and listen to tech luminaries >> present their vision of the future. This family event has something for >> everyone, including kids. Get more information and register today. >> http://sdm.link/attshape >> _______________________________________________ >> Rdkit-discuss mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss ------------------------------------------------------------------------------ Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ Rdkit-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

