Exemplo n.º 1
0
    def testAtomPairTypes(self):
        params = rdMD.AtomPairsParameters
        mol = Chem.MolFromSmiles("C=C")
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(0))==\
                        rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1)))
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(0))==\
                        1 | (1 | 1<<params.numPiBits)<<params.numBranchBits)

        mol = Chem.MolFromSmiles("C#CO")
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(0))!=\
                        rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1)))
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(0))==\
                        1 | (2 | 1<<params.numPiBits)<<params.numBranchBits)
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1))==\
                        2 | (2 | 1<<params.numPiBits)<<params.numBranchBits)
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(2))==\
                        1 | (0 | 3<<params.numPiBits)<<params.numBranchBits)
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1),1)==\
                        1 | (2 | 1<<params.numPiBits)<<params.numBranchBits)
        self.assertTrue(rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1),2)==\
                        0 | (2 | 1<<params.numPiBits)<<params.numBranchBits)
Exemplo n.º 2
0
    def testAtomPairTypesChirality(self):
        mols = [
            Chem.MolFromSmiles(x)
            for x in ("CC(F)Cl", "C[C@@H](F)Cl", "C[C@H](F)Cl")
        ]
        self.assertEqual(rdMD.GetAtomPairAtomCode(mols[0].GetAtomWithIdx(1)),
                         rdMD.GetAtomPairAtomCode(mols[1].GetAtomWithIdx(1)))
        self.assertEqual(rdMD.GetAtomPairAtomCode(mols[0].GetAtomWithIdx(1)),
                         rdMD.GetAtomPairAtomCode(mols[2].GetAtomWithIdx(1)))
        self.assertEqual(
            rdMD.GetAtomPairAtomCode(mols[0].GetAtomWithIdx(1),
                                     includeChirality=True),
            rdMD.GetAtomPairAtomCode(mols[0].GetAtomWithIdx(1)))
        self.assertNotEqual(
            rdMD.GetAtomPairAtomCode(mols[0].GetAtomWithIdx(1),
                                     includeChirality=True),
            rdMD.GetAtomPairAtomCode(mols[1].GetAtomWithIdx(1),
                                     includeChirality=True))
        self.assertNotEqual(
            rdMD.GetAtomPairAtomCode(mols[0].GetAtomWithIdx(1),
                                     includeChirality=True),
            rdMD.GetAtomPairAtomCode(mols[2].GetAtomWithIdx(1),
                                     includeChirality=True))
        self.assertNotEqual(
            rdMD.GetAtomPairAtomCode(mols[1].GetAtomWithIdx(1),
                                     includeChirality=True),
            rdMD.GetAtomPairAtomCode(mols[2].GetAtomWithIdx(1),
                                     includeChirality=True))

        fps = [rdMD.GetAtomPairFingerprint(x) for x in mols]
        chiralFps = [
            rdMD.GetAtomPairFingerprint(x, includeChirality=True) for x in mols
        ]
        for mol, fp, cfp in zip(mols, fps, chiralFps):
            ac0 = rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(0))
            ac1 = rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1))
            self.assertTrue(
                rdMD.GetAtomPairCode(ac0, ac1, 1) in fp.GetNonzeroElements())
            ac0 = rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(0),
                                           includeChirality=True)
            ac1 = rdMD.GetAtomPairAtomCode(mol.GetAtomWithIdx(1),
                                           includeChirality=True)
            self.assertFalse(
                rdMD.GetAtomPairCode(ac0, ac1, 1, includeChirality=True) in
                fp.GetNonzeroElements())
            self.assertTrue(
                rdMD.GetAtomPairCode(ac0, ac1, 1, includeChirality=True) in
                cfp.GetNonzeroElements())