Random Variables
aGrUM/pyAgrum is currently dedicated for discrete probability distributions.
There are 5 types of discrete random variables in aGrUM/pyAgrum: pyagrum.LabelizedVariable, pyagrum.DiscretizedVariable, pyagrum.IntegerVariable, pyagrum.RangeVariable and pyagrum.NumericalDiscreteVariable. The 5 types are mainly provided in order to ease modelization. Derived from DiscreteVariable, they share a common API. They essentially differ by the means to create, name and access to their modalities.
The function pyagrum.fastVariable() allows to easily create variables of any types with the fast syntax.
Common API for Random Discrete Variables
Section titled “Common API for Random Discrete Variables”class pyagrum.DiscreteVariable(*args, **kwargs)
Section titled “class pyagrum.DiscreteVariable(*args, **kwargs)”DiscreteVariable is the (abstract) base class for discrete random variables.
asDiscretizedVar()
Section titled “asDiscretizedVar()”Tries to cast the variable as a pyagrum.DiscretizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.DiscretizedVar
- Return type:
DiscretizedVariable
asIntegerVar()
Section titled “asIntegerVar()”Tries to cast the variable as a pyagrum.IntegerVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.IntegerVar
- Return type:
IntegerVariable
asLabelizedVar()
Section titled “asLabelizedVar()”Tries to cast the variable as a pyagrum.LabelizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.LabelizedVar
- Return type:
LabelizedVariable
asNumericalDiscreteVar()
Section titled “asNumericalDiscreteVar()”Tries to cast the variable as a pyagrum.NumericalDiscreteVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.NumericalDiscreteVar
- Return type:
NumericalDiscreteVariable
asRangeVar()
Section titled “asRangeVar()”Tries to cast the variable as a pyagrum.RangeVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.RangeVar
- Return type:
RangeVariable
belongs(x)
Section titled “belongs(x)”returns whether x belongs to the variable domain (if the variable is a pyagrum.RangeVariable)
- Parameters:
x (
int) – the value for which we want to know if it belongs to the variable domain - Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
bool - Returns: bool : True if x belongs to the variable domain, False otherwise
closestIndex(val)
Section titled “closestIndex(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the index of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the index of the closest value to value in the variable’s domain
- Return type:
int - Raises: pyagrum.NotImplementedYet – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
closestLabel(val)
Section titled “closestLabel(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the label of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the label of the closest value to value in the variable’s domain
- Return type:
str - Raises: pyagrum.InvalidArgument – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
description()
Section titled “description()”- Returns: the description of the variable
- Return type:
str
domain()
Section titled “domain()”- Returns: the domain of the variable
- Return type:
str
domainSize()
Section titled “domainSize()”- Returns: the number of modalities in the variable domain
- Return type:
int
draw(x)
Section titled “draw(x)”Draw a random float value from the x-th interval of the variable (only for pyagrum.DiscretizedVariable).
- Parameters: x (int) – the index of the interval from which to draw
- Returns: a random value drawn uniformly from the x-th interval
- Return type: float
- Raises:
- NotImplementedError – if the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – if x is not a valid interval index
empty()
Section titled “empty()”- Returns: True if the domain size < 2
- Return type:
bool
index(label)
Section titled “index(label)”- Parameters:
label (
str) – a label - Returns: the index of the label
- Return type:
int
integerDomain()
Section titled “integerDomain()”Returns the integer domain of the variable (if the variable is a pyagrum.integerVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.IntegerVariable
- Return type:
tuple[int,...] - Returns: tuple[int,…] : the integer domain of the variable
isEmpirical()
Section titled “isEmpirical()”Returns whether the variable is empirical (if the variable is a pyagrum.DiscretizedVariable). I.e. whether its limits (max and min) are defined by data and accept any values below or above these limits, contrary to non-empirical discretized variables for which the limits are fixed and values outside of these limits are not accepted)
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
bool - Returns: bool : whether the variable is empirical
isLabel(s)
Section titled “isLabel(s)”returns whether s is a label of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- Return type:
bool - Returns: bool : True if s is a label of the variable, False otherwise
- Parameters:
s (
str)
isNumerical()
Section titled “isNumerical()”Returns True if the variable has a meaningful numerical representation, i.e. it is not a LabelizedVariable.
- Returns: True for DiscretizedVariable, IntegerVariable, NumericalDiscreteVariable and RangeVariable; False for LabelizedVariable.
- Return type:
bool
isTick(x)
Section titled “isTick(x)”Returns whether x is a tick for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a tick for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Returns: bool : whether x is a tick for the variable, i.e. whether x belongs to the variable’s domain
isValue(x)
Section titled “isValue(x)”Returns whether x is a value for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a value for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable or a pyagrum.IntegerVariable
- Return type:
bool - Returns: bool : whether x is a value for the variable, i.e. whether x belongs to the variable domain
label(i)
Section titled “label(i)”- Parameters:
i (
int) – the index of the label we wish to return - Returns: the label at the given index
- Return type:
str - Raises: pyagrum.OutOfBounds – If the variable does not contain the label
labels()
Section titled “labels()”- Returns: a tuple containing the labels
- Return type:
tuple[str,...]
maxVal()
Section titled “maxVal()”returns the maximum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the maximum value of the variable domain
minVal()
Section titled “minVal()”returns the minimum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the minimum value of the variable domain
name()
Section titled “name()”- Returns: the name of the variable
- Return type:
str
numerical(indice)
Section titled “numerical(indice)”- Parameters:
- index (int) – an index
- indice (
int)
- Returns: the numerical representation of the value at the given index
- Return type:
float
numericalDomain()
Section titled “numericalDomain()”Returns the numerical domain of the variable (if the variable is a pyagrum.NumericalDiscreteVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the numerical domain of the variable
posLabel(s)
Section titled “posLabel(s)”Returns the index of the label s in the variable’s domain (if the variable is a pyagrum.LabelizedVariable)
- Raises:
- NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- NotFoundError – If the variable does not contain the label s
- Return type:
int - Returns: int : the index of the label s in the variable’s domain
- Parameters:
s (
str)
setDescription(theValue)
Section titled “setDescription(theValue)”set the description of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
setName(theValue)
Section titled “setName(theValue)”sets the name of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
stype()
Section titled “stype()”- Returns: a description of its type
- Return type:
str
tick(x)
Section titled “tick(x)”Returns the x-th tick of the variable (if the variable is a pyagrum.DiscretizedVariable)
- Parameters:
x (
int) – the index of the tick we want to get - Raises:
- NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – If x is not a valid index for the ticks of the variable
- Returns: float : the x-th tick of the variable
ticks()
Section titled “ticks()”Returns the ticks of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the ticks of the variable, i.e. the values that belong to the variable’s domain
toFast()
Section titled “toFast()”Return the variable description in fast syntax (e.g. name[val1|val2|...]).
- Returns: fast-syntax string representation
- Return type:
str
toStringWithDescription()
Section titled “toStringWithDescription()”- Returns: a description of the variable
- Return type:
str
varType()
Section titled “varType()”returns the type of variable
-
Returns: the type of the variable.
0: DiscretizedVariable, 1: LabelizedVariable, 2: IntegerVariable, 3: NumericalDiscreteVariable, 4: RangeVariable
-
Return type:
int
Concrete classes for Random Discrete Variables
Section titled “Concrete classes for Random Discrete Variables”LabelizedVariable
Section titled “LabelizedVariable”class pyagrum.LabelizedVariable(*args)
Section titled “class pyagrum.LabelizedVariable(*args)”LabelizedVariable is a discrete random variable with a customizable sequence of labels.
LabelizedVariable(aName, aDesc=’’, nbrLabel=2) -> LabelizedVariable : Parameters: : - aName (str) – the name of the variable - aDesc (str) – the (optional) description of the variable - nbrLabel (int) – the number of labels to create (2 by default)
LabelizedVariable(aName, aDesc=’’, labels) -> LabelizedVariable : Parameters: : - aName (str) – the name of the variable - aDesc (str) – the (optional) description of the variable - labels (list of str) – the labels to create
LabelizedVariable(aLDRV) -> LabelizedVariable : Parameters: : - aLDRV (pyagrum.LabelizedVariable) – The pyagrum.LabelizedVariable that will be copied
Examples
>>> import pyagrum as gum>>> # creating a variable with 3 labels : '0', '1' and '2'>>> va=pyagrum.LabelizedVariable('a','a labelized variable',3)>>> print(va)a:Labelized(<0,1,2>)>>> va.addLabel('foo')(pyagrum.LabelizedVariable@0x7fc4c840dd90) a:Labelized(<0,1,2,foo>)>>> va.changeLabel(1,'bar')>>> print(va)a:Labelized(<0,bar,2,foo>)>>> vb=pyagrum.LabelizedVariable('b','b',0).addLabel('A').addLabel('B').addLabel('C')>>> print(vb)b:Labelized(<A,B,C>)>>> vb.labels()('A', 'B', 'C')>>> vb.isLabel('E')False>>> vb.label(2)'C'>>> vc=pyagrum.LabelizedVariable('b','b',['one','two','three'])>>> vc(pyagrum.LabelizedVariable@0x7fc4c840c130) b:Labelized(<one,two,three>)addLabel(*args)
Section titled “addLabel(*args)”Add a label with a new index (we assume that we will NEVER remove a label).
- Parameters: aLabel (str) – the label to be added to the labelized variable
- Returns: the labelized variable
- Return type: pyagrum.LabelizedVariable
- Raises: pyagrum.DuplicateElement – If the variable already contains the label
asDiscretizedVar()
Section titled “asDiscretizedVar()”Tries to cast the variable as a pyagrum.DiscretizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.DiscretizedVar
- Return type:
DiscretizedVariable
asIntegerVar()
Section titled “asIntegerVar()”Tries to cast the variable as a pyagrum.IntegerVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.IntegerVar
- Return type:
IntegerVariable
asLabelizedVar()
Section titled “asLabelizedVar()”Tries to cast the variable as a pyagrum.LabelizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.LabelizedVar
- Return type:
LabelizedVariable
asNumericalDiscreteVar()
Section titled “asNumericalDiscreteVar()”Tries to cast the variable as a pyagrum.NumericalDiscreteVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.NumericalDiscreteVar
- Return type:
NumericalDiscreteVariable
asRangeVar()
Section titled “asRangeVar()”Tries to cast the variable as a pyagrum.RangeVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.RangeVar
- Return type:
RangeVariable
belongs(x)
Section titled “belongs(x)”returns whether x belongs to the variable domain (if the variable is a pyagrum.RangeVariable)
- Parameters:
x (
int) – the value for which we want to know if it belongs to the variable domain - Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
bool - Returns: bool : True if x belongs to the variable domain, False otherwise
changeLabel(pos, aLabel)
Section titled “changeLabel(pos, aLabel)”Change the label at the specified index
- Parameters:
- pos (
int) – the index of the label to be changed - aLabel (
str) – the label to be added to the labelized variable
- pos (
- Raises:
- pyagrum.DuplicateElement – If the variable already contains the new label
- pyagrum.OutOfBounds – If the index is greater than the size of the variable
- Return type:
None
closestIndex(val)
Section titled “closestIndex(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the index of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the index of the closest value to value in the variable’s domain
- Return type:
int - Raises: pyagrum.NotImplementedYet – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
closestLabel(val)
Section titled “closestLabel(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the label of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the label of the closest value to value in the variable’s domain
- Return type:
str - Raises: pyagrum.InvalidArgument – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
description()
Section titled “description()”- Returns: the description of the variable
- Return type:
str
domain()
Section titled “domain()”- Returns: the domain of the variable as a string
- Return type:
str
domainSize()
Section titled “domainSize()”- Returns: the number of modalities in the variable domain
- Return type:
int
draw(x)
Section titled “draw(x)”Draw a random float value from the x-th interval of the variable (only for pyagrum.DiscretizedVariable).
- Parameters: x (int) – the index of the interval from which to draw
- Returns: a random value drawn uniformly from the x-th interval
- Return type: float
- Raises:
- NotImplementedError – if the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – if x is not a valid interval index
empty()
Section titled “empty()”- Returns: True if the domain size < 2
- Return type:
bool
eraseLabels()
Section titled “eraseLabels()”Erase all the labels from the variable.
- Return type:
None
index(label)
Section titled “index(label)”- Parameters:
label (
str) – a label - Returns: the index of the label
- Return type:
int
integerDomain()
Section titled “integerDomain()”Returns the integer domain of the variable (if the variable is a pyagrum.integerVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.IntegerVariable
- Return type:
tuple[int,...] - Returns: tuple[int,…] : the integer domain of the variable
isEmpirical()
Section titled “isEmpirical()”Returns whether the variable is empirical (if the variable is a pyagrum.DiscretizedVariable). I.e. whether its limits (max and min) are defined by data and accept any values below or above these limits, contrary to non-empirical discretized variables for which the limits are fixed and values outside of these limits are not accepted)
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
bool - Returns: bool : whether the variable is empirical
isLabel(aLabel)
Section titled “isLabel(aLabel)”Indicates whether the variable already has the label passed in argument
- Parameters:
aLabel (
str) – the label to be tested - Returns: True if the label already exists
- Return type:
bool
isNumerical()
Section titled “isNumerical()”Returns True if the variable has a meaningful numerical representation, i.e. it is not a LabelizedVariable.
- Returns: True for DiscretizedVariable, IntegerVariable, NumericalDiscreteVariable and RangeVariable; False for LabelizedVariable.
- Return type:
bool
isTick(x)
Section titled “isTick(x)”Returns whether x is a tick for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a tick for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Returns: bool : whether x is a tick for the variable, i.e. whether x belongs to the variable’s domain
isValue(x)
Section titled “isValue(x)”Returns whether x is a value for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a value for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable or a pyagrum.IntegerVariable
- Return type:
bool - Returns: bool : whether x is a value for the variable, i.e. whether x belongs to the variable domain
label(i)
Section titled “label(i)”- Parameters:
i (
int) – the index of the label we wish to return - Returns: the label at the given index
- Return type:
str - Raises: pyagrum.OutOfBounds – If the variable does not contain the label
labels()
Section titled “labels()”- Returns: a tuple containing the labels
- Return type:
tuple[str,...]
maxVal()
Section titled “maxVal()”returns the maximum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the maximum value of the variable domain
minVal()
Section titled “minVal()”returns the minimum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the minimum value of the variable domain
name()
Section titled “name()”- Returns: the name of the variable
- Return type:
str
numerical(index)
Section titled “numerical(index)”- Parameters:
index (
int) – an index - Returns: the numerical representation of the value at the given index
- Return type:
float
numericalDomain()
Section titled “numericalDomain()”Returns the numerical domain of the variable (if the variable is a pyagrum.NumericalDiscreteVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the numerical domain of the variable
posLabel(label)
Section titled “posLabel(label)”Return the position (index) of a label in the variable’s domain.
- Parameters:
label (
str) – the label to look up - Returns: the index of the label in the domain
- Return type:
int - Raises: pyagrum.NotFound – if the label does not exist in the domain
setDescription(theValue)
Section titled “setDescription(theValue)”set the description of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
setName(theValue)
Section titled “setName(theValue)”sets the name of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
stype()
Section titled “stype()”- Returns: a description of its type
- Return type:
str
tick(x)
Section titled “tick(x)”Returns the x-th tick of the variable (if the variable is a pyagrum.DiscretizedVariable)
- Parameters:
x (
int) – the index of the tick we want to get - Raises:
- NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – If x is not a valid index for the ticks of the variable
- Returns: float : the x-th tick of the variable
ticks()
Section titled “ticks()”Returns the ticks of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the ticks of the variable, i.e. the values that belong to the variable’s domain
toFast()
Section titled “toFast()”Return the variable description in fast syntax (e.g. name[val1|val2|...]).
- Returns: fast-syntax string representation
- Return type:
str
toStringWithDescription()
Section titled “toStringWithDescription()”- Returns: a description of the variable
- Return type:
str
varType()
Section titled “varType()”returns the type of variable
-
Returns: the type of the variable.
0: DiscretizedVariable, 1: LabelizedVariable, 2: IntegerVariable, 3: NumericalDiscreteVariable, 4: RangeVariable
-
Return type:
int
DiscretizedVariable
Section titled “DiscretizedVariable”class pyagrum.DiscretizedVariable(*args)
Section titled “class pyagrum.DiscretizedVariable(*args)”DiscretizedVariable is a discrete random variable with a set of ticks defining intervals.
DiscretizedVariable(aName, aDesc ,ticks=None,is_empirical=False) -> pyagrum.DiscretizedVariable Parameters:
- aName (
str) – the name of the variable- aDesc (
str) – the description of the variable- ticks (
list[float]) – the list of ticks to add- is_empirical (
bool) – if False, raise an error if a value is out of bound.
DiscretizedVariable(aDDRV) -> DiscretizedVariable
: Parameters:
- aDDRV (
pyagrum.DiscretizedVariable) – the pyagrum.DiscretizedVariable that will be copied
Examples
>>> import pyagrum as gum>>> vX=pyagrum.DiscretizedVariable('X','X has been discretized').addTick(1).addTick(2).addTick(3).addTick(3.1415)>>> print(vX)X:Discretized(<[1;2[,[2;3[,[3;3.1415]>)>>> vX.isTick(4)False>>> vX.labels()('[1;2[', '[2;3[', '[3;3.1415]')>>> # where is the real value 2.5 ?>>> vX.index('2.5')1addTick(*args)
Section titled “addTick(*args)”- Parameters: aTick (double) – the Tick to be added
- Returns: the discretized variable
- Return type: pyagrum.DiscretizedVariable
- Raises: pyagrum.DefaultInLabel – If the tick is already defined
asDiscretizedVar()
Section titled “asDiscretizedVar()”Tries to cast the variable as a pyagrum.DiscretizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.DiscretizedVar
- Return type:
DiscretizedVariable
asIntegerVar()
Section titled “asIntegerVar()”Tries to cast the variable as a pyagrum.IntegerVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.IntegerVar
- Return type:
IntegerVariable
asLabelizedVar()
Section titled “asLabelizedVar()”Tries to cast the variable as a pyagrum.LabelizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.LabelizedVar
- Return type:
LabelizedVariable
asNumericalDiscreteVar()
Section titled “asNumericalDiscreteVar()”Tries to cast the variable as a pyagrum.NumericalDiscreteVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.NumericalDiscreteVar
- Return type:
NumericalDiscreteVariable
asRangeVar()
Section titled “asRangeVar()”Tries to cast the variable as a pyagrum.RangeVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.RangeVar
- Return type:
RangeVariable
belongs(x)
Section titled “belongs(x)”returns whether x belongs to the variable domain (if the variable is a pyagrum.RangeVariable)
- Parameters:
x (
int) – the value for which we want to know if it belongs to the variable domain - Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
bool - Returns: bool : True if x belongs to the variable domain, False otherwise
closestIndex(val)
Section titled “closestIndex(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the index of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the index of the closest value to value in the variable’s domain
- Return type:
int - Raises: pyagrum.NotImplementedYet – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
closestLabel(val)
Section titled “closestLabel(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the label of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the label of the closest value to value in the variable’s domain
- Return type:
str - Raises: pyagrum.InvalidArgument – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
description()
Section titled “description()”- Returns: the description of the variable
- Return type:
str
domain()
Section titled “domain()”- Returns: the domain of the variable as a string
- Return type:
str
domainSize()
Section titled “domainSize()”- Returns: the number of modalities in the variable domain
- Return type:
int
draw(indice)
Section titled “draw(indice)”Allow to draw a value in the i-th interval of the discretized variable.1
- Parameters:
- i (int) – the index of the interval to draw
- indice (
int)
- Returns: the value randomly drawn in the i-th interval
- Return type:
float
empty()
Section titled “empty()”- Returns: True if the domain size < 2
- Return type:
bool
eraseTicks()
Section titled “eraseTicks()”erase all the Ticks
- Return type:
None
index(*args)
Section titled “index(*args)”- Parameters: label (str) – a label
- Returns: the index of the label
- Return type:
int
integerDomain()
Section titled “integerDomain()”Returns the integer domain of the variable (if the variable is a pyagrum.integerVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.IntegerVariable
- Return type:
tuple[int,...] - Returns: tuple[int,…] : the integer domain of the variable
isEmpirical()
Section titled “isEmpirical()”Check whether the variable uses relaxed (empirical) tick bounds.
- Returns: True if the variable is in empirical mode
- Return type:
bool
isLabel(s)
Section titled “isLabel(s)”returns whether s is a label of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- Return type:
bool - Returns: bool : True if s is a label of the variable, False otherwise
- Parameters:
s (
str)
isNumerical()
Section titled “isNumerical()”Returns True if the variable has a meaningful numerical representation, i.e. it is not a LabelizedVariable.
- Returns: True for DiscretizedVariable, IntegerVariable, NumericalDiscreteVariable and RangeVariable; False for LabelizedVariable.
- Return type:
bool
isTick(aTick)
Section titled “isTick(aTick)”- Parameters:
aTick (
float) – the Tick to be tested - Returns: True if the Tick already exists
- Return type:
bool
isValue(x)
Section titled “isValue(x)”Returns whether x is a value for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a value for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable or a pyagrum.IntegerVariable
- Return type:
bool - Returns: bool : whether x is a value for the variable, i.e. whether x belongs to the variable domain
label(i)
Section titled “label(i)”- Parameters:
i (
int) – the index of the label we wish to return - Returns: the label at the given index
- Return type:
str - Raises: pyagrum.OutOfBounds – If the variable does not contain the label
labels()
Section titled “labels()”- Returns: a tuple containing the labels
- Return type:
tuple[str,...]
maxVal()
Section titled “maxVal()”returns the maximum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the maximum value of the variable domain
minVal()
Section titled “minVal()”returns the minimum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the minimum value of the variable domain
name()
Section titled “name()”- Returns: the name of the variable
- Return type:
str
numerical(indice)
Section titled “numerical(indice)”- Parameters:
- index (int) – an index
- indice (
int)
- Returns: the numerical representation of the value at the given index
- Return type:
float
numericalDomain()
Section titled “numericalDomain()”Returns the numerical domain of the variable (if the variable is a pyagrum.NumericalDiscreteVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the numerical domain of the variable
posLabel(s)
Section titled “posLabel(s)”Returns the index of the label s in the variable’s domain (if the variable is a pyagrum.LabelizedVariable)
- Raises:
- NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- NotFoundError – If the variable does not contain the label s
- Return type:
int - Returns: int : the index of the label s in the variable’s domain
- Parameters:
s (
str)
setDescription(theValue)
Section titled “setDescription(theValue)”set the description of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
setEmpirical(state)
Section titled “setEmpirical(state)”Enable or disable empirical (relaxed bounds) mode for the variable.
- Parameters:
state (
bool) – True to enable empirical mode, False to disable - Return type:
None
setName(theValue)
Section titled “setName(theValue)”sets the name of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
stype()
Section titled “stype()”- Returns: a description of its type
- Return type:
str
tick(i)
Section titled “tick(i)”Indicate the index of the Tick
- Parameters:
i (
int) – the index of the Tick - Returns: aTick – the i-th Tick
- Return type:
float - Raises: pyagrum.NotFound – If the index is greater than the number of Ticks
ticks()
Section titled “ticks()”- Returns: a tuple containing all the Ticks
- Return type:
tuple[float,...]
toFast()
Section titled “toFast()”Return the variable description in fast syntax (e.g. name[v1:v2:v3]).
- Returns: fast-syntax string representation
- Return type:
str
toStringWithDescription()
Section titled “toStringWithDescription()”- Returns: a description of the variable
- Return type:
str
varType()
Section titled “varType()”returns the type of variable
-
Returns: the type of the variable.
0: DiscretizedVariable, 1: LabelizedVariable, 2: IntegerVariable, 3: NumericalDiscreteVariable, 4: RangeVariable
-
Return type:
int
IntegerVariable
Section titled “IntegerVariable”class pyagrum.IntegerVariable(*args)
Section titled “class pyagrum.IntegerVariable(*args)”IntegerVariable is a discrete random variable with a customizable sequence of int.
IntegerVariable(aName, aDesc=’’, values=None) -> IntegerVariable : Parameters: : - aName (str) – the name of the variable - aDesc (str) – the (optional) description of the variable - values (list of int) – the values to create
IntegerVariable(aIDRV) -> IntegerVariable : Parameters: : - aIDRV (pyagrum.IntegerVariable) – The pyagrum.IntegerVariable that will be copied
Examples
>>> import pyagrum as gum>>> # creating a variable with 3 values : 1,34,142>>> va=pyagrum.IntegerVariable('a','a integer variable',[1,34,142])>>> print(va)a:Integer(<1,34,142>)>>> va.addValue(25)(pyagrum.IntegerVariable@000001E4F5D07490) a:Integer(<1,25,34,142>)>>> va.changeValue(34,43)>>> print(va)a:Integer(<1,25,43,142>)>>> vb=pyagrum.IntegerVariable('b','b').addValue(34).addValue(142).addValue(1)>>> print(vb)b:Integer(<1,34,142>)>>> vb.labels()('1', '34', '142')addValue(*args)
Section titled “addValue(*args)”Add a value to the list of values for the variable.
- Parameters: value (int) – the new value
- Returns: the Integer variable
- Return type: pyagrum.IntegerVariable
- Raises: pyagrum.DuplicateElement – If the variable already contains the value
asDiscretizedVar()
Section titled “asDiscretizedVar()”Tries to cast the variable as a pyagrum.DiscretizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.DiscretizedVar
- Return type:
DiscretizedVariable
asIntegerVar()
Section titled “asIntegerVar()”Tries to cast the variable as a pyagrum.IntegerVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.IntegerVar
- Return type:
IntegerVariable
asLabelizedVar()
Section titled “asLabelizedVar()”Tries to cast the variable as a pyagrum.LabelizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.LabelizedVar
- Return type:
LabelizedVariable
asNumericalDiscreteVar()
Section titled “asNumericalDiscreteVar()”Tries to cast the variable as a pyagrum.NumericalDiscreteVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.NumericalDiscreteVar
- Return type:
NumericalDiscreteVariable
asRangeVar()
Section titled “asRangeVar()”Tries to cast the variable as a pyagrum.RangeVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.RangeVar
- Return type:
RangeVariable
belongs(x)
Section titled “belongs(x)”returns whether x belongs to the variable domain (if the variable is a pyagrum.RangeVariable)
- Parameters:
x (
int) – the value for which we want to know if it belongs to the variable domain - Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
bool - Returns: bool : True if x belongs to the variable domain, False otherwise
changeValue(old_value, new_value)
Section titled “changeValue(old_value, new_value)”- Parameters:
- old_value (
int) – the value to be changed - new_value (
int) – the new value
- old_value (
- Return type:
None
closestIndex(val)
Section titled “closestIndex(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the index of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the index of the closest value to value in the variable’s domain
- Return type:
int - Raises: pyagrum.NotImplementedYet – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
closestLabel(val)
Section titled “closestLabel(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the label of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the label of the closest value to value in the variable’s domain
- Return type:
str - Raises: pyagrum.InvalidArgument – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
description()
Section titled “description()”- Returns: the description of the variable
- Return type:
str
domain()
Section titled “domain()”- Returns: the domain of the variable
- Return type:
str
domainSize()
Section titled “domainSize()”- Returns: the number of modalities in the variable domain
- Return type:
int
draw(x)
Section titled “draw(x)”Draw a random float value from the x-th interval of the variable (only for pyagrum.DiscretizedVariable).
- Parameters: x (int) – the index of the interval from which to draw
- Returns: a random value drawn uniformly from the x-th interval
- Return type: float
- Raises:
- NotImplementedError – if the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – if x is not a valid interval index
empty()
Section titled “empty()”- Returns: True if the domain size < 2
- Return type:
bool
eraseValue(value)
Section titled “eraseValue(value)”- Parameters:
value (
int) – the value to erase. If the value is not in the domain, the function does nothing (no exception raised) - Return type:
None
eraseValues()
Section titled “eraseValues()”Remove all the domain.
- Return type:
None
index(label)
Section titled “index(label)”- Parameters:
label (
str) – a label - Returns: the index of the label
- Return type:
int
integerDomain()
Section titled “integerDomain()”- Returns: the tuple of integer values that form the domain of this variable
- Return type:
tuple[int,...]
isEmpirical()
Section titled “isEmpirical()”Returns whether the variable is empirical (if the variable is a pyagrum.DiscretizedVariable). I.e. whether its limits (max and min) are defined by data and accept any values below or above these limits, contrary to non-empirical discretized variables for which the limits are fixed and values outside of these limits are not accepted)
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
bool - Returns: bool : whether the variable is empirical
isLabel(s)
Section titled “isLabel(s)”returns whether s is a label of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- Return type:
bool - Returns: bool : True if s is a label of the variable, False otherwise
- Parameters:
s (
str)
isNumerical()
Section titled “isNumerical()”Returns True if the variable has a meaningful numerical representation, i.e. it is not a LabelizedVariable.
- Returns: True for DiscretizedVariable, IntegerVariable, NumericalDiscreteVariable and RangeVariable; False for LabelizedVariable.
- Return type:
bool
isTick(x)
Section titled “isTick(x)”Returns whether x is a tick for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a tick for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Returns: bool : whether x is a tick for the variable, i.e. whether x belongs to the variable’s domain
isValue(value)
Section titled “isValue(value)”- Parameters:
value (
int) – the value to look at. - Returns: True if the value is in the domain.
- Return type:
bool
label(index)
Section titled “label(index)”- Parameters:
- i (int) – the index of the label we wish to return
- index (
int)
- Returns: the label at the given index
- Return type:
str - Raises: pyagrum.OutOfBounds – If the variable does not contain the label
labels()
Section titled “labels()”- Returns: a tuple containing the labels
- Return type:
tuple[str,...]
maxVal()
Section titled “maxVal()”returns the maximum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the maximum value of the variable domain
minVal()
Section titled “minVal()”returns the minimum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the minimum value of the variable domain
name()
Section titled “name()”- Returns: the name of the variable
- Return type:
str
numerical(index)
Section titled “numerical(index)”- Parameters:
index (
int) – an index - Returns: the numerical representation of the value at the given index
- Return type:
float
numericalDomain()
Section titled “numericalDomain()”Returns the numerical domain of the variable (if the variable is a pyagrum.NumericalDiscreteVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the numerical domain of the variable
posLabel(s)
Section titled “posLabel(s)”Returns the index of the label s in the variable’s domain (if the variable is a pyagrum.LabelizedVariable)
- Raises:
- NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- NotFoundError – If the variable does not contain the label s
- Return type:
int - Returns: int : the index of the label s in the variable’s domain
- Parameters:
s (
str)
setDescription(theValue)
Section titled “setDescription(theValue)”set the description of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
setName(theValue)
Section titled “setName(theValue)”sets the name of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
stype()
Section titled “stype()”- Returns: a description of its type
- Return type:
str
tick(x)
Section titled “tick(x)”Returns the x-th tick of the variable (if the variable is a pyagrum.DiscretizedVariable)
- Parameters:
x (
int) – the index of the tick we want to get - Raises:
- NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – If x is not a valid index for the ticks of the variable
- Returns: float : the x-th tick of the variable
ticks()
Section titled “ticks()”Returns the ticks of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the ticks of the variable, i.e. the values that belong to the variable’s domain
toFast()
Section titled “toFast()”Return the variable description in fast syntax (e.g. name{v1|v2|...}).
- Returns: fast-syntax string representation
- Return type:
str
toStringWithDescription()
Section titled “toStringWithDescription()”- Returns: a description of the variable
- Return type:
str
varType()
Section titled “varType()”returns the type of variable
-
Returns: the type of the variable.
0: DiscretizedVariable, 1: LabelizedVariable, 2: IntegerVariable, 3: NumericalDiscreteVariable, 4: RangeVariable
-
Return type:
int
RangeVariable
Section titled “RangeVariable”class pyagrum.RangeVariable(*args)
Section titled “class pyagrum.RangeVariable(*args)”RangeVariable represents a variable with a range of integers as domain.
RangeVariable(aName, aDesc,minVal, maxVal) -> RangeVariable : Parameters: : - aName (str) – the name of the variable - aDesc (str) – the description of the variable - minVal (int) – the minimal integer of the interval - maxVal (int) – the maximal integer of the interval
RangeVariable(aName, aDesc=’’) -> RangeVariable
: Parameters:
: - aName (str) – the name of the variable
- aDesc (str) – the description of the variable
By default minVal=0 and maxVal=1
RangeVariable(aRV) -> RangeVariable : Parameters: : - aDV (RangeVariable) – the pyagrum.RangeVariable that will be copied
Examples
>>> import pyagrum as gum>>> vI=pyagrum.RangeVariable('I','I in [4,10]',4,10)>>> print(vI)I:Range([4,10])>>> vI.maxVal()10>>> vI.belongs(1)False>>> # where is the value 5 ?>>> vI.index('5')1>>> vI.labels()('4', '5', '6', '7', '8', '9', '10')asDiscretizedVar()
Section titled “asDiscretizedVar()”Tries to cast the variable as a pyagrum.DiscretizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.DiscretizedVar
- Return type:
DiscretizedVariable
asIntegerVar()
Section titled “asIntegerVar()”Tries to cast the variable as a pyagrum.IntegerVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.IntegerVar
- Return type:
IntegerVariable
asLabelizedVar()
Section titled “asLabelizedVar()”Tries to cast the variable as a pyagrum.LabelizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.LabelizedVar
- Return type:
LabelizedVariable
asNumericalDiscreteVar()
Section titled “asNumericalDiscreteVar()”Tries to cast the variable as a pyagrum.NumericalDiscreteVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.NumericalDiscreteVar
- Return type:
NumericalDiscreteVariable
asRangeVar()
Section titled “asRangeVar()”Tries to cast the variable as a pyagrum.RangeVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.RangeVar
- Return type:
RangeVariable
belongs(val)
Section titled “belongs(val)”- Parameters:
val (
int) – the value to be tested - Returns: True if the value in parameters belongs to the variable’s interval.
- Return type:
bool
closestIndex(val)
Section titled “closestIndex(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the index of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the index of the closest value to value in the variable’s domain
- Return type:
int - Raises: pyagrum.NotImplementedYet – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
closestLabel(val)
Section titled “closestLabel(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the label of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the label of the closest value to value in the variable’s domain
- Return type:
str - Raises: pyagrum.InvalidArgument – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
description()
Section titled “description()”- Returns: the description of the variable
- Return type:
str
domain()
Section titled “domain()”- Returns: the domain of the variable
- Return type:
str
domainSize()
Section titled “domainSize()”- Returns: the number of modalities in the variable domain
- Return type:
int
draw(x)
Section titled “draw(x)”Draw a random float value from the x-th interval of the variable (only for pyagrum.DiscretizedVariable).
- Parameters: x (int) – the index of the interval from which to draw
- Returns: a random value drawn uniformly from the x-th interval
- Return type: float
- Raises:
- NotImplementedError – if the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – if x is not a valid interval index
empty()
Section titled “empty()”- Returns: True if the domain size < 2
- Return type:
bool
index(arg2)
Section titled “index(arg2)”- Parameters:
arg2 (
str) – a label - Returns: the indice of the label
- Return type:
int
integerDomain()
Section titled “integerDomain()”Returns the integer domain of the variable (if the variable is a pyagrum.integerVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.IntegerVariable
- Return type:
tuple[int,...] - Returns: tuple[int,…] : the integer domain of the variable
isEmpirical()
Section titled “isEmpirical()”Returns whether the variable is empirical (if the variable is a pyagrum.DiscretizedVariable). I.e. whether its limits (max and min) are defined by data and accept any values below or above these limits, contrary to non-empirical discretized variables for which the limits are fixed and values outside of these limits are not accepted)
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
bool - Returns: bool : whether the variable is empirical
isLabel(s)
Section titled “isLabel(s)”returns whether s is a label of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- Return type:
bool - Returns: bool : True if s is a label of the variable, False otherwise
- Parameters:
s (
str)
isNumerical()
Section titled “isNumerical()”Returns True if the variable has a meaningful numerical representation, i.e. it is not a LabelizedVariable.
- Returns: True for DiscretizedVariable, IntegerVariable, NumericalDiscreteVariable and RangeVariable; False for LabelizedVariable.
- Return type:
bool
isTick(x)
Section titled “isTick(x)”Returns whether x is a tick for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a tick for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Returns: bool : whether x is a tick for the variable, i.e. whether x belongs to the variable’s domain
isValue(x)
Section titled “isValue(x)”Returns whether x is a value for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a value for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable or a pyagrum.IntegerVariable
- Return type:
bool - Returns: bool : whether x is a value for the variable, i.e. whether x belongs to the variable domain
label(index)
Section titled “label(index)”- Parameters:
- indice (int) – the index of the label we wish to return
- index (
int)
- Returns: the indice-th label
- Return type:
str - Raises: pyagrum.OutOfBounds – If the variable does not contain the label
labels()
Section titled “labels()”- Returns: a tuple containing the labels
- Return type:
tuple[str,...]
maxVal()
Section titled “maxVal()”- Returns: the upper bound of the variable.
- Return type:
int
minVal()
Section titled “minVal()”- Returns: the lower bound of the variable
- Return type:
int
name()
Section titled “name()”- Returns: the name of the variable
- Return type:
str
numerical(index)
Section titled “numerical(index)”- Parameters:
index (
int) – an index - Returns: the numerical representation of the value at the given index
- Return type:
float
numericalDomain()
Section titled “numericalDomain()”Returns the numerical domain of the variable (if the variable is a pyagrum.NumericalDiscreteVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.NumericalDiscreteVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the numerical domain of the variable
posLabel(s)
Section titled “posLabel(s)”Returns the index of the label s in the variable’s domain (if the variable is a pyagrum.LabelizedVariable)
- Raises:
- NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- NotFoundError – If the variable does not contain the label s
- Return type:
int - Returns: int : the index of the label s in the variable’s domain
- Parameters:
s (
str)
setDescription(theValue)
Section titled “setDescription(theValue)”set the description of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
setMaxVal(maxVal)
Section titled “setMaxVal(maxVal)”Set a new value of the upper bound
- Parameters:
maxVal (
int) – The new value of the upper bound - Return type:
None
Warning
An error should be raised if the value is lower than the lower bound.
setMinVal(minVal)
Section titled “setMinVal(minVal)”Set a new value of the lower bound
- Parameters:
minVal (
int) – The new value of the lower bound - Return type:
None
Warning
An error should be raised if the value is higher than the upper bound.
setName(theValue)
Section titled “setName(theValue)”sets the name of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
stype()
Section titled “stype()”- Returns: a description of its type
- Return type:
str
tick(x)
Section titled “tick(x)”Returns the x-th tick of the variable (if the variable is a pyagrum.DiscretizedVariable)
- Parameters:
x (
int) – the index of the tick we want to get - Raises:
- NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – If x is not a valid index for the ticks of the variable
- Returns: float : the x-th tick of the variable
ticks()
Section titled “ticks()”Returns the ticks of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the ticks of the variable, i.e. the values that belong to the variable’s domain
toFast()
Section titled “toFast()”Return the variable description in fast syntax (e.g. name[min,max]).
- Returns: fast-syntax string representation
- Return type:
str
toStringWithDescription()
Section titled “toStringWithDescription()”- Returns: a description of the variable
- Return type:
str
varType()
Section titled “varType()”returns the type of variable
-
Returns: the type of the variable.
0: DiscretizedVariable, 1: LabelizedVariable, 2: IntegerVariable, 3: NumericalDiscreteVariable, 4: RangeVariable
-
Return type:
int
NumericalDiscreteVariable
Section titled “NumericalDiscreteVariable”class pyagrum.NumericalDiscreteVariable(*args)
Section titled “class pyagrum.NumericalDiscreteVariable(*args)”NumericalDiscreteVariable is a discrete random variable with a customizable sequence of float.
NumericalDiscreteVariable(aName, aDesc=’’, values=None) -> NumericalDiscreteVariable : Parameters: : - aName (str) – the name of the variable - aDesc (str) – the (optional) description of the variable - values (list of float) – the values to create equivalent to fast syntax {v1|v2|v3|…|vn}
NumericalDiscreteVariable(aName, aDesc=’’, first, last, nbr) -> NumericalDiscreteVariable : Parameters: : - aName (str) – the name of the variable - aDesc (str) – the (optional) description of the variable - first (float) – specify a list of floats from first to last in nbr steps. - last (float) – - nbr (int) – equivalent to fast syntax {first:last:nbr}
NumericalDiscreteVariable(aNDRV) -> NumericalDiscreteVariable : Parameters: : - aNDRV (pyagrum.NumericalDiscreteVariable) – The pyagrum.NumericalDiscreteVariable that will be copied
Examples
>>> import pyagrum as gum>>> # creating a variable with 3 values : 1.5,3.14,1.42>>> va=pyagrum.NumericalDiscreteVariable('a','a numerica variable',[1.5,3.14,1.42])>>> print(va)a:NumericalDiscrete({1.42|1.5|3.14})>>> va.addValue(2.01)(pyagrum.NumericalDiscreteVariable@0x55ea157b8d60) a:NumericalDiscrete({1.42|1.5|2.01|3.14})>>> va.changeValue(3.14,3.1415)>>> print(va)a:NumericalDiscrete({1.42|1.5|2.01|3.1415})>>> vb=pyagrum.NumericalDiscreteVariable('b','b').addValue(3.14).addValue(1.42).addValue(1.5)>>> print(vb)b:NumericalDiscrete({1.42|1.5|3.14})>>> vb.labels()('1.42', '1.5', '3.14')>>>> vc=pyagrum.NumericalDiscreteVariable('c','c',1.2,3.8,5)>>> print(vc)c:NumericalDiscrete({1.2|1.85|2.5|3.15|3.8})addValue(*args)
Section titled “addValue(*args)”Add a value to the list of values for the variable.
- Parameters: value (double) – the new value
- Returns: the Integer variable
- Return type: pyagrum.IntegerVariable
- Raises: pyagrum.DuplicateElement – If the variable already contains the value
asDiscretizedVar()
Section titled “asDiscretizedVar()”Tries to cast the variable as a pyagrum.DiscretizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.DiscretizedVar
- Return type:
DiscretizedVariable
asIntegerVar()
Section titled “asIntegerVar()”Tries to cast the variable as a pyagrum.IntegerVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.IntegerVar
- Return type:
IntegerVariable
asLabelizedVar()
Section titled “asLabelizedVar()”Tries to cast the variable as a pyagrum.LabelizedVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.LabelizedVar
- Return type:
LabelizedVariable
asNumericalDiscreteVar()
Section titled “asNumericalDiscreteVar()”Tries to cast the variable as a pyagrum.NumericalDiscreteVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.NumericalDiscreteVar
- Return type:
NumericalDiscreteVariable
asRangeVar()
Section titled “asRangeVar()”Tries to cast the variable as a pyagrum.RangeVar.
- Raises: pyagrum.OperationNotAllowed if this is not possible –
- Returns: the variable as a pyagrum.RangeVar
- Return type:
RangeVariable
belongs(x)
Section titled “belongs(x)”returns whether x belongs to the variable domain (if the variable is a pyagrum.RangeVariable)
- Parameters:
x (
int) – the value for which we want to know if it belongs to the variable domain - Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
bool - Returns: bool : True if x belongs to the variable domain, False otherwise
changeValue(old_value, new_value)
Section titled “changeValue(old_value, new_value)”- Parameters:
- old_value (
float) – the value to be changed - new_value (
float) – the new value
- old_value (
- Return type:
None
closestIndex(val)
Section titled “closestIndex(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the index of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the index of the closest value to value in the variable’s domain
- Return type:
int - Raises: pyagrum.NotImplementedYet – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
closestLabel(val)
Section titled “closestLabel(val)”For numerical discrete variables (all except pyagrum.LabelizedVariable), this method returns the label of the closest value to a given float value in the variable’s domain.
- Parameters:
val (
float) – the value for which we want to find the closest index - Returns: the label of the closest value to value in the variable’s domain
- Return type:
str - Raises: pyagrum.InvalidArgument – if the variable is not numerical discrete (i.e., if it is a pyagrum.LabelizedVariable).
description()
Section titled “description()”- Returns: the description of the variable
- Return type:
str
domain()
Section titled “domain()”- Returns: the domain of the variable
- Return type:
str
domainSize()
Section titled “domainSize()”- Returns: the number of modalities in the variable domain
- Return type:
int
draw(x)
Section titled “draw(x)”Draw a random float value from the x-th interval of the variable (only for pyagrum.DiscretizedVariable).
- Parameters: x (int) – the index of the interval from which to draw
- Returns: a random value drawn uniformly from the x-th interval
- Return type: float
- Raises:
- NotImplementedError – if the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – if x is not a valid interval index
empty()
Section titled “empty()”- Returns: True if the domain size < 2
- Return type:
bool
eraseValue(value)
Section titled “eraseValue(value)”- Parameters:
value (
float) – the value to erase. If the value is not in the domain, the function does nothing (no exception raised) - Return type:
None
eraseValues()
Section titled “eraseValues()”Remove all the domain.
- Return type:
None
index(label)
Section titled “index(label)”- Parameters:
label (
str) – a label - Returns: the index of the label
- Return type:
int
integerDomain()
Section titled “integerDomain()”Returns the integer domain of the variable (if the variable is a pyagrum.integerVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.IntegerVariable
- Return type:
tuple[int,...] - Returns: tuple[int,…] : the integer domain of the variable
isEmpirical()
Section titled “isEmpirical()”Returns whether the variable is empirical (if the variable is a pyagrum.DiscretizedVariable). I.e. whether its limits (max and min) are defined by data and accept any values below or above these limits, contrary to non-empirical discretized variables for which the limits are fixed and values outside of these limits are not accepted)
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
bool - Returns: bool : whether the variable is empirical
isLabel(s)
Section titled “isLabel(s)”returns whether s is a label of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- Return type:
bool - Returns: bool : True if s is a label of the variable, False otherwise
- Parameters:
s (
str)
isNumerical()
Section titled “isNumerical()”Returns True if the variable has a meaningful numerical representation, i.e. it is not a LabelizedVariable.
- Returns: True for DiscretizedVariable, IntegerVariable, NumericalDiscreteVariable and RangeVariable; False for LabelizedVariable.
- Return type:
bool
isTick(x)
Section titled “isTick(x)”Returns whether x is a tick for the variable
- Parameters:
x (
float) – the value for which we want to know if it is a tick for the variable - Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Returns: bool : whether x is a tick for the variable, i.e. whether x belongs to the variable’s domain
isValue(value)
Section titled “isValue(value)”- Parameters:
value (
float) – the value to look at. - Returns: True if the value is in the domain.
- Return type:
bool
label(index)
Section titled “label(index)”- Parameters:
- i (int) – the index of the label we wish to return
- index (
int)
- Returns: the label at the given index
- Return type:
str - Raises: pyagrum.OutOfBounds – If the variable does not contain the label
labels()
Section titled “labels()”- Returns: a tuple containing the labels
- Return type:
tuple[str,...]
maxVal()
Section titled “maxVal()”returns the maximum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the maximum value of the variable domain
minVal()
Section titled “minVal()”returns the minimum value of the variable domain (if the variable is a pyagrum.RangeVariable)
- Raises: NotImplementedError – If the variable is not a pyagrum.RangeVariable
- Return type:
int - Returns: int : the minimum value of the variable domain
name()
Section titled “name()”- Returns: the name of the variable
- Return type:
str
numerical(index)
Section titled “numerical(index)”- Parameters:
index (
int) – an index - Returns: the numerical representation of the value at the given index
- Return type:
float
numericalDomain()
Section titled “numericalDomain()”- Returns: the tuple of float values that form the domain of this variable
- Return type:
tuple[float,...]
posLabel(s)
Section titled “posLabel(s)”Returns the index of the label s in the variable’s domain (if the variable is a pyagrum.LabelizedVariable)
- Raises:
- NotImplementedError – If the variable is not a pyagrum.LabelizedVariable
- NotFoundError – If the variable does not contain the label s
- Return type:
int - Returns: int : the index of the label s in the variable’s domain
- Parameters:
s (
str)
setDescription(theValue)
Section titled “setDescription(theValue)”set the description of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
setName(theValue)
Section titled “setName(theValue)”sets the name of the variable.
- Parameters:
theValue (
str) – the new description of the variable - Return type:
None
stype()
Section titled “stype()”- Returns: a description of its type
- Return type:
str
tick(x)
Section titled “tick(x)”Returns the x-th tick of the variable (if the variable is a pyagrum.DiscretizedVariable)
- Parameters:
x (
int) – the index of the tick we want to get - Raises:
- NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- pyagrum.OutOfBounds – If x is not a valid index for the ticks of the variable
- Returns: float : the x-th tick of the variable
ticks()
Section titled “ticks()”Returns the ticks of the variable
- Raises: NotImplementedError – If the variable is not a pyagrum.DiscretizedVariable
- Return type:
tuple[float,...] - Returns: tuple[float,…] : the ticks of the variable, i.e. the values that belong to the variable’s domain
toFast()
Section titled “toFast()”Return the variable description in fast syntax (e.g. name{v1|v2|...}).
- Returns: fast-syntax string representation
- Return type:
str
toStringWithDescription()
Section titled “toStringWithDescription()”- Returns: a description of the variable
- Return type:
str
varType()
Section titled “varType()”returns the type of variable
-
Returns: the type of the variable.
0: DiscretizedVariable, 1: LabelizedVariable, 2: IntegerVariable, 3: NumericalDiscreteVariable, 4: RangeVariable
-
Return type:
int