Пример #1
0
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()
Пример #2
0
  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)
Пример #3
0
 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)
Пример #4
0
 def test5(self):
     m = Chem.MolFromSmiles('c1ccccc1C1(CC1)N')
     pyAvalonTools.Generate2DCoords(m)
     self.assertEqual(m.GetNumConformers(), 1)
     self.assertTrue(m.GetConformer(0).Is3D() == False)