From 8357fc7e02f15c2b38b0e0f2ffa587e802cb277f Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 16 Jan 2023 18:04:22 -0800 Subject: [PATCH] Fix python tests (and expose HybridBayesNet.error) --- gtsam/hybrid/hybrid.i | 1 + python/gtsam/tests/test_HybridFactorGraph.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/gtsam/hybrid/hybrid.i b/gtsam/hybrid/hybrid.i index 1b3401ef6..7cc93d4b0 100644 --- a/gtsam/hybrid/hybrid.i +++ b/gtsam/hybrid/hybrid.i @@ -143,6 +143,7 @@ class HybridBayesNet { // Standard interface: double logProbability(const gtsam::HybridValues& values) const; double evaluate(const gtsam::HybridValues& values) const; + double error(const gtsam::HybridValues& values) const; gtsam::HybridGaussianFactorGraph toFactorGraph( const gtsam::VectorValues& measurements) const; diff --git a/python/gtsam/tests/test_HybridFactorGraph.py b/python/gtsam/tests/test_HybridFactorGraph.py index d779f8cc0..d638344bb 100644 --- a/python/gtsam/tests/test_HybridFactorGraph.py +++ b/python/gtsam/tests/test_HybridFactorGraph.py @@ -211,14 +211,15 @@ class TestHybridGaussianFactorGraph(GtsamTestCase): # Convert to factor graph with given measurements. fg = bayesNet.toFactorGraph(measurements) - self.assertEqual(fg.size(), 4) + self.assertEqual(fg.size(), 3) # Check ratio between unnormalized posterior and factor graph is the same for all modes: for mode in [1, 0]: values.insert_or_assign(M(0), mode) self.assertAlmostEqual(bayesNet.evaluate(values) / - fg.error(values), - 0.025178994744461187) + np.exp(-fg.error(values)), + 0.6366197723675815) + self.assertAlmostEqual(bayesNet.error(values), fg.error(values)) # Test elimination. posterior = fg.eliminateSequential() @@ -292,7 +293,7 @@ class TestHybridGaussianFactorGraph(GtsamTestCase): # Convert to factor graph using measurements. fg = bayesNet.toFactorGraph(measurements) - self.assertEqual(fg.size(), 6) + self.assertEqual(fg.size(), 4) # Calculate ratio between Bayes net probability and the factor graph: expected_ratio = self.calculate_ratio(bayesNet, fg, values)