Skip to content

Commit

Permalink
Remove some warnings (#1345)
Browse files Browse the repository at this point in the history
* removed startpoint method from minimize as its depracated and per default in the problem.

* Changed offset to one that should definitely catch the warning and test for warning.

* When loading a problem, we expect a warning.

* Trust-exact cannot handle bounds is an expected warning here.

* If hess is not traced, no need to compute imo

* Revert last changes, instead expect additional warning.

* Better catching of warnings

* Catch warnings?

* Removed startpoint methods from functions, all were uniform.

* added match as parameter to pytest.warns

* Removed warning, is already tested elsewhere.
  • Loading branch information
PaulJonasJost authored Apr 9, 2024
1 parent 30f7cd4 commit b68a3b5
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 44 deletions.
2 changes: 1 addition & 1 deletion pypesto/optimize/optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ def minimize(
"evaluated again. This can lead to increased "
"computation times. If possible, separate fun "
"and hess.",
stacklevel=1,
stacklevel=2,
)
if objective.grad is True:

Expand Down
26 changes: 17 additions & 9 deletions test/base/test_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,8 +433,8 @@ def test_trace_grad(self):
trace_record_grad=True,
trace_record_hess=False,
)

self.check_history()
with pytest.warns(RuntimeWarning, match="cannot handle bounds"):
self.check_history()

def test_trace_grad_integrated(self):
self.obj = rosen_for_sensi(
Expand All @@ -447,13 +447,18 @@ def test_trace_grad_integrated(self):
trace_record_grad=True,
trace_record_hess=False,
)

self.check_history()
# Expect RuntimeWarning since we cannot handle bounds and
# UserWarning for integrated=True
with pytest.warns(Warning) as warninfo:
self.check_history()
warns = {warn.category for warn in warninfo}
expected_warns = {RuntimeWarning, UserWarning}
assert warns == expected_warns

def test_trace_all(self):
self.obj = rosen_for_sensi(
max_sensi_order=2,
integrated=True,
integrated=False,
)["obj"]

self.history_options = HistoryOptions(
Expand All @@ -464,10 +469,11 @@ def test_trace_all(self):
trace_record_sres=True,
)
self.fix_pars = False
self.check_history()
with pytest.warns(RuntimeWarning, match="cannot handle bounds"):
self.check_history()

def test_trace_all_aggregated(self):
self.obj = rosen_for_sensi(max_sensi_order=2, integrated=True)["obj"]
self.obj = rosen_for_sensi(max_sensi_order=2, integrated=False)["obj"]

self.history_options = HistoryOptions(
trace_record=True,
Expand All @@ -478,7 +484,8 @@ def test_trace_all_aggregated(self):
)
self.obj = pypesto.objective.AggregatedObjective([self.obj, self.obj])
self.fix_pars = False
self.check_history()
with pytest.warns(RuntimeWarning, match="cannot handle bounds"):
self.check_history()


class CRFunModeHistoryTest(HistoryTest):
Expand Down Expand Up @@ -511,7 +518,8 @@ def test_trace_all(self):
)

self.fix_pars = False
self.check_history()
with pytest.warns(RuntimeWarning, match="cannot handle bounds"):
self.check_history()


@pytest.fixture(params=["memory", "csv", "hdf5", ""])
Expand Down
7 changes: 5 additions & 2 deletions test/base/test_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import tempfile

import numpy as np
import pytest
import scipy.optimize as so

import pypesto
Expand Down Expand Up @@ -94,7 +95,8 @@ def test_storage_problem(hdf5_file):
problem_writer = ProblemHDF5Writer(hdf5_file)
problem_writer.write(problem)
problem_reader = ProblemHDF5Reader(hdf5_file)
read_problem = problem_reader.read()
with pytest.warns(UserWarning, match="loading a problem"):
read_problem = problem_reader.read()
problem_attrs = [
value
for name, value in vars(ProblemHDF5Writer).items()
Expand Down Expand Up @@ -369,7 +371,8 @@ def test_storage_all():
filename = "test_file.hdf5"
try:
write_result(result=result, filename=filename)
result_read = read_result(filename=filename)
with pytest.warns(UserWarning, match="loading a problem"):
result_read = read_result(filename=filename)

# test optimize
for i, opt_res in enumerate(result.optimize_result.list):
Expand Down
31 changes: 13 additions & 18 deletions test/optimize/test_optimize.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ def test_unbounded_minimize(optimizer):
problem=problem,
optimizer=opt,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=options,
progress_bar=False,
)
Expand All @@ -229,7 +228,6 @@ def test_unbounded_minimize(optimizer):
problem=problem,
optimizer=opt,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=options,
progress_bar=False,
)
Expand Down Expand Up @@ -295,7 +293,6 @@ def check_minimize(problem, library, solver, allow_failed_starts=False):
problem=problem,
optimizer=optimizer,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
progress_bar=False,
)
Expand Down Expand Up @@ -328,7 +325,6 @@ def test_trim_results(problem):
problem=prob,
optimizer=optimizer,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
progress_bar=False,
)
Expand All @@ -340,7 +336,6 @@ def test_trim_results(problem):
problem=prob,
optimizer=optimizer,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
progress_bar=False,
)
Expand Down Expand Up @@ -369,7 +364,10 @@ def test_mpipoolengine():
)

