Credal Networks

Model

class pyAgrum.CredalNet(*args)

Constructor used to create a CredalNet (step by step or with two BayesNet)

CredalNet() -> CredalNet
default constructor
CredalNet(src_min_num,src_max_den) -> CredalNet
Parameters:
  • src_min_num (str) – the path to a BayesNet which contains lower probabilities.
  • src_max_den (str) – the (optional) path to a BayesNet which contains upper probabilities.
CredalNet(src_min_num,src_max_den) -> CredalNet
Parameters:
  • **src_min_num (pyAgrum.BayesNet) – the BayesNet which contains lower probabilities.
  • **src_max_den (pyAgrum.BayesNet) – the (optional) BayesNet which contains upper probabilities.
addArc(CredalNet self, int tail, int head)

Adds an arc between two nodes

Parameters:
  • tail – the id of the tail node
  • head (int) – the id of the head node
Raises:
  • gum.InvalidDirectedCircle – If any (directed) cycle is created by this arc
  • gum.InvalidNode – If head or tail does not belong to the graph nodes
  • gum.DuplicateElement – If one of the arc already exists
addVariable(CredalNet self, str name, int card)
Parameters:
  • name (str) – the name of the new variable
  • card (int) – the domainSize of the new variable
Returns:

the id of the new node

Return type:

int

approximatedBinarization(CredalNet self)

Approximate binarization.

Each bit has a lower and upper probability which is the lowest - resp. highest - over all vertices of the credal set. Enlarge the orignal credal sets and may induce huge imprecision.

Warning

Enlarge the orignal credal sets and therefor induce huge imprecision by propagation. Not recommended, use MCSampling or something else instead

bnToCredal(CredalNet self, double beta, bool oneNet, bool keepZeroes=False)

Perturbates the BayesNet provided as input for this CredalNet by generating intervals instead of point probabilities and then computes each vertex of each credal set.

Parameters:
  • beta (double) – The beta used to perturbate the network
  • oneNet (bool) – used as a flag. Set to True if one BayesNet if provided with counts, to False if two BayesNet are provided; one with probabilities (the lower net) and one with denominators over the first modalities (the upper net)
  • keepZeroes (bool) – used as a flag as whether or not - respectively True or False - we keep zeroes as zeroes. Default is False, i.e. zeroes are not kept
computeCPTMinMax(CredalNet self)

Used with binary networks to speed-up L2U inference.

Store the lower and upper probabilities of each node X over the ‘True’ modality.

credalNet_currentCpt(CredalNet self)

Warning

Experimental function - Return type to be wrapped

Returns:a constant reference to the (up-to-date) CredalNet CPTs.
Return type:tbw
credalNet_srcCpt(CredalNet self)

Warning

Experimental function - Return type to be wrapped

Returns:a constant reference to the (up-to-date) CredalNet CPTs.
Return type:tbw
currentNodeType(CredalNet self, int id)
Parameters:id (int) – The constant reference to the choosen NodeId
Returns:the type of the choosen node in the (up-to-date) CredalNet __current_bn if any, __src_bn otherwise.
Return type:pyAgrum.CredalNet
current_bn(CredalNet self)
Returns:Returs a constant reference to the actual BayesNet (used as a DAG, it’s CPTs does not matter).
Return type:pyAgrum.BayesNet
domainSize(CredalNet self, int id)
Parameters:id (int) – The id of the node
Returns:The cardinality of the node
Return type:int
epsilonMax(CredalNet self)
Returns:a constant reference to the highest perturbation of the BayesNet provided as input for this CredalNet.
Return type:double
epsilonMean(CredalNet self)
Returns:a constant reference to the average perturbation of the BayesNet provided as input for this CredalNet.
Return type:double
epsilonMin(CredalNet self)
Returns:a constant reference to the lowest perturbation of the BayesNet provided as input for this CredalNet.
Return type:double
fillConstraint(CredalNet self, int id, int entry, Vector lower, Vector upper)

fillConstraint(CredalNet self, int id, Instantiation ins, Vector lower, Vector upper)

Set the interval constraints of a credal set of a given node (from an instantiation index)

Parameters:
  • id (int) – The id of the node
  • entry (int) – The index of the instantiation excluding the given node (only the parents are used to compute the index of the credal set)
  • ins (pyAgrum.Instantiation) – The Instantiation
  • lower (list) – The lower value for each probability in correct order
  • upper (list) – The upper value for each probability in correct order

Warning

You need to call intervalToCredal when done filling all constraints.

Warning

DOES change the BayesNet (s) associated to this credal net !

fillConstraints(CredalNet self, int id, Vector lower, Vector upper)

Set the interval constraints of the credal sets of a given node (all instantiations)

