Model for Decision in PGM

class pyagrum.InfluenceDiagram(*args)
Section titled “class pyagrum.InfluenceDiagram(*args)”InfluenceDiagram represents an Influence Diagram.
InfluenceDiagram() -> InfluenceDiagram : default constructor
InfluenceDiagram(source) -> InfluenceDiagram : Parameters: : - source (pyagrum.InfluenceDiagram) – the InfluenceDiagram to copy
add(*args)
Section titled “add(*args)”Add a variable, it’s associate node and it’s CPT.
The id of the new variable is automatically generated.
- Parameters:
- variable (pyagrum.DiscreteVariable) – The variable added by copy that will be a chance node.
- descr (str) – the descr of the variable following fast syntax extended for
pyagrum.fastID(). - nbr_mod_or_id (int) – if the first argument is variable, this set an optional fixed id for the node. If the first argument is descr, this gives the default number of modalities for the variable. Note that if a utility node is described in descr, this value is overriden by 1.
- Returns: the id of the added variable.
- Return type: int
- Raises: pyagrum.DuplicateElement – If already used id or name.
addArc(*args)
Section titled “addArc(*args)”Add an arc in the ID, and update diagram’s tensor nodes cpt if necessary.
- Parameters:
- tail (Union [**int ,**str ]) – a variable’s id (int) or name
- head (Union [**int ,**str ]) – a variable’s id (int) or name
- Raises:
- pyagrum.InvalidEdge – If arc.tail and/or arc.head are not in the ID.
- pyagrum.InvalidEdge – If tail is a utility node
- Return type:
None
addArcs(listArcs)
Section titled “addArcs(listArcs)”add a list of arcs in te model.
- Parameters: listArcs (List [**Tuple [**int ,**int ] ]) – the list of arcs
addChanceNode(*args)
Section titled “addChanceNode(*args)”Add a chance variable, it’s associate node and it’s CPT.
The id of the new variable is automatically generated.
- Parameters:
- variable (pyagrum.DiscreteVariable) – the variable added by copy.
- id (int) – the chosen id. If 0, the NodeGraphPart will choose.
Warning
give an id (not 0) should be reserved for rare and specific situations !!!
- Returns: the id of the added variable.
- Return type: int
- Raises: pyagrum.DuplicateElement – If id(<>0) is already used
addDecisionNode(*args)
Section titled “addDecisionNode(*args)”Add a decision variable.
The id of the new variable is automatically generated.
- Parameters:
- variable (pyagrum.DiscreteVariable) – the variable added by copy.
- id (int) – the chosen id. If 0, the NodeGraphPart will choose.
Warning
give an id (not 0) should be reserved for rare and specific situations !!!
- Returns: the id of the added variable.
- Return type: int
- Raises: pyagrum.DuplicateElement – If id(<>0) is already used
addStructureListener(whenNodeAdded=None, whenNodeDeleted=None, whenArcAdded=None, whenArcDeleted=None)
Section titled “addStructureListener(whenNodeAdded=None, whenNodeDeleted=None, whenArcAdded=None, whenArcDeleted=None)”Add the listeners in parameters to the list of existing ones.
- Parameters:
- whenNodeAdded (lambda expression) – a function for when a node is added
- whenNodeDeleted (lambda expression) – a function for when a node is removed
- whenArcAdded (lambda expression) – a function for when an arc is added
- whenArcDeleted (lambda expression) – a function for when an arc is removed
addUtilityNode(*args)
Section titled “addUtilityNode(*args)”Add a utility variable, it’s associate node and it’s UT.
The id of the new variable is automatically generated.
- Parameters:
- variable (pyagrum.DiscreteVariable) – the variable added by copy
- id (int) – the chosen id. If 0, the NodeGraphPart will choose
Warning
give an id (not 0) should be reserved for rare and specific situations !!!
- Returns: the id of the added variable.
- Return type: int
- Raises:
- pyagrum.InvalidArgument – If variable has more than one label
- pyagrum.DuplicateElement – If id(<>0) is already used
addVariables(listFastVariables, default_nbr_mod=2)
Section titled “addVariables(listFastVariables, default_nbr_mod=2)”Add a list of variable in the form of ‘fast’ syntax.
- Parameters:
- listFastVariables (List [**str ]) – the list of variables following fast syntax extended for
pyagrum.fastID(). - default_nbr_mod (int) – the number of modalities for the variable if not specified in the fast description. Note that default_nbr_mod=1 is mandatory to create variables with only one modality (for utility for instance).
- listFastVariables (List [**str ]) – the list of variables following fast syntax extended for
- Returns: the list of created ids.
- Return type: List[int]
adjacencyMatrix()
Section titled “adjacencyMatrix()”adjacency matrix from a graph/graphical models
Compute the adjacency matrix of a pyAgrum’s graph or graphical models (more generally an object that has nodes, children/parents or neighbours methods)
- Returns: adjacency matrix (as numpy.ndarray) with nodeId as key.
- Return type: numpy.ndarray
ancestors(norid)
Section titled “ancestors(norid)”give the set of nodeid of ancestors of a node
- Parameters: norid (str |**int) – the name or the id of the node
- Returns: the set of ids of the ancestors of node norid.
- Return type: Set[int]
arcs()
Section titled “arcs()”- Returns: the list of all the arcs in the Influence Diagram.
- Return type: list
beginTopologyTransformation()
Section titled “beginTopologyTransformation()”- Return type:
None
chanceNodeSize()
Section titled “chanceNodeSize()”- Returns: the number of chance nodes.
- Return type: int
changeVariableName(*args)
Section titled “changeVariableName(*args)”- Parameters:
- var (Union [**int ,**str ]) – a variable’s id (int) or name
- new_name (str) – the name of the variable
- Raises:
- pyagrum.DuplicateLabel – If this name already exists
- pyagrum.NotFound – If no nodes matches id.
- Return type:
None
children(norid)
Section titled “children(norid)”- Parameters:
- var (Union [**int ,**str ]) – a variable’s id (int) or name
- norid (
object)
- Returns: the set of all the children
- Return type: Set
clear()
Section titled “clear()”- Return type:
None
completeInstantiation()
Section titled “completeInstantiation()”Give an instantiation over all the variables of the model
- Returns: a complete Instantiation for the model
- Return type: pyagrum.Instantiation
connectedComponents()
Section titled “connectedComponents()”connected components from a graph/graphical models
Compute the connected components of a pyAgrum’s graph or graphical models (more generally an object that has nodes, children/parents or neighbours methods)
The firstly visited node for each component is called a ‘root’ and is used as a key for the component. This root has been arbitrarily chosen during the algorithm.
- Returns: dict of connected components (as set of nodeIds (int)) with a nodeId (root) of each component as key.
- Return type: dict(int,Set[int])
cpt(*args)
Section titled “cpt(*args)”Returns the CPT of a variable.
- Parameters: var (Union [**int ,**str ]) – a variable’s id (int) or name
- Returns: The variable’s CPT.
- Return type: pyagrum.Tensor
- Raises: pyagrum.NotFound – If no variable’s id matches varId.
- Returns: a constant reference to the dag of this BayesNet.
- Return type: pyagrum.DAG
decisionNodeSize()
Section titled “decisionNodeSize()”- Returns: the number of decision nodes
- Return type: int
decisionOrder()
Section titled “decisionOrder()”- Return type:
list[int]
decisionOrderExists()
Section titled “decisionOrderExists()”- Returns: True if a directed path exist with all decision node
- Return type: bool
descendants(norid)
Section titled “descendants(norid)”give the set of nodeid of descendants of a node
- Parameters: norid (str |**int) – the name or the id of the node
- Returns: the set of ids of the descendants of node norid.
- Return type: Set[int]
empty()
Section titled “empty()”Check if there are some variables in the model.
- Returns: True if there is no variable in the model.
- Return type: bool
endTopologyTransformation()
Section titled “endTopologyTransformation()”- Return type:
None
erase(*args)
Section titled “erase(*args)”Erase a Variable from the network and remove the variable from all his childs.
If no variable matches the id, then nothing is done.
- Parameters:
- id (int) – The id of the variable to erase.
- var (Union [**int ,**str ,pyagrum.DiscreteVariable ]) – a variable’s id (int) or name or th reference on the variable to remove.
- Return type:
None
eraseArc(*args)
Section titled “eraseArc(*args)”Removes an arc in the ID, and update diagram’s tensor nodes cpt if necessary.
If (tail, head) doesn’t exist, the nothing happens.
- Parameters:
- arc (pyagrum.Arc) – The arc to be removed whn calling eraseArc(arc)
- tail (Union [**int ,**str ]) – a variable’s id (int) or name when calling eraseArc(tail,head)
- head (Union [**int ,**str ]) – a variable’s id (int) or name when calling eraseArc(tail,head)
- Return type:
None
exists(*args)
Section titled “exists(*args)”Check if a node with this name or id exists
- Parameters: norid (str |**int) – name or id of the searched node
- Returns: True if there is a node with such a name or id
- Return type: bool
existsArc(*args)
Section titled “existsArc(*args)”Check if an arc exists
- Parameters:
- tail (str |**int) – the name or id of the tail of the arc
- head (str |**int) – the name or the id of the head of the arc
- Returns: True if tail->head is an arc.
- Return type: bool
existsPathBetween(*args)
Section titled “existsPathBetween(*args)”- Returns: true if a path exists between two nodes.
- Return type: bool
family(norid)
Section titled “family(norid)”give the set of parents of a node and the node
- Parameters: norid (str |**int) – the node
- Returns: the set of nodeId of the family of the node norid
- Return type: Set[int]
static fastPrototype(*args)
Section titled “static fastPrototype(*args)”Create an Influence Diagram with a dot-like syntax which specifies: : - the structure ‘a->b<-c;b->d;c<-e;’.
- a prefix for the type of node (chance/decision/utiliy nodes):
- a : a chance node named ‘a’ (by default)
- $a : a utility node named ‘a’
- *a : a decision node named ‘a’
- the type of the variables with different syntax as postfix:
- by default, a variable is a pyagrum.RangeVariable using the default domain size (second argument)
- with ‘a[10]’, the variable is a pyagrum.RangeVariable using 10 as domain size (from 0 to 9)
- with ‘a[3,7]’, the variable is a pyagrum.RangeVariable using a domainSize from 3 to 7
- with ‘a[1,3.14,5,6.2]’, the variable is a pyagrum.DiscretizedVariable using the given ticks (at least 3 values)
- with ‘a{top|middle|bottom}’, the variable is a pyagrum.LabelizedVariable using the given labels.
- with ‘a{-1|5|0|3}’, the variable is a pyagrum.IntegerVariable using the sorted given values.
- with ‘a{-0.5|5.01|0|3.1415}’, the variable is a pyagrum.NumericalDiscreteVariable using the sorted given values.
Note
- If the dot-like string contains such a specification more than once for a variable, the first specification will be used.
- the tensors (probabilities, utilities) are randomly generated.
- see also pyagrum.fastID.
Examples
>>> import pyagrum as gum>>> bn=pyagrum.fastID('A->B[1,3]<-*C{yes|No}->$D<-E[1,2.5,3.9]',6)- Parameters:
- dotlike (str) – the string containing the specification
- domainSize (int or str) – the default domain size or the default domain for variables
- Returns: the resulting Influence Diagram
- Return type: pyagrum.InfluenceDiagram
getDecisionGraph()
Section titled “getDecisionGraph()”- Returns: the temporal Graph.
- Return type: pyagrum.DAG
hasSameStructure(other)
Section titled “hasSameStructure(other)”- Parameters: pyagrum.DAGmodel – a direct acyclic model
- Returns: True if all the named node are the same and all the named arcs are the same
- Return type: bool
idFromName(name)
Section titled “idFromName(name)”Returns a variable’s id given its name.
- Parameters: name (str) – the variable’s name from which the id is returned.
- Returns: the variable’s node id.
- Return type: int
- Raises: pyagrum.NotFound – If no such name exists in the graph.
ids(names)
Section titled “ids(names)”List of ids for a list of names of variables in the model
- Parameters:
- lov (List [**str ]) – List of variable names
- names (
list[str])
- Returns: The ids for the list of names of the graph variables
- Return type: List[int]
isChanceNode(*args)
Section titled “isChanceNode(*args)”- Parameters: varId (int) – the tested node id.
- Returns: true if node is a chance node
- Return type: bool
isDecisionNode(*args)
Section titled “isDecisionNode(*args)”- Parameters: varId (int) – the tested node id.
- Returns: true if node is a decision node
- Return type: bool
isIndependent(*args)
Section titled “isIndependent(*args)”check if nodes X and nodes Y are independent given nodes Z
- Parameters:
- X (str |**intList [**str |**int ]) – a list of of nodeIds or names
- Y (str |**intList [**str |**int ]) – a list of of nodeIds or names
- Z (str |**intList [**str |**int ]) – a list of of nodeIds or names
- Raises: InvalidArgument – if X and Y share variables
- Returns: True if X and Y are independent given Z in the model
- Return type: bool
isUtilityNode(*args)
Section titled “isUtilityNode(*args)”- Parameters: varId (int) – the tested node id.
- Returns: true if node is an utility node
- Return type: bool
loadBIFXML(*args)
Section titled “loadBIFXML(*args)”Load a BIFXML file.
- Parameters: name (str) – the name’s file
- Raises:
- pyagrum.IOError – If file not found
- pyagrum.FatalError – If file is not valid
- Return type:
bool
log10DomainSize()
Section titled “log10DomainSize()”returns the log10 of the domain size of the model defined as the product of the domain sizes of the variables in the model.
- Returns: the log10 domain size.
- Return type: float
minimalCondSet(*args)
Section titled “minimalCondSet(*args)”- Return type:
list[int]
moralGraph()
Section titled “moralGraph()”Returns the moral graph of the BayesNet, formed by adding edges between all pairs of nodes that have a common child, and then making all edges in the graph undirected.
- Returns: The moral graph
- Return type: pyagrum.UndiGraph
moralizedAncestralGraph(nodes)
Section titled “moralizedAncestralGraph(nodes)”build a UndiGraph by moralizing the Ancestral Graph of a list of nodes
- Parameters: nodes (str |**intList [**str |**int ]) – the list of of nodeIds or names
Warning
pyagrum.UndiGraph only knows NodeId. Hence the moralized ancestral graph does not include the names of the variables.graph
- Returns: the moralized ancestral graph of the nodes
- Return type: pyagrum.UndiGraph
names()
Section titled “names()”- Returns: The names of the InfluenceDiagram variables
- Return type: List[str]
nodeId(var)
Section titled “nodeId(var)”- Parameters: var (pyagrum.DiscreteVariable) – a variable
- Returns: the id of the variable
- Return type: int
- Raises: pyagrum.IndexError – If the InfluenceDiagram does not contain the variable
nodes()
Section titled “nodes()”- Returns: the set of ids
- Return type: set
nodeset(names)
Section titled “nodeset(names)”Set of ids for a list of names of variables in the model
- Parameters:
- lov (List [**str ]) – List of variable names
- names (
list[str])
- Returns: The set of ids for the list of names of the graph variables
- Return type: Set[int]
parents(norid)
Section titled “parents(norid)”- Parameters:
- var (Union [**int ,**str ]) – a variable’s id (int) or name
- norid (
object)
- Returns: the set of the parents ids.
- Return type: set
properties()
Section titled “properties()”- Return type:
list[str]
saveBIFXML(name)
Section titled “saveBIFXML(name)”Save the BayesNet in a BIFXML file.
- Parameters: name (str) – the file’s name
- Return type:
None
size()
Section titled “size()”- Returns: the number of nodes in the graph
- Return type: int
sizeArcs()
Section titled “sizeArcs()”- Returns: the number of arcs in the graph
- Return type: int
property thisown
Section titled “property thisown”The membership flag
toDot()
Section titled “toDot()”- Returns: a friendly display of the graph in DOT format
- Return type: str
toFast(filename=None)
Section titled “toFast(filename=None)”Export the influence Diagram as fast syntax (in a string or in a python file)
- Parameters: filename (Optional [**str ]) – the name of the file (including the prefix), if None , use sys.stdout
- Return type:
str
topologicalOrder()
Section titled “topologicalOrder()”- Returns: the list of the nodes Ids in a topological order
- Return type: List
- Raises: pyagrum.InvalidDirectedCycle – If this graph contains cycles
utility(*args)
Section titled “utility(*args)”- Parameters: var (Union [**int ,**str ]) – a variable’s id (int) or name
- Returns: the utility table of the node
- Return type: pyagrum.Tensor
- Raises: pyagrum.IndexError – If the InfluenceDiagram does not contain the variable
utilityNodeSize()
Section titled “utilityNodeSize()”- Returns: the number of utility nodes
- Return type: int
variable(*args)
Section titled “variable(*args)”- Parameters: id (int) – the node id
- Returns: a constant reference over a variabe given it’s node id
- Return type: pyagrum.DiscreteVariable
- Raises: pyagrum.NotFound – If no variable’s id matches the parameter
variableFromName(name)
Section titled “variableFromName(name)”- Parameters: name (str) – a variable’s name
- Returns: the variable
- Return type: pyagrum.DiscreteVariable
Notes
A convenient shortcut for g.variableFromName(name) is g[name].
- Raises: pyagrum.IndexError – If the InfluenceDiagram does not contain the variable