Fragment of Bayesian networks

This class proposes a shallow copy of a part of Bayesian network. It can be used as a Bayesian network for inference algorithms (for instance).

class pyAgrum.BayesNetFragment(bn)

BayesNetFragment represents a part of a Bayesian network (subset of nodes). By default, the arcs and the CPTs are the same as the BN but local CPTs can be build to express different local dependencies. All the non local CPTs are not copied. Therefore a BayesNetFragment is a light object.

BayesNetFragment(BayesNet bn) -> BayesNetFragment
Parameters:
  • bn (pyAgrum.BayesNet) – the bn refered by the fragment

Parameters

bn (IBayesNet) –

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

ancestors(norid)
Parameters

norid (object) –

Return type

object

arcs()
Returns

The lisf of arcs in the IBayesNet

Return type

list

checkConsistency(*args)

If a variable is added to the fragment but not its parents, there is no CPT consistant for this variable. This function checks the consistency for a variable of for all.

Parameters

n (int, str (optional)) – the id or the name of the variable. If no argument, the function checks all the variables.

Returns

True if the variable(s) is consistant.

Return type

boolean

Raises
children(norid)
Parameters
  • id (int) – the id of the parent

  • norid (object) –

Returns

the set of all the children

Return type

Set

completeInstantiation()
Return type

Instantiation

connectedComponents()

connected components from a graph/BN

Compute the connected components of a pyAgrum’s graph or Bayesian Network (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)

Returns the CPT of a variable.

Parameters
  • VarId (int) – A variable’s id in the pyAgrum.IBayesNet.

  • name (str) – A variable’s name in the pyAgrum.IBayesNet.

Returns

The variable’s CPT.

Return type

pyAgrum.Potential

Raises

pyAgrum.NotFound – If no variable’s id matches varId.

dag()
Returns

a constant reference to the dag of this BayesNet.

Return type

pyAgrum.DAG

descendants(norid)
Parameters

norid (object) –

Return type

object

dim()

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

Returns

the dimension of the BayesNet

Return type

int

empty()
Return type

bool

exists(node)
Parameters

node (int) –

Return type

bool

existsArc(*args)
Return type

bool

family(norid)
Parameters

norid (object) –

Return type

object

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)

Returns a variable’s id given its name in the graph.

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 name does not match a variable in the graph

ids(names)
installAscendants(*args)

Add the variable and all its ascendants in the fragment. No inconsistant node are created.

Parameters

n (int, str) – the id or the name of the variable.

Raises
Return type

None

installCPT(*args)

Install a local CPT for a node. Doing so, it changes the parents of the node in the fragment.

Parameters
  • n (int, str) – the id or the name of the variable.

  • pot (Potential) – the Potential to install

Raises

pyAgrum.NotFound – if the node is not found.

Return type

None

installMarginal(*args)

Install a local marginal for a node. Doing so, it removes the parents of the node in the fragment.

Parameters
  • n (int, str) – the id or the name of the variable.

  • pot (Potential) – the Potential (marginal) to install

Raises

pyAgrum.NotFound – if the node is not found.

Return type

None

installNode(*args)

Add a node to the fragment. The arcs that can be added between installed nodes are created. No specific CPT are created. Then either the parents of the node are already in the fragment and the node is consistant, or the parents are not in the fragment and the node is not consistant.

Parameters

n (int, str) – the id or the name of the variable.

Raises

pyAgrum.NotFound – if the node is not found.

Return type

None

isIndependent(*args)
Return type

bool

isInstalledNode(*args)

Check if a node is in the fragment

Parameters

n (int, str) – the id or the name of the variable.

Return type

bool

jointProbability(i)
Parameters

i (pyAgrum.instantiation) – an instantiation of the variables

Returns

a parameter of the joint probability for the BayesNet

Return type

float

Warning

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

log10DomainSize()
Return type

float

log2JointProbability(i)
Parameters

i (pyAgrum.instantiation) – an instantiation of the variables

