# HyperbolicAnisotropicEnumerateFunction¶

class HyperbolicAnisotropicEnumerateFunction(*args)

Hyperbolic and anisotropic enumerate function.

Available constructors:

HyperbolicAnisotropicEnumerateFunction(dim)

HyperbolicAnisotropicEnumerateFunction(dim, q)

HyperbolicAnisotropicEnumerateFunction(weight)

HyperbolicAnisotropicEnumerateFunction(weight, q)

Parameters:
dimint

Dimension of the EnumerateFunction. dim must be equal to the dimension of the OrthogonalBasis.

qfloat

Correspond to the q-quasi norm parameter. If not precised, .

weightsequence of float

Weights of the indices in each dimension. If not precised, all weights are equals to .

Notes

The hyperbolic truncation strategy is inspired by the so-called sparsity-of- effects principle, which states that most models are principally governed by main effects and low-order interactions. Accordingly, one wishes to define an enumeration strategy which first selects those multi-indices related to main effects, i.e. with a reasonably small number of nonzero components, prior to selecting those associated with higher-order interactions.

For any real number , one defines the anisotropic hyperbolic norm of a multi-index by:

where is the number of input variables and is a sequence of real positive numbers called weights. Functions of input variables with smaller weights are selected first for the functional basis.

Examples

In the following example, we create an hyperbolic enumerate function in 2 dimension with a quasi-norm equal to 0.5. Notice, for example, that the function with multi-index [3,0] come before [1,1], although the sum of marginal indices is lower: this is the result of the hyperbolic quasi-norm.

>>> import openturns as ot
>>> enumerateFunction = ot.HyperbolicAnisotropicEnumerateFunction(2, 0.5)
>>> for i in range(10):
...     print(enumerateFunction(i))
[0,0]
[1,0]
[0,1]
[2,0]
[0,2]
[3,0]
[0,3]
[1,1]
[4,0]
[0,4]


In the following example, we create an hyperbolic enumerate function in 3 dimensions based on the weights [1,2,4]. Notice that the first marginal index, with weight equal to 1, comes first in the enumeration.

>>> import openturns as ot
>>> enumerateFunction = ot.HyperbolicAnisotropicEnumerateFunction([1, 2, 4])
>>> for i in range(20):
...     print('i=', i, 'enum=', enumerateFunction(i))
i= 0 enum= [0,0,0]
i= 1 enum= [1,0,0]
i= 2 enum= [0,1,0]
i= 3 enum= [2,0,0]
i= 4 enum= [3,0,0]
i= 5 enum= [0,0,1]
i= 6 enum= [0,2,0]
i= 7 enum= [4,0,0]
i= 8 enum= [5,0,0]
i= 9 enum= [0,3,0]
i= 10 enum= [6,0,0]
i= 11 enum= [7,0,0]
i= 12 enum= [0,0,2]
i= 13 enum= [0,4,0]
i= 14 enum= [8,0,0]
i= 15 enum= [1,1,0]
i= 16 enum= [9,0,0]
i= 17 enum= [0,5,0]
i= 18 enum= [10,0,0]
i= 19 enum= [11,0,0]


Methods

 getBasisSizeFromTotalDegree(maximumDegree) Get the basis size corresponding to a total degree. Accessor to the object's name. Return the dimension of the EnumerateFunction. getMaximumDegreeCardinal(maximumDegree) Get the number of multi-indices of total degree lower or equal to a threshold. getMaximumDegreeStrataIndex(maximumDegree) Get the largest index of the strata containing multi-indices lower or equal to the given maximum degree. Accessor to the object's name. Accessor to the norm. getStrataCardinal(strataIndex) Get the number of multi-indices in the basis inside a given strata. getStrataCumulatedCardinal(strataIndex) Get the number of multi-indices in the basis inside a range of stratas. Accessor to the upper bound. Accessor to the weights. Test if the object is named. inverse(indices) Get the antecedent of a indices list in the EnumerateFunction. setDimension(dimension) Set the dimension of the EnumerateFunction. setName(name) Accessor to the object's name. Accessor to the norm. setUpperBound(upperBound) Accessor to the upper bound. setWeight(weight) Accessor to the weights.
__init__(*args)
getBasisSizeFromTotalDegree(maximumDegree)

Get the basis size corresponding to a total degree.

Parameters:
max_degint

Maximum total degree.

Returns:
sizeint

Number of multi-indices in the basis of total degree .

Notes

In the specific context of a linear enumeration (LinearEnumerateFunction) this is also the cumulated cardinal of stratas up to max_deg.

Examples