Parameters:
  • id (int) – The id of the node
  • lower (list) – The lower value for each probability in correct order
  • upper (list) – The upper value for each probability in correct order

Warning

You need to call intervalToCredal when done filling all constraints.

Warning

DOES change the BayesNet (s) associated to this credal net !

get_CPT_max(CredalNet self)

Warning

Experimental function - Return type to be wrapped

Returns:a constant reference to the upper probabilities of each node X over the ‘True’ modality
Return type:tbw
get_CPT_min(CredalNet self)

Warning

Experimental function - Return type to be wrapped

Returns:a constant reference to the lower probabilities of each node X over the ‘True’ modality
Return type:tbw
hasComputedCPTMinMax(CredalNet self)
Returns:True this CredalNet has called computeCPTMinMax() to speed-up inference with binary networks and L2U.
Return type:bool
idmLearning(CredalNet self, int s=0, bool keepZeroes=False)

Learns parameters from a BayesNet storing counts of events.

Use this method when using a single BayesNet storing counts of events. IDM model if s > 0, standard point probability if s = 0 (default value if none precised).

Parameters:
  • s (int) – the IDM parameter.
  • keepZeroes (bool) – used as a flag as whether or not - respectively True or False - we keep zeroes as zeroes. Default is False, i.e. zeroes are not kept.
instantiation(CredalNet self, int id)

Get an Instantiation from a node id, usefull to fill the constraints of the network.

bnet accessors / shortcuts.

Parameters:id (int) – the id of the node we want an instantiation from
Returns:the instantiation
Return type:pyAgrum.Instantiation
intervalToCredal(CredalNet self)

Computes the vertices of each credal set according to their interval definition (uses lrs).

Use this method when using two BayesNet, one with lower probabilities and one with upper probabilities.

intervalToCredalWithFiles(CredalNet self)

Warning

Deprecated : use intervalToCredal (lrsWrapper with no input / output files needed).

Computes the vertices of each credal set according to their interval definition (uses lrs).

Use this method when using a single BayesNet storing counts of events.

isSeparatelySpecified(CredalNet self)
Returns:True if this CredalNet is separately and interval specified, False otherwise.
Return type:bool
lagrangeNormalization(CredalNet self)

Normalize counts of a BayesNet storing counts of each events such that no probability is 0.

Use this method when using a single BayesNet storing counts of events. Lagrange normalization. This call is irreversible and modify counts stored by __src_bn.

Doest not performs computations of the parameters but keeps normalized counts of events only. Call idmLearning to compute the probabilities (with any parameter value).

nodeType(CredalNet self, int id)
Parameters:id (int) – the constant reference to the choosen NodeId
Returns:the type of the choosen node in the (up-to-date) CredalNet in __src_bn.
Return type:pyAgrum.CredalNet
saveBNsMinMax(CredalNet self, str min_path, str max_path)

If this CredalNet was built over a perturbed BayesNet, one can save the intervals as two BayesNet.

to call after bnToCredal(GUM_SCALAR beta) save a BN with lower probabilities and a BN with upper ones

Parameters:
  • min_path (str) – the path to save the BayesNet which contains the lower probabilities of each node X.
  • max_path (str) – the path to save the BayesNet which contains the upper probabilities of each node X.
setCPT(CredalNet self, int id, int entry, vector< vector< double, allocator >, allocator< vector< double, allocator > > > cpt)

setCPT(CredalNet self, int id, Instantiation ins, vector< vector< double,allocator >,allocator< vector< double,allocator > > > cpt)

Warning

(experimental function) - Parameters to be wrapped

Set the vertices of one credal set of a given node (any instantiation index)

Parameters:
  • id (int) – the Id of the node
  • entry (int) – the index of the instantiation (from 0 to K - 1) excluding the given node (only the parents are used to compute the index of the credal set)
  • ins (pyAgrum.Instantiation) – the Instantiation (only the parents matter to find the credal set index)
  • cpt (tbw) – the vertices of every credal set (for each instantiation of the parents)

Warning

DOES not change the BayesNet(s) associated to this credal net !

setCPTs(CredalNet self, int id, vector< vector< vector< double, allocator >, allocator< vector< double, allocator > > >, allocator< vector< vector< double, allocator >, allocator< vector< double, allocator > > > > > cpt)

Warning

(experimental function) - Parameters to be wrapped

Set the vertices of the credal sets (all of the conditionals) of a given node

Parameters:
  • id (int) – the NodeId of the node
  • cpt (tbw) – the vertices of every credal set (for each instantiation of the parents)

Warning

DOES not change the BayesNet (s) associated to this credal net !

src_bn(CredalNet self)
Returns:Returns a constant reference to the original BayesNet (used as a DAG, it’s CPTs does not matter).
Return type:pyAgrum.BayesNet

