def driver(request): from pyRSD.rsd import GalaxySpectrum # add the PYRSD_DATA env var os.environ['PYRSD_DATA'] = data_dir # inititalize the model config = {} config['z'] = 0.55 config['cosmo_filename'] = 'runPB.ini' config['kmin'] = 1e-3 config['kmax'] = 0.6 config['interpolate'] = True m = GalaxySpectrum(**config) # load the model with cache_manager(m, "runPB_galaxy.npy") as model: pass # initialize the driver path = os.path.join(data_dir, 'examples', 'params.dat') driver = FittingDriver(path, init_model=False) driver.model = model # set fiducial driver.set_fiducial() return driver
def driver(request): from pyRSD.rsd import QuasarSpectrum # add the PYRSD_DATA env var os.environ['PYRSD_DATA'] = data_dir # inititalize the model config = {} config['z'] = 0.55 config['cosmo_filename'] = 'runPB.ini' config['kmin'] = 1e-3 config['kmax'] = 0.6 m = QuasarSpectrum(**config) # initialize the driver path = os.path.join(data_dir, 'examples', 'params_qso.dat') driver = FittingDriver(path, init_model=False) driver.model = m # set fiducial driver.set_fiducial() return driver
def initialize_algorithm(self): """ Initialize the driver that runs the desired algorithm. """ # ``analysis`` mode if self.mode == 'analyze': from pyRSD.rsdfit import analysis kws = {k: getattr(self, k) for k in self._config} driver = analysis.AnalysisDriver(**kws) # ``mcmc`` or ``nlopt`` mode elif self.mode in ['mcmc', 'nlopt']: params_file = os.path.join(self.folder, params_filename) # initialize from an existing directory, with existing parameter file if os.path.isdir( self.folder ) and self.params == params_file and os.path.exists(params_file): driver = FittingDriver.from_directory(self.folder, model_file=self.model) # initalize a new object from scratch else: init_model = self.model is None driver = FittingDriver(self.params, init_model=init_model) # initialize and save a model, if we need to if not init_model: driver.model = self.model else: if self.comm.rank == 0 and not self.no_save_model: model_dir = driver.params.get('model_dir', self.folder) driver.theory.model.to_npy( os.path.join(model_dir, model_filename)) # only one rank needs to write out if self.comm.rank == 0: driver.to_file(os.path.join(self.folder, params_filename)) # have everyone wait self.comm.barrier() # store the command line arguments driver.params.add('solver_type', value=self.mode) # either nlopt or mcmc driver.params.add('iterations', value=self.iterations) if self.mode == 'mcmc': driver.params.add('walkers', value=self.walkers) # set max iterations for LBFGS if self.mode == 'nlopt': options = driver.params['lbfgs_options'].value options['max_iter'] = self.iterations # check if we need to find previous result init_from = driver.params.get('init_from', None) if init_from == 'result': start_from = driver.params.get('start_from', None) if start_from is None: start_from = find_init_result(self.folder) elif os.path.isdir(start_from): start_from = find_init_result(start_from) if not os.path.exists(start_from): raise rsd_io.ConfigurationError( "`start_from` parameter `%s` is not a valid path" % start_from) driver.params.add('start_from', value=start_from) # ``restart`` mode elif self.mode == 'restart': # load the driver from param file, optionally reading model from file driver = FittingDriver.from_directory(self.folder, model_file=self.model) # set driver values from command line if self.burnin is not None: driver.params.add('burnin', value=self.burnin) self.algorithm = driver