Re: [Rdkit-discuss] reading tag data from string, not file
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
From: Greg L. <gre...@gm...> - 2010-12-30 04:36:18
|
Hi TJ, On Thu, Dec 30, 2010 at 2:27 AM, TJ O'Donnell <tj...@ac...> wrote: > I can see how to read an sd file using SDMolSupplier and using mol.GetProp() > to get the tag data from the file. > But, I have each molblock (chunk of lines between $$$$ in an sdf file) > in a separate string. I don't see a way to get properties from that > molblock string or > even better from the mol=Chem.MolFromMolBlock(molblock) > E.g. mol.GetPropNames() returns a null array (or just the private and > computed props if mol.GetPropNames(True,True) > Can you give me some hints on how I might get the property tag data > from a string molblock? The easiest way I can think to do it is by constructing an SDMolSupplier and using its SetData method: To have some sample data I start by getting a block of data from an SDF: In [2]: suppl = Chem.SDMolSupplier('activity_classes.sdf') In [3]: mb = suppl.GetItemText(12) Set up a new SDMolSupplier using that: In [5]: nsuppl = Chem.SDMolSupplier() In [6]: nsuppl.SetData(mb) And then grab the molecule: In [7]: mol = nsuppl.next() [05:29:05] deprecated group abbreviation ignored [05:29:05] deprecated group abbreviation ignored In [8]: list(mol.GetPropNames()) Out[8]: ['ACTIV_CLASS', 'ACTIV_INDEX', 'EXTREG', 'MOLREGNO'] You can no doubt do the same thing with Chem.MolFromMolBlock to build the molecule, a regular expression to extract the data from the SD block, and a series of SetProp() calls, but the above somehow seems easier. :-) Best Regards, -greg |