def loadKinetics(self, path, reactionLibraries=None, seedMechanisms=None, kineticsFamilies=None, kineticsDepositories=None): """ Load the RMG kinetics database from the given `path` on disk, where `path` points to the top-level folder of the RMG kinetics database. """ kineticsLibraries = [] libraryOrder = [] if seedMechanisms is None and reactionLibraries is None: kineticsLibraries = None if seedMechanisms is not None: for library in seedMechanisms: kineticsLibraries.append(library) libraryOrder.append((library, 'Seed')) if reactionLibraries is not None: for library in reactionLibraries: kineticsLibraries.append(library) libraryOrder.append((library, 'Reaction Library')) self.kinetics = KineticsDatabase() self.kinetics.libraryOrder = libraryOrder self.kinetics.load(path, families=kineticsFamilies, libraries=kineticsLibraries, depositories=kineticsDepositories) broadcast(self.kinetics, 'kinetics')
def setUpClass(cls): """A function run ONCE before all unit tests in this class.""" # Set up a dummy database cls.database = RMGDatabase() cls.database.load( path=os.path.join(settings['test_data.directory'], 'testing_database'), thermoLibraries=[], reactionLibraries=[], kineticsFamilies=[], depository=False, solvation=False, testing=True, ) cls.database.loadForbiddenStructures() cls.thermoDatabase = ThermoDatabase() #the real full Thermo Database cls.thermoDatabase.load(path=os.path.join( settings['database.directory'], 'thermo'), libraries=['primaryThermoLibrary']) cls.kineticsDatabase = KineticsDatabase() cls.kineticsDatabase.loadFamilies( path=os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families'), families=[ 'Singlet_Carbene_Intra_Disproportionation', ], ) cls.family = cls.kineticsDatabase.families[ 'Singlet_Carbene_Intra_Disproportionation']
def setUpClass(cls): """A function run ONCE before all unit tests in this class.""" # Set up a dummy database cls.database = RMGDatabase() cls.database.load( path=os.path.join(settings['test_data.directory'], 'testing_database'), thermo_libraries=[], reaction_libraries=[], kinetics_families=[], depository=False, solvation=False, testing=True, ) cls.database.load_forbidden_structures() cls.thermoDatabase = ThermoDatabase() # the real full Thermo Database cls.thermoDatabase.load(path=os.path.join(settings['database.directory'], 'thermo'), libraries=['primaryThermoLibrary']) cls.kineticsDatabase = KineticsDatabase() cls.kineticsDatabase.load_families( path=os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families'), families=[ 'Singlet_Carbene_Intra_Disproportionation', ], ) cls.family = cls.kineticsDatabase.families['Singlet_Carbene_Intra_Disproportionation'] cls.treerxns = cls.family.get_training_set(thermo_database=cls.thermoDatabase, remove_degeneracy=True, estimate_thermo=True, fix_labels=True, get_reverse=True)
def setUpClass(cls): """ A function run ONCE before all unit tests in this class. """ # Set up a dummy database cls.database = KineticsDatabase() cls.database.loadLibraries(os.path.join(settings['test_data.directory'], 'testing_database','kinetics','libraries'), libraries=None) #this loads all of them: ['GRI-Mech3.0', 'ethane-oxidation']) cls.libraries = cls.database.libraries
def setUp(self): """ A function run before each unit test in this class. """ # Set up a dummy database dir_path = os.path.dirname(os.path.realpath(__file__)) self.database = KineticsDatabase() self.database.loadFamilies(os.path.join(dir_path, "family_test_data"), families=['intra_H_migration']) self.family = self.database.families['intra_H_migration']
def setUp(self): """ A function run before each unit test in this class. """ # Set up a dummy database self.database = KineticsDatabase() self.database.loadFamilies(os.path.join( settings['test_data.directory'], 'testing_database/kinetics/families'), families=['intra_H_migration']) self.family = self.database.families['intra_H_migration']
def setUpClass(cls): """ A function run ONCE before all unit tests in this class. """ # Set up a dummy database cls.database = KineticsDatabase() cls.database.loadFamilies( os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families'), families=['intra_H_migration', 'R_Addition_MultipleBond']) cls.family = cls.database.families['intra_H_migration']
def test_load_families_correct(self): """Test valid methods for loading kinetics families.""" path = os.path.join(settings['test_data.directory'], 'testing_database', 'kinetics', 'families') database = KineticsDatabase() database.loadRecommendedFamiliesList( os.path.join(path, 'recommended.py')) try: database.loadFamilies(path, families=[]) except DatabaseError: self.fail("Unable to load families using list []") try: database.loadFamilies(path, families='none') except DatabaseError: self.fail("Unable to load families using keyword 'none'") try: database.loadFamilies(path, families='default') except DatabaseError: self.fail("Unable to load families using keyword 'default'") try: database.loadFamilies(path, families=['default', 'pah']) except DatabaseError: self.fail("Unable to load families using list ['default', 'pah']") try: database.loadFamilies(path, families=['R_Addition_MultipleBond']) except DatabaseError: self.fail( "Unable to load families using list ['R_Addition_MultipleBond']" ) try: database.loadFamilies( path, families=['!H_Abstraction', '!Disproportionation']) except DatabaseError: self.fail( "Unable to load families using list ['!H_Abstraction', '!Disproportionation']" ) try: database.loadFamilies(path, families='!pah') except DatabaseError: self.fail("Unable to load families using keyword '!pah'") try: database.loadFamilies(path, families=['H_Abstraction', 'pah']) except DatabaseError: self.fail( "Unable to load families using list ['H_Abstraction', 'pah']")
def test_load_families_incorrect(self): """Test invalid methods for loading kinetics families""" path = os.path.join(settings['test_data.directory'], 'testing_database', 'kinetics', 'families') database = KineticsDatabase() database.loadRecommendedFamiliesList(os.path.join(path, 'recommended.py')) with self.assertRaises(DatabaseError): database.loadFamilies(path, families='random') with self.assertRaises(DatabaseError): database.loadFamilies(path, families=['!H_Abstraction','Disproportionation']) with self.assertRaises(DatabaseError): database.loadFamilies(path, families=['fake_family'])
def read_kinetic_lib_from_path(lib_path, kinetic_db, overwrite=False, create=False): """ Read RMG kinetic library given its file path. The species dictionary should be included under the same directory. Args: lib_path (str): Path to thermo library file kinetic_db (RMG KineticsDatabase): RMG database object """ if not os.path.exists(lib_path) and create: create_kinetic_lib(os.path.dirname(lib_path)) lib = KineticsLibrary() kinetic_db.libraries[lib_path] = lib kinetic_db.library_order.append(lib_path) logging.info( 'Created kinetics library {1} at {0} ...'.format( os.path.split(lib_path)[0], os.path.split(lib_path)[1]), ) elif lib_path not in kinetic_db.library_order or overwrite: lib = KineticsLibrary() try: lib.load(lib_path, KineticsDatabase().local_context, KineticsDatabase().global_context) except: logging.error('The library file %s is not vaild.' % (lib_path)) else: lib.label = lib_path kinetic_db.libraries[lib.label] = lib kinetic_db.library_order.append(lib.label) logging.info( 'Loading kinetics library {1} from {0} ...'.format( os.path.split(lib_path)[0], os.path.split(lib_path)[1]), ) else: logging.warning('The library %s has already been loaded' % (lib_path))
def testLoadFamilies(self): """ Test that the loadFamilies function raises the correct exceptions """ path = os.path.join(settings['database.directory'],'kinetics','families') database = KineticsDatabase() with self.assertRaises(DatabaseError): database.loadFamilies(path, families='random') with self.assertRaises(DatabaseError): database.loadFamilies(path, families=['!H_Abstraction','Disproportionation']) with self.assertRaises(DatabaseError): database.loadFamilies(path, families=['fake_family']) with self.assertRaises(DatabaseError): database.loadFamilies(path, families=[])
def loadOld(self, path): """ Load the old RMG database from the given `path` on disk, where `path` points to the top-level folder of the old RMG database. """ self.thermo = ThermoDatabase() self.thermo.loadOld(path) self.transport = TransportDatabase() #self.transport.loadOld(path) # Currently no loadOld import function available for transport groups self.forbiddenStructures = ForbiddenStructures() self.forbiddenStructures.loadOld(os.path.join(path, 'ForbiddenStructures.txt')) self.kinetics = KineticsDatabase() self.kinetics.loadOld(path) self.statmech = StatmechDatabase() self.statmech.loadOld(path) self.solvation = SolvationDatabase()
def setUpClass(cls): """ A function run ONCE before all unit tests in this class. """ # Set up a dummy database cls.database = KineticsDatabase() cls.database.loadFamilies( path=os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families'), families=[ 'intra_H_migration', 'R_Addition_MultipleBond', 'H_Abstraction', 'Intra_ene_reaction', '6_membered_central_C-C_shift', '1,2_shiftC', 'Intra_R_Add_Exo_scission', 'intra_substitutionS_isomerization', 'R_Addition_COm' ], ) cls.family = cls.database.families['intra_H_migration']