G3CANTHERM = 2.8 # for example QUANTUM = 3 GUESS = 5 ################################################################ import shutil logger = logging.getLogger() old_level = logger.getEffectiveLevel() logger.setLevel(15) # <<< level while reading database data_source = os.path.join('input','RMG_database') data_destination = os.path.join('output','RMG_database') db = loadKineticsDatabase(data_source) logger.setLevel(old_level) for family_name,family in db.families.iteritems(): logging.info("Now processing family: %s"%family_name) _rates = [] library_file_name = os.path.join(data_source,'kinetics_groups',family_name,'library.py') library_file = open(library_file_name) global reaction_order local_context = { '__builtins__':None, '_rates': _rates, 'rate': rate, 'Arrhenius':Arrhenius,
def testKineticsDatabase(self): """ Check the database load functions. """ # Create logger logger = logging.getLogger() logger.setLevel(10) # Create console handler and set level to debug; send everything to stdout # rather than stderr ch = logging.StreamHandler(sys.stdout) ch.setLevel(10) # Create formatter and add to console handler formatter = logging.Formatter("%(levelname)s - %(message)s") ch.setFormatter(formatter) # remove old handlers! while logger.handlers: logger.removeHandler(logger.handlers[0]) # Add ch to logger logger.addHandler(ch) kineticsDatabase = loadKineticsDatabase("output/RMG_Database") for label, family in kineticsDatabase.families.iteritems(): # All nodes in library should be in tree and dictionary # All nodes in tree should be in dictionary # for nodes in family.library: # for node in nodes.split(';'): # self.assertTrue(node in family.tree.parent) # self.assertTrue(node in family.tree.children) # self.assertTrue(node in family.dictionary) for node in family.tree.parent: self.assertTrue(node in family.tree.children) self.assertTrue(node in family.dictionary) for node in family.tree.children: self.assertTrue(node in family.tree.parent) self.assertTrue(node in family.dictionary) # All parents in tree should be in tree for node in family.tree.parent: parentNode = family.tree.parent[node] if parentNode is not None: self.assertTrue(parentNode in family.tree.parent) self.assertTrue(parentNode in family.tree.children) # All children in tree should be in tree for node in family.tree.children: for childNode in family.tree.children[node]: if childNode is not None: self.assertTrue(childNode in family.tree.parent) self.assertTrue(childNode in family.tree.children) # All values in dictionary should be chemical structures for node in family.dictionary: self.assertTrue( isinstance(family.dictionary[node], MoleculePattern) or isinstance(family.dictionary[node], LogicNode) ) # All values in library should be ArrheniusEPModel objects or lists of length 2 for node in family.library: self.assertTrue( isinstance(family.library[node], KineticsEntry), '"%s" is of unexpected type "%s".' % (node, family.library[node].__class__), ) self.assertTrue(family.library[node].model is not None or family.library[node].node != "") C2H4 = Molecule().fromAdjacencyList( """ 1 *1 C 0 {2,D} {3,S} {4,S} 2 *2 C 0 {1,D} {5,S} {6,S} 3 H 0 {1,S} 4 H 0 {1,S} 5 H 0 {2,S} 6 H 0 {2,S} """ ) H = Molecule().fromAdjacencyList( """ 1 *3 H 1 """ ) C2H5 = Molecule().fromAdjacencyList( """ 1 *1 C 0 {2,S} {3,S} {4,S} {7,S} 2 *2 C 1 {1,S} {5,S} {6,S} 3 H 0 {1,S} 4 H 0 {1,S} 5 H 0 {2,S} 6 H 0 {2,S} 7 *3 H 0 {1,S} """ ) rxn = Reaction(reactants=[C2H4, H], products=[C2H5]) print "GENERATING KINETICS DATA:" print kineticsDatabase.generateKineticsData(rxn, family="R_Addition_MultipleBond")