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 Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss