Skip to content

Commit f9c4892

Browse files
committed
don't re-compute cost for voronoi plot
1 parent d4858b4 commit f9c4892

6 files changed

Lines changed: 25 additions & 16 deletions

File tree

papers/joss/param_plots.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@
239239
print("True parameter values:", true_value)
240240

241241
# Plot convergence
242-
cost_log = result.cost
242+
cost_log = result.cost_convergence
243243
iteration_numbers = list(range(1, len(cost_log) + 1))
244244
convergence_plot_dict = pybop.plot.StandardPlot(
245245
x=iteration_numbers,
@@ -318,7 +318,7 @@
318318
print("True parameter values:", true_value)
319319

320320
# Plot convergence
321-
cost_log = result.cost
321+
cost_log = result.cost_convergence
322322
iteration_numbers = list(range(1, len(cost_log) + 1))
323323
convergence_plot_dict = pybop.plot.StandardPlot(
324324
x=iteration_numbers,

pybop/_result.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ def __init__(
4545
self._x_model = [logger.x_model]
4646
self._x0 = [logger.x0]
4747
self._best_cost = [logger.cost_best]
48-
self._cost = [logger.cost_convergence]
49-
self._initial_cost = [logger.cost[0]]
48+
self._cost_convergence = [logger.cost_convergence]
49+
self._cost = [logger.cost]
5050
self._n_iterations = [logger.iteration]
5151
self._iteration_number = [logger.iteration_number]
5252
self._n_evaluations = [logger.evaluations]
@@ -83,11 +83,12 @@ def combine(results: list["Result"]) -> "Result":
8383
for x in result._best_cost # noqa: SLF001
8484
]
8585
ret._cost = [x for result in results for x in result._cost] # noqa: SLF001
86-
ret._initial_cost = [ # noqa: SLF001
86+
ret._cost_convergence = [ # noqa: SLF001
8787
x
8888
for result in results
89-
for x in result._initial_cost # noqa: SLF001
89+
for x in result._cost_convergence # noqa: SLF001
9090
]
91+
9192
ret._n_iterations = [ # noqa: SLF001
9293
x
9394
for result in results
@@ -208,10 +209,18 @@ def cost(self) -> np.ndarray:
208209
"""The log of the cost values."""
209210
return self._get_single_or_all("_cost")
210211

212+
@property
213+
def cost_convergence(self) -> np.ndarray:
214+
"""The log of the cost convergence values."""
215+
return self._get_single_or_all("_cost_convergence")
216+
211217
@property
212218
def initial_cost(self) -> float:
213219
"""The initial cost value(s)."""
214-
return self._get_single_or_all("_initial_cost")
220+
if len(self._cost) > 1:
221+
return [c[0] for c in self._cost]
222+
else:
223+
return self._cost[0][0]
215224

216225
@property
217226
def n_iterations(self) -> int:
@@ -346,7 +355,7 @@ def data_dict(self) -> dict:
346355
"x0": self._x0,
347356
"best_cost": self._best_cost,
348357
"cost": self._cost,
349-
"initial_cost": self._initial_cost,
358+
"cost_convergence": self._cost_convergence,
350359
"n_iterations": self._n_iterations,
351360
"iteration_number": self._iteration_number,
352361
"n_evaluations": self._n_evaluations,
@@ -442,13 +451,13 @@ def load_data(filename: str, file_format: str = "pickle") -> dict:
442451
("x_model", "x_model"),
443452
("x0", "x0"),
444453
("cost_best", "best_cost"),
445-
("cost_convergence", "cost"),
454+
("cost_convergence", "cost_convergence"),
455+
("cost", "cost"),
446456
("iteration", "n_iterations"),
447457
("iteration_number", "iteration_number"),
448458
("evaluations", "n_evaluations"),
449459
]:
450460
setattr(logger, logger_key, data[result_key][i])
451-
logger.cost = [data["initial_cost"][i]]
452461

453462
list_of_results.append(
454463
Result(

pybop/plot/convergence.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def convergence(result: "Result", show=True, **layout_kwargs):
2828
"""
2929

3030
# Extract log from the optimisation object
31-
cost_log = result.cost
31+
cost_log = result.cost_convergence
3232

3333
# Generate a list of iteration numbers
3434
iteration_numbers = list(range(1, len(cost_log) + 1))

pybop/plot/voronoi.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,7 @@ def surface(
263263
raise ValueError("This plot method requires two parameters.")
264264

265265
x_optim, y_optim = map(list, zip(*points, strict=False))
266-
f = result.problem.evaluate(
267-
result.problem.parameters.to_inputs_list(points)
268-
).get_values()
266+
f = result.cost
269267

270268
# Translate bounds, taking only the first two elements
271269
xlim, ylim = (

tests/unit/test_optimisation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,8 @@ def compare_result_data(self, result1, result2):
771771
np.testing.assert_array_equal(result1._x0, result2._x0)
772772
np.testing.assert_array_equal(result1._best_cost, result2._best_cost)
773773
np.testing.assert_array_equal(result1._cost, result2._cost)
774-
np.testing.assert_array_equal(result1._initial_cost, result2._initial_cost)
774+
np.testing.assert_array_equal(result1._cost_convergence, result2._cost_convergence)
775+
np.testing.assert_array_equal(result1.initial_cost, result2.initial_cost)
775776
np.testing.assert_array_equal(result1._n_iterations, result2._n_iterations)
776777
np.testing.assert_array_equal(
777778
result1._iteration_number, result2._iteration_number

tests/unit/test_sampling.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,8 @@ def compare_result_data(self, result1, result2):
309309
np.testing.assert_array_equal(result1._x0, result2._x0)
310310
np.testing.assert_array_equal(result1._best_cost, result2._best_cost)
311311
np.testing.assert_array_equal(result1._cost, result2._cost)
312-
np.testing.assert_array_equal(result1._initial_cost, result2._initial_cost)
312+
np.testing.assert_array_equal(result1._cost_convergence, result2._cost_convergence)
313+
np.testing.assert_array_equal(result1.initial_cost, result2.initial_cost)
313314
np.testing.assert_array_equal(result1._n_iterations, result2._n_iterations)
314315
np.testing.assert_array_equal(
315316
result1._iteration_number, result2._iteration_number

0 commit comments

Comments
 (0)