Hi guys,
I recently found that the GetBestRMS() fails to return the optimal RMS in
the following case (Glycine: O4 and O5 flips in the reference and probe
molecules).
The returned RMSD and Shape Tanimoto values are 0.81 and
0.66, respectively, not as good as expected. Is there anything that I can
try to fix it? Thank you!
*- Reference molecule:*
reference
------
5 4 0 0 0 0 0 0 0999 V2000
1.5410 -3.2260 72.8820 N 0 0 0 0 0 0 0 0 0 0 0 0
2.2100 -3.1110 71.5380 C 0 0 0 0 0 0 0 0 0 0 0 0
2.7090 -1.6960 71.3190 C 0 0 0 0 0 0 0 0 0 0 0 0
2.0850 -0.7620 71.8600 O 0 0 0 0 0 0 0 0 0 0 0 0
3.7200 -1.5200 70.6150 O 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 1 0 0 0 0
3 4 2 0 0 0 0
3 5 1 0 0 0 0
M END
*- Probe molecule:*
probe
--------
5 4 0 0 0 0 0 0 0 0999 V2000
2.2790 -3.8306 72.1929 N 0 0 0 0 0 0 0 0 0 0 0 0
1.6557 -2.5350 72.2090 C 0 0 0 0 0 0 0 0 0 0 0 0
2.4976 -1.5750 71.4929 C 0 0 0 0 0 0 0 0 0 0 0 0
2.1497 -0.3851 71.3826 O 0 0 0 0 0 0 0 0 0 0 0 0
3.6830 -1.9893 70.9366 O 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
2 3 1 0
3 4 2 0
3 5 1 0
M END
*- Code:*
from rdkit import Chem
from rdkit.Chem import AllChem, rdMolAlign, rdShapeHelpers
def rms_st(probe, reference):
rms = float(AllChem.GetBestRMS(probe, reference))
st = float(1 - rdShapeHelpers.ShapeTanimotoDist(probe, reference))
return rms, st
refSuppl = Chem.SDMolSupplier('ref.sdf')
probeSuppl = Chem.SDMolSupplier('probe.sdf')
for mol in refSuppl:
refMol = Chem.RemoveHs(mol)
for m in probeSuppl:
probeMol = Chem.RemoveHs(m)
RMS, ST = rms_st(probeMol, refMol)
print(("{0:.3f}".format(RMS)))
print(("{0:.3f}".format(ST)))
Best,
Leon
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss