Skip to content

Commit 178631c

Browse files
committed
checking files from bogus branch
1 parent 5fa8c61 commit 178631c

38 files changed

+2476
-1973
lines changed

benchmarks/basic_tests.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2125,10 +2125,13 @@ def parse_pst_test():
21252125

21262126

21272127

2128+
2129+
21282130
if __name__ == "__main__":
21292131
#parse_pst_test()
21302132
#basic_test()
2131-
nonascii_path_test()
2133+
#mf6_v5_glm_test()
2134+
#nonascii_path_test()
21322135

21332136
#mf6_v5_ies_nonpersistent_test()
21342137
#large_fake_test()
@@ -2143,7 +2146,7 @@ def parse_pst_test():
21432146
#plot_collapse_invest()
21442147

21452148
#run()
2146-
#mf6_v5_ies_test()
2149+
21472150
#prep_ends()
21482151
#sweep_bin_test()
21492152
# mf6_v5_sen_test()
@@ -2185,7 +2188,7 @@ def parse_pst_test():
21852188
#shutil.copy2(os.path.join("..","exe","windows","x64","Debug","pestpp-ies.exe"),os.path.join("..","bin","win","pestpp-ies.exe"))
21862189
#tplins1_test()
21872190

2188-
#fr_timeout_test()
2191+
fr_timeout_test()
21892192
#mf6_v5_ies_test()
21902193
#mf6_v5_sen_test()
21912194

benchmarks/glm_test_base.py

Lines changed: 37 additions & 175 deletions
Large diffs are not rendered by default.

benchmarks/ies_test_part4.py

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,18 +1152,47 @@ def multimodal_test():
11521152
assert phidf.iteration.max() == pst.control_data.noptmax
11531153
assert phidf.loc[phidf.index[-1],"min"] < 0.1
11541154

1155-
pst.pestpp_options["ies_multimodal_alpha"] = 1.0
1155+
pst.pestpp_options["ies_multimodal_alpha"] = 0.0
11561156
pst.write(os.path.join(test_d, "mm1.pst"))
11571157
m_d = os.path.join(model_d, "master_base_{0}".format(func))
11581158
#pyemu.os_utils.start_workers(test_d, exe_path, "mm1.pst", worker_root=model_d, num_workers=35, master_dir=m_d)
11591159
if os.path.exists(m_d):
11601160
shutil.rmtree(m_d)
11611161
shutil.copytree(test_d,m_d)
11621162
pyemu.os_utils.run("{0} mm1.pst".format(exe_path),cwd=m_d)
1163-
1163+
1164+
11641165
phidf = pd.read_csv(os.path.join(m_d,"mm1.phi.actual.csv"))
11651166
assert phidf.iteration.max() == pst.control_data.noptmax
11661167

1168+
1169+
pst.pestpp_options["ies_multimodal_alpha"] = 1.0
1170+
pst.write(os.path.join(test_d, "mm1.pst"))
1171+
m_d = os.path.join(model_d, "master_allreals_{0}".format(func))
1172+
#pyemu.os_utils.start_workers(test_d, exe_path, "mm1.pst", worker_root=model_d, num_workers=35, master_dir=m_d)
1173+
if os.path.exists(m_d):
1174+
shutil.rmtree(m_d)
1175+
shutil.copytree(test_d,m_d)
1176+
pyemu.os_utils.run("{0} mm1.pst".format(exe_path),cwd=m_d)
1177+
1178+
phidf1 = pd.read_csv(os.path.join(m_d,"mm1.phi.actual.csv"))
1179+
assert phidf1.iteration.max() == pst.control_data.noptmax
1180+
1181+
pst.pestpp_options["ies_multimodal_alpha"] = 0.99
1182+
pst.write(os.path.join(test_d, "mm1.pst"))
1183+
m_d = os.path.join(model_d, "master_almostallreals_{0}".format(func))
1184+
#pyemu.os_utils.start_workers(test_d, exe_path, "mm1.pst", worker_root=model_d, num_workers=35, master_dir=m_d)
1185+
if os.path.exists(m_d):
1186+
shutil.rmtree(m_d)
1187+
shutil.copytree(test_d,m_d)
1188+
pyemu.os_utils.run("{0} mm1.pst".format(exe_path),cwd=m_d)
1189+
phidf2 = pd.read_csv(os.path.join(m_d,"mm1.phi.actual.csv"))
1190+
assert phidf2.iteration.max() == pst.control_data.noptmax
1191+
1192+
diff = np.abs(phidf1["mean"].iloc[-1] - phidf2["mean"].iloc[-1])
1193+
print(diff)
1194+
assert diff < 1e-6
1195+
11671196
pst.pestpp_options["ies_multimodal_alpha"] = 0.1
11681197
pst.pestpp_options["ies_num_threads"] = 4
11691198
pst.pestpp_options["ies_include_base"] = True
@@ -4948,14 +4977,47 @@ def tenpar_fixed_transform_test():
49484977
assert diff.sum() < 1e-6
49494978

