-
Notifications
You must be signed in to change notification settings - Fork 70
/
example_spline.py
45 lines (35 loc) · 1.37 KB
/
example_spline.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"""
This test file is meant for developing purposes. Providing an easy method to
test the functioning of Pastas during development.
"""
import pandas as pd
import pastas as ps
ps.set_log_level("ERROR")
noise = False
fit_constant = False
# read observations and create the time series model
obs = pd.read_csv("data/head_nb1.csv", index_col=0,
parse_dates=True).squeeze("columns")
# read weather data
rain = pd.read_csv("data/rain_nb1.csv", index_col=0,
parse_dates=True).squeeze("columns")
evap = pd.read_csv("data/evap_nb1.csv", index_col=0,
parse_dates=True).squeeze("columns")
# Solve with a Exponential response function
ml1 = ps.Model(obs, name="Exp")
sm = ps.RechargeModel(prec=rain, evap=evap, rfunc=ps.Exponential)
ml1.add_stressmodel(sm)
ml1.solve(noise=noise, fit_constant=fit_constant)
# Solve with a Gamma response function
ml2 = ps.Model(obs, name="Gamma")
sm = ps.RechargeModel(prec=rain, evap=evap, rfunc=ps.Gamma)
ml2.add_stressmodel(sm)
ml2.solve(noise=noise, fit_constant=fit_constant)
# Solve with a Spline response function
ml3 = ps.Model(obs, name="Spline")
rfunc = ps.Spline(t=[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024])
sm = ps.RechargeModel(prec=rain, evap=evap, rfunc=rfunc)
ml3.add_stressmodel(sm)
ml3.solve(noise=noise, fit_constant=fit_constant)
# Compare both models
ax = ps.plots.compare([ml1, ml2, ml3])