From a71008d7fd572b679c7816f19f707d2d2770c3b8 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Tue, 31 Dec 2024 20:35:36 -0500 Subject: [PATCH] new helper constructor for DiscreteConditional --- gtsam/discrete/DiscreteConditional.cpp | 11 ++++++++++- gtsam/discrete/DiscreteConditional.h | 11 +++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/gtsam/discrete/DiscreteConditional.cpp b/gtsam/discrete/DiscreteConditional.cpp index eeb5dca3f..8396b10e0 100644 --- a/gtsam/discrete/DiscreteConditional.cpp +++ b/gtsam/discrete/DiscreteConditional.cpp @@ -24,13 +24,13 @@ #include #include +#include #include #include #include #include #include #include -#include using namespace std; using std::pair; @@ -47,6 +47,15 @@ DiscreteConditional::DiscreteConditional(const size_t nrFrontals, const DecisionTreeFactor& f) : BaseFactor(f / (*f.sum(nrFrontals))), BaseConditional(nrFrontals) {} +/* ************************************************************************** */ +DiscreteConditional::DiscreteConditional(size_t nrFrontals, + const DecisionTreeFactor& f, + const Ordering& orderedKeys) + : BaseFactor(f), BaseConditional(nrFrontals) { + keys_.clear(); + keys_.insert(keys_.end(), orderedKeys.begin(), orderedKeys.end()); +} + /* ************************************************************************** */ DiscreteConditional::DiscreteConditional(size_t nrFrontals, const DiscreteKeys& keys, diff --git a/gtsam/discrete/DiscreteConditional.h b/gtsam/discrete/DiscreteConditional.h index 3ec9ae590..549504985 100644 --- a/gtsam/discrete/DiscreteConditional.h +++ b/gtsam/discrete/DiscreteConditional.h @@ -56,6 +56,17 @@ class GTSAM_EXPORT DiscreteConditional /// Construct from factor, taking the first `nFrontals` keys as frontals. DiscreteConditional(size_t nFrontals, const DecisionTreeFactor& f); + /** + * @brief Construct from DecisionTreeFactor, + * taking the first `nrFrontals` from `orderedKeys`. + * + * @param nrFrontals The number of frontal variables. + * @param f The DecisionTreeFactor to construct from. + * @param orderedKeys Ordered list of keys involved in the conditional. + */ + DiscreteConditional(size_t nrFrontals, const DecisionTreeFactor& f, + const Ordering& orderedKeys); + /** * Construct from DiscreteKeys and AlgebraicDecisionTree, taking the first * `nFrontals` keys as frontals, in the order given.