On Wed, Aug 22, 2012 at 5:20 AM, Greg Landrum <[email protected]> wrote:
>
> The current version of the cartridge does not support loading (or
> exporting) molecules as RDKit pickles. It should be pretty easy for me
> to add this capability though, so I will look into it.
The svn version of the cartridge is now capable of sending/receiving
molecules and bit-vector fingerprints as binary strings (bytea's in
postrgresql).
Here's a demonstration from Python.
For molecules:
In [7]: m = Chem.MolFromSmiles('c1ccccc1')
In [8]: mpkl = m.ToBinary()
In [9]: curs.execute("select mol_from_pkl(%s)",(buffer(mpkl),))
In [10]: curs.fetchone()
Out[10]: ('c1ccccc1',)
In [11]: curs.execute("select mol_to_pkl('c1ccccn1'::mol)")
In [12]: mpkl = curs.fetchone()[0]
In [13]: Chem.MolToSmiles(Chem.Mol(str(mpkl)))
Out[13]: 'c1ccncc1'
For bit vects:
In [14]: fp =
AllChem.GetMorganFingerprintAsBitVect(Chem.MolFromSmiles('c1ccccc1'),2,512)
In [15]: pkl = DataStructs.BitVectToBinaryText(fp)
In [16]: curs.execute("select size(bfp_from_binary_text(%s))",(buffer(pkl),))
In [17]: curs.fetchone()
Out[17]: (512,)
In [18]: curs.execute("select
tanimoto_sml(bfp_from_binary_text(%s),morganbv_fp('c1ccccc1'))",(buffer(pkl),))
In [19]: curs.fetchone()
Out[19]: (1.0,)
In [20]: curs.execute("select bfp_to_binary_text(morganbv_fp('c1ccccc1'))")
In [21]: pkl = curs.fetchone()[0]
In [23]: nfp = DataStructs.CreateFromBinaryText(str(pkl))
In [24]: list(nfp.GetOnBits())
Out[24]: [64, 337, 389]
In [25]: list(fp.GetOnBits())
Out[25]: [64, 337, 389]
The corresponding C++ calls are:
- to get a molecule pickle: MolPickler::pickleMol
- to construct a molecule from a pickle: ROMol(pkl)
- to get a fingerprint as binary text: BitVectToBinaryText
- to fill an already constructed fingerprint from binary text (the
size of the fp should be 8* the length of the binary text):
UpdateBitVectFromBinaryText
Best,
-greg
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss