pymor.parameters.base¶
This module contains the implementation of pyMOR’s parameter handling facilities.
Use the ParametricObject base class to define immutable (mathematical) objects that
depend on some Parameters. Each Parameter in pyMOR has a name and a fixed dimension
(number of scalar components of the parameter vector). In particular, scalar parameters
are treated as parameter vectors of dimension 1. Mappings of Parameters to
parameter values are stored in pyMOR using dedicated Mu objects.
To sample parameter values within a given range, ParameterSpace objects can be used.
Module Contents¶
- class pymor.parameters.base.Mu(*args, **kwargs)[source]¶
Bases:
pymor.core.base.ImmutableObjectImmutable mapping of
Parameternames to parameter values.This class represents an immutable mapping (
dict) from parameter names to corresponding values given as one-dimensionalNumPy arrays. In addition, time-dependent parameter values may be stored in thetime_dependent_valuesattribute, which is an immutable mapping from parameter names toFunctionsof time.Note
Time-dependent parameter values are invisible when using the class’s mapping protocol methods (
__contains__,__getitem__,keys,items, etc.). Code wanting to handle time-dependent values needs to useat_timeor explicitly lookup values intime_dependent_values.- Parameters:
*args – Anything that dict accepts for the construction of a dictionary. Values are automatically converted to one-dimensional
NumPy arrays, except forFunctions, which are interpreted as time-dependent parameter values. Unless the Python interpreter runs with the-Oflag, the arrays are made immutable.
Methods
Return a new
Muinstance with values for given time.Returns a copy with changed attributes.
- at_time(t)[source]¶
Return a new
Muinstance with values for given time.This method evaluates all
time_dependent_valuesfor the given evaluation timetand returns a newMucontaining these values along with the other non-time-dependent values.- Parameters:
t – Evaluation time for the time-dependent parameter values.
- with_(new_type=None, **kwargs)[source]¶
Returns a copy with changed attributes.
A a new class instance is created with the given keyword arguments as arguments for
__init__. Missing arguments are obtained form instance attributes with the same name.- Parameters:
new_type – If not None, return an instance of this class (instead of
type(self)).**kwargs – Names of attributes to change with their new values. Each attribute name has to be an argument to
__init__.
- Returns:
Copy of
selfwith changed attributes.
- class pymor.parameters.base.ParameterSpace(parameters, *ranges, constraints=None)[source]¶
Bases:
ParametricObjectA set of
Parameterswith allowed ranges for their values.ParameterSpacesare mostly used to create sample set ofparameter valuesfor givenParameterswithin a specified range.- parameters[source]¶
The
Parameterswhich are part of the space.
- ranges[source]¶
Allowed ranges for the
parameter values. Either:two numbers specifying the lower and upper bound for all parameter value components,
a list/tuple of two numbers specifying these bounds,
or a dict of those tuples, specifying upper and lower bounds individually for each parameter of the space.
- constraints[source]¶
If not
None, a functionconstraints(mu) -> booldefining additional (inequality) constraints on the space. For each givenparameter valuesthat lies within the givenranges,constraintsis called to check if the constraints are satisfied.
Methods
Clip (limit)
parameter valuesto the space's parameter ranges.Logarithmically scaled random sample
parameter valuesfrom the space.Logarithmically uniform sample
parameter valuesfrom the space.Randomly sample
parameter valuesfrom the space.Uniformly sample
parameter valuesfrom the space.- clip(mu, keep_additional=False)[source]¶
Clip (limit)
parameter valuesto the space’s parameter ranges.- Parameters:
mu –
Parameter valueto clip.keep_additional – If
True, keep additional values in theMuinstance which are not contained in the parameters, e.g. time parameters.
- Returns:
The clipped |parameter values|.
- sample_logarithmic_randomly(count=None)[source]¶
Logarithmically scaled random sample
parameter valuesfrom the space.- Parameters:
count – If
None, a single dictmuofparameter valuesis returned. Otherwise, the number of logarithmically random samples to generate and return as a list ofparameter valuesdicts.- Returns:
The sampled |parameter values|.
- sample_logarithmic_uniformly(counts)[source]¶
Logarithmically uniform sample
parameter valuesfrom the space.In the case of additional
constraints, the samples are generated w.r.t. the box constraints specified byranges, but only thoseparameter valuesare returned, which satisfy the additional constraints.- Parameters:
counts – Number of samples to take per parameter and component of the parameter. Either a dict of counts per
Parameteror a single count that is taken for each parameter inParameters.- Returns:
List of |parameter value| dicts.
- sample_randomly(count=None)[source]¶
Randomly sample
parameter valuesfrom the space.- Parameters:
count – If
None, a single dictmuofparameter valuesis returned. Otherwise, the number of random samples to generate and return as a list ofparameter valuesdicts.- Returns:
The sampled |parameter values|.
- sample_uniformly(counts)[source]¶
Uniformly sample
parameter valuesfrom the space.In the case of additional
constraints, the samples are generated w.r.t. the box constraints specified byranges, but only thoseparameter valuesare returned, which satisfy the additional constraints.- Parameters:
counts – Number of samples to take per parameter and component of the parameter. Either a dict of counts per
Parameteror a single count that is taken for each parameter inParameters.- Returns:
List of |parameter value| dicts.
- class pymor.parameters.base.Parameters(*args, **kwargs)[source]¶
Bases:
pymor.tools.frozendict.SortedFrozenDictImmutable dict mapping parameter names to parameter dimensions.
Each key of a
Parametersdict is a string specifying the name of a parameter. The corresponding value is a non-negativeintspecifying the dimension (number of scalar components) of the parameter.Methods
Assert that
parameter valuesare compatible with the givenParameters.Check if
parameter valuesare compatible with the givenParameters.Computes the total set of
Parametersa collection of objects depends on.Interpret
muas a set ofparameter valuesaccording to the givenParameters.Create a
ParameterSpacewith given ranges.- assert_compatible(mu, allow_time_dependent=False)[source]¶
Assert that
parameter valuesare compatible with the givenParameters.Each of the parameter must be contained in
muand the dimensions have to match, i.e.mu[parameter].size == self[parameter]
Otherwise, an
AssertionErrorwill be raised.- Parameters:
allow_time_dependent – If
True, also the time-dependent parameter values stored inmuare taken into account. As these values are only usable when an evaluation time't'is specified, code handling these values must be ‘time-aware’. Therefore, the default for this parameter isFalse, which means that time-dependent values are treated as non-existent.
- is_compatible(mu, allow_time_dependent=False)[source]¶
Check if
parameter valuesare compatible with the givenParameters.Each of the parameter must be contained in
muand the dimensions have to match, i.e.mu[parameter].size == self[parameter]
- Parameters:
allow_time_dependent – If
True, also the time-dependent parameter values stored inmuare taken into account. As these values are only usable when an evaluation time't'is specified, code handling these values must be ‘time-aware’. Therefore, the default for this parameter isFalse, which means that time-dependent values are treated as non-existent.
- classmethod of(*args)[source]¶
Computes the total set of
Parametersa collection of objects depends on.If two objects depend on a parameter with the same name, both parameters must have the same dimension.
- Parameters:
args – Each positional argument must either be
None, aParametricObjector lists, tuples, dicts orNumPy arraysof such objects. The latter will be traversed recursively.
- parse(mu)[source]¶
Interpret
muas a set ofparameter valuesaccording to the givenParameters.Depending on the
Parameters,mucan be given as a dict, list, tuple,NumPy arrayor scalar. In the latter cases, multiple parameters will be concatenated by alphabetical ordering. E.g.:Parameters(b=2, a=1).parse([1,2,3])
will assign to parameter
athe value[1]and to parameterbthe values[2, 3]. Further, each parameter value can be given as a vector-valuedFunctionwithdim_domain == 1to specify time-dependent values. Astris converted to an appropriateExpressionFunction.- Parameters:
mu – The user input which shall be interpreted as
parameter values.- Returns:
The resulting object of |parameter values|.
- Raises:
ValueError – Is raised if
mucannot be interpreted asparameter valuesfor the givenParameters.
- space(*ranges, constraints=None)[source]¶
Create a
ParameterSpacewith given ranges.This is a shorthand for
ParameterSpace(self, *range, constraints=constraints)
See
ParameterSpacefor allowedrangeandconstraintsarguments.
- class pymor.parameters.base.ParametricObject[source]¶
Bases:
pymor.core.base.ImmutableObjectBase class for immutable mathematical entities depending on some
Parameters.Each
ParametricObjectlists theParametersit depends on in theparametersattribute. Usually, theseParametersare automatically derived as the union of allParametersof the object’s__init__arguments.Additional
Parametersintroduced by the object itself can be specified by setting theparameters_ownattribute in__init__. In case the object fixes someParametersit’s child objects depend on to concrete values, thoseParameterscan be removed from theparametersattribute by settingparameters_internal.Alternatively,
parameterscan be initialized manually in__init__.- parameters[source]¶
The
Parametersthe object depends on.
- parameters_own[source]¶
The
Parametersthe object depends on which are not inherited from a child object the object depends on. Each item ofparameters_ownis also an item ofparameters.
- parameters_inherited[source]¶
The
Parametersthe object depends on because some child object depends on them. Each item ofparameters_inheritedis also an item ofparameters.
- parameters_internal[source]¶
The
Parameterssome of the object’s child objects may depend on, but which are fixed to a concrete value by this object. All items ofparameters_internalare removed fromparametersandparameters_inherited. When initializingparameters_ownandparameters_internal, it has to be ensured that both dicts are disjoint.
- parametric[source]¶
Trueif the object really depends on a parameter, i.e.parametersis not empty.