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)
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())