Parallel¶
Parallel
calculates the model and features of the
model for one specific set of model parameters.
Parallel
is the class that is run in parallel.
API Reference¶
-
class
uncertainpy.core.
Parallel
(model=None, features=None, logger_level=u'info')[source]¶ Calculates the model and features of the model for one set of model parameters. Is the class that is run in parallel.
Parameters: - model ({None, Model or Model subclass instance, model function}, optional) – Model to perform uncertainty quantification on. For requirements see Model.run. Default is None.
- features ({None, Features or Features subclass instance, list of feature functions}, optional) – Features to calculate from the model result. If None, no features are calculated. If list of feature functions, all will be calculated. Default is None.
- logger_level ({“info”, “debug”, “warning”, “error”, “critical”, None}, optional) – Set the threshold for the logging level. Logging messages less severe than this level is ignored. If None, no logging to file is performed Default logger level is “info”.
Variables: - model (uncertainpy.Parallel.model) –
- features (uncertainpy.Parallel.features) –
See also
uncertainpy.features.Features
,uncertainpy.models.Model
uncertainpy.models.Model.run
- Requirements for the model run function.
-
create_interpolations
(result)[source]¶ Create an interpolation.
Model or feature result s that have a varying number of time steps, are interpolated. Interpolation is only performed for one dimensional result. Zero dimensional result does not need to be interpolated, and support for interpolating two dimensional and above result have currently not been implemented. Adds a “interpolation” key-value pair to result.
Parameters: result (dict) – The model and feature results. The model and each feature each has a dictionary with the time values,
"time"
, and model/feature results,"values"
. An example:result = {model.name: {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature1d": {"values": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature0d": {"values": 1, "time": np.nan}, "feature2d": {"values": array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature_adaptive": {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature_invalid": {"values": np.nan, "time": np.nan}}
Returns: result – If an interpolation has been created, those features/model have “interpolation” and the corresponding interpolation object added to each features/model dictionary. An example:
result = {self.model.name: {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature1d": {"values": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature0d": {"values": 1, "time": np.nan}, "feature2d": {"values": array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature_adaptive": {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), "interpolation": scipy interpolation object}, "feature_invalid": {"values": np.nan, "time": np.nan}}
Return type: dict
Notes
If either model or feature results are irregular, the results must be interpolated for Chaospy to be able to create the polynomial approximation. For 1D results this is done with scipy:
InterpolatedUnivariateSpline(time, U, k=3)
.
-
features
¶ Features to calculate from the model result.
Parameters: new_features ({None, Features or Features subclass instance, list of feature functions}) – Features to calculate from the model result. If None, no features are calculated. If list of feature functions, all will be calculated. Returns: features – Features to calculate from the model result. If None, no features are calculated. Return type: {None, Features object}
-
interpolation_1d
(result, feature)[source]¶ Create an interpolation for an 1D result.
Parameters: result (dict) – The model and feature results. The model and each feature each has a dictionary with the time values,
"time"
, and model/feature results,"values"
. An example:result = {model.name: {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature1d": {"values": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature0d": {"values": 1, "time": np.nan}, "feature2d": {"values": array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature_adaptive": {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature_invalid": {"values": np.nan, "time": np.nan}}
Returns: interpolation – The result of the interpolation. If either the time or values contain None or numpy.nan, None is returned.
Return type: {scipy.interpolate.fitpack2.InterpolatedUnivariateSpline, None}
Raises: ValueError
– If the values of the feature are not 1D.ValueError
– If the time of the feature is not 1D.
Notes
The interpolation is performed using scipy:
InterpolatedUnivariateSpline(time, values, k=3)
.
-
model
¶ Model to perform uncertainty quantification on. For requirements see Model.run.
Parameters: new_model ({None, Model or Model subclass instance, model function}) – Model to perform uncertainty quantification on. Returns: model – Model to perform uncertainty quantification on. Return type: Model or Model subclass instance
-
run
(model_parameters)[source]¶ Run a model and calculate features from the model output, return the results.
The model is run and each feature of the model is calculated from the model output, time (time values) and values (model result). The results are interpolated if they are irregular, meaning they return a varying number of steps. An interpolation is created and added to results for the model/features that are irregular. Each instance of None is converted to
numpy.nan
.Parameters: model_parameters (dictionary) – All model parameters as a dictionary. These parameters are sent to model.run(). Returns: result – The model and feature results. The model and each feature each has a dictionary with the time values, "time"
, and model/feature results,"values"
. If an interpolation has been created, those features/model also has"interpolation"
added. An example:result = {self.model.name: {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature1d": {"values": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature0d": {"values": 1, "time": np.nan}, "feature2d": {"values": array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}, "feature_adaptive": {"values": array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "time": array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), "interpolation": scipy interpolation object}, "feature_invalid": {"values": np.nan, "time": np.nan}}
Return type: dictionary Notes
Time time and result values are calculated from the model. Then sent to model.postprocess, and the postprocessed result from model.postprocess is added to result. time and values are sent to features.preprocess and the preprocessed results is used to calculate each feature.
See also
uncertainpy.utils.utility.none_to_nan()
- Method for converting from None to NaN
uncertainpy.features.Features.preprocess()
- preprocessing model results before features are calculated
uncertainpy.models.Model.postprocess()
- posteprocessing of model results