aGrUM  0.16.0
gum::prm::ClassBayesNet< GUM_SCALAR > Class Template Reference

This class decorates a gum::prm::Class<GUM_SCALAR> has an IBaseBayesNet. More...

#include <agrum/PRM/classBayesNet.h>

+ Inheritance diagram for gum::prm::ClassBayesNet< GUM_SCALAR >:
+ Collaboration diagram for gum::prm::ClassBayesNet< GUM_SCALAR >:

Public Member Functions

bool operator== (const IBayesNet< GUM_SCALAR > &from) const
 This operator compares 2 BNs ! More...
 
bool operator!= (const IBayesNet< GUM_SCALAR > &from) const
 
Size dim () const
 Returns the dimension (the number of free parameters) in this bayes net. More...
 
Size maxVarDomainSize () const
 
GUM_SCALAR minParam () const
 
GUM_SCALAR maxParam () const
 
GUM_SCALAR minNonZeroParam () const
 
GUM_SCALAR maxNonOneParam () const
 
std::string toString () const
 
NodeSet minimalCondSet (NodeId target, const NodeSet &soids) const
 
NodeSet minimalCondSet (const NodeSet &targets, const NodeSet &soids) const
 
double log10DomainSize () const
 
bool hasSameStructure (const DAGmodel &other)
 
Constructors & destructor.
 ClassBayesNet (const PRMClass< GUM_SCALAR > &c)
 Default constructor. More...
 
 ClassBayesNet (const ClassBayesNet< GUM_SCALAR > &from)
 Copy constructor. More...
 
ClassBayesNet< GUM_SCALAR > & operator= (const ClassBayesNet< GUM_SCALAR > &from)
 Copy operator. More...
 
virtual ~ClassBayesNet ()
 Destructor. More...
 
Variable manipulation methods.
virtual const Potential< GUM_SCALAR > & cpt (NodeId varId) const
 Returns the CPT of a node in this ClassBayesNet<GUM_SCALAR>. More...
 
virtual const VariableNodeMapvariableNodeMap () const
 See gum::IBaseBayesNet::variableNodeMap(). More...
 
virtual const DiscreteVariablevariable (NodeId id) const
 See gum::IBaseBayesNet::variable(). More...
 
virtual NodeId nodeId (const DiscreteVariable &var) const
 See gum::IBaseBayesNet::nodeId(). More...
 
virtual NodeId idFromName (const std::string &name) const
 See gum::IBaseBayesNet::idFromName(). More...
 
virtual const DiscreteVariablevariableFromName (const std::string &name) const
 See gum::IBaseBayesNet::variableFromName(). More...
 
const NodeProperty< Size > & modalities () const
 See gum::IBaseBayesNet::modalities(). More...
 
Graphical methods
virtual std::string toDot () const
 
Joint Probability manipulation methods
GUM_SCALAR jointProbability (const Instantiation &i) const
 Compute a parameter of the joint probability for the BN (given an instantiation of the vars) More...
 
GUM_SCALAR log2JointProbability (const Instantiation &i) const
 Compute a parameter of the log joint probability for the BN (given an instantiation of the vars) More...
 
Getter and setters
const std::string & property (const std::string &name) const
 Return the value of the property name of this DAGModel. More...
 
const std::string & propertyWithDefault (const std::string &name, const std::string &byDefault) const
 Return the value of the property name of this DAGModel. More...
 
void setProperty (const std::string &name, const std::string &value)
 Add or change a property of this DAGModel. More...
 
Variable manipulation methods.
const DAGdag () const
 Returns a constant reference to the dag of this Bayes Net. More...
 
Size size () const
 Returns the number of variables in this Directed Graphical Model. More...
 
Size sizeArcs () const
 Returns the number of arcs in this Directed Graphical Model. More...
 
bool empty () const
 Retursn true if this Directed Graphical Model is empty. More...
 
const NodeGraphPartnodes () const
 Returns a constant reference to the dag of this Bayes Net. More...
 
virtual Instantiation completeInstantiation () const final
 Get an instantiation over all the variables of the model. More...
 
Arc manipulation methods.
const ArcSetarcs () const
 returns the set of nodes with arc ingoing to a given node More...
 
const NodeSetparents (const NodeId id) const
 returns the set of nodes with arc ingoing to a given node More...
 
const NodeSetparents (const std::string &name) const
 returns the set of nodes with arc ingoing to a given node More...
 
const NodeSetchildren (const NodeId id) const
 returns the set of nodes with arc outgoing from a given node More...
 
const NodeSetchildren (const std::string &name) const
 returns the set of nodes with arc ingoing to a given node More...
 
Graphical methods
const UndiGraphmoralGraph (bool clear=true) const
 The node's id are coherent with the variables and nodes of the topology. More...
 
const Sequence< NodeId > & topologicalOrder (bool clear=true) const
 The topological order stays the same as long as no variable or arcs are added or erased src the topology. More...
 

Protected Attributes

DAG _dag
 The DAG of this Directed Graphical Model. More...
 

Detailed Description

template<typename GUM_SCALAR>
class gum::prm::ClassBayesNet< GUM_SCALAR >

This class decorates a gum::prm::Class<GUM_SCALAR> has an IBaseBayesNet.

Template Parameters
GUM_SCALARThe type of scalar to use.

This class filters PRMAttribute and PRMAggregate in a way it can be interpreted as a IBayesNet.

SlotChains and PRMReferenceSlot are not represented.

Remember that a ClassBayesNet<GUM_SCALAR> does not contain input nodes parents and output nodes children. Thus you should be careful when using one of the BayesNetInference over a ClassBayesNet<GUM_SCALAR> since some variables are missing in the DAG but not in the nodes CPT.

Definition at line 60 of file classBayesNet.h.

Constructor & Destructor Documentation

◆ ClassBayesNet() [1/2]