Returns

a parameter of the log joint probability for the BayesNet

Return type

float

Warning

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

maxNonOneParam()
Returns

The biggest value (not equal to 1) in the CPTs of the BayesNet

Return type

float

maxParam()
Returns

the biggest value in the CPTs of the BayesNet

Return type

float

maxVarDomainSize()
Returns

the biggest domain size among the variables of the BayesNet

Return type

int

minNonZeroParam()
Returns

the smallest value (not equal to 0) in the CPTs of the IBayesNet

Return type

float

minParam()
Returns

the smallest value in the CPTs of the IBayesNet

Return type

float

minimalCondSet(*args)

Returns, given one or many targets and a list of variables, the minimal set of those needed to calculate the target/targets.

Parameters
  • target (int) – The id of the target

  • targets (list) – The ids of the targets

  • list (list) – The list of available variables

Returns

The minimal set of variables

Return type

Set

moralGraph(clear=True)

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

Parameters

clear (bool) –

moralizedAncestralGraph(nodes)
Parameters

nodes (object) –

Return type

UndiGraph

names()
Returns

The names of the graph variables

Return type

list

nodeId(var)
Parameters

var (pyAgrum.DiscreteVariable) – a variable

Returns

the id of the variable

Return type

int

Raises

pyAgrum.IndexError – If the graph does not contain the variable

nodes()
Returns

the set of ids

Return type

set

nodeset(names)
Parameters

names (Vector_string) –

Return type

List[int]

parents(norid)
Parameters
  • id – The id of the child node

  • norid (object) –

Returns

the set of the parents ids.

Return type

Set

property(name)
Parameters

name (str) –

Return type

str

propertyWithDefault(name, byDefault)
Parameters
  • name (str) –

  • byDefault (str) –

Return type

str

setProperty(name, value)
Parameters
  • name (str) –

  • value (str) –

Return type

None

size()
Returns

the number of nodes in the graph

Return type

int

sizeArcs()
Returns

the number of arcs in the graph

Return type

int

toBN()

Create a BayesNet from a fragment.

Raises

pyAgrum.OperationNotAllowed – if the fragment is not consistent.

Return type

BayesNet

toDot()
Returns

a friendly display of the graph in DOT format

Return type

str

topologicalOrder(clear=True)
Returns

the list of the nodes Ids in a topological order

Return type

List

Raises

pyAgrum.InvalidDirectedCycle – If this graph contains cycles

Parameters

clear (bool) –

uninstallCPT(*args)

Remove a local CPT. The fragment can become inconsistant.

Parameters

n (int, str) – the id or the name of the variable.

Raises

pyAgrum.NotFound – if the node is not found.

Return type

None

uninstallNode(*args)

Remove a node from the fragment. The fragment can become inconsistant.

Parameters

n (int, str) – the id or the name of the variable.

Raises

pyAgrum.NotFound – if the node is not found.

Return type

None

variable(*args)
Parameters
  • id (int) – a variable’s id

  • name (str) – a variable’s name

Returns

the variable

Return type

pyAgrum.DiscreteVariable

Raises

pyAgrum.IndexError – If the graph does not contain the variable

variableFromName(name)
Parameters

name (str) – a variable’s name

Returns

the variable

Return type

pyAgrum.DiscreteVariable

Raises

pyAgrum.IndexError – If the graph does not contain the variable

variableNodeMap()
Returns

the variable node map

Return type

pyAgrum.variableNodeMap

whenArcAdded(src, _from, to)
Parameters
  • src (object) –

  • _from (int) –

  • to (int) –

Return type

None

whenArcDeleted(src, _from, to)
Parameters
  • src (object) –

  • _from (int) –

  • to (int) –

Return type

None

whenNodeAdded(src, id)
Parameters
  • src (object) –

  • id (int) –

Return type

None

whenNodeDeleted(src, id)
Parameters
  • src (object) –

  • id (int) –

Return type

None