Inference

class pyAgrum.CNMonteCarloSampling(credalNet: pyAgrum.CredalNet)

Class used for inferences in credal networks with Monte Carlo sampling algorithm.

CNMonteCarloSampling(cn) -> CNMonteCarloSampling
Parameters:
  • cn (pyAgrum.CredalNet) – a credal network
currentTime(CNMonteCarloSampling self)
Returns:get the current running time in second (double)
Return type:double
dynamicExpMax(CNMonteCarloSampling self, str varName)

Get the upper dynamic expectation of a given variable prefix.

Parameters:varName (str) – the variable name prefix which upper expectation we want.
Returns:a constant reference to the variable upper expectation over all time steps.
Return type:double
dynamicExpMin(CNMonteCarloSampling self, str varName)

Get the lower dynamic expectation of a given variable prefix.

Parameters:varName (str) – the variable name prefix which lower expectation we want.
Returns:a constant reference to the variable lower expectation over all time steps.
Return type:double
epsilon(CNMonteCarloSampling self)
Returns:the value of epsilon
Return type:double
history(CNMonteCarloSampling self)
Returns:the scheme history
Return type:tuple
Raises:gum.OperationNotAllowed – If the scheme did not performed or if verbosity is set to false
insertEvidenceFile(CNMonteCarloSampling self, str path)

Insert evidence from file.

Parameters:path (str) – the path to the evidence file.
insertModalsFile(CNMonteCarloSampling self, str path)

Insert variables modalities from file to compute expectations.

Parameters:path (str) – The path to the modalities file.
makeInference(CNMonteCarloSampling self)

Starts the inference.

marginalMax(CNMonteCarloSampling self, int id)

marginalMax(CNMonteCarloSampling self, str name) -> Vector

Get the upper marginals of a given node id.

Parameters:
  • id (int) – the node id which upper marginals we want.
  • varName (str) – the variable name which upper marginals we want.
Returns:

a constant reference to this node upper marginals.

Return type:

list

Raises:

gum.IndexError – If the node does not belong to the Credal network

marginalMin(CNMonteCarloSampling self, int id)

marginalMin(CNMonteCarloSampling self, str name) -> Vector

Get the lower marginals of a given node id.

Parameters:
  • id (int) – the node id which lower marginals we want.
  • varName (str) – the variable name which lower marginals we want.
Returns:

a constant reference to this node lower marginals.

Return type:

list

Raises:

gum.IndexError – If the node does not belong to the Credal network

maxIter(CNMonteCarloSampling self)
Returns:the criterion on number of iterations
Return type:int
maxTime(CNMonteCarloSampling self)
Returns:the timeout(in seconds)
Return type:double
messageApproximationScheme(CNMonteCarloSampling self)
Returns:the approximation scheme message
Return type:str
minEpsilonRate(CNMonteCarloSampling self)
Returns:the value of the minimal epsilon rate
Return type:double
nbrIterations(CNMonteCarloSampling self)
Returns:the number of iterations
Return type:int
periodSize(CNMonteCarloSampling self)
Returns:the number of samples between 2 stopping
Return type:int
Raises:gum.OutOfLowerBound – If p<1
setEpsilon(CNMonteCarloSampling self, double eps)
Parameters:eps (double) – the epsilon we want to use
Raises:gum.OutOfLowerBound – If eps<0
setMaxIter(CNMonteCarloSampling self, int max)
Parameters:max (int) – the maximum number of iteration
Raises:gum.OutOfLowerBound – If max <= 1
setMaxTime(CNMonteCarloSampling self, double timeout)
Parameters:tiemout (double) – stopping criterion on timeout (in seconds)
Raises:gum.OutOfLowerBound – If timeout<=0.0
setMinEpsilonRate(CNMonteCarloSampling self, double rate)
Parameters:rate (double) – the minimal epsilon rate
setPeriodSize(CNMonteCarloSampling self, int p)
Parameters:p (int) – number of samples between 2 stopping
Raises:gum.OutOfLowerBound – If p<1
setRepetitiveInd(CNMonteCarloSampling self, bool flag)
Parameters:flag (bool) – True if repetitive independence is to be used, false otherwise. Only usefull with dynamic networks.
setVerbosity(CNMonteCarloSampling self, bool v)
Parameters:v (bool) – verbosity
verbosity(CNMonteCarloSampling self)
Returns:True if the verbosity is enabled
Return type:bool
class pyAgrum.CNLoopyPropagation(cnet: pyAgrum.CredalNet)

Class used for inferences in credal networks with Loopy Propagation algorithm.