template<typename GUM_SCALAR >
INLINE gum::prm::ClassBayesNet< GUM_SCALAR >::ClassBayesNet ( const PRMClass< GUM_SCALAR > &  c)

Default constructor.

Parameters
cThe Class<GUM_SCALAR> decorated by this ClassBayesNet<GUM_SCALAR>.

Definition at line 61 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__init().

62  :
63  IBayesNet< GUM_SCALAR >(),
64  __class(&c) {
65  GUM_CONSTRUCTOR(ClassBayesNet);
66  __init(c);
67  }
void __init(const PRMClass< GUM_SCALAR > &c)
const PRMClass< GUM_SCALAR > * __class
The PRMClassElementContainer decorated by this.
ClassBayesNet(const PRMClass< GUM_SCALAR > &c)
Default constructor.
+ Here is the call graph for this function:

◆ ClassBayesNet() [2/2]

template<typename GUM_SCALAR >
INLINE gum::prm::ClassBayesNet< GUM_SCALAR >::ClassBayesNet ( const ClassBayesNet< GUM_SCALAR > &  from)

Copy constructor.

Definition at line 70 of file classBayesNet_tpl.h.

71  :
72  IBayesNet< GUM_SCALAR >(from),
73  __class(from.__class) {
74  GUM_CONS_CPY(ClassBayesNet);
75  }
const PRMClass< GUM_SCALAR > * __class
The PRMClassElementContainer decorated by this.
ClassBayesNet(const PRMClass< GUM_SCALAR > &c)
Default constructor.

◆ ~ClassBayesNet()

template<typename GUM_SCALAR >
INLINE gum::prm::ClassBayesNet< GUM_SCALAR >::~ClassBayesNet ( )
virtual

Destructor.

Definition at line 78 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::operator=().

78  {
79  GUM_DESTRUCTOR(ClassBayesNet);
80  }
ClassBayesNet(const PRMClass< GUM_SCALAR > &c)
Default constructor.
+ Here is the call graph for this function:

Member Function Documentation

◆ __get() [1/2]

template<typename GUM_SCALAR >
INLINE const PRMClassElement< GUM_SCALAR > & gum::prm::ClassBayesNet< GUM_SCALAR >::__get ( NodeId  id) const
private

Private getter with type checking in case the id is not a formal PRMAttribute.

Exceptions
NotFoundRaised if id is not a formal attribute.

Definition at line 132 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__class, gum::DAGmodel::_dag, gum::NodeGraphPart::exists(), and GUM_ERROR.

Referenced by gum::prm::ClassBayesNet< GUM_SCALAR >::cpt(), gum::prm::ClassBayesNet< GUM_SCALAR >::idFromName(), gum::prm::ClassBayesNet< GUM_SCALAR >::variable(), and gum::prm::ClassBayesNet< GUM_SCALAR >::variableFromName().

132  {
133  if (this->_dag.exists(id)) {
134  return __class->get(id);
135  } else {
136  GUM_ERROR(NotFound, "no element found with that id.");
137  }
138  }
const PRMClass< GUM_SCALAR > * __class
The PRMClassElementContainer decorated by this.
bool exists(const NodeId id) const
alias for existsNode
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
#define GUM_ERROR(type, msg)
Definition: exceptions.h:55
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __get() [2/2]

template<typename GUM_SCALAR >
INLINE const PRMClassElement< GUM_SCALAR > & gum::prm::ClassBayesNet< GUM_SCALAR >::__get ( const std::string &  name) const
private

Private getter with type checking in case the id is not a formal PRMAttribute.

Exceptions
NotFoundRaised if id is not a formal attribute.

Definition at line 142 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__class, and GUM_ERROR.

142  {
143  try {
144  return __class->get(name);
145  } catch (NotFound&) {
146  GUM_ERROR(NotFound, "no element found with that id.");
147  }
148  }
const PRMClass< GUM_SCALAR > * __class
The PRMClassElementContainer decorated by this.
#define GUM_ERROR(type, msg)
Definition: exceptions.h:55

◆ __init()

template<typename GUM_SCALAR >
void gum::prm::ClassBayesNet< GUM_SCALAR >::__init ( const PRMClass< GUM_SCALAR > &  c)
private

Definition at line 36 of file classBayesNet_tpl.h.

References gum::prm::PRMClassElementContainer< GUM_SCALAR >::containerDag(), gum::prm::PRMClass< GUM_SCALAR >::get(), gum::prm::PRMClassElement< GUM_SCALAR >::id(), gum::prm::PRMClassElement< GUM_SCALAR >::type(), and gum::prm::PRMType::variable().

Referenced by gum::prm::ClassBayesNet< GUM_SCALAR >::ClassBayesNet().

36  {
37  for (const auto node : c.containerDag().nodes()) {
38  try {
39  // Adding the attribute
42  const PRMClassElement< GUM_SCALAR >& elt = c.get(node);
43  this->_dag.addNodeWithId(elt.id());
44  this->__varNodeMap.insert(&(elt.type().variable()), &elt);
45  }
46  } catch (NotFound&) {
47  // Not an attribute
48  }
49  }
50 
51  for (const auto& arc : c.containerDag().arcs()) {
52  try {
53  this->_dag.addArc(arc.tail(), arc.head());
54  } catch (InvalidNode&) {
55  // Not added means not an attribute
56  }
57  }
58  }
virtual void addNodeWithId(const NodeId id)
try to insert a node with the given id
static INLINE bool isAttribute(const PRMClassElement< GUM_SCALAR > &elt)
Returns true if obj_ptr is of type PRMAttribute.
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
virtual void addArc(const NodeId tail, const NodeId head)
insert a new arc into the directed graph
Definition: DAG_inl.h:43
static INLINE bool isAggregate(const PRMClassElement< GUM_SCALAR > &elt)
Return true if obj is of type PRMAggregate.
HashTable< const DiscreteVariable *, const PRMClassElement< GUM_SCALAR > *> __varNodeMap
Mapping between DiscreteVariable and their NodeId.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ arcs()

