From 3bb34329d7e37938449f0439999474cd0f080be8 Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Wed, 1 Jul 2026 22:00:05 +0200 Subject: [PATCH 1/2] Fix summarize_filter_results last_estimates path --- src/pyrecest/evaluation/summarize_filter_results.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyrecest/evaluation/summarize_filter_results.py b/src/pyrecest/evaluation/summarize_filter_results.py index 89a58e7c0..66e7af0e2 100644 --- a/src/pyrecest/evaluation/summarize_filter_results.py +++ b/src/pyrecest/evaluation/summarize_filter_results.py @@ -27,6 +27,8 @@ def summarize_filter_results( "Provided both last_filter_states and last_estimates. Using last_estimates." ) filter_results = last_estimates + elif last_estimates is not None: + filter_results = last_estimates elif last_filter_states is not None: filter_results = last_filter_states else: From f96e39e9e0789da42e89c956ff0097186be62400 Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Wed, 1 Jul 2026 22:00:35 +0200 Subject: [PATCH 2/2] Add summarize last_estimates regression --- ...est_evaluation_summarize_filter_results.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/test_evaluation_summarize_filter_results.py b/tests/test_evaluation_summarize_filter_results.py index 9253c4100..7dab31dac 100644 --- a/tests/test_evaluation_summarize_filter_results.py +++ b/tests/test_evaluation_summarize_filter_results.py @@ -22,6 +22,33 @@ def test_rejects_jax_backend_explicitly(self): last_estimates=np.empty((0, 0), dtype=object), ) + @unittest.skipIf( + pyrecest.backend.__backend_name__ in ("pytorch", "jax"), + reason="Not supported on this backend", + ) + def test_accepts_last_estimates_without_last_filter_states(self): + groundtruths = np.empty((1, 1), dtype=object) + groundtruths[0, 0] = np.array([1.0, 2.0]) + last_estimates = np.array([[[1.0, 4.0]]]) + filter_configs = [{"name": "estimate-only"}] + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + summarized = summarize_filter_results( + scenario_config={"manifold": "Euclidean", "mtt": False}, + filter_configs=filter_configs, + runtimes=np.array([[0.25]]), + groundtruths=groundtruths, + run_failed=np.array([[False]]), + last_estimates=last_estimates, + ) + + self.assertIs(summarized, filter_configs) + self.assertAlmostEqual(summarized[0]["error_mean"], 2.0) + self.assertAlmostEqual(summarized[0]["error_std"], 0.0) + self.assertAlmostEqual(summarized[0]["time_mean"], 0.25) + self.assertAlmostEqual(summarized[0]["failure_rate"], 0.0) + @unittest.skipIf( pyrecest.backend.__backend_name__ in ("pytorch", "jax"), reason="Not supported on this backend",