Chaospy is a numerical tool for performing uncertainty quantification using polynomial chaos expansions and advanced Monte Carlo methods implemented in Python 2 and 3.
If you are using this software in work that will be published, please cite the journal article: Chaospy: An open source tool for designing methods of uncertainty quantification
Table of Contents:
Installation should be straight forward:
pip install chaospy
And you should be ready to go.
Alternatively, to get the most current experimental version, the code can be installed from Github as follows:
git clone git@github.com:jonathf/chaospy.git cd chaospy python setup.py install
To install tools for doing development add the extra step:
pip install -r requirements.txt
chaospy
is created to be simple and modular. A simple script to implement
point collocation method will look as follows:
import chaospy
import numpy
# your code wrapper goes here
def foo(coord, prm):
"""Function to do uncertainty quantification on."""
return prm[0] * numpy.e ** (-prm[1] * numpy.linspace(0, 10, 100))
# bi-variate probability distribution
distribution = choaspy.J(chaospy.Uniform(1, 2), chaospy.Uniform(0.1, 0.2))
# polynomial chaos expansion
polynomial_expansion = chaospy.orth_ttr(8, distribution)
# samples:
samples = distribution.sample(1000)
# evaluations:
evals = [foo(sample) for sample in samples.T]
# polynomial approximation
foo_approx = chaospy.fit_regression(
polynomial_expansion, samples, evals)
# statistical metrics
expected = chaospy.E(foo_approx, distribution)
deviation = chaospy.Std(foo_approx, distribution)
For a more extensive description of what going on, see the tutorial.
For a collection of recipes, see the cookbook.
Chaospy is being used in other related projects that requires uncertainty
quantification components chaospy
provides.
easyVVUQ | Library designed to facilitate verification, validation and uncertainty quantification. |
STARFiSh | Shell-based, scientific simulation program for blood flow in mammals. |
SurUQ | Surrogate modeling with nested uncertainty quantification. |
UncertainPy | Uncertainty quantification and sensitivity analysis, tailored towards computational neuroscience. |
Also a few shout-outs:
OpenTURNS | Thanks to Régis Lebrun for both proposing a collaboration
and creating an initial implementation of both
Chaospy Compatibility in OpenTURNS and
OpenTURNS Compatibility in chaospy . |
orthopy quadpy | Thanks to Nico Schlömer for providing the implementation for several of the quadrature integration methods. |
UQRF |
Thanks to Florian Künzner for providing the implementation for sample distribution. |
For any problems and questions you might have related to chaospy
, please
feel free to file an issue.