Source code for uncertainpy.distribution

from __future__ import absolute_import, division, print_function, unicode_literals

import chaospy as cp

"""
Functions (that work as closures) used to set the distribution of a
parameter to an `interval` around their original value.
"""

[docs]def uniform(interval): """ A closure that creates a function that takes a `parameter` as input and returns a uniform distribution with `interval` around `parameter`. Parameters ---------- interval : int, float The interval of the uniform distribution around `parameter`. Returns ------- distribution : function A function that takes `parameter` as input and returns a uniform distribution with `interval` around this `parameter`. Notes ----- This function ultimately calculates: .. code-block:: Python cp.Uniform(parameter - abs(interval/2.*parameter), parameter + abs(interval/2.*parameter)). """ def distribution(parameter): if parameter == 0: raise ValueError("Creating a percentage distribution around 0 does not work") return cp.Uniform(parameter - abs(interval/2.*parameter), parameter + abs(interval/2.*parameter)) return distribution
[docs]def normal(interval): """ A closure that creates a function that takes a `parameter` as input and returns a Gaussian distribution with standard deviation `interval*parameter` around `parameter`. Parameters ---------- interval : int, float The interval of the standard deviation ``interval*parameter`` for the Gaussian distribution. Returns ------- distribution : function A function that takes a `parameter` as input and returns a Gaussian distribution standard deviation ``interval*parameter``. Notes ----- This function ultimately calculates: .. code-block:: Python cp.Normal(parameter, abs(interval*parameter)) """ def distribution(parameter): if parameter == 0: raise ValueError("Creating a percentage distribution around 0 does not work") return cp.Normal(parameter, abs(interval*parameter)) return distribution