def __init__( self, pst, parcov=None, obscov=None, num_workers=0, use_approx_prior=True, submit_file=None, verbose=False, port=4004, worker_dir="template", ): self.logger = Logger(verbose) if verbose is not False: self.logger.echo = True self.num_workers = int(num_workers) if submit_file is not None: if not os.path.exists(submit_file): self.logger.lraise( "submit_file {0} not found".format(submit_file)) elif num_workers > 0: if not os.path.exists(worker_dir): self.logger.lraise( "template dir {0} not found".format(worker_dir)) self.worker_dir = worker_dir self.submit_file = submit_file self.port = int(port) self.paren_prefix = ".parensemble.{0:04d}.csv" self.obsen_prefix = ".obsensemble.{0:04d}.csv" if isinstance(pst, str): pst = Pst(pst) assert isinstance(pst, Pst) self.pst = pst self.sweep_in_csv = pst.pestpp_options.get("sweep_parameter_csv_file", "sweep_in.csv") self.sweep_out_csv = pst.pestpp_options.get("sweep_output_csv_file", "sweep_out.csv") if parcov is not None: assert isinstance(parcov, Cov) else: parcov = Cov.from_parameter_data(self.pst) if obscov is not None: assert isinstance(obscov, Cov) else: obscov = Cov.from_observation_data(pst) self.parcov = parcov self.obscov = obscov self._initialized = False self.iter_num = 0 self.total_runs = 0 self.raw_sweep_out = None
def __init__(self, pst, parcov=None, obscov=None, num_slaves=0, use_approx=True, restart_iter=0, submit_file=None): self.num_slaves = int(num_slaves) self.submit_file = submit_file self.use_approx = bool(use_approx) self.paren_prefix = ".parensemble.{0:04d}.csv" self.obsen_prefix = ".obsensemble.{0:04d}.csv" if isinstance(pst, str): pst = Pst(pst) assert isinstance(pst, Pst) self.pst = pst self.sweep_in_csv = pst.pestpp_options.get("sweep_parameter_csv_file", "sweep_in.csv") self.sweep_out_csv = pst.pestpp_options.get("sweep_output_csv_file", "sweep_out.csv") if parcov is not None: assert isinstance(parcov, Cov) else: parcov = Cov.from_parameter_data(self.pst) if obscov is not None: assert isinstance(obscov, Cov) else: obscov = Cov.from_observation_data(pst) self.parcov = parcov self.obscov = obscov self.restart = False if restart_iter > 0: self.restart_iter = restart_iter paren = self.pst.filename + self.paren_prefix.format(restart_iter) assert os.path.exists(paren),\ "could not find restart par ensemble {0}".format(paren) obsen0 = self.pst.filename + self.obsen_prefix.format(0) assert os.path.exists(obsen0),\ "could not find restart obs ensemble 0 {0}".format(obsen0) obsen = self.pst.filename + self.obsen_prefix.format(restart_iter) assert os.path.exists(obsen),\ "could not find restart obs ensemble {0}".format(obsen) self.restart = True self.__initialized = False self.num_reals = 0 self.half_parcov_diag = None self.half_obscov_diag = None self.delta_par_prior = None self.iter_num = 0
def test(): #non-pest from pyemu.mat import mat_handler as mhand from pyemu.pst import Pst import numpy as np inpst = Pst('../verification/Freyberg/Freyberg_pp/freyberg_pp.pst') pnames = inpst.par_names onames = inpst.obs_names npar = inpst.npar nobs = inpst.nobs j_arr = np.random.random((nobs, npar)) parcov = mhand.Cov(x=np.eye(npar), names=pnames) obscov = mhand.Cov(x=np.eye(nobs), names=onames) jco = mhand.Jco.from_binary( '../verification/Freyberg/freyberg_pp/freyberg_pp.jcb') resf = '../verification/Freyberg/freyberg_pp/freyberg_pp.rei' s = Influence(jco=jco, obscov=obscov, pst=inpst, resfile=resf) print(s.hat) print(s.observation_leverage) #v = s.studentized_res print(s.estimated_err_var) print(s.studentized_res)
def __init__(self, pst, parcov=None, obscov=None, num_slaves=0, use_approx_prior=True, submit_file=None, verbose=False, port=4004, slave_dir="template"): self.logger = Logger(verbose) if verbose is not False: self.logger.echo = True self.num_slaves = int(num_slaves) if submit_file is not None: if not os.path.exists(submit_file): self.logger.lraise( "submit_file {0} not found".format(submit_file)) elif num_slaves > 0: if not os.path.exists(slave_dir): self.logger.lraise( "template dir {0} not found".format(slave_dir)) self.slave_dir = slave_dir self.submit_file = submit_file self.port = int(port) self.paren_prefix = ".parensemble.{0:04d}.csv" self.obsen_prefix = ".obsensemble.{0:04d}.csv" if isinstance(pst, str): pst = Pst(pst) assert isinstance(pst, Pst) self.pst = pst self.sweep_in_csv = pst.pestpp_options.get("sweep_parameter_csv_file", "sweep_in.csv") self.sweep_out_csv = pst.pestpp_options.get("sweep_output_csv_file", "sweep_out.csv") if parcov is not None: assert isinstance(parcov, Cov) else: parcov = Cov.from_parameter_data(self.pst) if obscov is not None: assert isinstance(obscov, Cov) else: obscov = Cov.from_observation_data(pst) self.parcov = parcov self.obscov = obscov # if restart_iter > 0: # self.restart_iter = restart_iter # paren = self.pst.filename+self.paren_prefix.format(restart_iter) # assert os.path.exists(paren),\ # "could not find restart par ensemble {0}".format(paren) # obsen0 = self.pst.filename+self.obsen_prefix.format(0) # assert os.path.exists(obsen0),\ # "could not find restart obs ensemble 0 {0}".format(obsen0) # obsen = self.pst.filename+self.obsen_prefix.format(restart_iter) # assert os.path.exists(obsen),\ # "could not find restart obs ensemble {0}".format(obsen) # self.restart = True self.__initialized = False self.iter_num = 0 self.raw_sweep_out = None