def __init__(self, config): """ Class to create initial conditions due to user input. Initial conditions are saved in a file for further usage. """ logger = get_logger('setup_spectrum.log', 'setup_spectrum') logger.header('SETUP SPECTRUM', config) SetupBase.__init__(self, logger) # logger.info(f"Opening sampling database {config['sampling_db']}") sampling = Sampling.from_db(config['sampling_db'], logger=logger) if not exists_and_isfile(config['spp']): presets=""" use_db = no """ logger.info(f"Setting up SPP inputfile: {config['spp']}") SurfacePointProvider.generate_input(config['spp'], config=None, presets=presets) else: logger.info(f"Using SPP inputfile as it is") if not exists_and_isfile(config['sp_calc']): presets=f""" properties = {config['properties']} nstates = {config['nstates']} init_db = init.db """ logger.info(f"Setting up inputfile for the single point calculations") SinglePointCalculation.generate_input(config['sp_calc'], config=None, presets=presets) else: logger.info(f"Using inputfile for the single point calculations as it is") logger.info("Starting to prepare the folders...") self.setup_folders(range(config['n_cond']), config, sampling)
def __init__(self, config): """ Class to create initial conditions due to user input. Initial conditions are saved in a file for further usage. """ logger = get_logger('setup_propagation.log', 'setup_propagation') SetupBase.__init__(self, logger) # Open DB of initial conditions once, so that it is available sampling = Sampling.from_db(config['sampling_db']) #Make sure that inputfile for the SPP exists and is complete if exists_and_isfile(config['spp']): lconfig = config['spp'] else: lconfig = None SurfacePointProvider.generate_input(config['spp'], config=lconfig) #Make sure that inputfile for RunTrajectory exists and is complete if exists_and_isfile(config['prop']): lconfig = config['prop'] else: lconfig = None RunTrajectory.generate_input(config['prop'], config=lconfig) # if config['n_traj'] == -1: ntraj = len(sampling._db) else: ntraj = config['n_traj'] if sampling.nconditions < ntraj: logger.error(f"Too few initial conditions in {config['sampling_db']}") self.setup_folders(range(ntraj), config, sampling)
def __init__(self, config, logger=None): """ Args: config, ColtObj: The config contains the information from the colt questions of the class logger, Logger: Logger for the class. If not provided a new logger is created. """ if logger is None: self.logger = get_logger('sp_calc.log', 'sp_calc') self.logger.header('Single Point Calculation', config) else: self.logger = logger # self.logger.info(f"Taking information from {config['init_db']}") sampling = Sampling.from_db(config['init_db'], logger=self.logger) if not (exists_and_isfile(config['spp'])): spp_config = SurfacePointProvider.generate_input(config['spp']) else: spp_config = SurfacePointProvider.generate_input( config['spp'], config=config['spp']) self.logger.debug(f"Setting up SPP with {config['spp']}") if sampling.molecule is not None: spp = SurfacePointProvider.from_config( spp_config, config['properties'], config['nstates'], sampling.natoms, nghost_states=config['nghost_states'], atomids=sampling.atomids) else: #model calculation spp = SurfacePointProvider, from_config(spp_config, config['properties'], config['nstates'], sampling.nmodes) crd = sampling.get_condition(0).crd #check that DB can take the results self.logger.debug( f"Checking whether {config['init_db']} can take the results") self._check_res_db(config, sampling) with self.logger.info_block("SPP calculation"): res = spp.request(crd, config['properties'], states=[st for st in range(config['nstates'])]) self.logger.info(f"Writing results to: {config['init_db']}") for prop, value in res.iter_data(): sampling.set(prop, value)