>>> import openturns as ot
>>> dim = 2
>>> enum_func = ot.LinearEnumerateFunction(dim)
>>> enum_func.getBasisSizeFromTotalDegree(3)
10
>>> enum_func.getStrataCumulatedCardinal(3)
10

getClassName()

Accessor to the object’s name.

Returns:
class_namestr

The object class name (object.__class__.__name__).

getDimension()

Return the dimension of the EnumerateFunction.

Returns:
dimint,

Dimension of the EnumerateFunction.

getMaximumDegreeCardinal(maximumDegree)

Get the number of multi-indices of total degree lower or equal to a threshold.

Parameters:
max_degint

Maximum total degree.

Returns:
cardinalint

Number of multi-indices in the basis of total degree .

Notes

In the specific context of a linear enumeration (LinearEnumerateFunction) this is also the cumulated cardinal of stratas of index .

Examples

>>> import openturns as ot
>>> dim = 2
>>> enum_func = ot.LinearEnumerateFunction(dim)
>>> enum_func.getMaximumDegreeCardinal(2)
6

getMaximumDegreeStrataIndex(maximumDegree)

Get the largest index of the strata containing multi-indices lower or equal to the given maximum degree.

Parameters:
max_degint

Maximum total degree.

Returns:
indexint

Index of the last strata that contains multi-indices of total degree .

Notes

In the specific context of a linear enumeration (LinearEnumerateFunction) this is the strata of index max_deg.

Examples

>>> import openturns as ot
>>> dim = 2
>>> enum_func = ot.LinearEnumerateFunction(dim)
>>> enum_func.getMaximumDegreeStrataIndex(2)
2

getName()

Accessor to the object’s name.

Returns:
namestr

The name of the object.

getQ()

Accessor to the norm.

Returns:
qfloat

q-quasi norm parameter.

getStrataCardinal(strataIndex)

Get the number of multi-indices in the basis inside a given strata.

Parameters:
strataIndexint

Index of the strata of the tensorized basis.

Returns:
cardinalint

Number of multi-indices in the basis inside the strata strataIndex.

Notes

In the specific context of a linear enumeration (LinearEnumerateFunction) the strata strataIndex consists of a hyperplane of all the multi-indices of total degree strataIndex, and its cardinal is strataIndex + 1.

Examples

>>> import openturns as ot
>>> dim = 2
>>> enum_func = ot.LinearEnumerateFunction(dim)
>>> enum_func.getStrataCardinal(2)
3

getStrataCumulatedCardinal(strataIndex)

Get the number of multi-indices in the basis inside a range of stratas.

Parameters:
strataIndexint

Index of the strata of the tensorized basis.

Returns:
cardinalint

Number of multi-indices in the basis inside the stratas of index lower or equal to strataIndex.

Notes

The number of multi-indices is the total of multi-indices inside the stratas. In the specific context of a linear enumeration (LinearEnumerateFunction) this returns the number of multi-indices of maximal total degree strataIndex.

Examples

>>> import openturns as ot
>>> dim = 2
>>> enum_func = ot.LinearEnumerateFunction(dim)
>>> enum_func.getStrataCumulatedCardinal(2)
6
>>> sum([enum_func.getStrataCardinal(i) for i in range(3)])
6

getUpperBound()

Accessor to the upper bound.

Returns:
ubsequence of int

Upper bound of the indices (inclusive).

getWeight()

Accessor to the weights.

Returns:
wPoint

Weights of the indices in each dimension.

hasName()

Test if the object is named.

Returns:
hasNamebool

True if the name is not empty.

inverse(indices)

Get the antecedent of a indices list in the EnumerateFunction.

Parameters:
multiIndexsequence of int

List of indices.

Returns:
antecedentint

Represents the antecedent of the multiIndex in the EnumerateFunction.

Examples

>>> import openturns as ot
>>> dim = 2
>>> enum_func = ot.LinearEnumerateFunction(dim)
>>> for i in range(6):
...     print(str(i)+' '+str(enum_func(i)))
0 [0,0]
1 [1,0]
2 [0,1]
3 [2,0]
4 [1,1]
5 [0,2]
>>> print(enum_func.inverse([1,1]))
4

setDimension(dimension)

Set the dimension of the EnumerateFunction.

Parameters:
dimint,

Dimension of the EnumerateFunction.

setName(name)

Accessor to the object’s name.

Parameters:
namestr

The name of the object.

setQ(q)

Accessor to the norm.

Parameters:
qfloat

q-quasi norm parameter.

setUpperBound(upperBound)

Accessor to the upper bound.

Parameters:
ubsequence of int

Upper bound of the indices (inclusive).

setWeight(weight)

Accessor to the weights.

Parameters:
wsequence of float

Weights of the indices in each dimension.