49504979

4980+
def large_invest():
4981+
t_d = os.path.join("temp","template")
4982+
if os.path.exists(t_d):
4983+
shutil.rmtree(t_d)
4984+
os.makedirs(t_d)
4985+
npar = 30000
4986+
nobs = 60000
4987+
pnames = ["ppppppppppppppppppppppppppppppppppp{0:07d}".format(i) for i in range(npar)]
4988+
4989+
onames = ["ooooooooooooooooooooooooooooooooooo{0:07d}".format(i) for i in range(nobs)]
4990+
pst = pyemu.Pst.from_par_obs_names(pnames,onames)
4991+
obs = pst.observation_data
4992+
obs["obsval"] = np.random.normal(0,1,nobs)
4993+
par = pst.parameter_data
4994+
par["parval1"] = 1.0
4995+
par["parubnd"] = 1.1
4996+
par["parlbnd"] = 0.9
4997+
4998+
pst.pestpp_options["check_tplins"] = False
4999+
pst.pestpp_options["ies_num_reals"] = 600
5000+
pst.pestpp_options["ies_multimodal_alpha"] = 0.75
5001+
pst.pestpp_options["save_dense"] = True
5002+
pst.pestpp_options["ies_num_threads"] = 10
5003+
pst.model_command = "ls"
5004+
pst.control_data.noptmax = 1
5005+
pst.write(os.path.join(t_d,"pest.pst"),version=2)
5006+
5007+
pyemu.os_utils.run("{0} pest.pst /e".format(exe_path),cwd=t_d)
5008+
49515009

4952-
if __name__ == "__main__":
4953-
tenpar_fixed_transform_test()
49545010

5011+
5012+
5013+
if __name__ == "__main__":
5014+
#large_invest()
5015+
#tenpar_fixed_transform_test()
5016+
#tenpar_reg_factor_test()
49555017
#tenpar_ext_run_mgr_test()
49565018
#freyberg_pdc_test()
49575019
#tenpar_mean_iter_test()
4958-
#tenpar_reinflate_num_reals_2_test()
5020+
#tenpar_reinflate_num_reals_test()
49595021
#freyberg_reinflate_num_reals_invest()
49605022
#compared_freyberg_inflate_runs()
49615023
#tenpar_mean_iter_test_sched()
@@ -4969,7 +5031,7 @@ def tenpar_fixed_transform_test():
49695031
#tenpar_reg_factor_test()
49705032
#tenpar_high_phi_test()
49715033
#tenpar_iqr_bad_phi_sigma_test()
4972-
#multimodal_test()
5034+
multimodal_test()
49735035
#plot_mm1_sweep_results()
49745036
#plot_mm1_results()
49755037
#plot_mm1_results_seq()

benchmarks/mf6_freyberg/template/freyberg6_run_glm.pst

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
pcf version=2
22
* control data keyword
33
pestmode estimation
4-
noptmax 4
4+
noptmax 2
55
svdmode 1
66
maxsing 10000000
77
eigthresh 1e-06
88
eigwrite 1
99
ies_par_en prior.jcb
1010
forecasts headwater_20171130,tailwater_20161130,trgw_0_9_1_20161130
11-
n_iter_super 4
12-
n_iter_base -1
1311
glm_num_reals 200
1412
glm_normal_form prior
15-
max_n_super 36
1613
* parameter groups external
1714
freyberg6_run_glm.pargrp_data.csv
1815
* parameter data external

