diff --git a/gtsam/hybrid/hybrid.i b/gtsam/hybrid/hybrid.i index 899c129e0..acda94638 100644 --- a/gtsam/hybrid/hybrid.i +++ b/gtsam/hybrid/hybrid.i @@ -87,7 +87,6 @@ class HybridBayesTreeClique { // double evaluate(const gtsam::HybridValues& values) const; }; -#include class HybridBayesTree { HybridBayesTree(); void print(string s = "HybridBayesTree\n", @@ -105,14 +104,29 @@ class HybridBayesTree { gtsam::DefaultKeyFormatter) const; }; +#include class HybridBayesNet { HybridBayesNet(); void add(const gtsam::HybridConditional& s); + void addMixture(const gtsam::GaussianMixture& s); + void addGaussian(const gtsam::GaussianConditional& s); + void addDiscrete(const gtsam::DiscreteConditional& s); + void addDiscrete(const gtsam::DiscreteKey& key, string spec); + void addDiscrete(const gtsam::DiscreteKey& key, + const gtsam::DiscreteKeys& parents, string spec); + void addDiscrete(const gtsam::DiscreteKey& key, + const std::vector& parents, string spec); + bool empty() const; size_t size() const; gtsam::KeySet keys() const; const gtsam::HybridConditional* at(size_t i) const; + + double evaluate(const gtsam::HybridValues& x) const; gtsam::HybridValues optimize() const; + gtsam::HybridValues sample(const gtsam::HybridValues &given) const; + gtsam::HybridValues sample() const; + void print(string s = "HybridBayesNet\n", const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter) const; diff --git a/python/gtsam/preamble/hybrid.h b/python/gtsam/preamble/hybrid.h index bae636d6a..7008a1f07 100644 --- a/python/gtsam/preamble/hybrid.h +++ b/python/gtsam/preamble/hybrid.h @@ -19,3 +19,4 @@ PYBIND11_MAKE_OPAQUE(std::vector); #endif PYBIND11_MAKE_OPAQUE(std::vector); +PYBIND11_MAKE_OPAQUE(std::vector); diff --git a/python/gtsam/specializations/hybrid.h b/python/gtsam/specializations/hybrid.h index bede6d86c..db5240117 100644 --- a/python/gtsam/specializations/hybrid.h +++ b/python/gtsam/specializations/hybrid.h @@ -1,4 +1,6 @@ py::bind_vector >(m_, "GaussianFactorVector"); - py::implicitly_convertible >(); + +py::bind_vector >(m_, "GaussianConditionalVector"); +py::implicitly_convertible >();