INLINE const ArcSet & gum::DAGmodel::arcs ( ) const
inherited

returns the set of nodes with arc ingoing to a given node

Note that the set of arcs returned may be empty if no arc within the ArcGraphPart is ingoing into the given node.

Parameters
idthe node toward which the arcs returned are pointing

Definition at line 104 of file DAGmodel_inl.h.

References gum::DAGmodel::_dag, and gum::ArcGraphPart::arcs().

Referenced by gum::EssentialGraph::__buildEssentialGraph(), gum::DAGmodel::__moralGraph(), gum::MarkovBlanket::hasSameStructure(), and gum::DAGmodel::hasSameStructure().

104 { return _dag.arcs(); }
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
const ArcSet & arcs() const
returns the set of arcs stored within the ArcGraphPart
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ children() [1/2]

INLINE const NodeSet & gum::DAGmodel::children ( const NodeId  id) const
inherited

returns the set of nodes with arc outgoing from a given node

Note that the set of arcs returned may be empty if no arc within the ArcGraphPart is outgoing from the given node.

Parameters
idthe node which is the tail of the arcs returned

Definition at line 111 of file DAGmodel_inl.h.

References gum::DAGmodel::_dag, and gum::ArcGraphPart::children().

Referenced by gum::MarkovBlanket::__buildMarkovBlanket(), gum::DAGmodel::parents(), gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot(), and gum::prm::ClassBayesNet< GUM_SCALAR >::toDot().

111  {
112  return _dag.children(id);
113  }
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
const NodeSet & children(const NodeId id) const
returns the set of nodes with arc outgoing from a given node
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ children() [2/2]

const NodeSet& gum::DAGmodel::children ( const std::string &  name) const
inlineinherited

returns the set of nodes with arc ingoing to a given node

Note that the set of arcs returned may be empty if no arc within the ArcGraphPart is ingoing into the given node.

Parameters
idthe node toward which the arcs returned are pointing

Definition at line 165 of file DAGmodel.h.

References gum::DAGmodel::hasSameStructure(), gum::DAGmodel::idFromName(), gum::DAGmodel::log10DomainSize(), gum::DAGmodel::moralGraph(), gum::DAGmodel::operator=(), gum::DAGmodel::parents(), and gum::DAGmodel::topologicalOrder().

165  {
166  return parents(idFromName(name));
167  };
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:106
virtual NodeId idFromName(const std::string &name) const =0
Getter by name.
+ Here is the call graph for this function:

◆ completeInstantiation()

INLINE Instantiation gum::DAGmodel::completeInstantiation ( ) const
finalvirtualinherited

Get an instantiation over all the variables of the model.

Definition at line 86 of file DAGmodel_inl.h.

References gum::DAGmodel::dag(), and gum::DAGmodel::variable().

86  {
87  Instantiation I;
88 
89  for (const auto node : dag())
90  I << variable(node);
91 
92  return I;
93  }
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variabe given it&#39;s node id.
const DAG & dag() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:63
+ Here is the call graph for this function:

◆ cpt()

template<typename GUM_SCALAR >
INLINE const Potential< GUM_SCALAR > & gum::prm::ClassBayesNet< GUM_SCALAR >::cpt ( NodeId  varId) const
virtual

Returns the CPT of a node in this ClassBayesNet<GUM_SCALAR>.

If the node is an PRMAggregate, this will raise an OperationNotAllowed since PRMAggregate's CPT are define at instantiation only.

Parameters
varIda variable id.
Returns
the Potential of varId.
Exceptions
NotFoundraised if varId does not match any variable in this IBayesNet.
OperationNotAllowedraised if varId is an PRMAggregate.

Implements gum::IBayesNet< GUM_SCALAR >.

Definition at line 96 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__get().

96  {
97  return __get(varId).cpf();
98  }
const PRMClassElement< GUM_SCALAR > & __get(NodeId id) const
Private getter with type checking in case the id is not a formal PRMAttribute.
+ Here is the call graph for this function:

◆ dag()

◆ dim()

template<typename GUM_SCALAR >
Size gum::IBayesNet< GUM_SCALAR >::dim ( ) const
inherited

Returns the dimension (the number of free parameters) in this bayes net.

\( dim(G)=\sum_{i \in nodes} ((r_i-1)\cdot q_i) \) where \( r_i \) is the number of instantiations of node \( i \) and \( q_i \) is the number of instantiations of its parents.

Definition at line 79 of file IBayesNet_tpl.h.

79  {
80  Size dim = 0;
81 
82  for (auto node : nodes()) {
83  Size q = 1;
84 
85  for (auto parent : parents(node))
86  q *= variable(parent).domainSize();
87 
88  dim += (variable(node).domainSize() - 1) * q;
89  }
90 
91  return dim;
92  }
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:106
virtual Size domainSize() const =0
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variable given it&#39;s node id.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
Size dim() const
Returns the dimension (the number of free parameters) in this bayes net.
Definition: IBayesNet_tpl.h:79
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48

◆ empty()

INLINE bool gum::DAGmodel::empty ( ) const
inherited

Retursn true if this Directed Graphical Model is empty.

Definition at line 99 of file DAGmodel_inl.h.

References gum::DAGmodel::size().

99 { return size() == 0; }
Size size() const
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:96
+ Here is the call graph for this function:

◆ hasSameStructure()

bool gum::DAGmodel::hasSameStructure ( const DAGmodel other)
inherited
Returns
true if all the named node are the same and all the named arcs are the same

Definition at line 121 of file DAGmodel.cpp.

References gum::DAGmodel::arcs(), gum::Set< Key, Alloc >::exists(), gum::DAGmodel::idFromName(), gum::DAGmodel::nodes(), gum::DAGmodel::size(), gum::DAGmodel::sizeArcs(), and gum::DAGmodel::variable().

Referenced by gum::DAGmodel::children().

