Example #1
0
    def testUSR(self):
        mol = Chem.MolFromSmiles("CC")
        AllChem.Compute2DCoords(mol)
        self.failUnlessRaises(ValueError, lambda: rdMD.GetUSR(mol))
        mol = Chem.MolFromSmiles("C1CCCCC1")
        mol = Chem.AddHs(mol)
        self.failUnlessRaises(ValueError, lambda: rdMD.GetUSR(mol))
        AllChem.Compute2DCoords(mol)
        usr = rdMD.GetUSR(mol)
        self.failUnlessEqual(len(usr), 12)

        self.failUnlessRaises(ValueError, lambda: rdMD.GetUSRDistributions([]))

        conf = mol.GetConformer()
        coords = [conf.GetAtomPosition(i) for i in range(mol.GetNumAtoms())]
        dist = rdMD.GetUSRDistributions(coords)
        self.failUnlessEqual(len(dist), 4)
        self.failUnlessEqual(len(dist[0]), mol.GetNumAtoms())
        self.failUnlessRaises(ValueError,
                              lambda: rdMD.GetUSRFromDistributions([]))
        usr2 = rdMD.GetUSRFromDistributions(dist)
        self.failUnlessEqual(usr, usr2)

        self.failUnlessRaises(
            ValueError, lambda: rdMD.GetUSRDistributionsFromPoints(coords, []))
        p = []
        dist = rdMD.GetUSRDistributions(coords, p)
        self.failUnlessRaises(
            ValueError, lambda: rdMD.GetUSRDistributionsFromPoints([], p))
        dist2 = rdMD.GetUSRDistributionsFromPoints(coords, p)
        usr2 = rdMD.GetUSRFromDistributions(dist2)
        self.failUnlessEqual(usr, usr2)

        mol2 = Chem.MolFromSmiles("C1CCCCC1")
        mol2 = Chem.AddHs(mol2)
        AllChem.Compute2DCoords(mol2)
        usr2 = rdMD.GetUSR(mol2)
        self.failUnlessRaises(ValueError,
                              lambda: rdMD.GetUSRScore(usr, usr2[:2]))
        self.failUnlessEqual(rdMD.GetUSRScore(usr, usr2), 1.0)

        m1 = [
            4.44, 2.98, 1.04, 4.55, 4.70, 0.23, 8.30, 16.69, -22.97, 7.37,
            15.64, 0.51
        ]
        m2 = [
            4.39, 3.11, 1.36, 4.50, 4.44, 0.09, 8.34, 16.78, -23.20, 7.15,
            16.52, 0.13
        ]
        self.failUnlessAlmostEqual(rdMD.GetUSRScore(m1, m2), 0.812, 2)
Example #2
0
 def testUSRCAT(self):
   mol = Chem.MolFromSmiles("CC")
   AllChem.Compute2DCoords(mol)
   self.assertRaises(ValueError, lambda: rdMD.GetUSRCAT(mol))
   mol = Chem.MolFromSmiles("C1CCCCC1")
   mol = Chem.AddHs(mol)
   self.assertRaises(ValueError, lambda: rdMD.GetUSRCAT(mol))
   AllChem.Compute2DCoords(mol)
   usr = rdMD.GetUSRCAT(mol)
   self.assertEqual(len(usr), 60)
   self.assertRaises(ValueError, lambda: rdMD.GetUSRCAT(mol, atomSelections=[]))
   atoms = [[1, 2, 3, 4, 5, 6], []]
   usr2 = rdMD.GetUSRCAT(mol, atomSelections=atoms)
   self.assertEqual(len(usr2), 36)
   atoms = [[1, 2, 3, 4, 5, 6], [], [], []]
   usr2 = rdMD.GetUSRCAT(mol, atomSelections=atoms)
   self.assertEqual(len(usr2), 60)
   self.assertEqual(rdMD.GetUSRScore(usr, usr2, weights=[1.0, 1.0, 1.0, 1.0, 1.0]), 1.0)