# read results
result1 = read_result("temp_result.h5", problem=True, optimize=True)
with pytest.warns(UserWarning, match="You are loading a problem."):
result1 = read_result(
"temp_result.h5", problem=True, optimize=True
)
# set optimizer
optimizer = optimize.FidesOptimizer(verbose=40)
# initialize problem with x_guesses and objective
Expand Down Expand Up @@ -499,7 +497,6 @@ def test_ess(problem, local_optimizer, ess_type, request):

res = ess.minimize(
problem=problem,
startpoint_method=pypesto.startpoint.UniformStartpoints(),
)
print("ESS result: ", res.summary())

Expand Down Expand Up @@ -561,15 +558,15 @@ def test_scipy_integrated_grad():
optimizer = optimize.ScipyOptimizer(options={"maxiter": 10})
optimize_options = optimize.OptimizeOptions(allow_failed_starts=False)
history_options = pypesto.HistoryOptions(trace_record=True)
result = optimize.minimize(
problem=problem,
optimizer=optimizer,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
history_options=history_options,
progress_bar=False,
)
with pytest.warns(UserWarning, match="fun and hess as one func"):
result = optimize.minimize(
problem=problem,
optimizer=optimizer,
n_starts=1,
options=optimize_options,
history_options=history_options,
progress_bar=False,
)
assert (
len(result.optimize_result.history[0].get_fval_trace())
== result.optimize_result.history[0].n_fval
Expand All @@ -592,7 +589,6 @@ def test_ipopt_approx_grad():
problem=problem,
optimizer=optimizer,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
history_options=history_options,
progress_bar=False,
Expand All @@ -606,7 +602,6 @@ def test_ipopt_approx_grad():
problem=problem2,
optimizer=optimizer2,
n_starts=1,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
history_options=history_options,
progress_bar=False,
Expand Down
25 changes: 16 additions & 9 deletions test/profile/test_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,17 +113,24 @@ def test_engine_profiling(self):
pypesto.engine.MultiProcessEngine(),
pypesto.engine.MultiThreadEngine(),
]
for engine in engines:
expected_warns = [
pytest.warns(UserWarning, match="fun and hess as one func"),
pytest.warns(UserWarning, match="fun and hess as one func"),
warnings.catch_warnings(), # No warnings
warnings.catch_warnings(), # No warnings
]
for engine, expected_warn in zip(engines, expected_warns):
# run profiling, profile results get appended
# in self.result.profile_result
profile.parameter_profile(
problem=self.problem,
result=self.result,
optimizer=self.optimizer,
next_guess_method="fixed_step",
engine=engine,
progress_bar=False,
)
with expected_warn:
profile.parameter_profile(
problem=self.problem,
result=self.result,
optimizer=self.optimizer,
next_guess_method="fixed_step",
engine=engine,
progress_bar=False,
)

# check results
for count, _engine in enumerate(engines[1:]):
Expand Down
5 changes: 0 additions & 5 deletions test/visualize/test_visualize.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ def create_optimization_history():
problem=problem,
optimizer=optimizer,
n_starts=5,
startpoint_method=pypesto.startpoint.uniform,
options=optimize_options,
history_options=history_options,
progress_bar=False,
Expand Down Expand Up @@ -458,7 +457,6 @@ def test_parameters_hist():
problem=problem,
optimizer=optimizer,
n_starts=10,
startpoint_method=pypesto.startpoint.uniform,
progress_bar=False,
)

Expand Down Expand Up @@ -772,7 +770,6 @@ def test_optimizer_history_with_options():
reference=ref3,
trace_x="time",
trace_y="gradnorm",
offset_y=10.0,
)


Expand Down Expand Up @@ -814,15 +811,13 @@ def test_optimization_stats():
problem=problem,
optimizer=optimizer,
n_starts=10,
startpoint_method=pypesto.startpoint.uniform,
progress_bar=False,
)

result_2 = optimize.minimize(
problem=problem,
optimizer=optimizer,
n_starts=10,
startpoint_method=pypesto.startpoint.uniform,
progress_bar=False,
)

Expand Down

0 comments on commit b68a3b5

Please sign in to comment.