benchmarks/opt_test.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,13 @@ def stack_test():
442442
pst = pyemu.Pst(pst_file)
443443
par = pst.parameter_data
444444
par.loc[par.partrans=="fixed","partrans"] = "log"
445+
obs = pst.observation_data
446+
obs.loc["q1","obsval"] = 100
447+
obs.loc["q1","obgnme"] = "equal_to"
448+
obs.loc["q1","weight"] = 1.0
449+
450+
pst.pestpp_options.pop("opt_constraint_groups",None)
451+
pst.pestpp_options.pop("base_jacobian",None)
445452
pst.pestpp_options["opt_risk"] = 0.1
446453
pst.pestpp_options["opt_stack_size"] = 10
447454
pst.control_data.noptmax = 1
@@ -489,7 +496,7 @@ def stack_test():
489496
if os.path.exists(d):
490497
shutil.rmtree(d)
491498
shutil.copytree(os.path.join("opt_dewater_chance", "template"), d)
492-
pst.pestpp_options.pop("base_jacobian")
499+
pst.pestpp_options.pop("base_jacobian",None)
493500
pst.write(os.path.join(d,"test.pst"))
494501
pyemu.os_utils.run("{0} {1}".format(exe_path, "test.pst"), cwd=d)
495502
rec4 = os.path.join(d,"test.rec")
@@ -623,8 +630,6 @@ def fosm_invest():
623630
print(jcb_file,sc.get_forecast_summary().loc[:,"prior_var"].apply(lambda x: np.sqrt(x)))
624631

625632

626-
627-
628633
if __name__ == "__main__":
629634
#fosm_invest()
630635
#startworker()

benchmarks/sqp_tests.py

Lines changed: 112 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ def basic_sqp_test():
6464

6565
assert os.path.exists(os.path.join(m_d,"freyberg6_run_sqp.0.par.csv"))
6666
df = pd.read_csv(os.path.join(m_d,"freyberg6_run_sqp.0.par.csv"),index_col=0)
67-
assert df.shape == (pst.pestpp_options["sqp_num_reals"],pst.npar),str(df.shape)
67+
assert df.shape == (pst.pestpp_options["sqp_num_reals"] + 1,pst.npar),str(df.shape)
6868
assert os.path.exists(os.path.join(m_d,"freyberg6_run_sqp.0.obs.csv"))
6969
df = pd.read_csv(os.path.join(m_d,"freyberg6_run_sqp.0.obs.csv"),index_col=0)
70-
assert df.shape == (pst.pestpp_options["sqp_num_reals"],pst.nobs),str(df.shape)
70+
assert df.shape == (pst.pestpp_options["sqp_num_reals"] + 1,pst.nobs + pst.nprior),str(df.shape)
7171

7272

7373
def rosenbrock_setup(version,initial_decvars=1.6,constraints=False,constraint_exp="one_linear"):
@@ -328,54 +328,64 @@ def dewater_basic_test():
328328
pst.write(os.path.join(t_d,case+".pst"))
329329
#pyemu.os_utils.run("{0} {1}.pst".format(exe_path,case),cwd=t_d)
330330
m_d = os.path.join(model_d, "master2")
331-
pyemu.os_utils.start_workers(t_d, exe_path, case + ".pst", num_workers=10, worker_root=model_d,
332-
master_dir=m_d)
333-
assert os.path.exists(os.path.join(m_d, case + ".base.par"))
334-
assert os.path.exists(os.path.join(m_d, case + ".base.rei"))
335-
assert os.path.exists(os.path.join(m_d, case + ".0.jcb"))
336-
assert os.path.exists(os.path.join(m_d, case + ".1.jcb"))
337-
assert os.path.exists(os.path.join(m_d, case + ".2.jcb"))
331+
#pyemu.os_utils.start_workers(t_d, exe_path, case + ".pst", num_workers=10, worker_root=model_d,
332+
# master_dir=m_d)
333+
# assert os.path.exists(os.path.join(m_d, case + ".base.par"))
334+
# assert os.path.exists(os.path.join(m_d, case + ".base.rei"))
335+
# assert os.path.exists(os.path.join(m_d, case + ".0.jcb"))
336+
# assert os.path.exists(os.path.join(m_d, case + ".1.jcb"))
337+
# assert os.path.exists(os.path.join(m_d, case + ".2.jcb"))
338338

339339
pst.pestpp_options["sqp_num_reals"] = 50
340-
pst.control_data.noptmax = 3
340+
pst.control_data.noptmax = 2
341341
pst.write(os.path.join(t_d, case + ".pst"))
342342
# pyemu.os_utils.run("{0} {1}.pst".format(exe_path,case),cwd=t_d)
343343
m_d = os.path.join(model_d, "master2_enopt")
344344
pyemu.os_utils.start_workers(t_d, exe_path, case + ".pst", num_workers=20, worker_root=model_d,
345345
master_dir=m_d)
346346

