Chaospy is a numerical tool for performing uncertainty quantification using polynomial chaos expansions and advanced Monte Carlo methods implemented in Python 2 and 3.
A article in Elsevier Journal of Computational Science has been published introducing the software: here. If you are using this software in work that will be published, please cite this paper.
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
pip install -r requirements.txt
python setup.py install
The last command might need sudo
prefix, depending on your python setup.
Optionally, to support more regression methods, install the Scikit-learn package:
pip install scikit-learn
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(cp.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.
For any problems and questions you might have related to chaospy
, please feel free to file an issue.