def loadDatabase(component='', section=''): """ Load the requested `component` of the RMG database if modified since last loaded. """ global database if not database: database = RMGDatabase() database.thermo = ThermoDatabase() database.kinetics = KineticsDatabase() database.loadForbiddenStructures(os.path.join(settings.DATABASE_PATH, 'forbiddenStructures.py')) if component in ['thermo', '']: if section in ['depository', '']: dirpath = os.path.join(settings.DATABASE_PATH, 'thermo', 'depository') if isDirModified(dirpath): database.thermo.loadDepository(dirpath) resetDirTimestamps(dirpath) if section in ['libraries', '']: dirpath = os.path.join(settings.DATABASE_PATH, 'thermo', 'libraries') if isDirModified(dirpath): database.thermo.loadLibraries(dirpath) # put them in our preferred order, so that when we look up thermo in order to estimate kinetics, # we use our favourite values first. preferred_order = ['primaryThermoLibrary','DFT_QCI_thermo','GRI-Mech3.0','CBS_QB3_1dHR','KlippensteinH2O2'] new_order = [i for i in preferred_order if i in database.thermo.libraryOrder] for i in database.thermo.libraryOrder: if i not in new_order: new_order.append(i) database.thermo.libraryOrder = new_order resetDirTimestamps(dirpath) if section in ['groups', '']: dirpath = os.path.join(settings.DATABASE_PATH, 'thermo', 'groups') if isDirModified(dirpath): database.thermo.loadGroups(dirpath) resetDirTimestamps(dirpath) if component in ['kinetics', '']: if section in ['libraries', '']: dirpath = os.path.join(settings.DATABASE_PATH, 'kinetics', 'libraries') if isDirModified(dirpath): database.kinetics.loadLibraries(dirpath) resetDirTimestamps(dirpath) if section in ['families', '']: dirpath = os.path.join(settings.DATABASE_PATH, 'kinetics', 'families') if isDirModified(dirpath): database.kinetics.loadFamilies(dirpath) resetDirTimestamps(dirpath) return database
def loadDatabase(component='', section=''): """ Load the requested `component` of the RMG database if modified since last loaded. """ global database if not database: database = RMGDatabase() database.solvation = SolvationDatabase() database.thermo = ThermoDatabase() database.kinetics = KineticsDatabase() database.transport = TransportDatabase() database.statmech = StatmechDatabase() database.loadForbiddenStructures( os.path.join(rmgweb.settings.DATABASE_PATH, 'forbiddenStructures.py')) if component == 'initialize': return database if component in ['thermo', '']: if section in ['depository', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'thermo', 'depository') if isDirModified(dirpath): database.thermo.loadDepository(dirpath) resetDirTimestamps(dirpath) if section in ['libraries', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'thermo', 'libraries') if isDirModified(dirpath): database.thermo.loadLibraries(dirpath) # put them in our preferred order, so that when we look up thermo in order to estimate kinetics, # we use our favorite values first. preferred_order = [ 'primaryThermoLibrary', 'DFT_QCI_thermo', 'GRI-Mech3.0', 'CBS_QB3_1dHR', 'KlippensteinH2O2' ] new_order = [ i for i in preferred_order if i in database.thermo.libraryOrder ] for i in database.thermo.libraryOrder: if i not in new_order: new_order.append(i) database.thermo.libraryOrder = new_order resetDirTimestamps(dirpath) if section in ['groups', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'thermo', 'groups') if isDirModified(dirpath): database.thermo.loadGroups(dirpath) resetDirTimestamps(dirpath) if component in ['transport', '']: if section in ['libraries', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'transport', 'libraries') if isDirModified(dirpath): database.transport.loadLibraries(dirpath) resetDirTimestamps(dirpath) if section in ['groups', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'transport', 'groups') if isDirModified(dirpath): database.transport.loadGroups(dirpath) resetDirTimestamps(dirpath) if component in ['solvation', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'solvation') if isDirModified(dirpath): database.solvation.load(dirpath) resetDirTimestamps(dirpath) if component in ['kinetics', '']: if section in ['libraries', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'kinetics', 'libraries') if isDirModified(dirpath): database.kinetics.loadLibraries(dirpath) resetDirTimestamps(dirpath) if section in ['families', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'kinetics', 'families') if isDirModified(dirpath): database.kinetics.loadFamilies(dirpath, families='all', depositories='all') resetDirTimestamps(dirpath) # Make sure to load the entire thermo database prior to adding training values to the rules loadDatabase('thermo', '') for family in database.kinetics.families.values(): oldentries = len(family.rules.entries) family.addKineticsRulesFromTrainingSet( thermoDatabase=database.thermo) newentries = len(family.rules.entries) if newentries != oldentries: print '{0} new entries added to {1} family after adding rules from training set.'.format( newentries - oldentries, family.label) # Filling in rate rules in kinetics families by averaging... family.fillKineticsRulesByAveragingUp() if component in ['statmech', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'statmech') if isDirModified(dirpath): database.statmech.load(dirpath) resetDirTimestamps(dirpath) return database
def loadDatabase(component='', section=''): """ Load the requested `component` of the RMG database if modified since last loaded. """ global database if not database: database = RMGDatabase() database.solvation = SolvationDatabase() database.thermo = ThermoDatabase() database.kinetics = KineticsDatabase() database.transport = TransportDatabase() database.statmech = StatmechDatabase() database.loadForbiddenStructures(os.path.join(rmgweb.settings.DATABASE_PATH, 'forbiddenStructures.py')) if component == 'initialize': return database if component in ['thermo', '']: if section in ['depository', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'thermo', 'depository') if isDirModified(dirpath): database.thermo.loadDepository(dirpath) resetDirTimestamps(dirpath) if section in ['libraries', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'thermo', 'libraries') if isDirModified(dirpath): database.thermo.loadLibraries(dirpath) # put them in our preferred order, so that when we look up thermo in order to estimate kinetics, # we use our favorite values first. preferred_order = ['primaryThermoLibrary','DFT_QCI_thermo','GRI-Mech3.0','CBS_QB3_1dHR','KlippensteinH2O2'] new_order = [i for i in preferred_order if i in database.thermo.libraryOrder] for i in database.thermo.libraryOrder: if i not in new_order: new_order.append(i) database.thermo.libraryOrder = new_order resetDirTimestamps(dirpath) if section in ['groups', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'thermo', 'groups') if isDirModified(dirpath): database.thermo.loadGroups(dirpath) resetDirTimestamps(dirpath) if component in ['transport', '']: if section in ['libraries', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'transport', 'libraries') if isDirModified(dirpath): database.transport.loadLibraries(dirpath) resetDirTimestamps(dirpath) if section in ['groups', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'transport', 'groups') if isDirModified(dirpath): database.transport.loadGroups(dirpath) resetDirTimestamps(dirpath) if component in ['solvation', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'solvation') if isDirModified(dirpath): database.solvation.load(dirpath) resetDirTimestamps(dirpath) if component in ['kinetics', '']: if section in ['libraries', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'kinetics', 'libraries') if isDirModified(dirpath): database.kinetics.loadLibraries(dirpath) resetDirTimestamps(dirpath) if section in ['families', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'kinetics', 'families') if isDirModified(dirpath): database.kinetics.loadFamilies(dirpath, families = 'all', depositories = 'all') resetDirTimestamps(dirpath) # Make sure to load the entire thermo database prior to adding training values to the rules loadDatabase('thermo','') for family in database.kinetics.families.values(): oldentries = len(family.rules.entries) family.addKineticsRulesFromTrainingSet(thermoDatabase=database.thermo) newentries = len(family.rules.entries) if newentries != oldentries: print '{0} new entries added to {1} family after adding rules from training set.'.format(newentries-oldentries, family.label) # Filling in rate rules in kinetics families by averaging... family.fillKineticsRulesByAveragingUp() if component in ['statmech', '']: dirpath = os.path.join(rmgweb.settings.DATABASE_PATH, 'statmech') if isDirModified(dirpath): database.statmech.load(dirpath) resetDirTimestamps(dirpath) return database