24 #include <gtsam/base/ConcurrentMap.h> 38 double avgConditionalSize;
39 std::size_t maxConditionalSize;
40 double avgSeparatorSize;
41 std::size_t maxSeparatorSize;
42 void print(
const std::string& s =
"")
const ;
47 FastVector<std::size_t> conditionalSizes;
48 FastVector<std::size_t> separatorSizes;
63 template<
class CLIQUE>
68 typedef boost::shared_ptr<This> shared_ptr;
75 typedef typename CLIQUE::ConditionalType ConditionalType;
76 typedef boost::shared_ptr<ConditionalType> sharedConditional;
77 typedef typename CLIQUE::BayesNetType BayesNetType;
78 typedef boost::shared_ptr<BayesNetType> sharedBayesNet;
79 typedef typename CLIQUE::FactorType FactorType;
80 typedef boost::shared_ptr<FactorType> sharedFactor;
81 typedef typename CLIQUE::FactorGraphType FactorGraphType;
82 typedef boost::shared_ptr<FactorGraphType> sharedFactorGraph;
83 typedef typename FactorGraphType::Eliminate Eliminate;
84 typedef typename CLIQUE::EliminationTraitsType EliminationTraitsType;
98 typedef FastVector<sharedClique>
Roots;
121 bool equals(
const This& other,
double tol = 1e-9)
const;
125 void print(
const std::string& s =
"",
126 const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const;
151 typename Nodes::const_iterator c =
nodes_.find(j);
153 throw std::out_of_range(
"Requested the BayesTree clique for a key that is not in the BayesTree");
169 sharedConditional
marginalFactor(
Key j,
const Eliminate&
function = EliminationTraitsType::DefaultEliminate)
const;
175 sharedFactorGraph
joint(
Key j1,
Key j2,
const Eliminate&
function = EliminationTraitsType::DefaultEliminate)
const;
181 sharedBayesNet
jointBayesNet(
Key j1,
Key j2,
const Eliminate&
function = EliminationTraitsType::DefaultEliminate)
const;
198 template<
class CONTAINER>
238 int parentnum = 0)
const;
254 friend class boost::serialization::access;
255 template<
class ARCHIVE>
256 void serialize(ARCHIVE & ar,
const unsigned int ) {
257 ar & BOOST_SERIALIZATION_NVP(
nodes_);
258 ar & BOOST_SERIALIZATION_NVP(
roots_);
266 template<
class CLIQUE>
270 typedef CLIQUE CliqueType;
271 typedef typename CLIQUE::ConditionalType Base;
273 boost::shared_ptr<CliqueType> clique;
280 this->keys_.assign(clique->conditional()->beginParents(), clique->conditional()->endParents());
283 void print(
const std::string& s=
"",
const KeyFormatter& formatter = DefaultKeyFormatter)
const {
284 clique->print(s +
"stored clique", formatter);
size_t numCachedSeparatorMarginals() const
Collect number of cliques with cached separator marginals.
Definition: BayesTree-inst.h:57
const sharedClique & clique(Key j) const
alternate syntax for matlab: find the clique that contains the variable with Key j
Definition: BayesTree.h:150
sharedConditional marginalFactor(Key j, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
Return marginal on any variable.
Definition: BayesTree-inst.h:260
void clear()
Remove all nodes.
Definition: BayesTree-inst.h:398
CLIQUE Clique
The clique type, normally BayesTreeClique.
Definition: BayesTree.h:71
A thin wrapper around std::vector that uses a custom allocator.
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:141
Definition: BayesTree.h:267
Roots roots_
Root cliques.
Definition: BayesTree.h:101
A thin wrapper around std::list that uses boost's fast_pool_allocator.
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:57
boost::shared_ptr< Clique > sharedClique
Shared pointer to a clique.
Definition: BayesTree.h:72
void saveGraph(const std::string &s, const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
Read only with side effects.
Definition: BayesTree-inst.h:66
A cluster-tree that eliminates to a Bayes tree.
Definition: BayesTree.h:33
void addFactorsToGraph(FactorGraph< FactorType > &graph) const
Add all cliques in this BayesTree to the specified factor graph.
Definition: BayesTree-inst.h:157
Definition: BayesTree.h:64
const Roots & roots() const
return root cliques
Definition: BayesTree.h:147
FastList< sharedClique > Cliques
A convenience class for a list of shared cliques.
Definition: BayesTree.h:87
bool equals(const This &other, double tol=1e-9) const
check equality
Definition: BayesTree-inst.h:220
void removeClique(sharedClique clique)
remove a clique: warning, can result in a forest
Definition: BayesTree-inst.h:414
void addClique(const sharedClique &clique, const sharedClique &parent_clique=sharedClique())
add a clique (top down)
Definition: BayesTree-inst.h:124
void removePath(sharedClique clique, BayesNetType &bn, Cliques &orphans)
Remove path from clique to root and return that path as factors plus a list of orphaned subtree roots...
Definition: BayesTree-inst.h:438
boost::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:33
Definition: FastList.h:38
Clique Node
Synonym for Clique (TODO: remove)
Definition: BayesTree.h:73
Key findParentClique(const CONTAINER &parents) const
Find parent clique of a conditional.
Definition: BayesTree-inst.h:228
sharedFactorGraph joint(Key j1, Key j2, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
return joint on two variables Limitation: can only calculate joint if cliques are disjoint or one of ...
Definition: BayesTree-inst.h:283
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:56
store all the sizes
Definition: BayesTree.h:46
A factor graph is a bipartite graph with factor nodes connected to variable nodes.
Definition: BayesTree.h:32
sharedClique sharedNode
Synonym for sharedClique (TODO: remove)
Definition: BayesTree.h:74
sharedBayesNet jointBayesNet(Key j1, Key j2, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
return joint on two variables as a BayesNet Limitation: can only calculate joint if cliques are disjo...
Definition: BayesTree-inst.h:292
A clique in a GaussianBayesTree.
Definition: GaussianBayesTree.h:35
FastVector< sharedClique > Roots
Root cliques.
Definition: BayesTree.h:98
const sharedNode operator[](Key j) const
Access node by variable.
Definition: BayesTree.h:144
This & operator=(const This &other)
Assignment operator.
Definition: BayesTree-inst.h:189
void removeTop(const KeyVector &keys, BayesNetType &bn, Cliques &orphans)
Given a list of indices, turn "contaminated" part of the tree back into a factor graph.
Definition: BayesTree-inst.h:463
clique statistics
Definition: BayesTree.h:37
ConcurrentMap< Key, sharedClique > Nodes
Map from keys to Clique.
Definition: BayesTree.h:90
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
size_t size() const
number of cliques
Definition: BayesTree-inst.h:115
Nodes nodes_
Map from indices to Clique.
Definition: BayesTree.h:95
void deleteCachedShortcuts()
Clear all shortcut caches - use before timing on marginal calculation to avoid residual cache data.
Definition: BayesTree-inst.h:406
BayesTreeCliqueData getCliqueData() const
Gather data on all cliques.
Definition: BayesTree-inst.h:38
Cliques removeSubtree(const sharedClique &subtree)
Remove the requested subtree.
Definition: BayesTree-inst.h:485
void fillNodesIndex(const sharedClique &subtree)
Fill the nodes index for a subtree.
Definition: BayesTree-inst.h:236
void insertRoot(const sharedClique &subtree)
Insert a new subtree with known parent clique.
Definition: BayesTree-inst.h:250
BayesTree()
Create an empty Bayes Tree.
Definition: BayesTree.h:107
void print(const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
print
Definition: BayesTree-inst.h:202
const Nodes & nodes() const
return nodes
Definition: BayesTree.h:141
bool empty() const
Check if there are any cliques in the tree.
Definition: BayesTree.h:136