CNLoopyPropagation(cn) -> CNLoopyPropagation
Parameters:
  • cn (pyAgrum.CredalNet) – a Credal network
currentTime(CNLoopyPropagation self)
Returns:get the current running time in second (double)
Return type:double
dynamicExpMax(CNLoopyPropagation self, str varName)

Get the upper dynamic expectation of a given variable prefix.

Parameters:varName (str) – the variable name prefix which upper expectation we want.
Returns:a constant reference to the variable upper expectation over all time steps.
Return type:double
dynamicExpMin(CNLoopyPropagation self, str varName)

Get the lower dynamic expectation of a given variable prefix.

Parameters:varName (str) – the variable name prefix which lower expectation we want.
Returns:a constant reference to the variable lower expectation over all time steps.
Return type:double
epsilon(CNLoopyPropagation self)
Returns:the value of epsilon
Return type:double
eraseAllEvidence(CNLoopyPropagation self)

Erase all inference related data to perform another one.

You need to insert evidence again if needed but modalities are kept. You can insert new ones by using the appropriate method which will delete the old ones.

history(CNLoopyPropagation self)
Returns:the scheme history
Return type:tuple
Raises:gum.OperationNotAllowed – If the scheme did not performed or if verbosity is set to false
inferenceType(CNLoopyPropagation self, pyAgrum.credal::CNLoopyPropagation ::InferenceType inft)

inferenceType(CNLoopyPropagation self) -> pyAgrum.credal::CNLoopyPropagation ::InferenceType

Returns:the inference type
Return type:int
insertEvidenceFile(CNLoopyPropagation self, str path)

Insert evidence from file.

Parameters:path (str) – the path to the evidence file.
insertModalsFile(CNLoopyPropagation self, str path)

Insert variables modalities from file to compute expectations.

Parameters:path (str) – The path to the modalities file.
makeInference(CNLoopyPropagation self)

Starts the inference.

marginalMax(CNLoopyPropagation self, int id)

marginalMax(CNLoopyPropagation self, str name) -> Vector

Get the upper marginals of a given node id.

Parameters:
  • id (int) – the node id which upper marginals we want.
  • varName (str) – the variable name which upper marginals we want.
Returns:

a constant reference to this node upper marginals.

Return type:

list

Raises:

gum.IndexError – If the node does not belong to the Credal network

marginalMin(CNLoopyPropagation self, int id)

marginalMin(CNLoopyPropagation self, str name) -> Vector

Get the lower marginals of a given node id.

Parameters:
  • id (int) – the node id which lower marginals we want.
  • varName (str) – the variable name which lower marginals we want.
Returns:

a constant reference to this node lower marginals.

Return type:

list

Raises:

gum.IndexError – If the node does not belong to the Credal network

maxIter(CNLoopyPropagation self)
Returns:the criterion on number of iterations
Return type:int
maxTime(CNLoopyPropagation self)
Returns:the timeout(in seconds)
Return type:double
messageApproximationScheme(CNLoopyPropagation self)
Returns:the approximation scheme message
Return type:str
minEpsilonRate(CNLoopyPropagation self)
Returns:the value of the minimal epsilon rate
Return type:double
nbrIterations(CNLoopyPropagation self)
Returns:the number of iterations
Return type:int
periodSize(CNLoopyPropagation self)
Returns:the number of samples between 2 stopping
Return type:int
Raises:gum.OutOfLowerBound – If p<1
saveInference(CNLoopyPropagation self, str path)

Saves marginals.

Parameters:path (str) – The path to the file to save marginals.
setEpsilon(CNLoopyPropagation self, double eps)
Parameters:eps (double) – the epsilon we want to use
Raises:gum.OutOfLowerBound – If eps<0
setMaxIter(CNLoopyPropagation self, int max)
Parameters:max (int) – the maximum number of iteration
Raises:gum.OutOfLowerBound – If max <= 1
setMaxTime(CNLoopyPropagation self, double timeout)
Parameters:tiemout (double) – stopping criterion on timeout (in seconds)
Raises:gum.OutOfLowerBound – If timeout<=0.0
setMinEpsilonRate(CNLoopyPropagation self, double rate)
Parameters:rate (double) – the minimal epsilon rate
setPeriodSize(CNLoopyPropagation self, int p)
Parameters:p (int) – number of samples between 2 stopping
Raises:gum.OutOfLowerBound – If p<1
setRepetitiveInd(CNLoopyPropagation self, bool flag)
Parameters:flag (bool) – True if repetitive independence is to be used, false otherwise. Only usefull with dynamic networks.
setVerbosity(CNLoopyPropagation self, bool v)
Parameters:v (bool) – verbosity
verbosity(CNLoopyPropagation self)
Returns:True if the verbosity is enabled
Return type:bool