def testStruChkInMemoryLog(self): r = pyAvalonTools.InitializeCheckMol(STRUCHK_INIT_IN_MEMORY_LOGGING) try: (err, fixed_mol) = pyAvalonTools.CheckMoleculeString(atom_clash, False) log = pyAvalonTools.GetCheckMolLog() self.assertTrue("of average bond length from bond" in log) # make sure that the log is cleared for the next molecule (err, fixed_mol) = pyAvalonTools.CheckMoleculeString("c1ccccc1", True) log = pyAvalonTools.GetCheckMolLog() self.assertFalse(log) finally: pyAvalonTools.CloseCheckMolFiles()
def initStruchk(configDir=None, logFile=None): global __initCalled if configDir is None: configDir = os.path.join(RDConfig.RDDataDir, 'struchk') if configDir[-1] != os.path.sep: configDir += os.path.sep if logFile is None: fd = tempfile.NamedTemporaryFile(suffix='.log', delete=False) fd.close() logFile = fd.name struchk_init = '''-tm -ta {0}checkfgs.trn -tm -or -ca {0}checkfgs.chk -cc -cl 3 -cs -cn 999 -l {1}\n'''.format(configDir, logFile) initRes = pyAvalonTools.InitializeCheckMol(struchk_init) if initRes: raise ValueError('bad result from InitializeCheckMol: ' + str(initRes)) __initCalled = True
def testStruChk(self): smi_good = 'c1ccccc1C1(CC-C(C)C1)C' smi_bad = 'c1c(R)cccc1C1(CC-C(C)C1)C' r = pyAvalonTools.InitializeCheckMol(STRUCHK_INIT) self.assertEqual(r, 0) (err, fixed_mol) = pyAvalonTools.CheckMolecule(smi_good, True) self.assertEqual(err, 0) mol = Chem.MolFromSmiles(smi_good) (err, fixed_mol) = pyAvalonTools.CheckMolecule(mol) self.assertEqual(err, 0) (err, fixed_mol) = pyAvalonTools.CheckMoleculeString(smi_good, True) self.assertEqual(err, 0) self.assertNotEqual(fixed_mol, "") self.assertTrue(fixed_mol.find('M END') > 0) (err, fixed_mol) = pyAvalonTools.CheckMolecule(smi_bad, False) self.assertNotEqual(err, 0) self.assertFalse(fixed_mol) (err, fixed_mol) = pyAvalonTools.CheckMoleculeString(smi_bad, False) self.assertNotEqual(err, 0) self.assertFalse(fixed_mol) pyAvalonTools.CloseCheckMolFiles()