There are lots of way to define molecular similarity, for example fingerprint based, descriptor based, graph based, shape based etc. etc…
In the 2D world, circular fingerprint based similarity is used in many case. However, 3D based similarity approach is also useful for drug design. As you now, OpenEye provides useful software named ‘ROCS’. ROCS can calculate shape based similarity but it is commercial software for industry. So it’s difficult to use in personal usage. I posted an open source package for shape based similarity metric named ‘shape-it’ before, shape-it works well for shape based approach but of course it doesn’t work for electrostatic similarity metric.
Recently, I read exciting article which is disclosed from AstraZeneca’s group. URL is below.
Fortunately the author shared espsim source code on github! So we can use the pacakge!
I have interest the package so I used it. My test code is uploaded on my gist and githu b repo. In gist, py3Dmol will not work so 3D mols aren’t rendered. But link from nbviewer will work. The URL is
Following example shows shape and esp similarity of 2 CDK2 inhibitors.
EmbedAlignConstrainedScore method is useful because it align prob molecule and reference molecules with core constrain. I got core structure from MCS. After running EmbedAlignConstrainedScore, two molecules are well aligned. I used py3Dmol with grid mode for rendering molecules. RDKit has Draw.MolsToGridImage method and it's useful for rendering molecules in 2D manner. I would like to do same thing in 3D. py3Dmol provides viewergrid for rendering molecules as grid. And it works fine in my case.
In this case, shape based similarity is high as expected but esp score is really low. I would like to test more number of compounds near the freature.
Espsim package used Gasteiger partial charge for default esp similarity calculation but can use QM based partial charge which came from Psi4.
In summary, espsim is useful OSS and provides an opportunity for getting hits from shape based virtual screening.