347+
for i in range(pst.control_data.noptmax+1):
348+
assert os.path.exists(os.path.join(m_d, case + ".{0}.base.par".format(i)))
349+
assert os.path.exists(os.path.join(m_d, case + ".{0}.base.rei".format(i)))
350+
assert os.path.exists(os.path.join(m_d, case + ".{0}.obs.csv".format(i)))
351+
assert os.path.exists(os.path.join(m_d, case + ".{0}.par.csv".format(i)))
352+
347353

348354

349-
def dewater_slp_opt_test():
350-
model_d = "dewater"
351-
local = True
352-
if "linux" in platform.platform().lower() and "10par" in model_d:
353-
# print("travis_prep")
354-
# prep_for_travis(model_d)
355-
local = False
355+
# def dewater_slp_opt_test():
356+
# model_d = "dewater"
357+
# local = True
358+
# if "linux" in platform.platform().lower() and "10par" in model_d:
359+
# # print("travis_prep")
360+
# # prep_for_travis(model_d)
361+
# local = False
356362

357-
t_d = os.path.join(model_d, "template")
363+
# t_d = os.path.join(model_d, "template")
358364

359-
case = "dewater_pest.base"
360-
pst = pyemu.Pst(os.path.join(t_d, case + ".pst"))
361-
par = pst.parameter_data
362-
dv_pars = par.loc[par.pargp == "q", "parnme"].tolist()[:3]
365+
# case = "dewater_pest.base"
366+
# pst = pyemu.Pst(os.path.join(t_d, case + ".pst"))
367+
# par = pst.parameter_data
368+
# dv_pars = par.loc[par.pargp == "q", "parnme"].tolist()[:3]
363369

364-
pst.add_pi_equation(par_names=dv_pars, pilbl="eq3", rhs=1000, obs_group="less_than")
365-
pst.pestpp_options = {}
366-
pst.pestpp_options["opt_dec_var_groups"] = "q"
367-
pst.control_data.noptmax = 1
368-
print(pst.prior_information)
369-
pst.write(os.path.join(t_d, "test_opt.pst"))
370-
pyemu.os_utils.run("{0} {1}.pst".format(exe_path.replace("-sqp","-opt"), "test_opt.pst"), cwd=t_d)
371-
372-
373-
pst.parrep(os.path.join(t_d,"test_opt.par"))
374-
pst.pestpp_options["hotstart_resfile"] = "test_opt.1.sim.rei"
375-
pst.pestpp_options["base_jacobian"] = "test_opt.1.jcb"
376-
pst.control_data.noptmax = 1
377-
pst.write(os.path.join(t_d,"test_sqp.pst"))
378-
pyemu.os_utils.run("{0} {1}.pst".format(exe_path, "test_sqp.pst"), cwd=t_d)
370+
# pst.add_pi_equation(par_names=dv_pars, pilbl="eq3", rhs=1000, obs_group="less_than")
371+
# pst.pestpp_options = {}
372+
# pst.pestpp_options["opt_dec_var_groups"] = "q"
373+
# pst.control_data.noptmax = 1
374+
# print(pst.prior_information)
375+
# pst.write(os.path.join(t_d, "test_opt.pst"))
376+
# pyemu.os_utils.run("{0} {1}.pst".format(exe_path.replace("-sqp", "-opt"), "test_opt"), cwd=t_d)
377+
378+
# pst = pyemu.Pst(os.path.join(t_d, case + ".pst"))
379+
# pst.add_pi_equation(par_names=dv_pars, pilbl="eq3", rhs=1000, obs_group="less_than")
380+
# pst.pestpp_options = {}
381+
# pst.pestpp_options["opt_dec_var_groups"] = "q"
382+
383+
# pst.parrep(os.path.join(t_d,"test_opt.par"))
384+
# pst.pestpp_options["hotstart_resfile"] = "test_opt.1.sim.rei"
385+
# pst.pestpp_options["base_jacobian"] = "test_opt.1.jcb"
386+
# pst.control_data.noptmax = 1
387+
# pst.write(os.path.join(t_d,"test_sqp.pst"))
388+
# pyemu.os_utils.run("{0} {1}.pst".format(exe_path, "test_sqp"), cwd=t_d)
379389

380390

381391
def rosenc_test():
@@ -567,16 +577,79 @@ def plot_rosen(m_d):
567577
"-i iter_%03d.png -vf scale=480X480 -y out.gif",cwd=m_d)
568578

