def check_2d_coords(mol, force=False): """Check if a mol has 2D coordinates and if not, calculate them.""" try: mol.GetConformer() except ValueError: force = True # no 2D coords... calculate them if force: if USE_AVALON: pyAv.Generate2DCoords(mol) else: mol.Compute2DCoords()
def testGitHub1062(self): s0 = 'C/C=C\C' m1 = Chem.MolFromSmiles(s0) s1 = Chem.MolToSmiles(m1) pyAvalonTools.Generate2DCoords(m1) mb = Chem.MolToMolBlock(m1) m2 = Chem.MolFromMolBlock(mb) s2 = Chem.MolToSmiles(m2) self.assertEqual(s1, s2) # repeat the test with an input smiles that is not canonical # to verify that the implementation is not sensitive to the # ordering of atoms s0 = 'C/C=C(F)\C' m1 = Chem.MolFromSmiles(s0) s1 = Chem.MolToSmiles(m1) self.assertNotEqual(s1, s0) pyAvalonTools.Generate2DCoords(m1) mb = Chem.MolToMolBlock(m1) m2 = Chem.MolFromMolBlock(mb) s2 = Chem.MolToSmiles(m2) self.assertEqual(s1, s2)
def test6(self): mb = pyAvalonTools.Generate2DCoords('c1ccccc1C1(CC1)N', True) m = Chem.MolFromMolBlock(mb) self.assertEqual(m.GetNumConformers(), 1) self.assertTrue(m.GetConformer(0).Is3D() == False)
def test5(self): m = Chem.MolFromSmiles('c1ccccc1C1(CC1)N') pyAvalonTools.Generate2DCoords(m) self.assertEqual(m.GetNumConformers(), 1) self.assertTrue(m.GetConformer(0).Is3D() == False)