From aa86af2d778953a1bbf4d0123aa208f6b0c3ea00 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sat, 24 Dec 2022 20:11:19 +0530 Subject: [PATCH] Revert "add optional model parameter to sample method" This reverts commit ffd1802ceaafd574517335bd34ddd525c8e1227b. --- gtsam/linear/GaussianBayesNet.cpp | 10 ++++------ gtsam/linear/GaussianBayesNet.h | 6 ++---- gtsam/linear/GaussianConditional.cpp | 22 +++++++--------------- gtsam/linear/GaussianConditional.h | 7 +++---- 4 files changed, 16 insertions(+), 29 deletions(-) diff --git a/gtsam/linear/GaussianBayesNet.cpp b/gtsam/linear/GaussianBayesNet.cpp index 8db301aa5..6dcf662a9 100644 --- a/gtsam/linear/GaussianBayesNet.cpp +++ b/gtsam/linear/GaussianBayesNet.cpp @@ -59,18 +59,16 @@ namespace gtsam { } /* ************************************************************************ */ - VectorValues GaussianBayesNet::sample(std::mt19937_64* rng, - const SharedDiagonal& model) const { + VectorValues GaussianBayesNet::sample(std::mt19937_64* rng) const { VectorValues result; // no missing variables -> create an empty vector - return sample(result, rng, model); + return sample(result, rng); } VectorValues GaussianBayesNet::sample(VectorValues result, - std::mt19937_64* rng, - const SharedDiagonal& model) const { + std::mt19937_64* rng) const { // sample each node in reverse topological sort order (parents first) for (auto cg : boost::adaptors::reverse(*this)) { - const VectorValues sampled = cg->sample(result, rng, model); + const VectorValues sampled = cg->sample(result, rng); result.insert(sampled); } return result; diff --git a/gtsam/linear/GaussianBayesNet.h b/gtsam/linear/GaussianBayesNet.h index e6dae6126..83328576f 100644 --- a/gtsam/linear/GaussianBayesNet.h +++ b/gtsam/linear/GaussianBayesNet.h @@ -101,8 +101,7 @@ namespace gtsam { * std::mt19937_64 rng(42); * auto sample = gbn.sample(&rng); */ - VectorValues sample(std::mt19937_64* rng, - const SharedDiagonal& model = nullptr) const; + VectorValues sample(std::mt19937_64* rng) const; /** * Sample from an incomplete BayesNet, given missing variables @@ -111,8 +110,7 @@ namespace gtsam { * VectorValues given = ...; * auto sample = gbn.sample(given, &rng); */ - VectorValues sample(VectorValues given, std::mt19937_64* rng, - const SharedDiagonal& model = nullptr) const; + VectorValues sample(VectorValues given, std::mt19937_64* rng) const; /// Sample using ancestral sampling, use default rng VectorValues sample() const; diff --git a/gtsam/linear/GaussianConditional.cpp b/gtsam/linear/GaussianConditional.cpp index 1a6620d62..951577641 100644 --- a/gtsam/linear/GaussianConditional.cpp +++ b/gtsam/linear/GaussianConditional.cpp @@ -279,38 +279,30 @@ namespace gtsam { /* ************************************************************************ */ VectorValues GaussianConditional::sample(const VectorValues& parentsValues, - std::mt19937_64* rng, - const SharedDiagonal& model) const { + std::mt19937_64* rng) const { if (nrFrontals() != 1) { throw std::invalid_argument( "GaussianConditional::sample can only be called on single variable " "conditionals"); } - - VectorValues solution = solve(parentsValues); - Key key = firstFrontalKey(); - - Vector sigmas; - if (model_) { - sigmas = model_->sigmas(); - } else if (model) { - sigmas = model->sigmas(); - } else { + if (!model_) { throw std::invalid_argument( "GaussianConditional::sample can only be called if a diagonal noise " "model was specified at construction."); } + VectorValues solution = solve(parentsValues); + Key key = firstFrontalKey(); + const Vector& sigmas = model_->sigmas(); solution[key] += Sampler::sampleDiagonal(sigmas, rng); return solution; } - VectorValues GaussianConditional::sample(std::mt19937_64* rng, - const SharedDiagonal& model) const { + VectorValues GaussianConditional::sample(std::mt19937_64* rng) const { if (nrParents() != 0) throw std::invalid_argument( "sample() can only be invoked on no-parent prior"); VectorValues values; - return sample(values, rng, model); + return sample(values); } /* ************************************************************************ */ diff --git a/gtsam/linear/GaussianConditional.h b/gtsam/linear/GaussianConditional.h index ccf916cd7..4822e3eaf 100644 --- a/gtsam/linear/GaussianConditional.h +++ b/gtsam/linear/GaussianConditional.h @@ -166,8 +166,7 @@ namespace gtsam { * std::mt19937_64 rng(42); * auto sample = gbn.sample(&rng); */ - VectorValues sample(std::mt19937_64* rng, - const SharedDiagonal& model = nullptr) const; + VectorValues sample(std::mt19937_64* rng) const; /** * Sample from conditional, given missing variables @@ -176,8 +175,8 @@ namespace gtsam { * VectorValues given = ...; * auto sample = gbn.sample(given, &rng); */ - VectorValues sample(const VectorValues& parentsValues, std::mt19937_64* rng, - const SharedDiagonal& model = nullptr) const; + VectorValues sample(const VectorValues& parentsValues, + std::mt19937_64* rng) const; /// Sample, use default rng VectorValues sample() const;