569579

580+
def mf6_phiobs_invest():
581+
model_d = "mf6_freyberg"
582+
583+
org_t_d = os.path.join("..","benchmarks",model_d,"template")
584+
t_d = os.path.join(model_d,"template")
585+
if os.path.exists(t_d):
586+
shutil.rmtree(t_d)
587+
shutil.copytree(org_t_d,t_d)
588+
pst = pyemu.Pst(os.path.join(t_d,"freyberg6_run_ies.pst"))
589+
pst.control_data.noptmax = 0
590+
pst.write(os.path.join(t_d,"pest.pst"),version=2)
591+
pyemu.os_utils.run("{0} pest.pst".format(exe_path.replace("-sqp","-ies")),cwd=t_d)
592+
pst = pyemu.helpers.add_phi_as_obs("pest.pst",pst_path=t_d)
593+
594+
pst.pestpp_options["opt_objective_function"] = "composite"
595+
pst.observation_data.loc["composite","obgnme"] = "less_than"
596+
lbdf = pst.add_pars_as_obs(pst_path=t_d,par_sigma_range=4,name_prefix="parlbnd-")
597+
ubdf = pst.add_pars_as_obs(pst_path=t_d,par_sigma_range=4,name_prefix="parubnd-")
598+
obs = pst.observation_data
599+
print(obs.loc[lbdf.index,"greater_than"])
600+
obs.loc[lbdf.index,"obgnme"] = "greater_than_parbound"
601+
wpar = [w for w in lbdf.index if "wel" in w ]
602+
obs.loc[wpar,"weight"] = 0
603+
604+
obs.loc[lbdf.index,"obsval"] = obs.loc[lbdf.index,"greater_than"]
605+
obs.loc[ubdf.index,"obgnme"] = "less_than_parbound"
606+
wpar = [w for w in ubdf.index if "wel" in w ]
607+
obs.loc[wpar,"weight"] = 0
608+
609+
obs.loc[ubdf.index,"obsval"] = obs.loc[ubdf.index,"less_than"]
610+
par = pst.parameter_data
611+
org_parval1 = par.parval1.copy()
612+
par["parval1"] = par["parlbnd"]
613+
pyemu.helpers.zero_order_tikhonov(pst)
614+
par = pst.parameter_data
615+
par["parval1"] = org_parval1
616+
pi = pst.prior_information
617+
pi["weight"] = 0
618+
wpi = [w for w in pi.index if "wel" in w]
619+
assert len(wpi) > 0
620+
pi.loc[wpi,"weight"] = 1.0
621+
pi.loc[wpi,"obgnme"] = 'greater_than'
622+
#pi.loc[wpi,"obsval"] = np.log10(par.loc[wpi,"parlbnd"].values)
623+
624+
pst.dialate_par_bounds(1.5)
625+
626+
pst.control_data.noptmax = 0
627+
pst.write(os.path.join(t_d,"pest.pst"),version=2)
628+
pyemu.os_utils.run("{0} pest.pst".format(exe_path),cwd=t_d)
629+
630+
pst.control_data.noptmax = 10
631+
pst.pestpp_options["sqp_num_reals"] = 10
632+
pst.write(os.path.join(t_d,"pest.pst"),version=2)
633+
m_d = os.path.join(model_d,"master_sqp")
634+
pyemu.os_utils.start_workers(t_d,exe_path,"pest.pst",num_workers=10,
635+
master_dir=m_d,
636+
worker_root=model_d)
637+
638+
639+
640+
570641
if __name__ == "__main__":
571642

572643
#if not os.path.exists(os.path.join("..","bin")):
573644
# os.mkdir(os.path.join("..","bin"))
574645
#shutil.copy2(os.path.join("..","exe","windows","x64","Debug","pestpp-sqp.exe"),os.path.join("..","bin","pestpp-sqp.exe"))
575-
basic_sqp_test()
646+
#basic_sqp_test()
576647
#rosenbrock_single_linear_constraint(nit=1)
577648
#dewater_basic_test()
578-
#dewater_slp_opt_test()
649+
dewater_slp_opt_test()
579650
#rosenc_test()
580651
#m_d = rosenc_test()
581652
#m_d = os.path.join("mou_tests","master_rosenc_enopt")
582653
#plot_rosen(m_d)
654+
#mf6_freyberg_test()
655+
#mf6_phiobs_invest()

0 commit comments

Comments
 (0)