121  {
122  if (this == &other) return true;
123 
124  if (size() != other.size()) return false;
125 
126  if (sizeArcs() != other.sizeArcs()) return false;
127 
128  for (const auto& nid : nodes()) {
129  try {
130  other.idFromName(variable(nid).name());
131  } catch (NotFound) { return false; }
132  }
133 
134  for (const auto& arc : arcs()) {
135  if (!other.arcs().exists(Arc(other.idFromName(variable(arc.tail()).name()),
136  other.idFromName(variable(arc.head()).name()))))
137  return false;
138  }
139 
140  return true;
141  }
const ArcSet & arcs() const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:104
Size sizeArcs() const
Returns the number of arcs in this Directed Graphical Model.
Definition: DAGmodel_inl.h:102
Size size() const
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:96
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variabe given it&#39;s node id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ idFromName()

template<typename GUM_SCALAR >
INLINE NodeId gum::prm::ClassBayesNet< GUM_SCALAR >::idFromName ( const std::string &  name) const
virtual

See gum::IBaseBayesNet::idFromName().

Implements gum::IBayesNet< GUM_SCALAR >.

Definition at line 120 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__get().

120  {
121  return __get(name).id();
122  }
const PRMClassElement< GUM_SCALAR > & __get(NodeId id) const
Private getter with type checking in case the id is not a formal PRMAttribute.
+ Here is the call graph for this function:

◆ jointProbability()

template<typename GUM_SCALAR >
GUM_SCALAR gum::IBayesNet< GUM_SCALAR >::jointProbability ( const Instantiation i) const
inherited

Compute a parameter of the joint probability for the BN (given an instantiation of the vars)

Warning
a variable not present in the instantiation is assumed to be instantiated to 0.

Definition at line 220 of file IBayesNet_tpl.h.

