using PenmanMonteithLeuning, Ipaper, Test, RTableTools
dir_root = "$(@__DIR__)/../../" |> abspath
data = fread("$dir_root/data/Forcing_C3C4_sp2.csv")
replace_missing!(data)
3967×13 DataFrame
3942 rows omitted
1 |
固城 |
2020-01-01 |
0.530538 |
1.70652 |
6.05163 |
89.5728 |
0.0 |
-5.53096 |
0.166687 |
0.655644 |
101.325 |
412.43 |
0.2 |
2 |
固城 |
2020-01-02 |
1.17986 |
0.891641 |
3.65701 |
74.5324 |
0.0 |
-3.63221 |
0.203813 |
0.463302 |
101.325 |
412.43 |
0.2 |
3 |
固城 |
2020-01-03 |
0.507802 |
1.11218 |
9.11226 |
82.891 |
0.0 |
-2.04656 |
0.26845 |
0.366287 |
101.325 |
412.43 |
0.2 |
4 |
固城 |
2020-01-04 |
0.639389 |
1.53028 |
11.488 |
86.9699 |
0.0 |
-0.673144 |
0.304251 |
0.54404 |
101.325 |
412.43 |
0.2 |
5 |
固城 |
2020-01-05 |
0.401485 |
1.72924 |
5.36459 |
31.3203 |
0.0 |
-0.554419 |
0.44767 |
1.63593 |
101.325 |
412.43 |
0.2 |
6 |
固城 |
2020-01-06 |
0.352672 |
1.63489 |
6.62139 |
48.8566 |
2.6 |
-0.198771 |
0.559177 |
0.426304 |
101.325 |
412.43 |
0.2 |
7 |
固城 |
2020-01-07 |
0.41034 |
1.43348 |
-5.13582 |
35.1992 |
0.0 |
-1.02898 |
0.404559 |
0.933315 |
101.325 |
412.43 |
0.2 |
8 |
固城 |
2020-01-08 |
-0.0842133 |
1.4032 |
15.4937 |
104.834 |
0.0 |
-1.54316 |
0.371452 |
0.71234 |
101.325 |
412.43 |
0.2 |
9 |
固城 |
2020-01-09 |
0.234851 |
1.71308 |
30.5025 |
89.9842 |
0.0 |
-2.82148 |
0.407567 |
0.585204 |
101.325 |
412.43 |
0.2 |
10 |
固城 |
2020-01-10 |
0.267995 |
1.85874 |
19.3131 |
84.7666 |
0.0 |
-1.73513 |
0.418387 |
0.552027 |
101.325 |
412.43 |
0.2 |
11 |
固城 |
2020-01-11 |
0.5812 |
1.33571 |
-3.10616 |
39.3625 |
0.0 |
-3.69319 |
0.308355 |
0.6638 |
101.325 |
412.43 |
0.2 |
12 |
固城 |
2020-01-12 |
0.844935 |
1.0941 |
8.74138 |
94.0332 |
0.0 |
-3.63165 |
0.29099 |
0.453004 |
101.325 |
412.43 |
0.2 |
13 |
固城 |
2020-01-13 |
0.34446 |
1.3812 |
10.6341 |
101.612 |
0.0 |
-4.45429 |
0.265746 |
0.483777 |
101.325 |
412.43 |
0.2 |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
3956 |
禹城 |
2010-12-20 |
1.227 |
0.994925 |
-0.112333 |
82.2027 |
0.0 |
4.18246 |
0.339789 |
1.19246 |
101.481 |
390.34 |
0.3 |
3957 |
禹城 |
2010-12-21 |
0.797462 |
0.985958 |
-10.7624 |
80.078 |
0.0 |
4.52735 |
0.4269 |
0.944063 |
100.95 |
390.34 |
0.3 |
3958 |
禹城 |
2010-12-22 |
0.6596 |
1.33054 |
-17.845 |
79.8506 |
0.0 |
2.95302 |
0.456837 |
1.87465 |
101.331 |
390.34 |
0.3 |
3959 |
禹城 |
2010-12-23 |
0.926112 |
0.131809 |
-26.0213 |
72.1066 |
0.0 |
-1.79542 |
0.35548 |
4.73025 |
102.719 |
390.34 |
0.3 |
3960 |
禹城 |
2010-12-24 |
0.751704 |
0.0132105 |
-21.8582 |
113.342 |
0.0 |
-6.51777 |
0.155578 |
0.892125 |
103.35 |
390.34 |
0.3 |
3961 |
禹城 |
2010-12-25 |
0.73888 |
-0.0168908 |
-24.516 |
91.5869 |
0.0 |
-5.61671 |
0.19763 |
0.069375 |
102.425 |
390.34 |
0.3 |
3962 |
禹城 |
2010-12-26 |
0.658701 |
0.464063 |
-25.1962 |
106.49 |
0.0 |
-3.38248 |
0.222141 |
0.354125 |
101.463 |
390.34 |
0.3 |
3963 |
禹城 |
2010-12-27 |
0.50127 |
0.282353 |
-21.9344 |
64.9561 |
0.0 |
0.624104 |
0.289136 |
0.668292 |
100.844 |
390.34 |
0.3 |
3964 |
禹城 |
2010-12-28 |
0.561384 |
0.384923 |
-16.4177 |
120.223 |
0.0 |
-0.926458 |
0.176811 |
0.854479 |
101.646 |
390.34 |
0.3 |
3965 |
禹城 |
2010-12-29 |
0.710103 |
0.114883 |
-26.9787 |
69.1139 |
0.0 |
-0.324062 |
0.153707 |
3.24073 |
101.85 |
390.34 |
0.3 |
3966 |
禹城 |
2010-12-30 |
0.399544 |
0.0 |
-33.1562 |
118.44 |
0.0 |
-4.44437 |
0.0842493 |
4.02925 |
102.3 |
390.34 |
0.3 |
3967 |
禹城 |
2010-12-31 |
0.416367 |
-0.263003 |
-26.7204 |
122.377 |
0.0 |
-6.65656 |
0.113425 |
1.04904 |
102.565 |
390.34 |
0.3 |
df = data[data.site.=="固城", :]
# df = data[data.site.=="禹城", :]
# df.ET_obs = df.ET_obs ./ 0.9
par = par0
r = PMLV2(df; par)
parNames = [
:α, :η, :g1, :VCmax25, :VPDmin, :VPDmax, :D0, :kQ, :kA, :S_sls, :fER0 # :hc
]
theta, goal, flag = ModelCalib(df, par0, parNames)
df_out = PMLV2_sites(df; par=theta2par(theta, parNames))
Iteration = 0, nEvals = 115, Best Cost = -0.32853
Iteration = 1, nEvals = 293, Best Cost = -0.32853
Iteration = 2, nEvals = 477, Best Cost = -0.34825
Iteration = 3, nEvals = 670, Best Cost = -0.38699
Iteration = 4, nEvals = 858, Best Cost = -0.38940
Iteration = 5, nEvals = 1043, Best Cost = -0.39980
Iteration = 6, nEvals = 1229, Best Cost = -0.41595
Iteration = 7, nEvals = 1432, Best Cost = -0.41827
Iteration = 8, nEvals = 1624, Best Cost = -0.42468
Iteration = 9, nEvals = 1827, Best Cost = -0.42491
Iteration = 10, nEvals = 2029, Best Cost = -0.42722
Iteration = 11, nEvals = 2237, Best Cost = -0.42813
Iteration = 12, nEvals = 2443, Best Cost = -0.42818
Iteration = 13, nEvals = 2637, Best Cost = -0.42954
1045×14 DataFrame
1020 rows omitted
1 |
0.126002 |
1.43003 |
0.126002 |
0.00376597 |
0.122236 |
0.0 |
0.0 |
0.055448 |
0.0663718 |
0.459081 |
0.00452108 |
0.00162014 |
0.0 |
0.0 |
2 |
0.122516 |
1.33675 |
0.122516 |
0.00294718 |
0.119569 |
0.0 |
0.0 |
0.0364996 |
0.0436904 |
0.469777 |
0.00319476 |
0.00144931 |
0.0 |
0.0 |
3 |
0.14648 |
1.41728 |
0.14648 |
0.00905284 |
0.137427 |
0.0 |
0.0 |
0.0973117 |
0.116483 |
0.635481 |
0.00252579 |
0.00142241 |
0.0 |
0.0 |
4 |
0.189762 |
1.46037 |
0.189762 |
0.00976063 |
0.180002 |
0.0 |
0.0 |
0.129729 |
0.155287 |
0.770093 |
0.0037515 |
0.00141079 |
0.0 |
0.0 |
5 |
0.189253 |
0.824622 |
0.189253 |
0.00108568 |
0.188167 |
0.0 |
0.0 |
0.0608661 |
0.0728573 |
1.38361 |
0.0112808 |
0.000681501 |
0.0 |
0.0 |
6 |
0.29526 |
1.0932 |
0.215649 |
0.00472808 |
0.210921 |
0.0034269 |
2.59657 |
0.0761845 |
0.0911936 |
1.15361 |
0.00293964 |
0.000813054 |
1.0 |
0.0761845 |
7 |
0.117634 |
0.889848 |
0.174812 |
-0.00183202 |
0.176644 |
0.0 |
0.0 |
-0.0571773 |
-0.0684418 |
0.889258 |
0.0064358 |
0.000767554 |
1.0 |
-0.0571773 |
8 |
0.421913 |
1.56757 |
0.252981 |
0.0104521 |
0.242529 |
0.0 |
0.0 |
0.168932 |
0.202213 |
1.02203 |
0.00491204 |
0.00139848 |
1.0 |
0.168932 |
9 |
0.570105 |
1.46074 |
0.25482 |
0.02021 |
0.23461 |
0.0 |
0.0 |
0.315285 |
0.377399 |
1.25806 |
0.00403536 |
0.00124772 |
1.0 |
0.315285 |
10 |
0.243228 |
1.43422 |
0.243228 |
0.0139265 |
0.229302 |
0.0 |
0.0 |
0.208923 |
0.250083 |
1.11996 |
0.00380658 |
0.00121613 |
0.0 |
0.0 |
11 |
0.144761 |
0.944753 |
0.144761 |
-0.00140567 |
0.146167 |
0.0 |
0.0 |
-0.0309191 |
-0.0370105 |
0.664056 |
0.00457733 |
0.0008982 |
0.0 |
-0.0 |
12 |
0.175315 |
1.47912 |
0.175315 |
0.0070997 |
0.168215 |
0.0 |
0.0 |
0.0872474 |
0.104436 |
0.710074 |
0.00312375 |
0.00143588 |
0.0 |
0.0 |
13 |
0.172681 |
1.51609 |
0.172681 |
0.00817289 |
0.164508 |
0.0 |
0.0 |
0.10234 |
0.122502 |
0.692971 |
0.00333595 |
0.00151311 |
0.0 |
0.0 |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
1034 |
0.507332 |
1.91239 |
0.507332 |
0.0671099 |
0.440222 |
0.0 |
0.0 |
0.508306 |
0.680822 |
2.26361 |
0.00371951 |
0.00094667 |
0.0 |
0.0 |
1035 |
0.659771 |
2.91473 |
0.659771 |
0.158781 |
0.50099 |
0.0 |
0.0 |
1.01201 |
1.34033 |
2.5555 |
0.00467052 |
0.00180295 |
0.0 |
0.0 |
1036 |
0.465605 |
2.49885 |
0.465605 |
0.073662 |
0.391943 |
0.0 |
0.0 |
0.514665 |
0.674018 |
1.67571 |
0.00452821 |
0.00180053 |
0.0 |
0.0 |
1037 |
1.09965 |
2.43759 |
0.640915 |
0.0654951 |
0.57542 |
0.00456196 |
1.69544 |
0.741866 |
0.971565 |
2.53699 |
0.00855074 |
0.0015003 |
0.612205 |
0.454174 |
1038 |
1.40338 |
2.47064 |
0.704156 |
0.0480722 |
0.656084 |
0.00487429 |
2.19513 |
0.694346 |
0.909332 |
2.89345 |
0.010733 |
0.00143 |
1.0 |
0.694346 |
1039 |
1.45073 |
2.70111 |
0.653257 |
0.076894 |
0.576363 |
0.00362495 |
0.196375 |
0.793849 |
1.03964 |
2.51287 |
0.00790872 |
0.00178821 |
1.0 |
0.793849 |
1040 |
1.2873 |
2.66086 |
0.512188 |
0.136406 |
0.375782 |
0.0 |
0.0 |
0.775114 |
1.01511 |
2.23561 |
0.00254739 |
0.0016407 |
1.0 |
0.775114 |
1041 |
0.702343 |
1.66109 |
0.40261 |
0.0318433 |
0.370767 |
0.00443702 |
1.49556 |
0.295296 |
0.386727 |
1.84751 |
0.00368507 |
0.00095423 |
1.0 |
0.295296 |
1042 |
0.974521 |
2.66441 |
0.454651 |
0.136948 |
0.317703 |
0.00362495 |
0.196375 |
0.69551 |
0.910857 |
2.02693 |
0.00205582 |
0.00165198 |
0.742254 |
0.516245 |
1043 |
0.882906 |
2.56655 |
0.484312 |
0.083909 |
0.400403 |
0.0 |
0.0 |
0.540865 |
0.70833 |
1.83672 |
0.00356878 |
0.00169351 |
0.736956 |
0.398594 |
1044 |
0.648697 |
1.67574 |
0.406261 |
0.0236156 |
0.382646 |
0.0 |
0.0 |
0.254762 |
0.333643 |
1.6878 |
0.005256 |
0.00104522 |
0.951617 |
0.242436 |
1045 |
0.873242 |
2.89795 |
0.787249 |
0.107617 |
0.679632 |
0.0 |
0.0 |
1.12474 |
1.47298 |
3.14201 |
0.00892024 |
0.00171276 |
0.0764563 |
0.0859932 |
sites = unique(df.site)
RES = []
for site in sites
inds = df.site .== site
d_obs = df[inds, :]
d_sim = df_out[inds, :]
gof = [
(; var="ET", GOF(d_obs.ET_obs, d_sim.ET)...),
(; var="GPP", GOF(d_obs.GPP_obs, d_sim.GPP)...)] |> DataFrame
gof = gof[:, [:var, :NSE, :KGE, :R2, :bias_perc, :n_valid]]
push!(RES, gof)
end
RES
1-element Vector{Any}:
2×6 DataFrame
Row │ var NSE KGE R2 bias_perc n_valid
│ String Float64 Float64 Float64 Float64 Int64
─────┼──────────────────────────────────────────────────────────
1 │ ET 0.403063 0.63706 0.454071 -9.58134 927
2 │ GPP 0.456019 0.612086 0.46946 -5.95595 927
PML-ET - 固城: 0.46 - 禹城: 0.63