From 2e8f948e6639810d9f6cbb63d3967452d83b79bb Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Thu, 15 May 2025 18:27:59 -0400 Subject: [PATCH] fix regressions --- gtsam/discrete/tests/testDiscreteBayesNet.cpp | 6 +++--- gtsam/hybrid/HybridBayesNet.cpp | 2 +- gtsam/hybrid/tests/testHybridBayesNet.cpp | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gtsam/discrete/tests/testDiscreteBayesNet.cpp b/gtsam/discrete/tests/testDiscreteBayesNet.cpp index dd5d218f8..61e3a2820 100644 --- a/gtsam/discrete/tests/testDiscreteBayesNet.cpp +++ b/gtsam/discrete/tests/testDiscreteBayesNet.cpp @@ -99,9 +99,9 @@ TEST(DiscreteBayesNet, Asia) { // now sample from it DiscreteValues expectedSample{{Asia.first, 1}, {Dyspnea.first, 1}, - {XRay.first, 1}, {Tuberculosis.first, 0}, - {Smoking.first, 1}, {Either.first, 1}, - {LungCancer.first, 1}, {Bronchitis.first, 0}}; + {XRay.first, 0}, {Tuberculosis.first, 0}, + {Smoking.first, 1}, {Either.first, 0}, + {LungCancer.first, 0}, {Bronchitis.first, 1}}; SETDEBUG("DiscreteConditional::sample", false); auto actualSample = chordal2->sample(); EXPECT(assert_equal(expectedSample, actualSample)); diff --git a/gtsam/hybrid/HybridBayesNet.cpp b/gtsam/hybrid/HybridBayesNet.cpp index b8ef7741a..3445ae2da 100644 --- a/gtsam/hybrid/HybridBayesNet.cpp +++ b/gtsam/hybrid/HybridBayesNet.cpp @@ -188,7 +188,7 @@ HybridValues HybridBayesNet::sample(const HybridValues &given, } } // Sample a discrete assignment. - const DiscreteValues assignment = dbn.sample(given.discrete()); + const DiscreteValues assignment = dbn.sample(given.discrete(), rng); // Select the continuous Bayes net corresponding to the assignment. GaussianBayesNet gbn = choose(assignment); // Sample from the Gaussian Bayes net. diff --git a/gtsam/hybrid/tests/testHybridBayesNet.cpp b/gtsam/hybrid/tests/testHybridBayesNet.cpp index 3ddad23ff..2d9a483bf 100644 --- a/gtsam/hybrid/tests/testHybridBayesNet.cpp +++ b/gtsam/hybrid/tests/testHybridBayesNet.cpp @@ -90,7 +90,7 @@ TEST(HybridBayesNet, EvaluatePureDiscrete) { // sample std::mt19937_64 rng(42); - EXPECT(assert_equal(zero, bayesNet.sample(&rng))); + EXPECT(assert_equal(one, bayesNet.sample(&rng))); EXPECT(assert_equal(one, bayesNet.sample(one, &rng))); EXPECT(assert_equal(zero, bayesNet.sample(zero, &rng))); @@ -616,13 +616,13 @@ TEST(HybridBayesNet, Sampling) { double discrete_sum = std::accumulate(discrete_samples.begin(), discrete_samples.end(), decltype(discrete_samples)::value_type(0)); - EXPECT_DOUBLES_EQUAL(0.477, discrete_sum / num_samples, 1e-9); + EXPECT_DOUBLES_EQUAL(0.519, discrete_sum / num_samples, 1e-9); VectorValues expected; // regression for specific RNG seed #if __APPLE__ || _WIN32 - expected.insert({X(0), Vector1(-0.0131207162712)}); - expected.insert({X(1), Vector1(-0.499026377568)}); + expected.insert({X(0), Vector1(0.0252479903896)}); + expected.insert({X(1), Vector1(-0.513637101911)}); #elif __linux__ expected.insert({X(0), Vector1(-0.00799425182219)}); expected.insert({X(1), Vector1(-0.526463854268)});