![]() |
aGrUM 3.0.0
a C++ library for (probabilistic) graphical models
|
Class representing a Bayesian network. More...
#include <agrum/BN/BayesNet.h>
Public Member Functions | |
| NodeId | addNoisyAND (const DiscreteVariable &var, GUM_SCALAR external_weight, NodeId id) |
| Add a variable, its associate node and a noisyAND implementation. | |
| NodeId | addNoisyAND (const DiscreteVariable &var, GUM_SCALAR external_weight) |
| Add a variable, its associate node and a noisyAND implementation. | |
| NodeId | addLogit (const DiscreteVariable &var, GUM_SCALAR external_weight, NodeId id) |
| Add a variable, its associate node and a Logit implementation. | |
| NodeId | addLogit (const DiscreteVariable &var, GUM_SCALAR external_weight) |
| Add a variable, its associate node and a Logit implementation. | |
| NodeId | addOR (const DiscreteVariable &var) |
| Add a variable, it's associate node and an OR implementation. | |
| NodeId | addAND (const DiscreteVariable &var) |
| Add a variable, it's associate node and an AND implementation. | |
| void | addWeightedArc (NodeId tail, NodeId head, GUM_SCALAR causalWeight) |
| Add an arc in the BN, and update arc.head's CPT. | |
| void | addWeightedArc (std::string_view tail, std::string_view head, GUM_SCALAR causalWeight) |
| Add an arc in the BN, and update arc.head's CPT. | |
| void | generateCPTs () const |
| randomly generates CPTs for a given structure | |
| void | generateCPT (NodeId node) const |
| randomly generate CPT for a given node in a given structure | |
| void | generateCPT (std::string_view name) const |
| void | changeTensor (NodeId id, Tensor< GUM_SCALAR > *newPot) |
| change the CPT associated to nodeId to newPot delete the old CPT associated to nodeId. | |
| void | changeTensor (std::string_view name, Tensor< GUM_SCALAR > *newPot) |
| BayesNet< GUM_SCALAR > | contextualize (const gum::Instantiation &observations, const gum::Instantiation &interventions) const |
| create a contextual BN from this and a set of hard observations and hard interventions. | |
| NodeId | idFromName (std::string_view name) const override |
| Returns the NodeId of a variable given its name. | |
| const VariableNodeMap & | variableNodeMap () const override |
| Returns a constant reference to the VariableNodeMap of this model. | |
| const DiscreteVariable & | variable (NodeId id) const override |
| Returns a constant reference over a variable given its node id. | |
| NodeId | nodeId (const DiscreteVariable &var) const override |
| Returns the NodeId of a variable. | |
| const DiscreteVariable & | variableFromName (std::string_view name) const override |
| Returns a constant reference over a variable given its name. | |
| std::vector< std::string > | check () const |
| Check if the BayesNet is consistent (variables, CPT). | |
| bool | operator== (const IBayesNet< GUM_SCALAR > &from) const |
| This operator compares 2 BNs ! | |
| Size | dim () const |
| Returns the dimension (the number of free parameters) in this bayes net. | |
| Size | maxVarDomainSize () const |
| GUM_SCALAR | minParam () const |
| GUM_SCALAR | maxParam () const |
| GUM_SCALAR | minNonZeroParam () const |
| GUM_SCALAR | maxNonOneParam () const |
| virtual std::string | toDot () const |
| std::string | toString () const |
| Tensor< GUM_SCALAR > | evEq (std::string_view name, double value) const |
| Tensor< GUM_SCALAR > | evIn (std::string_view name, double val1, double val2) const |
| Tensor< GUM_SCALAR > | evLt (std::string_view name, double value) const |
| Tensor< GUM_SCALAR > | evGt (std::string_view name, double value) const |
| Size | memoryFootprint () const |
| compute the (approximated) footprint in memory of the model (the footprints of CPTs) | |
| bool | hasSameStructure (const DAGmodel &other) const |
| NodeSet | minimalCondSet (NodeId target, const NodeSet &soids) const |
| NodeSet | minimalCondSet (const NodeSet &targets, const NodeSet &soids) const |
| NodeSet | minimalCondSet (std::string_view target, const std::vector< std::string > &soids) const |
| NodeSet | minimalCondSet (const std::vector< std::string > &targets, const std::vector< std::string > &soids) const |
| const DAG & | internalDag () const |
| Returns a const reference to the internal (unnamed) DAG. O(1), no copy. Use for stable references or pointers (e.g. graph listeners). For named node access, use dag() instead. | |
| double | log10DomainSize () const |
Constructors and Destructor | |
| BayesNet () | |
| Default constructor. | |
| BayesNet (std::string_view name) | |
| Default constructor. | |
| ~BayesNet () override | |
| Destructor. | |
| BayesNet (const BayesNet< GUM_SCALAR > &source) | |
| Copy constructor. | |
| BayesNet (BayesNet< GUM_SCALAR > &&source) | |
| Move constructor. | |
Operators | |
| BayesNet< GUM_SCALAR > & | operator= (const BayesNet< GUM_SCALAR > &source) |
| Copy operator. | |
| BayesNet< GUM_SCALAR > & | operator= (BayesNet< GUM_SCALAR > &&source) |
| Move operator. | |
Variable manipulation methods | |
| const Tensor< GUM_SCALAR > & | cpt (NodeId varId) const final |
| Returns the CPT of a variable. | |
| const Tensor< GUM_SCALAR > & | cpt (std::string_view name) const |
| Returns the CPT of a variable. | |
| NodeId | add (const DiscreteVariable &var) |
| Add a variable to the gum::BayesNet. | |
| NodeId | add (std::string_view fast_description, unsigned int default_nbrmod=2) |
| Use "fast" syntax to add a variable in the BayesNet. | |
| NodeId | add (const DiscreteVariable &var, MultiDimImplementation< GUM_SCALAR > *aContent) |
| Add a variable to the gum::BayesNet. | |
| NodeId | add (const DiscreteVariable &var, NodeId id) |
| Add a variable to the gum::BayesNet. | |
| NodeId | add (const DiscreteVariable &var, MultiDimImplementation< GUM_SCALAR > *aContent, NodeId id) |
| Add a variable to the gum::BayesNet. | |
| void | clear () |
| clear the whole Bayes net * | |
| void | erase (NodeId varId) |
| Remove a variable from the gum::BayesNet. | |
| void | erase (std::string_view name) |
| Removes a variable from the gum::BayesNet. | |
| void | erase (const DiscreteVariable &var) |
| Remove a variable from the gum::BayesNet. | |
| const DiscreteVariable & | variable (std::string_view name) const |
| Returns a gum::DiscreteVariable given its name in the gum::BayesNet. | |
| void | changeVariableName (NodeId id, std::string_view new_name) |
| Changes a variable's name in the gum::BayesNet. | |
| void | changeVariableName (std::string_view name, std::string_view new_name) |
| Changes a variable's name. | |
| void | changeVariableLabel (NodeId id, std::string_view old_label, std::string_view new_label) |
| Changes a variable's label in the gum::BayesNet. | |
| void | changeVariableLabel (std::string_view name, std::string_view old_label, std::string_view new_label) |
| Changes a variable's name. | |
Arc manipulation methods. | |
| void | addArc (NodeId tail, NodeId head) |
| Add an arc in the BN, and update arc.head's CPT. | |
| void | addArc (std::string_view tail, std::string_view head) |
| Add an arc in the BN, and update arc.head's CPT. | |
| void | eraseArc (const Arc &arc) |
| Removes an arc in the BN, and update head's CTP. | |
| void | eraseArc (NodeId tail, NodeId head) |
| Removes an arc in the BN, and update head's CTP. | |
| void | eraseArc (std::string_view tail, std::string_view head) |
| Removes an arc in the BN, and update head's CTP. | |
| void | beginTopologyTransformation () |
| When inserting/removing arcs, node CPTs change their dimension with a cost in time. | |
| void | endTopologyTransformation () |
| terminates a sequence of insertions/deletions of arcs by adjusting all CPTs dimensions. | |
| void | reverseArc (NodeId tail, NodeId head) |
| Reverses an arc while preserving the same joint distribution. | |
| void | reverseArc (std::string_view tail, std::string_view head) |
| Reverses an arc while preserving the same joint distribution. | |
| void | reverseArc (const Arc &arc) |
| Reverses an arc while preserving the same joint distribution. | |
Accessors for nodes with CI or logical implementation | |
| NodeId | addNoisyOR (const DiscreteVariable &var, GUM_SCALAR external_weight) |
| Add a variable, it's associate node and a gum::noisyOR implementation. | |
| NodeId | addNoisyORNet (const DiscreteVariable &var, GUM_SCALAR external_weight) |
| Add a variable, it's associate node and a gum::noisyOR implementation. | |
| NodeId | addNoisyORCompound (const DiscreteVariable &var, GUM_SCALAR external_weight) |
| Add a variable, it's associate node and a gum::noisyOR implementation. | |
| NodeId | addNoisyOR (const DiscreteVariable &var, GUM_SCALAR external_weight, NodeId id) |
| Add a variable, its associate node and a noisyOR implementation. | |
| NodeId | addNoisyORNet (const DiscreteVariable &var, GUM_SCALAR external_weight, NodeId id) |
| Add a variable, its associate node and a noisyOR implementation. | |
| NodeId | addNoisyORCompound (const DiscreteVariable &var, GUM_SCALAR external_weight, NodeId id) |
| Add a variable, its associate node and a noisyOR implementation. | |
| NodeId | addAMPLITUDE (const DiscreteVariable &var) |
| Others aggregators. | |
| NodeId | addCOUNT (const DiscreteVariable &var, Idx value=1) |
| Others aggregators. | |
| NodeId | addEXISTS (const DiscreteVariable &var, Idx value=1) |
| Others aggregators. | |
| NodeId | addFORALL (const DiscreteVariable &var, Idx value=1) |
| Others aggregators. | |
| NodeId | addMAX (const DiscreteVariable &var) |
| Others aggregators. | |
| NodeId | addMEDIAN (const DiscreteVariable &var) |
| Others aggregators. | |
| NodeId | addMIN (const DiscreteVariable &var) |
| Others aggregators. | |
| NodeId | addSUM (const DiscreteVariable &var) |
| Others aggregators. | |
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). | |
| GUM_SCALAR | log2JointProbability (const Instantiation &i) const |
| Compute a parameter of the log joint probability for the BN (given an instantiation of the vars). | |
Variable manipulation methods. | |
| DAG | dag () const |
| Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding variable. | |
| Size | size () const final |
| Returns the number of variables in this Directed Graphical Model. | |
| Size | sizeArcs () const |
| Returns the number of arcs in this Directed Graphical Model. | |
| const NodeGraphPart & | nodes () const final |
| Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding variable. | |
| bool | exists (NodeId node) const final |
| Return true if this node exists in this graphical model. | |
| bool | exists (std::string_view name) const final |
| Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding variable. | |
Arc manipulation methods. | |
| const ArcSet & | arcs () const |
| return true if the arc tail->head exists in the DAGmodel | |
| bool | existsArc (const NodeId tail, const NodeId head) const |
| return true if the arc tail->head exists in the DAGmodel | |
| bool | existsArc (std::string_view nametail, std::string_view namehead) const |
| return true if the arc tail->head exists in the DAGmodel | |
| const NodeSet & | parents (const NodeId id) const |
| returns the set of nodes with arc ingoing to a given node | |
| const NodeSet & | parents (std::string_view name) const |
| return true if the arc tail->head exists in the DAGmodel | |
| NodeSet | parents (const NodeSet &ids) const |
| returns the parents of a set of nodes | |
| NodeSet | parents (const std::vector< std::string > &names) const |
| return true if the arc tail->head exists in the DAGmodel | |
| NodeSet | family (const NodeId id) const final |
| returns the parents of a node and the node | |
| NodeSet | family (std::string_view name) const final |
| return true if the arc tail->head exists in the DAGmodel | |
| const NodeSet & | children (const NodeId id) const |
| returns the set of nodes with arc outgoing from a given node | |
| const NodeSet & | children (std::string_view name) const |
| return true if the arc tail->head exists in the DAGmodel | |
| NodeSet | children (const NodeSet &ids) const |
| returns the children of a set of nodes | |
| NodeSet | children (const std::vector< std::string > &names) const |
| return true if the arc tail->head exists in the DAGmodel | |
| NodeSet | descendants (const NodeId id) const |
| returns the set of nodes with directed path outgoing from a given node | |
| NodeSet | descendants (std::string_view name) const |
| return true if the arc tail->head exists in the DAGmodel | |
| NodeSet | ancestors (const NodeId id) const |
| returns the set of nodes with directed path ingoing to a given node | |
| NodeSet | ancestors (std::string_view name) const |
| return true if the arc tail->head exists in the DAGmodel | |
Graphical methods | |
| UndiGraph | moralizedAncestralGraph (const NodeSet &nodes) const |
| build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes | |
| UndiGraph | moralizedAncestralGraph (const std::vector< std::string > &nodenames) const |
| build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes | |
| bool | isIndependent (NodeId X, NodeId Y, const NodeSet &Z) const final |
| check if node X and node Y are independent given nodes Z | |
| bool | isIndependent (const NodeSet &X, const NodeSet &Y, const NodeSet &Z) const final |
| check if nodes X and nodes Y are independent given nodes Z | |
| bool | isIndependent (std::string_view Xname, std::string_view Yname, const std::vector< std::string > &Znames) const |
| build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes | |
| bool | isIndependent (const std::vector< std::string > &Xnames, const std::vector< std::string > &Ynames, const std::vector< std::string > &Znames) const |
| build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes | |
| UndiGraph | moralGraph () const |
| The node's id are coherent with the variables and nodes of the topology. | |
| Sequence< NodeId > | topologicalOrder () const |
| The topological order stays the same as long as no variable or arcs are added or erased src the topology. | |
| NodeProperty< NodeId > | connectedComponents () const |
| Returns the weakly connected components of the underlying DAG. Each node maps to the id of its component root. | |
Getter and setters | |
| const std::string & | property (std::string_view name) const |
| Return the value of the property name of this GraphicalModel. | |
| const std::string & | propertyWithDefault (std::string_view name, const std::string &byDefault) const |
| Return the value of the property name of this GraphicalModel. | |
| void | setProperty (std::string_view name, std::string_view value) |
| Add or change a property of this GraphicalModel. | |
| std::vector< std::string > | properties () const |
| List of all the names of property in the Graphical model. | |
| bool | existsProperty (std::string_view name) const |
| check wether a property exists in this GraphicalModel | |
| void | updateMetaData () |
| update the meta data of this Graphical Model (version, creation date, last modification date) This method is called by the writers ONLY before writing the model to a file. | |
Variable manipulation methods. | |
| virtual bool | empty () const |
| Return true if this graphical model is empty. | |
| std::vector< std::string > | names (const std::vector< NodeId > &ids) const |
| transform a vector of NodeId in a vector of names | |
| std::vector< std::string > | names (const NodeSet &ids) const |
| transform a NodeSet in a vector of names | |
| std::vector< NodeId > | ids (const std::vector< std::string > &names) const |
| transform a vector of names into a vector of nodeId | |
| NodeSet | nodeset (const std::vector< std::string > &names) const |
| transform a vector of names into a NodeSet | |
| gum::VariableSet | variables (const std::vector< std::string > &l) const |
| transform a vector of names into a VariableeSet | |
| gum::VariableSet | variables (const NodeSet &ids) const |
| transform a vector of NodeId into a VariableeSet | |
| Instantiation | completeInstantiation () const |
| Get an instantiation over all the variables of the model. | |
Static Public Member Functions | |
| static BayesNet< GUM_SCALAR > | fastPrototype (std::string_view dotlike, Size domainSize) |
| Create a Bayesian network with a dot-like syntax which specifies: | |
| static BayesNet< GUM_SCALAR > | fastPrototype (std::string_view dotlike, std::string_view domainSize="[2]") |
| static std::string | spaceCplxToString (double dSize, int dim, Size usedMem) |
| send to the stream the space complexity with 3 parametrs | |
Protected Member Functions | |
| void | _nameNodes_ (NodeGraphPart &g) const |
| Names every node of g using variable(id).name() for each node id in g. | |
Protected Attributes | |
| DAG | dag_ |
| The DAG of this Directed Graphical Model. | |
| VariableNodeMap | varMap_ |
| Mapping between NodeIds and discrete variables. | |
Private Member Functions | |
| void | _clearTensors_ () |
| clear all tensors | |
| void | _copyTensors_ (const BayesNet< GUM_SCALAR > &source) |
| copy of tensors from a BN to another, using names of vars as ref. | |
| void | _unsafeChangeTensor_ (NodeId id, Tensor< GUM_SCALAR > *newPot) |
| change the CPT associated to nodeId to newPot delete the old CPT associated to nodeId. | |
| const HashTable< std::string, std::string > & | _properties_ () const |
| Return the properties of this Directed Graphical Model. | |
Private Attributes | |
| NodeProperty< Tensor< GUM_SCALAR > * > | _probaMap_ |
| Mapping between the variable's id and their CPT. | |
| HashTable< std::string, std::string > | _propertiesMap_ |
| The properties of this Directed Graphical Model. | |
Friends | |
| class | BayesNetFactory< GUM_SCALAR > |
Class representing a Bayesian network.
Bayesian networks are a probabilistic graphical model in which nodes are random variables and the probability distribution is defined by the product:
where \(\pi(X_i)\) is the parent of \(X_i\).
The probability distribution can be represented as a directed acyclic graph (DAG) where:
After a variable is added to the BN, it's domain cannot change. But it arcs are added, the data in its CPT are lost.
You should look a the gum::BayesNetFactory class which can help build Bayesian networks.
You can print a BayesNet using gum::operator<<(std::ostream&, const BayesNet<GUM_SCALAR>&).
Definition at line 93 of file BayesNet.h.
| gum::BayesNet< GUM_SCALAR >::BayesNet | ( | ) |
Default constructor.
Definition at line 128 of file BayesNet_tpl.h.
References BayesNet(), and gum::IBayesNet< GUM_SCALAR >::IBayesNet().
Referenced by BayesNet(), BayesNet(), BayesNet(), BayesNet(), ~BayesNet(), addMAX(), and operator=().
|
explicit |
Default constructor.
| name | The BayesNet's name. |
Definition at line 133 of file BayesNet_tpl.h.
References BayesNet(), and gum::IBayesNet< GUM_SCALAR >::IBayesNet().
|
override |
Destructor.
Definition at line 175 of file BayesNet_tpl.h.
References BayesNet(), and _probaMap_.
| gum::BayesNet< GUM_SCALAR >::BayesNet | ( | const BayesNet< GUM_SCALAR > & | source | ) |
Copy constructor.
Definition at line 138 of file BayesNet_tpl.h.
References BayesNet(), gum::IBayesNet< GUM_SCALAR >::IBayesNet(), and _copyTensors_().
| gum::BayesNet< GUM_SCALAR >::BayesNet | ( | BayesNet< GUM_SCALAR > && | source | ) |
Move constructor.
Definition at line 146 of file BayesNet_tpl.h.
References BayesNet(), gum::IBayesNet< GUM_SCALAR >::IBayesNet(), and _probaMap_.
|
private |
clear all tensors
Definition at line 557 of file BayesNet_tpl.h.
References _probaMap_.
Referenced by operator=().
|
private |
copy of tensors from a BN to another, using names of vars as ref.
Definition at line 568 of file BayesNet_tpl.h.
Referenced by BayesNet(), and operator=().
|
protectedinherited |
Names every node of g using variable(id).name() for each node id in g.
Call this before returning any newly constructed graph from a model method.
Definition at line 175 of file graphicalModel_inl.h.
References gum::NodeGraphPart::setName(), and variable().
Referenced by gum::DAGmodel::dag(), gum::UGmodel::graph(), gum::DAGmodel::moralGraph(), and gum::DAGmodel::moralizedAncestralGraph().
|
privateinherited |
Return the properties of this Directed Graphical Model.
Definition at line 67 of file graphicalModel_inl.h.
References _propertiesMap_.
Referenced by property().
|
private |
change the CPT associated to nodeId to newPot delete the old CPT associated to nodeId.
Definition at line 620 of file BayesNet_tpl.h.
References _probaMap_.
| NodeId gum::BayesNet< GUM_SCALAR >::add | ( | const DiscreteVariable & | var | ) |
Add a variable to the gum::BayesNet.
Add a gum::DiscreteVariable, it's associated gum::NodeId and it's gum::Tensor.
The variable is added by copy to the gum::BayesNet. The variable's gum::Tensor implementation will be a gum::MultiDimArray.
| var | The variable added by copy. |
| DuplicateLabel | Raised if variable.name() is already used in this gum::BayesNet. |
Definition at line 201 of file BayesNet_tpl.h.
References add().
Referenced by add(), add(), add(), add(), addAMPLITUDE(), addAND(), addCOUNT(), addEXISTS(), addLogit(), addMAX(), addMEDIAN(), addMIN(), addNoisyAND(), addNoisyAND(), addNoisyORCompound(), addNoisyORNet(), addNoisyORNet(), addOR(), addSUM(), gum::build_node(), and gum::BayesNetFragment< GUM_SCALAR >::toBN().
| NodeId gum::BayesNet< GUM_SCALAR >::add | ( | const DiscreteVariable & | var, |
| MultiDimImplementation< GUM_SCALAR > * | aContent ) |
Add a variable to the gum::BayesNet.
Add a gum::DiscreteVariable, it's associated gum::NodeId and it's gum::Tensor.
The variable is added by copy to the gum::BayesNet.
| var | The variable added by copy. |
| aContent | The gum::MultiDimImplementation to use for this variable's gum::Tensor implementation. |
| DuplicateLabel | Raised if variable.name() is already used in this gum::BayesNet. |
Definition at line 220 of file BayesNet_tpl.h.
References add(), and gum::DAGmodel::dag().
| NodeId gum::BayesNet< GUM_SCALAR >::add | ( | const DiscreteVariable & | var, |
| MultiDimImplementation< GUM_SCALAR > * | aContent, | ||
| NodeId | id ) |
Add a variable to the gum::BayesNet.
Add a gum::DiscreteVariable, it's associated gum::NodeId and it's gum::Tensor.
| var | The variable added by copy. |
| aContent | The gum::MultiDimImplementation to use for this variable's gum::Tensor implementation. |
| id | The variable's forced gum::NodeId in the gum::BayesNet. |
| DuplicateElement | Raised id is already used. |
| DuplicateLabel | Raised if variable.name() is already used in this gum::BayesNet. |
Definition at line 240 of file BayesNet_tpl.h.
References _probaMap_, cpt(), gum::DAGmodel::dag_, variable(), and gum::DiscreteGraphicalModel::varMap_.
| NodeId gum::BayesNet< GUM_SCALAR >::add | ( | const DiscreteVariable & | var, |
| NodeId | id ) |
Add a variable to the gum::BayesNet.
Add a gum::DiscreteVariable, it's associated gum::NodeId and it's gum::Tensor.
The variable is added by copy to the gum::BayesNet. The variable's gum::Tensor implementation will be a gum::MultiDimArray.
| var | The variable added by copy. |
| id | The variable's forced gum::NodeId in the gum::BayesNet. |
| DuplicateElement | Raised id is already used. |
| DuplicateLabel | Raised if variable.name() is already used in this gum::BayesNet. |
Definition at line 228 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::add | ( | std::string_view | fast_description, |
| unsigned int | default_nbrmod = 2 ) |
Use "fast" syntax to add a variable in the BayesNet.
| fast_description( | str) following "fast" syntax description |
| default_nbrmod( | int) nbr of modality if fast_description do not indicate it. default_nbrmod=1 is the way to create a variable with only one value (for instance for reward in influence diagram). |
| DuplicateLabel | Raised if variable.name() is already used in this gum::BayesNet. |
| NotAllowed | if nbrmod<2 |
Definition at line 212 of file BayesNet_tpl.h.
References add(), gum::fastVariable(), and GUM_ERROR.
| NodeId gum::BayesNet< GUM_SCALAR >::addAMPLITUDE | ( | const DiscreteVariable & | var | ) |
Others aggregators.
Definition at line 397 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addAND | ( | const DiscreteVariable & | var | ) |
Add a variable, it's associate node and an AND implementation.
The id of the new variable is automatically generated.
| var | The variable added by copy. |
| SizeError | if variable.domainSize()>2 |
Definition at line 402 of file BayesNet_tpl.h.
References add(), gum::DiscreteVariable::domainSize(), and GUM_ERROR.
| void gum::BayesNet< GUM_SCALAR >::addArc | ( | NodeId | tail, |
| NodeId | head ) |
Add an arc in the BN, and update arc.head's CPT.
| head | and |
| tail | as NodeId |
| InvalidEdge | If arc.tail and/or arc.head are not in the BN. |
| DuplicateElement | if the arc already exists |
Definition at line 289 of file BayesNet_tpl.h.
References gum::DAGmodel::dag_.
Referenced by addArc(), fastPrototype(), and gum::BayesNetFragment< GUM_SCALAR >::toBN().
| void gum::BayesNet< GUM_SCALAR >::addArc | ( | std::string_view | tail, |
| std::string_view | head ) |
Add an arc in the BN, and update arc.head's CPT.
| gum::DuplicateElement | if the arc already exists |
Definition at line 300 of file BayesNet_tpl.h.
References addArc(), and idFromName().
| NodeId gum::BayesNet< GUM_SCALAR >::addCOUNT | ( | const DiscreteVariable & | var, |
| Idx | value = 1 ) |
Others aggregators.
Definition at line 409 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addEXISTS | ( | const DiscreteVariable & | var, |
| Idx | value = 1 ) |
Others aggregators.
Definition at line 414 of file BayesNet_tpl.h.
References add(), gum::DiscreteVariable::domainSize(), and GUM_ERROR.
| NodeId gum::BayesNet< GUM_SCALAR >::addFORALL | ( | const DiscreteVariable & | var, |
| Idx | value = 1 ) |
Others aggregators.
Definition at line 421 of file BayesNet_tpl.h.
References gum::DiscreteVariable::domainSize(), and GUM_ERROR.
| NodeId gum::BayesNet< GUM_SCALAR >::addLogit | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight ) |
Add a variable, its associate node and a Logit implementation.
The id of the new variable is automatically generated.
| var | The variable added by copy. |
| external_weight | see gum::MultiDimLogit |
Definition at line 482 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addLogit | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight, | ||
| NodeId | id ) |
Add a variable, its associate node and a Logit implementation.
| var | The variable added by copy |
| external_weight | see gum::MultiDimLogit |
| id | proposed gum::nodeId for the variable |
Definition at line 501 of file BayesNet_tpl.h.
| NodeId gum::BayesNet< GUM_SCALAR >::addMAX | ( | const DiscreteVariable & | var | ) |
Others aggregators.
Definition at line 428 of file BayesNet_tpl.h.
References BayesNet(), add(), and addMAX().
Referenced by addMAX().
| NodeId gum::BayesNet< GUM_SCALAR >::addMEDIAN | ( | const DiscreteVariable & | var | ) |
Others aggregators.
Definition at line 433 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addMIN | ( | const DiscreteVariable & | var | ) |
Others aggregators.
Definition at line 438 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyAND | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight ) |
Add a variable, its associate node and a noisyAND implementation.
The id of the new variable is automatically generated.
| var | The variable added by copy. |
| external_weight | see gum::MultiDimNoisyAND |
Definition at line 476 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyAND | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight, | ||
| NodeId | id ) |
Add a variable, its associate node and a noisyAND implementation.
| var | The variable added by copy |
| external_weight | see gum::MultiDimNoisyAND |
| id | proposed gum::nodeId for the variable |
Definition at line 494 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyOR | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight ) |
Add a variable, it's associate node and a gum::noisyOR implementation.
The id of the new variable is automatically generated. Since it seems that the 'classical' noisyOR is the Compound noisyOR, we keep the gum::BayesNet::addNoisyOR as an alias for gum::BayesNet::addNoisyORCompound
| var | The variable added by copy. |
| external_weight | see ref gum::MultiDimNoisyORNet,gum::MultiDimNoisyORCompound |
Definition at line 458 of file BayesNet_tpl.h.
References addNoisyORCompound().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyOR | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight, | ||
| NodeId | id ) |
Add a variable, its associate node and a noisyOR implementation.
Since it seems that the 'classical' noisyOR is the Compound noisyOR, we keep the addNoisyOR as an alias for addNoisyORCompound.
| var | The variable added by copy. |
| external_weight | see gum::MultiDimNoisyORNet, gum::MultiDimNoisyORCompound |
| id | The chosen id |
| DuplicateElement | if id is already used |
Definition at line 487 of file BayesNet_tpl.h.
References addNoisyORCompound().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyORCompound | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight ) |
Add a variable, it's associate node and a gum::noisyOR implementation.
The id of the new variable is automatically generated. Since it seems that the 'classical' noisyOR is the Compound noisyOR, we keep the gum::BayesNet::addNoisyOR as an alias for gum::BayesNet::addNoisyORCompound
| var | The variable added by copy. |
| external_weight | see ref gum::MultiDimNoisyORNet,gum::MultiDimNoisyORCompound |
Definition at line 464 of file BayesNet_tpl.h.
Referenced by addNoisyOR(), and addNoisyOR().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyORCompound | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight, | ||
| NodeId | id ) |
Add a variable, its associate node and a noisyOR implementation.
Since it seems that the 'classical' noisyOR is the Compound noisyOR, we keep the addNoisyOR as an alias for addNoisyORCompound.
| var | The variable added by copy. |
| external_weight | see gum::MultiDimNoisyORNet, gum::MultiDimNoisyORCompound |
| id | The chosen id |
| DuplicateElement | if id is already used |
Definition at line 508 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyORNet | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight ) |
Add a variable, it's associate node and a gum::noisyOR implementation.
The id of the new variable is automatically generated. Since it seems that the 'classical' noisyOR is the Compound noisyOR, we keep the gum::BayesNet::addNoisyOR as an alias for gum::BayesNet::addNoisyORCompound
| var | The variable added by copy. |
| external_weight | see ref gum::MultiDimNoisyORNet,gum::MultiDimNoisyORCompound |
Definition at line 470 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addNoisyORNet | ( | const DiscreteVariable & | var, |
| GUM_SCALAR | external_weight, | ||
| NodeId | id ) |
Add a variable, its associate node and a noisyOR implementation.
Since it seems that the 'classical' noisyOR is the Compound noisyOR, we keep the addNoisyOR as an alias for addNoisyORCompound.
| var | The variable added by copy. |
| external_weight | see gum::MultiDimNoisyORNet, gum::MultiDimNoisyORCompound |
| id | The chosen id |
| DuplicateElement | if id is already used |
Definition at line 515 of file BayesNet_tpl.h.
References add().
| NodeId gum::BayesNet< GUM_SCALAR >::addOR | ( | const DiscreteVariable & | var | ) |
Add a variable, it's associate node and an OR implementation.
The id of the new variable is automatically generated.
| var | The variable added by copy. |
| SizeError | if variable.domainSize()>2 |
Definition at line 443 of file BayesNet_tpl.h.
References add(), gum::DiscreteVariable::domainSize(), and GUM_ERROR.
| NodeId gum::BayesNet< GUM_SCALAR >::addSUM | ( | const DiscreteVariable & | var | ) |
Others aggregators.
Definition at line 450 of file BayesNet_tpl.h.
References add().
| void gum::BayesNet< GUM_SCALAR >::addWeightedArc | ( | NodeId | tail, |
| NodeId | head, | ||
| GUM_SCALAR | causalWeight ) |
Add an arc in the BN, and update arc.head's CPT.
| head | and |
| tail | as NodeId |
| causalWeight | see gum::MultiDimICIModel |
| InvalidArc | If arc.tail and/or arc.head are not in the BN. |
| InvalidArc | If variable in arc.head is not a NoisyOR variable. |
Definition at line 522 of file BayesNet_tpl.h.
Referenced by addWeightedArc().
| void gum::BayesNet< GUM_SCALAR >::addWeightedArc | ( | std::string_view | tail, |
| std::string_view | head, | ||
| GUM_SCALAR | causalWeight ) |
Add an arc in the BN, and update arc.head's CPT.
| head | and |
| tail | as std::string |
| causalWeight | see gum::MultiDimICIModel |
| NotFound | if no node with sun names is found |
| InvalidArc | If arc.tail and/or arc.head are not in the BN. |
| InvalidArc | If variable in arc.head is not a NoisyOR variable. |
Definition at line 731 of file BayesNet_tpl.h.
References addWeightedArc(), and idFromName().
returns the set of nodes with directed path ingoing to a given node
Note that the set of nodes returned may be empty if no path within the ArcGraphPart is ingoing to the given node.
| id | the node which is the head of a directed path with the returned nodes |
| name | the name of the node which is the head of a directed path with the returned nodes |
Definition at line 135 of file DAGmodel_inl.h.
References dag_.
Referenced by ancestors().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 137 of file DAGmodel_inl.h.
References ancestors(), and gum::DiscreteGraphicalModel::idFromName().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 73 of file DAGmodel_inl.h.
References dag_.
Referenced by hasSameStructure(), gum::MarkovBlanket::hasSameStructure(), and gum::BayesNetFragment< GUM_SCALAR >::toBN().
| void gum::BayesNet< GUM_SCALAR >::beginTopologyTransformation | ( | ) |
When inserting/removing arcs, node CPTs change their dimension with a cost in time.
begin Multiple Change for all CPTs
These functions delay the CPTs change to be done just once at the end of a sequence of topology modification. begins a sequence of insertions/deletions of arcs without changing the dimensions of the CPTs.
Definition at line 543 of file BayesNet_tpl.h.
References _probaMap_, and gum::DAGmodel::nodes().
| void gum::BayesNet< GUM_SCALAR >::changeTensor | ( | NodeId | id, |
| Tensor< GUM_SCALAR > * | newPot ) |
change the CPT associated to nodeId to newPot delete the old CPT associated to nodeId.
| NotAllowed | if newPot has not the same signature as probaMap[NodeId] |
Definition at line 600 of file BayesNet_tpl.h.
References cpt(), and GUM_ERROR.
Referenced by changeTensor().
| void gum::BayesNet< GUM_SCALAR >::changeTensor | ( | std::string_view | name, |
| Tensor< GUM_SCALAR > * | newPot ) |
Definition at line 626 of file BayesNet_tpl.h.
References changeTensor(), and idFromName().
| void gum::BayesNet< GUM_SCALAR >::changeVariableLabel | ( | NodeId | id, |
| std::string_view | old_label, | ||
| std::string_view | new_label ) |
Changes a variable's label in the gum::BayesNet.
This will change the gum::LabelizedVariable names in the gum::BayesNet.
| DuplicateLabel | Raised if new_label is already used in this gum::LabelizedVariable. |
| NotFound | Raised if no variable matches id or if the variable is not a LabelizedVariable |
Definition at line 188 of file BayesNet_tpl.h.
Referenced by changeVariableLabel().
| void gum::BayesNet< GUM_SCALAR >::changeVariableLabel | ( | std::string_view | name, |
| std::string_view | old_label, | ||
| std::string_view | new_label ) |
Changes a variable's name.
Definition at line 714 of file BayesNet_tpl.h.
References changeVariableLabel(), and idFromName().
| void gum::BayesNet< GUM_SCALAR >::changeVariableName | ( | NodeId | id, |
| std::string_view | new_name ) |
Changes a variable's name in the gum::BayesNet.
This will change the gum::DiscreteVariable names in the gum::BayesNet.
| DuplicateLabel | Raised if newName is already used in this gum::BayesNet. |
| NotFound | Raised if no variable matches id. |
Definition at line 183 of file BayesNet_tpl.h.
References gum::DiscreteGraphicalModel::varMap_.
Referenced by changeVariableName().
| void gum::BayesNet< GUM_SCALAR >::changeVariableName | ( | std::string_view | name, |
| std::string_view | new_name ) |
Changes a variable's name.
Definition at line 708 of file BayesNet_tpl.h.
References changeVariableName(), and idFromName().
|
inherited |
Check if the BayesNet is consistent (variables, CPT).
Definition at line 322 of file IBayesNet_tpl.h.
References cpt(), gum::GraphicalModel::empty(), gum::DAGmodel::nodes(), gum::DAGmodel::parents(), and gum::DiscreteGraphicalModel::variable().
returns the set of nodes with arc outgoing from a given node
Note that the set of nodes returned may be empty if no node is outgoing from the given node.
| id | the node which is the tail of an arc with the returned nodes |
| name | the name of the node which is the tail of an arc with the returned nodes |
Definition at line 95 of file DAGmodel_inl.h.
References dag_.
Referenced by children(), gum::BayesNet< GUM_SCALAR >::erase(), gum::prm::ClassBayesNet< GUM_SCALAR >::toDot(), and gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot().
returns the children of a set of nodes
Definition at line 101 of file DAGmodel_inl.h.
References dag_, and gum::GraphicalModel::ids().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 103 of file DAGmodel_inl.h.
References children(), gum::GraphicalModel::names(), and gum::GraphicalModel::nodeset().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 97 of file DAGmodel_inl.h.
| void gum::BayesNet< GUM_SCALAR >::clear | ( | ) |
clear the whole Bayes net *
Definition at line 279 of file BayesNet_tpl.h.
References gum::GraphicalModel::empty(), erase(), and gum::DAGmodel::nodes().
|
inherited |
Get an instantiation over all the variables of the model.
Definition at line 104 of file graphicalModel_inl.h.
References nodes(), and variable().
|
inherited |
Returns the weakly connected components of the underlying DAG. Each node maps to the id of its component root.
Definition at line 125 of file DAGmodel_inl.h.
References dag_.
| BayesNet< GUM_SCALAR > gum::BayesNet< GUM_SCALAR >::contextualize | ( | const gum::Instantiation & | observations, |
| const gum::Instantiation & | interventions ) const |
create a contextual BN from this and a set of hard observations and hard interventions.
| observations | the hard observations |
| interventions | the hard interventions |
| ArgumentError | if the observations and interventions are not mutually exclusive |
Definition at line 632 of file BayesNet_tpl.h.
|
finalvirtual |
Returns the CPT of a variable.
| varId | A variable's id in the gum::BayesNet. |
| NotFound | If no variable's id matches varId. |
Implements gum::IBayesNet< GUM_SCALAR >.
Definition at line 253 of file BayesNet_tpl.h.
References _probaMap_.
Referenced by add(), changeTensor(), cpt(), generateCPT(), and gum::BayesNetFragment< GUM_SCALAR >::toBN().
| const Tensor< GUM_SCALAR > & gum::BayesNet< GUM_SCALAR >::cpt | ( | std::string_view | name | ) | const |
Returns the CPT of a variable.
Definition at line 693 of file BayesNet_tpl.h.
References cpt(), and idFromName().
|
nodiscardinherited |
Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding variable.
O(n) — allocates a new DAG. For a stable reference (listeners, long-lived pointers), use internalDag().
Definition at line 61 of file DAGmodel_inl.h.
References gum::GraphicalModel::_nameNodes_(), and dag_.
Referenced by gum::BayesNetFragment< GUM_SCALAR >::BayesNetFragment(), gum::MarginalTargetedInference< GUM_SCALAR >::MarginalTargetedInference(), gum::BayesNet< GUM_SCALAR >::add(), gum::BayesNet< GUM_SCALAR >::reverseArc(), and gum::InfluenceDiagram< GUM_SCALAR >::toString().
returns the set of nodes with directed path outgoing from a given node
Note that the set of nodes returned may be empty if no path within the ArcGraphPart is outgoing from the given node.
| id | the node which is the tail of a directed path with the returned nodes |
| name | the name of the node which is the tail of a directed path with the returned nodes |
Definition at line 129 of file DAGmodel_inl.h.
References dag_.
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 131 of file DAGmodel_inl.h.
|
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 114 of file IBayesNet_tpl.h.
References dim(), gum::DAGmodel::nodes(), gum::DAGmodel::parents(), and gum::DiscreteGraphicalModel::variable().
Referenced by dim().
|
virtualinherited |
Return true if this graphical model is empty.
Definition at line 114 of file graphicalModel_inl.h.
References size().
Referenced by gum::IBayesNet< GUM_SCALAR >::check(), and gum::BayesNet< GUM_SCALAR >::clear().
| void gum::BayesNet< GUM_SCALAR >::endTopologyTransformation | ( | ) |
terminates a sequence of insertions/deletions of arcs by adjusting all CPTs dimensions.
end Multiple Change for all CPTs
Definition at line 550 of file BayesNet_tpl.h.
References _probaMap_, and gum::DAGmodel::nodes().
| void gum::BayesNet< GUM_SCALAR >::erase | ( | const DiscreteVariable & | var | ) |
Remove a variable from the gum::BayesNet.
Removes the corresponding variable from the gum::BayesNet and from all of it's children gum::Tensor.
If no variable matches the given variable, then nothing is done.
| var | A reference on the variable to remove. |
Definition at line 258 of file BayesNet_tpl.h.
References erase(), and gum::DiscreteGraphicalModel::varMap_.
| void gum::BayesNet< GUM_SCALAR >::erase | ( | NodeId | varId | ) |
Remove a variable from the gum::BayesNet.
Removes the corresponding variable from the gum::BayesNet and from all of it's children gum::Tensor.
If no variable matches the given id, then nothing is done.
| varId | The variable's id to remove. |
Definition at line 263 of file BayesNet_tpl.h.
References _probaMap_, gum::DAGmodel::children(), gum::DAGmodel::dag_, variable(), and gum::DiscreteGraphicalModel::varMap_.
Referenced by clear(), erase(), and erase().
| void gum::BayesNet< GUM_SCALAR >::erase | ( | std::string_view | name | ) |
Removes a variable from the gum::BayesNet.
Definition at line 698 of file BayesNet_tpl.h.
References erase(), and idFromName().
| void gum::BayesNet< GUM_SCALAR >::eraseArc | ( | const Arc & | arc | ) |
Removes an arc in the BN, and update head's CTP.
If (tail, head) doesn't exist, the nothing happens.
| arc | The arc removed. |
Definition at line 309 of file BayesNet_tpl.h.
References _probaMap_, gum::DAGmodel::dag_, gum::Arc::head(), gum::Arc::tail(), variable(), and gum::DiscreteGraphicalModel::varMap_.
Referenced by eraseArc(), and eraseArc().
| void gum::BayesNet< GUM_SCALAR >::eraseArc | ( | NodeId | tail, |
| NodeId | head ) |
Removes an arc in the BN, and update head's CTP.
If (tail, head) doesn't exist, the nothing happens.
| head | and |
| tail | as NodeId |
Definition at line 320 of file BayesNet_tpl.h.
References eraseArc().
| void gum::BayesNet< GUM_SCALAR >::eraseArc | ( | std::string_view | tail, |
| std::string_view | head ) |
Removes an arc in the BN, and update head's CTP.
Definition at line 721 of file BayesNet_tpl.h.
References eraseArc(), and idFromName().
|
inherited |
Definition at line 386 of file IBayesNet_tpl.h.
References gum::Tensor< GUM_SCALAR >::evEq(), and gum::DiscreteGraphicalModel::variableFromName().
|
inherited |
Definition at line 397 of file IBayesNet_tpl.h.
References gum::Tensor< GUM_SCALAR >::evGt(), and gum::DiscreteGraphicalModel::variableFromName().
|
inherited |
Definition at line 392 of file IBayesNet_tpl.h.
References gum::Tensor< GUM_SCALAR >::evIn(), and gum::DiscreteGraphicalModel::variableFromName().
|
inherited |
Definition at line 402 of file IBayesNet_tpl.h.
References gum::Tensor< GUM_SCALAR >::evLt(), and gum::DiscreteGraphicalModel::variableFromName().
Return true if this node exists in this graphical model.
Implements gum::GraphicalModel.
Definition at line 113 of file DAGmodel_inl.h.
References dag_.
Referenced by gum::build_node(), gum::build_node_for_ID(), hasSameStructure(), gum::MarkovBlanket::hasSameStructure(), gum::IBayesNet< GUM_SCALAR >::operator==(), and gum::InfluenceDiagram< GUM_SCALAR >::operator==().
|
finalvirtualinherited |
Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding variable.
O(n) — allocates a new DAG. For a stable reference (listeners, long-lived pointers), use internalDag().
Implements gum::GraphicalModel.
Definition at line 115 of file DAGmodel_inl.h.
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 75 of file DAGmodel_inl.h.
References dag_.
Referenced by existsArc(), gum::BayesNet< GUM_SCALAR >::reverseArc(), gum::BayesNetFragment< GUM_SCALAR >::toDot(), and gum::BayesNetFragment< GUM_SCALAR >::whenArcDeleted().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 79 of file DAGmodel_inl.h.
References existsArc(), and gum::DiscreteGraphicalModel::idFromName().
|
inherited |
check wether a property exists in this GraphicalModel
Definition at line 170 of file graphicalModel_inl.h.
References _propertiesMap_.
returns the parents of a node and the node
| id | the node which is the head of an arc with the returned nodes |
| name | the name of the node the node which is the head of an arc with the returned nodes |
Implements gum::GraphicalModel.
Definition at line 89 of file DAGmodel_inl.h.
References dag_.
|
finalvirtualinherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Implements gum::GraphicalModel.
Definition at line 91 of file DAGmodel_inl.h.
References dag_, and gum::DiscreteGraphicalModel::idFromName().
|
static |
Create a Bayesian network with a dot-like syntax which specifies:
Note that if the dot-like string contains such a specification more than once for a variable, the first specification will be used.
| dotlike | the string containing the specification |
| domainSize | the default domain size for variables |
Definition at line 90 of file BayesNet_tpl.h.
References fastPrototype().
Referenced by fastPrototype().
|
static |
Definition at line 96 of file BayesNet_tpl.h.
References addArc(), gum::build_node(), gum::remove_newline(), and gum::split().
| void gum::BayesNet< GUM_SCALAR >::generateCPT | ( | NodeId | node | ) | const |
randomly generate CPT for a given node in a given structure
Definition at line 593 of file BayesNet_tpl.h.
References cpt(), and variable().
Referenced by generateCPT(), and generateCPTs().
| void gum::BayesNet< GUM_SCALAR >::generateCPT | ( | std::string_view | name | ) | const |
Definition at line 738 of file BayesNet_tpl.h.
References generateCPT(), and idFromName().
| void gum::BayesNet< GUM_SCALAR >::generateCPTs | ( | ) | const |
randomly generates CPTs for a given structure
Definition at line 587 of file BayesNet_tpl.h.
References generateCPT(), and gum::DAGmodel::nodes().
Definition at line 87 of file DAGmodel.cpp.
References DAGmodel(), arcs(), exists(), gum::Set< Key >::exists(), gum::DiscreteGraphicalModel::idFromName(), nodes(), size(), sizeArcs(), and gum::DiscreteGraphicalModel::variable().
|
overridevirtual |
Returns the NodeId of a variable given its name.
| NotFound | if no such name exists in the model. |
Implements gum::GraphicalModel.
Definition at line 104 of file discreteGraphicalModel_inl.h.
Referenced by addArc(), addWeightedArc(), gum::build_node(), changeTensor(), changeVariableLabel(), changeVariableName(), cpt(), erase(), eraseArc(), generateCPT(), reverseArc(), and variable().
|
inherited |
transform a vector of names into a vector of nodeId
Definition at line 139 of file graphicalModel_inl.h.
References names(), and variableNodeMap().
Referenced by gum::DAGmodel::children(), exists(), names(), names(), and gum::DAGmodel::parents().
|
inherited |
Returns a const reference to the internal (unnamed) DAG. O(1), no copy. Use for stable references or pointers (e.g. graph listeners). For named node access, use dag() instead.
Definition at line 58 of file DAGmodel_inl.h.
References dag_.
Referenced by gum::BayesNetFragment< GUM_SCALAR >::BayesNetFragment(), gum::MarkovBlanket::MarkovBlanket(), gum::BayesNetFragment< GUM_SCALAR >::installCPT(), gum::BayesNetFragment< GUM_SCALAR >::isInstalledNode(), gum::BayesBall::relevantTensors(), gum::dSeparationAlgorithm::relevantTensors(), gum::BayesNetFragment< GUM_SCALAR >::toBN(), gum::BayesNetFragment< GUM_SCALAR >::toDot(), and gum::BayesNetFragment< GUM_SCALAR >::whenArcDeleted().
|
finalvirtualinherited |
check if nodes X and nodes Y are independent given nodes Z
Implements gum::GraphicalModel.
Definition at line 156 of file DAGmodel_inl.h.
References dag_.
|
inherited |
build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes
| nodes | the set of nodeId |
| nodenames | the vector of names of nodes |
Definition at line 184 of file DAGmodel_inl.h.
|
finalvirtualinherited |
check if node X and node Y are independent given nodes Z
Implements gum::GraphicalModel.
Definition at line 152 of file DAGmodel_inl.h.
Referenced by gum::BayesNet< double >::ancestors(), and isIndependent().
|
inherited |
build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes
| nodes | the set of nodeId |
| nodenames | the vector of names of nodes |
Definition at line 178 of file DAGmodel_inl.h.
References gum::DiscreteGraphicalModel::idFromName(), isIndependent(), and gum::GraphicalModel::nodeset().
|
inherited |
Compute a parameter of the joint probability for the BN (given an instantiation of the vars).
Definition at line 238 of file IBayesNet_tpl.h.
|
inherited |
Definition at line 93 of file graphicalModel_inl.h.
References nodes().
Referenced by gum::IMarkovRandomField< GUM_SCALAR >::toString(), and gum::InfluenceDiagram< GUM_SCALAR >::toString().
|
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).
Definition at line 256 of file IBayesNet_tpl.h.
References cpt(), and gum::DAGmodel::nodes().
|
inherited |
Definition at line 170 of file IBayesNet_tpl.h.
|
inherited |
Definition at line 150 of file IBayesNet_tpl.h.
References gum::DAGmodel::nodes().
|
inherited |
Definition at line 130 of file IBayesNet_tpl.h.
References gum::DAGmodel::nodes(), and gum::DiscreteGraphicalModel::variable().
Referenced by gum::ImportanceSampling< GUM_SCALAR >::onContextualize_().
|
inherited |
|
inherited |
Definition at line 164 of file DAGmodel_inl.h.
|
inherited |
Definition at line 173 of file DAGmodel_inl.h.
|
inherited |
Definition at line 160 of file DAGmodel_inl.h.
Referenced by gum::ASTposteriorProba< GUM_SCALAR >::_compute_knw_from_bn().
|
inherited |
Definition at line 168 of file DAGmodel_inl.h.
References dag_, gum::DiscreteGraphicalModel::idFromName(), and gum::GraphicalModel::nodeset().
|
inherited |
Definition at line 160 of file IBayesNet_tpl.h.
Referenced by gum::ImportanceSampling< GUM_SCALAR >::onContextualize_().
|
inherited |
Definition at line 140 of file IBayesNet_tpl.h.
References gum::DAGmodel::nodes().
|
inherited |
The node's id are coherent with the variables and nodes of the topology.
Definition at line 81 of file DAGmodel.cpp.
References gum::GraphicalModel::_nameNodes_(), and dag_.
Referenced by gum::prm::SVE< GUM_SCALAR >::_eliminateNodes_(), gum::prm::SVED< GUM_SCALAR >::_eliminateNodes_(), gum::prm::SVE< GUM_SCALAR >::_eliminateNodesWithEvidence_(), gum::prm::SVED< GUM_SCALAR >::_eliminateNodesWithEvidence_(), gum::prm::SVE< GUM_SCALAR >::_initLiftedNodes_(), and gum::prm::SVED< GUM_SCALAR >::_initLiftedNodes_().
build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes
| nodes | the set of nodeId |
| nodenames | the vector of names of nodes |
Definition at line 146 of file DAGmodel_inl.h.
References gum::GraphicalModel::_nameNodes_(), dag_, and nodes().
Referenced by moralizedAncestralGraph().
|
inherited |
build a UndiGraph by moralizing the Ancestral Graph of a set of Nodes
| nodes | the set of nodeId |
| nodenames | the vector of names of nodes |
Definition at line 142 of file DAGmodel_inl.h.
References moralizedAncestralGraph(), and gum::GraphicalModel::nodeset().
|
inherited |
transform a NodeSet in a vector of names
Definition at line 129 of file graphicalModel_inl.h.
References ids(), gum::VariableNodeMap::name(), and variableNodeMap().
|
inherited |
transform a vector of NodeId in a vector of names
Definition at line 117 of file graphicalModel_inl.h.
References ids().
Referenced by gum::DAGmodel::children(), exists(), ids(), nodeset(), and gum::DAGmodel::parents().
|
overridevirtual |
Returns the NodeId of a variable.
| NotFound | if no variable matches var. |
Implements gum::GraphicalModel.
Definition at line 98 of file discreteGraphicalModel_inl.h.
|
finalvirtualinherited |
Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding variable.
O(n) — allocates a new DAG. For a stable reference (listeners, long-lived pointers), use internalDag().
Implements gum::GraphicalModel.
Definition at line 119 of file DAGmodel_inl.h.
References dag_.
Referenced by gum::BayesNetFragment< GUM_SCALAR >::BayesNetFragment(), gum::Estimator< GUM_SCALAR >::Estimator(), gum::BayesNetFragment< GUM_SCALAR >::~BayesNetFragment(), gum::credal::CNMonteCarloSampling< GUM_SCALAR, BNInferenceEngine >::_verticesSampling_(), gum::BayesNet< GUM_SCALAR >::beginTopologyTransformation(), gum::InfluenceDiagram< GUM_SCALAR >::beginTopologyTransformation(), gum::IBayesNet< GUM_SCALAR >::check(), gum::BayesNetFragment< GUM_SCALAR >::checkConsistency(), gum::BayesNet< GUM_SCALAR >::clear(), gum::InfluenceDiagram< GUM_SCALAR >::copyStructureAndTables_(), gum::IBayesNet< GUM_SCALAR >::dim(), gum::BayesNet< GUM_SCALAR >::endTopologyTransformation(), gum::InfluenceDiagram< GUM_SCALAR >::endTopologyTransformation(), gum::InfluenceDiagram< GUM_SCALAR >::fastPrototype(), gum::BayesNet< GUM_SCALAR >::generateCPTs(), gum::getMaxModality(), hasSameStructure(), gum::IBayesNet< GUM_SCALAR >::log2JointProbability(), gum::IBayesNet< GUM_SCALAR >::maxParam(), gum::IBayesNet< GUM_SCALAR >::maxVarDomainSize(), gum::IBayesNet< GUM_SCALAR >::minParam(), gum::prm::ClassBayesNet< GUM_SCALAR >::modalities(), gum::prm::InstanceBayesNet< GUM_SCALAR >::modalities(), moralizedAncestralGraph(), gum::IBayesNet< GUM_SCALAR >::operator==(), gum::InfluenceDiagram< GUM_SCALAR >::operator==(), gum::Estimator< GUM_SCALAR >::setFromBN(), gum::BayesNetFragment< GUM_SCALAR >::toBN(), gum::prm::ClassBayesNet< GUM_SCALAR >::toDot(), gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot(), and gum::ImportanceSampling< GUM_SCALAR >::unsharpenBN_().
|
inherited |
transform a vector of names into a NodeSet
Definition at line 102 of file graphicalModel.cpp.
References idFromName(), gum::Set< Key >::insert(), and names().
Referenced by gum::BayesNet< double >::ancestors(), gum::DAGmodel::children(), gum::DAGmodel::isIndependent(), gum::UGmodel::isIndependent(), gum::UGmodel::isIndependent(), gum::DAGmodel::minimalCondSet(), and gum::DAGmodel::moralizedAncestralGraph().
| BayesNet< GUM_SCALAR > & gum::BayesNet< GUM_SCALAR >::operator= | ( | BayesNet< GUM_SCALAR > && | source | ) |
Move operator.
| source | The moved BayesNet. |
Definition at line 164 of file BayesNet_tpl.h.
References gum::IBayesNet< GUM_SCALAR >::operator=().
| BayesNet< GUM_SCALAR > & gum::BayesNet< GUM_SCALAR >::operator= | ( | const BayesNet< GUM_SCALAR > & | source | ) |
Copy operator.
| source | The copied BayesNet. |
Definition at line 152 of file BayesNet_tpl.h.
References BayesNet(), _clearTensors_(), _copyTensors_(), and gum::IBayesNet< GUM_SCALAR >::operator=().
|
inherited |
This operator compares 2 BNs !
Definition at line 273 of file IBayesNet_tpl.h.
References IBayesNet(), gum::Instantiation::chgVal(), cpt(), gum::Instantiation::end(), gum::DAGmodel::exists(), gum::DiscreteGraphicalModel::idFromName(), gum::Instantiation::inc(), gum::Variable::name(), gum::DAGmodel::nodes(), gum::Instantiation::pos(), gum::Instantiation::setFirst(), gum::DAGmodel::size(), gum::DAGmodel::sizeArcs(), gum::Instantiation::val(), gum::DiscreteGraphicalModel::variable(), gum::Instantiation::variable(), and gum::DiscreteGraphicalModel::variableFromName().
returns the set of nodes with arc ingoing to a given node
Note that the set of nodes returned may be empty if no arc within the ArcGraphPart is ingoing into the given node.
| id | the node which is the head of an arc with the returned nodes |
| name | the name of the node the node which is the head of an arc with the returned nodes |
Definition at line 83 of file DAGmodel_inl.h.
References dag_.
Referenced by gum::IBayesNet< GUM_SCALAR >::check(), gum::BayesNetFragment< GUM_SCALAR >::checkConsistency(), gum::InfluenceDiagram< GUM_SCALAR >::copyStructureAndTables_(), gum::IBayesNet< GUM_SCALAR >::dim(), gum::ASTposteriorProba< GUM_SCALAR >::eval(), gum::BayesNetFragment< GUM_SCALAR >::installCPT(), gum::BayesNetFragment< GUM_SCALAR >::installCPT_(), parents(), gum::prm::ClassBayesNet< GUM_SCALAR >::toDot(), and gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot().
returns the parents of a set of nodes
Definition at line 107 of file DAGmodel_inl.h.
References dag_, and gum::GraphicalModel::ids().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 109 of file DAGmodel_inl.h.
References gum::GraphicalModel::names().
|
inherited |
return true if the arc tail->head exists in the DAGmodel
| tail | the nodeId (or the name) of the tail in tail->head |
| head | the nodeId (or the name) of the head in tail->head |
Definition at line 85 of file DAGmodel_inl.h.
References gum::DiscreteGraphicalModel::idFromName(), and parents().
|
inherited |
List of all the names of property in the Graphical model.
Definition at line 79 of file graphicalModel_inl.h.
References _propertiesMap_.
|
inherited |
Return the value of the property name of this GraphicalModel.
| NotFound | Raised if no name property is found. |
Definition at line 60 of file graphicalModel_inl.h.
References _properties_(), GUM_ERROR, and gum::HashTable< Key, Val >::tryGet().
|
inherited |
Return the value of the property name of this GraphicalModel.
return byDefault if the property name is not found
Definition at line 72 of file graphicalModel_inl.h.
References _propertiesMap_.
Referenced by gum::IBayesNet< GUM_SCALAR >::toDot(), gum::IMarkovRandomField< GUM_SCALAR >::toDot(), gum::InfluenceDiagram< GUM_SCALAR >::toDot(), and gum::IMarkovRandomField< GUM_SCALAR >::toDotAsFactorGraph().
| void gum::BayesNet< GUM_SCALAR >::reverseArc | ( | const Arc & | arc | ) |
Reverses an arc while preserving the same joint distribution.
This method uses Shachter's 1986 algorithm for reversing an arc in the Bayes net while preserving the same joint distribution. By performing this reversal, we also add new arcs (required to not alter the joint distribution)
| InvalidArc | exception if the arc does not exist or if its reversal would induce a directed cycle. |
Definition at line 325 of file BayesNet_tpl.h.
References gum::DAGmodel::dag(), gum::DAGmodel::existsArc(), GUM_ERROR, gum::Arc::head(), gum::Arc::tail(), and gum::DiscreteGraphicalModel::varMap_.
| void gum::BayesNet< GUM_SCALAR >::reverseArc | ( | NodeId | tail, |
| NodeId | head ) |
Reverses an arc while preserving the same joint distribution.
This method uses Shachter's 1986 algorithm for reversing an arc in the Bayes net while preserving the same joint distribution. By performing this reversal, we also add new arcs (required to not alter the joint distribution)
| InvalidArc | exception if the arc does not exist or if its reversal would induce a directed cycle. |
Definition at line 389 of file BayesNet_tpl.h.
References reverseArc().
Referenced by reverseArc(), and reverseArc().
| void gum::BayesNet< GUM_SCALAR >::reverseArc | ( | std::string_view | tail, |
| std::string_view | head ) |
Reverses an arc while preserving the same joint distribution.
This method uses Shachter's 1986 algorithm for reversing an arc in the Bayes net while preserving the same joint distribution. By performing this reversal, we also add new arcs (required to not alter the joint distribution)
| InvalidArc | exception if the arc does not exist or if its reversal would induce a directed cycle. |
Definition at line 726 of file BayesNet_tpl.h.
References idFromName(), and reverseArc().
|
inherited |
Add or change a property of this GraphicalModel.
Definition at line 87 of file graphicalModel_inl.h.
References _propertiesMap_.
Referenced by gum::IBayesNet< GUM_SCALAR >::IBayesNet(), gum::IMarkovRandomField< GUM_SCALAR >::IMarkovRandomField(), and gum::InfluenceDiagram< GUM_SCALAR >::fastPrototype().
|
finalvirtualinherited |
Returns the number of variables in this Directed Graphical Model.
Implements gum::GraphicalModel.
Definition at line 68 of file DAGmodel_inl.h.
References dag_.
Referenced by gum::InfluenceDiagram< GUM_SCALAR >::copyStructureAndTables_(), gum::InfluenceDiagram< GUM_SCALAR >::decisionNodeSize(), hasSameStructure(), gum::MarkovBlanket::hasSameStructure(), gum::IBayesNet< GUM_SCALAR >::operator==(), gum::InfluenceDiagram< GUM_SCALAR >::operator==(), gum::prm::ClassBayesNet< GUM_SCALAR >::toDot(), and gum::prm::InstanceBayesNet< GUM_SCALAR >::toDot().
|
inherited |
Returns the number of arcs in this Directed Graphical Model.
Definition at line 71 of file DAGmodel_inl.h.
References dag_.
Referenced by hasSameStructure(), gum::MarkovBlanket::hasSameStructure(), gum::IBayesNet< GUM_SCALAR >::operator==(), gum::InfluenceDiagram< GUM_SCALAR >::operator==(), and gum::InfluenceDiagram< GUM_SCALAR >::toString().
|
staticinherited |
send to the stream the space complexity with 3 parametrs
| s | the stream |
| dSize | the log10domainSize |
| dim | the dimension |
| usedMem | the memory needed for the params |
Definition at line 110 of file graphicalModel.cpp.
|
virtualinherited |
Reimplemented in gum::BayesNetFragment< GUM_SCALAR >, gum::prm::ClassBayesNet< GUM_SCALAR >, and gum::prm::InstanceBayesNet< GUM_SCALAR >.
Definition at line 198 of file IBayesNet_tpl.h.
References gum::GraphicalModel::propertyWithDefault().
The topological order stays the same as long as no variable or arcs are added or erased src the topology.
| clear | If false returns the previously created topology. |
Definition at line 123 of file DAGmodel_inl.h.
References dag_.
Referenced by gum::InfluenceDiagramGenerator< GUM_SCALAR >::_checkTemporalOrder_(), gum::InfluenceDiagram< GUM_SCALAR >::decisionOrder(), and gum::InfluenceDiagram< GUM_SCALAR >::decisionOrderExists().
|
inherited |
Definition at line 189 of file IBayesNet_tpl.h.
Referenced by gum::operator<<().
|
inherited |
update the meta data of this Graphical Model (version, creation date, last modification date) This method is called by the writers ONLY before writing the model to a file.
Definition at line 81 of file graphicalModel.cpp.
References _propertiesMap_.
|
overridevirtual |
Returns a constant reference over a variable given its node id.
| NotFound | if no variable's id matches id. |
Implements gum::GraphicalModel.
Definition at line 92 of file discreteGraphicalModel_inl.h.
| const DiscreteVariable & gum::BayesNet< GUM_SCALAR >::variable | ( | std::string_view | name | ) | const |
Returns a gum::DiscreteVariable given its name in the gum::BayesNet.
Definition at line 703 of file BayesNet_tpl.h.
References idFromName(), and variable().
Referenced by add(), erase(), eraseArc(), generateCPT(), gum::getMaxModality(), and variable().
|
overridevirtual |
Returns a constant reference over a variable given its name.
| NotFound | if no such name exists in the model. |
Implements gum::GraphicalModel.
Definition at line 110 of file discreteGraphicalModel_inl.h.
|
overridevirtual |
Returns a constant reference to the VariableNodeMap of this model.
Implements gum::GraphicalModel.
Definition at line 86 of file discreteGraphicalModel_inl.h.
|
inherited |
transform a vector of NodeId into a VariableeSet
Definition at line 160 of file graphicalModel_inl.h.
|
inherited |
transform a vector of names into a VariableeSet
Definition at line 150 of file graphicalModel_inl.h.
References gum::Set< Key >::insert(), gum::VariableNodeMap::variableFromName(), and variableNodeMap().
|
friend |
Definition at line 665 of file BayesNet.h.
|
private |
Mapping between the variable's id and their CPT.
Definition at line 639 of file BayesNet.h.
Referenced by BayesNet(), ~BayesNet(), _clearTensors_(), _unsafeChangeTensor_(), add(), beginTopologyTransformation(), cpt(), endTopologyTransformation(), erase(), and eraseArc().
|
privateinherited |
The properties of this Directed Graphical Model.
Definition at line 262 of file graphicalModel.h.
Referenced by GraphicalModel(), GraphicalModel(), _properties_(), existsProperty(), operator=(), operator=(), properties(), propertyWithDefault(), setProperty(), and updateMetaData().
|
protectedinherited |
The DAG of this Directed Graphical Model.
Definition at line 284 of file DAGmodel.h.
Referenced by DAGmodel(), DAGmodel(), gum::prm::ClassBayesNet< GUM_SCALAR >::_get_(), gum::prm::ClassBayesNet< GUM_SCALAR >::_init_(), gum::prm::InstanceBayesNet< GUM_SCALAR >::_init_(), gum::BayesNet< GUM_SCALAR >::add(), gum::BayesNet< GUM_SCALAR >::addArc(), gum::InfluenceDiagram< GUM_SCALAR >::addArc(), gum::InfluenceDiagram< GUM_SCALAR >::addNode_(), ancestors(), arcs(), children(), children(), connectedComponents(), dag(), descendants(), gum::BayesNet< GUM_SCALAR >::erase(), gum::InfluenceDiagram< GUM_SCALAR >::erase(), gum::BayesNet< GUM_SCALAR >::eraseArc(), gum::InfluenceDiagram< GUM_SCALAR >::eraseArc(), exists(), existsArc(), gum::InfluenceDiagram< GUM_SCALAR >::existsPathBetween(), family(), family(), gum::InfluenceDiagram< GUM_SCALAR >::getChildrenDecision_(), gum::InfluenceDiagram< GUM_SCALAR >::getDecisionGraph(), gum::InfluenceDiagram< GUM_SCALAR >::getPartialTemporalOrder(), gum::BayesNetFragment< GUM_SCALAR >::installArc_(), gum::BayesNetFragment< GUM_SCALAR >::installNode(), internalDag(), isIndependent(), minimalCondSet(), moralGraph(), gum::InfluenceDiagram< GUM_SCALAR >::moralGraph_(), moralizedAncestralGraph(), nodes(), operator=(), operator=(), parents(), parents(), size(), sizeArcs(), gum::InfluenceDiagram< GUM_SCALAR >::toDot(), topologicalOrder(), gum::BayesNetFragment< GUM_SCALAR >::uninstallArc_(), and gum::BayesNetFragment< GUM_SCALAR >::uninstallNode().
|
protectedinherited |
Mapping between NodeIds and discrete variables.
Definition at line 119 of file discreteGraphicalModel.h.
Referenced by DiscreteGraphicalModel(), DiscreteGraphicalModel(), gum::BayesNet< GUM_SCALAR >::add(), gum::InfluenceDiagram< GUM_SCALAR >::addNode_(), gum::BayesNet< GUM_SCALAR >::changeVariableName(), gum::InfluenceDiagram< GUM_SCALAR >::changeVariableName(), gum::BayesNet< GUM_SCALAR >::erase(), gum::BayesNet< GUM_SCALAR >::erase(), gum::InfluenceDiagram< GUM_SCALAR >::erase(), gum::InfluenceDiagram< GUM_SCALAR >::erase(), gum::BayesNet< GUM_SCALAR >::eraseArc(), idFromName(), nodeId(), operator=(), operator=(), gum::BayesNet< GUM_SCALAR >::reverseArc(), variable(), variableFromName(), and variableNodeMap().