Skip to content

Commit

Permalink
fixing tests
Browse files Browse the repository at this point in the history
Signed-off-by: travis-recurve <[email protected]>
  • Loading branch information
travis-recurve committed Jan 31, 2025
1 parent c776e49 commit 3635afc
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 31 deletions.
4 changes: 2 additions & 2 deletions eemeter/common/base_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def __lower__(value: Any) -> Any:
return __lower__(values)

"""Make all property values lowercase and strip whitespace before validation"""
@pydantic.validator('*', pre=True)
@pydantic.field_validator("*", mode="before")
def lowercase_values(cls, v):
if isinstance(v, str):
return v.lower().strip()
Expand All @@ -53,5 +53,5 @@ def lowercase_values(cls, v):

# add developer field to pydantic Field
def CustomField(developer=False, *args, **kwargs):
field = pydantic.Field(developer=developer, *args, **kwargs)
field = pydantic.Field(json_schema_extra={"developer": developer}, *args, **kwargs)
return field
3 changes: 3 additions & 0 deletions eemeter/eemeter/models/daily/utilities/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -559,6 +559,9 @@ def update_daily_settings(settings, update_dict):
settings_dict = settings.model_dump()
settings_dict.update(update_dict)

if isinstance(settings, DailyLegacySettings):
return DailyLegacySettings(**settings_dict)

return DailySettings(**settings_dict)


Expand Down
9 changes: 5 additions & 4 deletions tests/daily_model/base_models/test_c_hdd_tidd_smooth.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@ def test_fit_c_hdd_tidd_smooth():
cdd_k=None,
)
bnds = None
weights = None
initial_fit = True
smooth = True
res = fit_c_hdd_tidd(T, obs, settings, opt_options, smooth, x0, bnds, initial_fit)
res = fit_c_hdd_tidd(T, obs, weights, settings, opt_options, smooth, x0, bnds, initial_fit)
assert res.success == True

# Test case 2: Test with initial_fit=False
Expand All @@ -77,7 +78,7 @@ def test_fit_c_hdd_tidd_smooth():
bnds = None
initial_fit = False
smooth = True
res = fit_c_hdd_tidd(T, obs, settings, opt_options, smooth, x0, bnds, initial_fit)
res = fit_c_hdd_tidd(T, obs, weights, settings, opt_options, smooth, x0, bnds, initial_fit)
assert res.success == True

# Test case 3: Test with x0=None
Expand All @@ -95,5 +96,5 @@ def test_fit_c_hdd_tidd_smooth():
bnds = None
initial_fit = True
smooth = True
res = fit_c_hdd_tidd(T, obs, settings, opt_options, smooth, x0, bnds, initial_fit)
assert res.success == True
res = fit_c_hdd_tidd(T, obs, weights, settings, opt_options, smooth, x0, bnds, initial_fit)
assert res.success == True
2 changes: 1 addition & 1 deletion tests/daily_model/test_fit_base_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import pytest
from eemeter.eemeter.models.daily.parameters import ModelCoefficients

from eemeter.eemeter.models.daily.utilities.config import DailySettings as Settings
from eemeter.eemeter.models.daily.utilities.settings import DailySettings as Settings
from eemeter.eemeter.models.daily.parameters import ModelType
from eemeter.eemeter.models.daily.fit_base_models import (
fit_initial_models_from_full_model,
Expand Down
2 changes: 2 additions & 0 deletions tests/daily_model/test_objective_function.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ def test_obj_fcn_decorator():
TSS_fcn = None
T = np.array([1, 2, 3]).astype(float)
obs = np.array([4, 5, 6]).astype(float)
weights = None
settings = type(
"Settings",
(object,),
Expand All @@ -143,6 +144,7 @@ def test_obj_fcn_decorator():
TSS_fcn,
T,
obs,
weights,
settings,
alpha,
coef_id,
Expand Down
41 changes: 17 additions & 24 deletions tests/daily_model/test_optimize.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,14 @@ def obj_fcn(x):
assert idx_opt == [0, 1, 2]


@pytest.fixture
def get_settings():
return Settings()


@pytest.fixture
def get_obj_fcn(get_settings):
def get_obj_fcn(settings):
# Test case 1: Test with minimum input values
model_fcn_full = evaluate_hdd_tidd_cdd_smooth
weight_fcn = _hdd_tidd_cdd_smooth_weight
TSS_fcn = None
T = np.array([1, 2, 3, 4, 5, 6, 7]).astype(float)
obs = np.array([2, 4, 6, 8, 10, 12, 14]).astype(float)
base_weights = None
alpha = 2.0
coef_id = [
"hdd_bp",
Expand All @@ -77,7 +72,8 @@ def get_obj_fcn(get_settings):
TSS_fcn,
T,
obs,
get_settings,
base_weights,
settings,
alpha,
coef_id,
initial_fit,
Expand All @@ -104,7 +100,7 @@ def get_bnds():
)


def test_optimizer_run(get_settings, get_obj_fcn, get_x0, get_bnds):
def test_optimizer_run(get_x0, get_bnds):
x0 = get_x0
bnds = get_bnds
coef_id = [
Expand All @@ -118,28 +114,25 @@ def test_optimizer_run(get_settings, get_obj_fcn, get_x0, get_bnds):
]

# Test case 1: Test with empty options
opt_options = _get_opt_settings(get_settings)
optimizer = Optimizer(get_obj_fcn, x0, bnds, coef_id, get_settings, opt_options)
settings = Settings()
opt_settings = _get_opt_settings(settings)
obj_fcn = get_obj_fcn(settings)
optimizer = Optimizer(obj_fcn, x0, bnds, coef_id, settings, opt_settings)
res = optimizer.run()
assert np.allclose(res.x, np.array([20.13393]), rtol=1e-5, atol=1e-5)

# Test case 2: Test with scipy algorithm
settings = Settings(developer_mode=True, algorithm_choice="scipy_Nelder-Mead")
opt_options = _get_opt_settings(settings)
optimizer = Optimizer(get_obj_fcn, x0, bnds, coef_id, settings, opt_options)
opt_settings = _get_opt_settings(settings)
obj_fcn = get_obj_fcn(settings)
optimizer = Optimizer(obj_fcn, x0, bnds, coef_id, settings, opt_settings)
res = optimizer.run()
assert np.allclose(res.x, np.array([20.13393]), rtol=1e-5, atol=1e-5)

# Test case 3: Test with nlopt algorithm
settings = Settings(developer_mode=True, algorithm_choice="nlopt_direct")
opt_options = _get_opt_settings(get_settings)
optimizer = Optimizer(get_obj_fcn, x0, bnds, coef_id, get_settings, opt_options)
res = optimizer.run()
assert np.allclose(res.x, np.array([20.13393]), rtol=1e-5, atol=1e-5)

# Test case 4: Test with multistart algorithm
settings = Settings(developer_mode=True, algorithm_choice="nlopt_mlsl_lds")
opt_options = _get_opt_settings(get_settings)
optimizer = Optimizer(get_obj_fcn, x0, bnds, coef_id, settings, opt_options)
settings = Settings(developer_mode=True, algorithm_choice="nlopt_sbplx")
opt_settings = _get_opt_settings(settings)
obj_fcn = get_obj_fcn(settings)
optimizer = Optimizer(obj_fcn, x0, bnds, coef_id, settings, opt_settings)
res = optimizer.run()
assert np.allclose(res.x, np.array([20.13393783]), rtol=1e-5, atol=1e-5)
assert np.allclose(res.x, np.array([20.13393]), rtol=1e-5, atol=1e-5)

0 comments on commit 3635afc

Please sign in to comment.