def schur_test(): import os import numpy as np from pyemu import Schur, Cov, Pst w_dir = os.path.join("..", "verification", "henry") forecasts = ["pd_ten", "c_obs10_2"] pst = Pst(os.path.join(w_dir, "pest.pst")) cov = Cov.from_parameter_data(pst) cov.to_uncfile(os.path.join("temp", "pest.unc"), covmat_file=None) cov2 = Cov.from_uncfile(os.path.join("temp", "pest.unc")) sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, parcov=cov2) print(sc.prior_forecast) print(sc.posterior_forecast) print(sc.get_par_group_contribution()) df = sc.get_par_group_contribution(include_prior_results=True) levels = list(df.columns.levels[1]) assert "prior" in levels, levels assert "post" in levels, levels print(sc.get_parameter_summary(include_map=True)) print(sc.get_forecast_summary(include_map=True)) print(sc.get_removed_obs_importance(reset_zero_weight=True)) sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, sigma_range=6.0) cov = Cov.from_parameter_data(pst, sigma_range=6.0) assert np.abs((sc.parcov.x - cov.x).sum()) == 0.0 sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, sigma_range=6.0, scale_offset=False) assert np.abs((sc.parcov.x - cov.x).sum()) == 0.0 pst.parameter_data.loc[:, "offset"] = 100.0 cov = Cov.from_parameter_data(pst) sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), pst=pst, forecasts=forecasts, sigma_range=6.0, scale_offset=False) assert np.abs((sc.parcov.x - cov.x).sum()) != 0.0 cov = Cov.from_parameter_data(pst, scale_offset=False, sigma_range=6.0) assert np.abs((sc.parcov.x - cov.x).sum()) == 0.0
def gaussian_draw_test(): import os import numpy as np from pyemu import MonteCarlo,Cov,ParameterEnsemble from datetime import datetime jco = os.path.join("pst","pest.jcb") pst = jco.replace(".jcb",".pst") mc = MonteCarlo(jco=jco,pst=pst) num_reals = 100 start = datetime.now() mc.draw(num_reals=num_reals,how="gaussian") print(mc.parensemble.head()) print(datetime.now() - start) vals = mc.pst.parameter_data.parval1.values cov = Cov.from_parameter_data(mc.pst) start = datetime.now() val_array = np.random.multivariate_normal(vals, cov.as_2d,num_reals) print(datetime.now() - start) start = datetime.now() pe = ParameterEnsemble.from_gaussian_draw(mc.pst,cov,num_reals=num_reals) pet = pe._transform(inplace=False) pe = pet._back_transform(inplace=False) print(datetime.now() - start) print(mc.parensemble.head()) print(pe.head())
def mc_test(): import os import numpy as np from pyemu import MonteCarlo, Cov jco = os.path.join("pst","pest.jcb") pst = jco.replace(".jcb",".pst") out_dir = os.path.join("mc") if not os.path.exists(out_dir): os.mkdir(out_dir) #write testing mc = MonteCarlo(jco=jco,verbose=True,sigma_range=6) cov = Cov.from_parameter_data(mc.pst,sigma_range=6) assert np.abs((mc.parcov.x - cov.x).sum()) == 0.0 mc.draw(10,obs=True) mc.write_psts(os.path.join("temp","real_")) mc.parensemble.to_parfiles(os.path.join("mc","real_")) mc = MonteCarlo(jco=jco,verbose=True) mc.draw(10,obs=True) print("prior ensemble variance:", np.var(mc.parensemble.loc[:,"mult1"])) projected_en = mc.project_parensemble(inplace=False) print("projected ensemble variance:", np.var(projected_en.loc[:,"mult1"])) import pyemu sc = pyemu.Schur(jco=jco) mc = MonteCarlo(pst=pst,parcov=sc.posterior_parameter,verbose=True) mc.draw(10) print("posterior ensemble variance:", np.var(mc.parensemble.loc[:,"mult1"]))
def schur_test(): import os import numpy as np from pyemu import Schur, Cov, Pst w_dir = os.path.join("..","verification","henry") forecasts = ["pd_ten","c_obs10_2"] pst = Pst(os.path.join(w_dir,"pest.pst")) cov = Cov.from_parameter_data(pst) cov.to_uncfile(os.path.join("temp","pest.unc"),covmat_file=None) cov2 = Cov.from_uncfile(os.path.join("temp","pest.unc")) sc = Schur(jco=os.path.join(w_dir,"pest.jcb"), forecasts=forecasts, parcov=cov2) print(sc.prior_forecast) print(sc.posterior_forecast) print(sc.get_par_group_contribution()) print(sc.get_parameter_summary(include_map=True)) print(sc.get_forecast_summary(include_map=True)) print(sc.get_removed_obs_importance(reset_zero_weight=True)) sc = Schur(jco=os.path.join(w_dir,"pest.jcb"), forecasts=forecasts, sigma_range=6.0) cov = Cov.from_parameter_data(pst,sigma_range=6.0) assert np.abs((sc.parcov.x - cov.x).sum()) == 0.0 sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, sigma_range=6.0,scale_offset=False) assert np.abs((sc.parcov.x - cov.x).sum()) == 0.0 pst.parameter_data.loc[:,"offset"] = 100.0 cov = Cov.from_parameter_data(pst) sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), pst=pst, forecasts=forecasts, sigma_range=6.0, scale_offset=False) assert np.abs((sc.parcov.x - cov.x).sum()) != 0.0 cov = Cov.from_parameter_data(pst,scale_offset=False,sigma_range=6.0) assert np.abs((sc.parcov.x - cov.x).sum()) == 0.0
def la_test_io(): from pyemu import Schur, Cov, Pst w_dir = os.path.join("..", "verification", "henry") forecasts = ["pd_ten", "c_obs10_2"] pst = Pst(os.path.join(w_dir, "pest.pst")) cov = Cov.from_parameter_data(pst) cov.to_binary(os.path.join("temp", "pest.bin.cov")) cov.to_ascii(os.path.join("temp", "pest.txt.cov")) sc_bin = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, parcov=os.path.join("temp", "pest.bin.cov")) sc_ascii = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, parcov=os.path.join("temp", "pest.txt.cov"))
def la_test_io(): from pyemu import Schur, Cov, Pst w_dir = os.path.join("..","verification","henry") forecasts = ["pd_ten","c_obs10_2"] pst = Pst(os.path.join(w_dir,"pest.pst")) cov = Cov.from_parameter_data(pst) cov.to_binary(os.path.join("temp","pest.bin.cov")) cov.to_ascii(os.path.join("temp","pest.txt.cov")) sc_bin = Schur(jco=os.path.join(w_dir,"pest.jcb"), forecasts=forecasts, parcov=os.path.join("temp","pest.bin.cov")) sc_ascii = Schur(jco=os.path.join(w_dir,"pest.jcb"), forecasts=forecasts, parcov=os.path.join("temp","pest.txt.cov"))
def schur_test(): import os from pyemu import Schur, Cov, Pst w_dir = os.path.join("..", "verification", "henry") forecasts = ["pd_ten", "c_obs10_2"] pst = Pst(os.path.join(w_dir, "pest.pst")) cov = Cov.from_parameter_data(pst) cov.to_uncfile(os.path.join("temp", "pest.unc"), covmat_file=None) cov2 = Cov.from_uncfile(os.path.join("temp", "pest.unc")) sc = Schur(jco=os.path.join(w_dir, "pest.jcb"), forecasts=forecasts, parcov=cov2) print(sc.prior_forecast) print(sc.posterior_forecast) print(sc.get_par_group_contribution()) print(sc.get_removed_obs_group_importance())
def schur_test(): import os from pyemu import Schur, Cov, Pst w_dir = os.path.join("..","..","verification","henry") forecasts = ["pd_ten","c_obs10_2"] pst = Pst(os.path.join(w_dir,"pest.pst")) cov = Cov.from_parameter_data(pst) cov.to_uncfile(os.path.join("temp","pest.unc"),covmat_file=None) cov2 = Cov.from_uncfile(os.path.join("temp","pest.unc")) sc = Schur(jco=os.path.join(w_dir,"pest.jcb"), forecasts=forecasts, parcov=cov2) print(sc.prior_forecast) print(sc.posterior_forecast) print(sc.get_par_group_contribution()) print(sc.get_removed_obs_group_importance())
def from_dataframe_test(): import os import numpy as np import pandas as pd from pyemu import MonteCarlo,Ensemble,ParameterEnsemble,Pst, Cov jco = os.path.join("pst","pest.jcb") pst = jco.replace(".jcb",".pst") mc = MonteCarlo(jco=jco,pst=pst) names = ["par_{0}".format(_) for _ in range(10)] df = pd.DataFrame(np.random.random((10,mc.pst.npar)),columns=mc.pst.par_names) mc.parensemble = ParameterEnsemble.from_dataframe(df=df,pst=mc.pst) print(mc.parensemble.shape) mc.project_parensemble() mc.parensemble.to_csv(os.path.join("temp","test.csv")) pstc = Pst(pst) par = pstc.parameter_data par.sort_values(by="parnme",ascending=False,inplace=True) cov = Cov.from_parameter_data(pstc) pe = ParameterEnsemble.from_gaussian_draw(pst=mc.pst,cov=cov)