Re: [Rdkit-discuss] Shape Similarity
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
From: Greg L. <gre...@gm...> - 2009-03-23 09:59:34
|
Christos, 2009/3/23 Christos Kannas <ck...@no...>: > > So I have to align the two molecules first and then calculate their Tanimoto > similarity/distance. Correct. >> Also, can I get the tanimoto shape similarity between a molecule and a >> pharmacophore? > > I want to calculate the Tanimoto similarity between a molecule and a given > pharmacophore... > For example I can set some pharmacophore features, > and then I want to calculate the Tanimoto Similarity/distance between this > pharmocophore and another molecule. To answer this in a way that makes sense I need to give a bit more detail about what ShapeTanimotoDist() does. First the shape of each molecule is encoded onto a grid (an rdkit.Geometry.UniformGrid3D object) using the parameters provided (probably by default) to ShapeTanimotoDist(). These grids are then compared using the function TanimotoDistance() in the rdkit.Geometry module. If you treat the pharmacophore as a set of spheres with given radii, then yes, you could in principle generate a UniformGrid3D that encodes the union volume of those spheres and then calculate the Tanimoto distance between that grid and the grid of your molecule. In practice this will require you to do some C++ coding, because there's not currently a way to add things to a UniformGrid3D from Python. My own bias is to treat pharmacophores as a series of points separated by a distance and then to calculate the quality of a molecular alignment to the pharmacophore by looking at the RMSD between the molecule's feature points and the pharmacophore's feature points. Alternatively, I would use the RDKit's FeatureMap machinery to calculate the overlap between the molecule's FeatureMap and the FeatureMap generated by the pharmacophore. -greg |