220  {
221  auto value = (GUM_SCALAR)1.0;
222 
223  GUM_SCALAR tmp;
224 
225  for (auto node : nodes()) {
226  if ((tmp = cpt(node)[i]) == (GUM_SCALAR)0) { return (GUM_SCALAR)0; }
227 
228  value *= tmp;
229  }
230 
231  return value;
232  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115

◆ log10DomainSize()

INLINE double gum::DAGmodel::log10DomainSize ( ) const
inherited
Returns
Returns the log10 domain size of the joint probabilty for the Directed Graphical Model

Definition at line 75 of file DAGmodel_inl.h.

References gum::DAGmodel::nodes(), and gum::DAGmodel::variable().

Referenced by gum::DAGmodel::children(), and gum::InfluenceDiagram< GUM_SCALAR >::toString().

75  {
76  double dSize = 0.0;
77 
78  for (const auto node : nodes()) {
79  dSize += std::log10(variable(node).domainSize());
80  }
81 
82  return dSize;
83  }
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variabe given it&#39;s node id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ log2JointProbability()

template<typename GUM_SCALAR >
GUM_SCALAR gum::IBayesNet< GUM_SCALAR >::log2JointProbability ( const Instantiation i) const
inherited

Compute a parameter of the log joint probability for the BN (given an instantiation of the vars)

Compute a parameter of the joint probability for the BN (given an instantiation of the vars)

Warning
a variable not present in the instantiation is assumed to be instantiated to 0.

Definition at line 239 of file IBayesNet_tpl.h.

239  {
240  auto value = (GUM_SCALAR)0.0;
241 
242  GUM_SCALAR tmp;
243 
244  for (auto node : nodes()) {
245  if ((tmp = cpt(node)[i]) == (GUM_SCALAR)0) {
246  return (GUM_SCALAR)(-std::numeric_limits< double >::infinity());
247  }
248 
249  value += log2(cpt(node)[i]);
250  }
251 
252  return value;
253  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115

◆ maxNonOneParam()

template<typename GUM_SCALAR >
GUM_SCALAR gum::IBayesNet< GUM_SCALAR >::maxNonOneParam ( ) const
inherited
Returns
the biggest value (not equal to 1) in the CPTs of *this

Definition at line 135 of file IBayesNet_tpl.h.

135  {
136  GUM_SCALAR res = 0.0;
137  for (auto node : nodes()) {
138  auto v = cpt(node).maxNonOne();
139  if (v > res) { res = v; }
140  }
141  return res;
142  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115

◆ maxParam()

template<typename GUM_SCALAR >
GUM_SCALAR gum::IBayesNet< GUM_SCALAR >::maxParam ( ) const
inherited
Returns
the biggest value in the CPTs of *this

Definition at line 115 of file IBayesNet_tpl.h.

115  {
116  GUM_SCALAR res = 1.0;
117  for (auto node : nodes()) {
118  auto v = cpt(node).max();
119  if (v > res) { res = v; }
120  }
121  return res;
122  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115

◆ maxVarDomainSize()

template<typename GUM_SCALAR >
Size gum::IBayesNet< GUM_SCALAR >::maxVarDomainSize ( ) const
inherited
Returns
the biggest domainSize among the variables of *this

Definition at line 95 of file IBayesNet_tpl.h.

Referenced by gum::ImportanceSampling< GUM_SCALAR >::_onContextualize().

95  {
96  Size res = 0;
97  for (auto node : nodes()) {
98  auto v = variable(node).domainSize();
99  if (v > res) { res = v; }
100  }
101  return res;
102  }
virtual Size domainSize() const =0
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variable given it&#39;s node id.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
+ Here is the caller graph for this function:

◆ minimalCondSet() [1/2]

template<typename GUM_SCALAR >
NodeSet gum::IBayesNet< GUM_SCALAR >::minimalCondSet ( NodeId  target,
const NodeSet soids 
) const
inherited

Definition at line 355 of file IBayesNet_tpl.h.

356  {
357  if (soids.contains(target)) return NodeSet({target});
358 
359  NodeSet res;
360  NodeSet alreadyVisitedUp;
361  NodeSet alreadyVisitedDn;
362  alreadyVisitedDn << target;
363  alreadyVisitedUp << target;
364 
365  for (auto fath : _dag.parents(target))
367  fath, soids, res, alreadyVisitedUp, alreadyVisitedDn);
368  for (auto chil : _dag.children(target))
370  chil, soids, res, alreadyVisitedUp, alreadyVisitedDn);
371  return res;
372  }
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
void __minimalCondSetVisitUp(NodeId node, const NodeSet &soids, NodeSet &minimal, NodeSet &alreadyVisitedUp, NodeSet &alreadyVisitedDn) const
const NodeSet & children(const NodeId id) const
returns the set of nodes with arc outgoing from a given node
void __minimalCondSetVisitDn(NodeId node, const NodeSet &soids, NodeSet &minimal, NodeSet &alreadyVisitedUp, NodeSet &alreadyVisitedDn) const

◆ minimalCondSet() [2/2]

template<typename GUM_SCALAR >
NodeSet gum::IBayesNet< GUM_SCALAR >::minimalCondSet ( const NodeSet targets,
const NodeSet soids 
) const
inherited

Definition at line 375 of file IBayesNet_tpl.h.

376  {
377  NodeSet res;
378  for (auto node : targets) {
379  res += minimalCondSet(node, soids);
380  }
381  return res;
382  }
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...
NodeSet minimalCondSet(NodeId target, const NodeSet &soids) const

◆ minNonZeroParam()

template<typename GUM_SCALAR >
GUM_SCALAR gum::IBayesNet< GUM_SCALAR >::minNonZeroParam ( ) const
inherited
Returns
the smallest value (not equal to 0) in the CPTs of *this

Definition at line 125 of file IBayesNet_tpl.h.

Referenced by gum::ImportanceSampling< GUM_SCALAR >::_onContextualize().

125  {
126  GUM_SCALAR res = 1.0;
127  for (auto node : nodes()) {
128  auto v = cpt(node).minNonZero();
129  if (v < res) { res = v; }
130  }
131  return res;
132  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
+ Here is the caller graph for this function:

◆ minParam()

template<typename GUM_SCALAR >
GUM_SCALAR gum::IBayesNet< GUM_SCALAR >::minParam ( ) const
inherited
Returns
the smallest value in the CPTs of *this

Definition at line 105 of file IBayesNet_tpl.h.

105  {
106  GUM_SCALAR res = 1.0;
107  for (auto node : nodes()) {
108  auto v = cpt(node).min();
109  if (v < res) { res = v; }
110  }
111  return res;
112  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115

◆ modalities()

template<typename GUM_SCALAR >
INLINE const NodeProperty< Size > & gum::prm::ClassBayesNet< GUM_SCALAR >::modalities ( ) const

See gum::IBaseBayesNet::modalities().

Definition at line 152 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__modalities, gum::DAGmodel::nodes(), and gum::prm::ClassBayesNet< GUM_SCALAR >::variable().

Referenced by gum::prm::SVED< GUM_SCALAR >::__initLiftedNodes(), and gum::prm::SVE< GUM_SCALAR >::__initLiftedNodes().

152  {
153  if (__modalities.empty()) {
154  for (const auto node : this->nodes()) {
155  __modalities.insert(node, (Size)variable(node).domainSize());
156  }
157  }
158 
159  return __modalities;
160  }
virtual const DiscreteVariable & variable(NodeId id) const
See gum::IBaseBayesNet::variable().
NodeProperty< Size > __modalities
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ moralGraph()

const UndiGraph & gum::DAGmodel::moralGraph ( bool  clear = true) const
inherited

The node's id are coherent with the variables and nodes of the topology.

Parameters
clearIf false returns the previously created moral graph.

Definition at line 101 of file DAGmodel.cpp.

References gum::DAGmodel::__moralGraph(), gum::DAGmodel::__mutableMoralGraph, and gum::UndiGraph::clear().

Referenced by gum::prm::SVED< GUM_SCALAR >::__eliminateNodes(), gum::prm::SVE< GUM_SCALAR >::__eliminateNodes(), gum::prm::SVED< GUM_SCALAR >::__eliminateNodesWithEvidence(), gum::prm::SVE< GUM_SCALAR >::__eliminateNodesWithEvidence(), gum::prm::SVED< GUM_SCALAR >::__initLiftedNodes(), gum::prm::SVE< GUM_SCALAR >::__initLiftedNodes(), and gum::DAGmodel::children().

101  {
102  if (clear
103  || (__mutableMoralGraph == nullptr)) { // we have to call _moralGraph
104  if (__mutableMoralGraph == nullptr) {
105  __mutableMoralGraph = new UndiGraph();
106  } else {
107  // clear is True ,__mutableMoralGraph exists
109  }
110 
111  __moralGraph();
112  }
113 
114  return *__mutableMoralGraph;
115  }
virtual void clear()
removes all the nodes and edges from the graph
Definition: undiGraph_inl.h:43
UndiGraph * __mutableMoralGraph
The moral graph of this Directed Graphical Model.
Definition: DAGmodel.h:211
void __moralGraph() const
Returns the moral graph of this DAGModel.
Definition: DAGmodel.cpp:53
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nodeId()

template<typename GUM_SCALAR >
INLINE NodeId gum::prm::ClassBayesNet< GUM_SCALAR >::nodeId ( const DiscreteVariable var) const
virtual

See gum::IBaseBayesNet::nodeId().

Implements gum::IBayesNet< GUM_SCALAR >.

Definition at line 114 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__varNodeMap.

114  {
115  return __varNodeMap[&var]->id();
116  }
HashTable< const DiscreteVariable *, const PRMClassElement< GUM_SCALAR > *> __varNodeMap
Mapping between DiscreteVariable and their NodeId.

◆ nodes()

INLINE const NodeGraphPart & gum::DAGmodel::nodes ( ) const
inherited

Returns a constant reference to the dag of this Bayes Net.

Definition at line 115 of file DAGmodel_inl.h.

References gum::DAGmodel::_dag.

Referenced by gum::credal::CredalNet< GUM_SCALAR >::__bnCopy(), gum::EssentialGraph::__buildEssentialGraph(), gum::MarkovBlanket::__buildMarkovBlanket(), gum::DAGmodel::__moralGraph(), gum::credal::CredalNet< GUM_SCALAR >::__sort_varType(), gum::credal::CNMonteCarloSampling< GUM_SCALAR, BNInferenceEngine >::__verticesSampling(), gum::ImportanceSampling< GUM_SCALAR >::_unsharpenBN(), gum::BayesNetFactory< GUM_SCALAR >::BayesNetFactory(), gum::BayesNetFragment< GUM_SCALAR >::checkConsistency(), gum::learning::DAG2BNLearner< ALLOC >::createBN(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::disturbBN(), gum::Estimator< GUM_SCALAR >::Estimator(), gum::getMaxModality(), gum::DAGmodel::hasSameStructure(), gum::DAGmodel::log10DomainSize(), gum::prm::InstanceBayesNet< GUM_SCALAR >::modalities(), gum::prm::ClassBayesNet< GUM_SCALAR >::modalities(), gum::Estimator< GUM_SCALAR >::setFromBN(), gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot(), gum::prm::ClassBayesNet< GUM_SCALAR >::toDot(), gum::credal::CredalNet< GUM_SCALAR >::toString(), and gum::BayesNetFragment< GUM_SCALAR >::~BayesNetFragment().

115  {
116  return (NodeGraphPart&)_dag;
117  }
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
+ Here is the caller graph for this function:

◆ operator!=()

template<typename GUM_SCALAR>
bool gum::IBayesNet< GUM_SCALAR >::operator!= ( const IBayesNet< GUM_SCALAR > &  from) const
inherited
Returns
Returns false if the src and this are equal.

Definition at line 303 of file IBayesNet_tpl.h.

303  {
304  return !this->operator==(from);
305  }
bool operator==(const IBayesNet< GUM_SCALAR > &from) const
This operator compares 2 BNs !

◆ operator=()

template<typename GUM_SCALAR >
INLINE ClassBayesNet< GUM_SCALAR > & gum::prm::ClassBayesNet< GUM_SCALAR >::operator= ( const ClassBayesNet< GUM_SCALAR > &  from)

Copy operator.

Definition at line 84 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__class, and gum::IBayesNet< GUM_SCALAR >::operator=().

Referenced by gum::prm::ClassBayesNet< GUM_SCALAR >::~ClassBayesNet().

84  {
85  if (this != &from) {
87 
88  __class = from.__class;
89  }
90 
91  return *this;
92  }
const PRMClass< GUM_SCALAR > * __class
The PRMClassElementContainer decorated by this.
IBayesNet< GUM_SCALAR > & operator=(const IBayesNet< GUM_SCALAR > &source)
Copy operator.
Definition: IBayesNet_tpl.h:67
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator==()

template<typename GUM_SCALAR>
bool gum::IBayesNet< GUM_SCALAR >::operator== ( const IBayesNet< GUM_SCALAR > &  from) const
inherited

This operator compares 2 BNs !

Warning
To identify nodes between BNs, it is assumed that they share the same name.
Returns
true if the src and this are equal.

Definition at line 256 of file IBayesNet_tpl.h.

256  {
257  if (size() != from.size()) { return false; }
258 
259  if (sizeArcs() != from.sizeArcs()) { return false; }
260 
261  // alignment of variables between the 2 BNs
262  Bijection< const DiscreteVariable*, const DiscreteVariable* > alignment;
263 
264  for (auto node : nodes()) {
265  try {
266  alignment.insert(&variable(node),
267  &from.variableFromName(variable(node).name()));
268  } catch (NotFound&) {
269  // a name is not found in from
270  return false;
271  }
272  }
273 
274  for (auto node : nodes()) {
275  NodeId fromnode = from.idFromName(variable(node).name());
276 
277  if (cpt(node).nbrDim() != from.cpt(fromnode).nbrDim()) { return false; }
278 
279  if (cpt(node).domainSize() != from.cpt(fromnode).domainSize()) {
280  return false;
281  }
282 
283  Instantiation i(cpt(node));
284  Instantiation j(from.cpt(fromnode));
285 
286  for (i.setFirst(); !i.end(); i.inc()) {
287  for (Idx indice = 0; indice < cpt(node).nbrDim(); ++indice) {
288  const DiscreteVariable* p = &(i.variable(indice));
289  j.chgVal(*(alignment.second(p)), i.val(*p));
290  }
291 
292  if (std::pow(cpt(node).get(i) - from.cpt(fromnode).get(j), (GUM_SCALAR)2)
293  > (GUM_SCALAR)1e-6) {
294  return false;
295  }
296  }
297  }
298 
299  return true;
300  }
Size sizeArcs() const
Returns the number of arcs in this Directed Graphical Model.
Definition: DAGmodel_inl.h:102
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
Size size() const
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:96
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variable given it&#39;s node id.
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
Size NodeId
Type for node ids.
Definition: graphElements.h:98

◆ parents() [1/2]

INLINE const NodeSet & gum::DAGmodel::parents ( const NodeId  id) const
inherited

returns the set of nodes with arc ingoing to a given node

Note that the set of arcs returned may be empty if no arc within the ArcGraphPart is ingoing into the given node.

Parameters
idthe node toward which the arcs returned are pointing

Definition at line 106 of file DAGmodel_inl.h.

References gum::DAGmodel::_dag, and gum::ArcGraphPart::parents().

Referenced by gum::MarkovBlanket::__buildMarkovBlanket(), gum::DAGmodel::__moralGraph(), gum::BayesNetFragment< GUM_SCALAR >::_installCPT(), gum::BayesNetFragment< GUM_SCALAR >::checkConsistency(), gum::DAGmodel::children(), gum::BayesNetFragment< GUM_SCALAR >::installCPT(), gum::DAGmodel::parents(), gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot(), and gum::prm::ClassBayesNet< GUM_SCALAR >::toDot().

106  {
107  return _dag.parents(id);
108  }
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parents() [2/2]

const NodeSet& gum::DAGmodel::parents ( const std::string &  name) const
inlineinherited

returns the set of nodes with arc ingoing to a given node

Note that the set of arcs returned may be empty if no arc within the ArcGraphPart is ingoing into the given node.

Parameters
idthe node toward which the arcs returned are pointing

Definition at line 156 of file DAGmodel.h.

References gum::DAGmodel::children(), gum::DAGmodel::idFromName(), and gum::DAGmodel::parents().

156  {
157  return parents(idFromName(name));
158  };
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:106
virtual NodeId idFromName(const std::string &name) const =0
Getter by name.
+ Here is the call graph for this function:

◆ property()

INLINE const std::string & gum::DAGmodel::property ( const std::string &  name) const
inherited

Return the value of the property name of this DAGModel.

Exceptions
NotFoundRaised if no name property is found.

Definition at line 37 of file DAGmodel_inl.h.

References gum::DAGmodel::__properties(), and GUM_ERROR.

Referenced by gum::InfluenceDiagram< GUM_SCALAR >::toDot().

37  {
38  try {
39  return __properties()[name];
40  } catch (NotFound&) {
41  std::string msg = "The following property does not exists: ";
42  GUM_ERROR(NotFound, msg + name);
43  }
44  }
HashTable< std::string, std::string > & __properties() const
Return the properties of this Directed Graphical Model and initialize the hash table is necessary...
Definition: DAGmodel_inl.h:66
#define GUM_ERROR(type, msg)
Definition: exceptions.h:55
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ propertyWithDefault()

INLINE const std::string & gum::DAGmodel::propertyWithDefault ( const std::string &  name,
const std::string &  byDefault 
) const
inherited

Return the value of the property name of this DAGModel.

return byDefault if the property name is not found

Definition at line 48 of file DAGmodel_inl.h.

References gum::DAGmodel::__properties().

49  {
50  try {
51  return __properties()[name];
52  } catch (NotFound&) { return byDefault; }
53  }
HashTable< std::string, std::string > & __properties() const
Return the properties of this Directed Graphical Model and initialize the hash table is necessary...
Definition: DAGmodel_inl.h:66
+ Here is the call graph for this function:

◆ setProperty()

INLINE void gum::DAGmodel::setProperty ( const std::string &  name,
const std::string &  value 
)
inherited

Add or change a property of this DAGModel.

Definition at line 56 of file DAGmodel_inl.h.

References gum::DAGmodel::__properties(), and gum::HashTable< Key, Val, Alloc >::insert().

Referenced by gum::BayesNet< double >::fastPrototype().

56  {
57  try {
58  __properties()[name] = value;
59  } catch (NotFound&) { __properties().insert(name, value); }
60  }
HashTable< std::string, std::string > & __properties() const
Return the properties of this Directed Graphical Model and initialize the hash table is necessary...
Definition: DAGmodel_inl.h:66
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ size()

INLINE Size gum::DAGmodel::size ( ) const
inherited

Returns the number of variables in this Directed Graphical Model.

Definition at line 96 of file DAGmodel_inl.h.

References gum::DAGmodel::dag(), and gum::NodeGraphPart::size().

Referenced by gum::credal::CredalNet< GUM_SCALAR >::__initCNNets(), gum::InfluenceDiagram< GUM_SCALAR >::decisionNodeSize(), gum::DAGmodel::empty(), gum::MarkovBlanket::hasSameStructure(), gum::DAGmodel::hasSameStructure(), gum::IBayesNet< double >::operator==(), gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot(), and gum::prm::ClassBayesNet< GUM_SCALAR >::toDot().

96 { return dag().size(); }
Size size() const
alias for sizeNodes
const DAG & dag() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sizeArcs()

INLINE Size gum::DAGmodel::sizeArcs ( ) const
inherited

Returns the number of arcs in this Directed Graphical Model.

Definition at line 102 of file DAGmodel_inl.h.

References gum::DAGmodel::_dag, and gum::ArcGraphPart::sizeArcs().

Referenced by gum::MarkovBlanket::hasSameStructure(), gum::DAGmodel::hasSameStructure(), and gum::IBayesNet< double >::operator==().

102 { return _dag.sizeArcs(); }
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
Size sizeArcs() const
indicates the number of arcs stored within the ArcGraphPart
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ toDot()

template<typename GUM_SCALAR >
INLINE std::string gum::prm::ClassBayesNet< GUM_SCALAR >::toDot ( ) const
virtual
Returns
Returns a dot representation of this IBayesNet.

Reimplemented from gum::IBayesNet< GUM_SCALAR >.

Definition at line 163 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__class, gum::DAGmodel::children(), gum::Variable::name(), gum::DAGmodel::nodes(), gum::DAGmodel::parents(), gum::DAGmodel::size(), and gum::prm::ClassBayesNet< GUM_SCALAR >::variable().

163  {
164  std::string tab = " ";
165  std::stringstream output;
166  output << "digraph \"";
167  output << __class->name() << "\" {" << std::endl;
168 
169  for (const auto node : this->nodes()) {
170  if (this->children(node).size() > 0)
171  for (const auto chi : this->children(node)) {
172  output << tab << "\"" << variable(node).name() << "\" -> ";
173  output << "\"" << variable(chi).name() << "\";" << std::endl;
174  }
175  else if (this->parents(node).size() == 0) {
176  output << tab << "\"" << variable(node).name() << "\";" << std::endl;
177  }
178  }
179 
180  output << "}" << std::endl;
181  return output.str();
182  }
const NodeSet & children(const NodeId id) const
returns the set of nodes with arc outgoing from a given node
Definition: DAGmodel_inl.h:111
virtual const DiscreteVariable & variable(NodeId id) const
See gum::IBaseBayesNet::variable().
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:106
const PRMClass< GUM_SCALAR > * __class
The PRMClassElementContainer decorated by this.
Size size() const
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:96
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
const std::string & name() const
returns the name of the variable
+ Here is the call graph for this function:

◆ topologicalOrder()

const Sequence< NodeId > & gum::DAGmodel::topologicalOrder ( bool  clear = true) const
inherited

The topological order stays the same as long as no variable or arcs are added or erased src the topology.

Parameters
clearIf false returns the previously created topology.

Definition at line 117 of file DAGmodel.cpp.

References gum::DAGmodel::dag(), and gum::DiGraph::topologicalOrder().

Referenced by gum::EssentialGraph::__buildEssentialGraph(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::__checkTemporalOrder(), gum::DAGmodel::children(), gum::InfluenceDiagram< GUM_SCALAR >::decisionOrderExists(), and gum::InfluenceDiagram< GUM_SCALAR >::getDecisionOrder().

117  {
118  return this->dag().topologicalOrder(clear);
119  }
const Sequence< NodeId > & topologicalOrder(bool clear=true) const
The topological order stays the same as long as no variable or arcs are added or erased src the topol...
Definition: diGraph.cpp:91
const DAG & dag() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ toString()

template<typename GUM_SCALAR >
INLINE std::string gum::IBayesNet< GUM_SCALAR >::toString ( ) const
inherited
Returns
Returns a string representation of this IBayesNet.

Definition at line 145 of file IBayesNet_tpl.h.

Referenced by gum::operator<<().

145  {
146  Size param = 0;
147  double dSize = log10DomainSize();
148 
149  for (auto node : nodes())
150  param += cpt(node).content()->realSize();
151 
152  double compressionRatio = log10(1.0 * param) - dSize;
153 
154  std::stringstream s;
155  s << "BN{nodes: " << size() << ", arcs: " << dag().sizeArcs() << ", ";
156 
157  if (dSize > 6)
158  s << "domainSize: 10^" << dSize;
159  else
160  s << "domainSize: " << std::round(std::pow(10.0, dSize));
161 
162  s << ", parameters: " << param << ", compression ratio: ";
163 
164  if (compressionRatio > -3)
165  s << trunc(100.0 - std::pow(10.0, compressionRatio + 2.0));
166  else
167  s << "100-10^" << compressionRatio + 2.0;
168 
169  s << "% }";
170 
171  return s.str();
172  }
virtual const Potential< GUM_SCALAR > & cpt(NodeId varId) const =0
Returns the CPT of a variable.
Size size() const
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:96
Size sizeArcs() const
indicates the number of arcs stored within the ArcGraphPart
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:115
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
double log10DomainSize() const
Definition: DAGmodel_inl.h:75
const DAG & dag() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:63
+ Here is the caller graph for this function:

◆ variable()

template<typename GUM_SCALAR >
INLINE const DiscreteVariable & gum::prm::ClassBayesNet< GUM_SCALAR >::variable ( NodeId  id) const
virtual

See gum::IBaseBayesNet::variable().

Implements gum::IBayesNet< GUM_SCALAR >.

Definition at line 108 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__get().

Referenced by gum::prm::ClassBayesNet< GUM_SCALAR >::modalities(), and gum::prm::ClassBayesNet< GUM_SCALAR >::toDot().

108  {
109  return __get(id).type().variable();
110  }
const PRMClassElement< GUM_SCALAR > & __get(NodeId id) const
Private getter with type checking in case the id is not a formal PRMAttribute.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ variableFromName()

template<typename GUM_SCALAR >
INLINE const DiscreteVariable & gum::prm::ClassBayesNet< GUM_SCALAR >::variableFromName ( const std::string &  name) const
virtual

See gum::IBaseBayesNet::variableFromName().

Implements gum::IBayesNet< GUM_SCALAR >.

Definition at line 125 of file classBayesNet_tpl.h.

References gum::prm::ClassBayesNet< GUM_SCALAR >::__get().

126  {
127  return __get(name).type().variable();
128  }
const PRMClassElement< GUM_SCALAR > & __get(NodeId id) const
Private getter with type checking in case the id is not a formal PRMAttribute.
+ Here is the call graph for this function:

◆ variableNodeMap()

template<typename GUM_SCALAR >
INLINE const VariableNodeMap & gum::prm::ClassBayesNet< GUM_SCALAR >::variableNodeMap ( ) const
virtual

See gum::IBaseBayesNet::variableNodeMap().

Implements gum::IBayesNet< GUM_SCALAR >.

Definition at line 102 of file classBayesNet_tpl.h.

References GUM_ERROR.

102  {
103  GUM_ERROR(FatalError, "Sorry no VarMap in a ClassBayesNet.");
104  }
#define GUM_ERROR(type, msg)
Definition: exceptions.h:55

Member Data Documentation

◆ __class

template<typename GUM_SCALAR>
const PRMClass< GUM_SCALAR >* gum::prm::ClassBayesNet< GUM_SCALAR >::__class
private

◆ __modalities

template<typename GUM_SCALAR>
NodeProperty< Size > gum::prm::ClassBayesNet< GUM_SCALAR >::__modalities
mutableprivate

Definition at line 149 of file classBayesNet.h.

Referenced by gum::prm::ClassBayesNet< GUM_SCALAR >::modalities().

◆ __varNodeMap

template<typename GUM_SCALAR>
HashTable< const DiscreteVariable*, const PRMClassElement< GUM_SCALAR >* > gum::prm::ClassBayesNet< GUM_SCALAR >::__varNodeMap
private

Mapping between DiscreteVariable and their NodeId.

Definition at line 134 of file classBayesNet.h.

Referenced by gum::prm::ClassBayesNet< GUM_SCALAR >::nodeId().

◆ _dag


The documentation for this class was generated from the following files: