Fix python tests (and expose HybridBayesNet.error)

release/4.3a0
Frank Dellaert 2023-01-16 18:04:22 -08:00
parent a5951d8d34
commit 8357fc7e02
2 changed files with 6 additions and 4 deletions

View File

@ -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;

View File

@ -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)