Numerical tool for perfroming uncertainty quantification
Project description
Chaospy is a numerical tool for performing uncertainty quantification using polynomial chaos expansions and advanced Monte Carlo methods implemented in Python.
Installation
Installation should be straight forward using pip:
$ pip install chaospy
For more installation details, see the installation guide.
Example Usage
chaospy is created to work well inside numerical Python ecosystem. You therefore typically need to import Numpy along side chaospy:
>>> import numpy
>>> import chaospy
chaospy is problem agnostic, so you can use your own code using any means you find fit. The only requirement is that the output is compatible with numpy.ndarray format:
>>> coordinates = numpy.linspace(0, 10, 100)
>>> def forward_solver(coordinates, parameters):
... """Function to do uncertainty quantification on."""
... param_init, param_rate = parameters
... return param_init*numpy.e**(-param_rate*coordinates)
We here assume that parameters contains aleatory variability with known probability. We formalize this probability in chaospy as a joint probability distribution. For example:
>>> distribution = chaospy.J(chaospy.Uniform(1, 2), chaospy.Normal(0, 2))
>>> print(distribution)
J(Uniform(lower=1, upper=2), Normal(mu=0, sigma=2))
Most probability distributions have an associated expansion of orthogonal polynomials. These can be automatically constructed:
>>> expansion = chaospy.generate_expansion(8, distribution)
>>> print(expansion[:5].round(8))
[1.0 q1 q0-1.5 q0*q1-1.5*q1 q0**2-3.0*q0+2.16666667]
Here the polynomial is defined positional, such that q0 and q1 refers to the uniform and normal distribution respectively.
The distribution can also be used to create (pseudo-)random samples and low-discrepancy sequences. For example to create Sobol sequence samples:
>>> samples = distribution.sample(1000, rule="sobol")
>>> print(samples[:, :4].round(8))
[[ 1.5 1.75 1.25 1.375 ]
[ 0. -1.3489795 1.3489795 -0.63727873]]
We can evaluating the forward solver using these samples:
>>> evaluations = numpy.array([forward_solver(coordinates, sample)
... for sample in samples.T])
>>> print(evaluations[:3, :5].round(8))
[[1.5 1.5 1.5 1.5 1.5 ]
[1.75 2.00546578 2.29822457 2.63372042 3.0181921 ]
[1.25 1.09076905 0.95182169 0.83057411 0.72477163]]
Having all these components in place, we have enough components to perform point collocation. Or in other words, we can create a polynomial approximation of forward_solver:
>>> approx_solver = chaospy.fit_regression(expansion, samples, evaluations)
>>> print(approx_solver[:2].round(4))
[q0 -0.0002*q0*q1**3+0.0051*q0*q1**2-0.101*q0*q1+q0]
Since the model approximations are polynomials, we can do inference on them directly. For example:
>>> expected = chaospy.E(approx_solver, distribution)
>>> deviation = chaospy.Std(approx_solver, distribution)
>>> print(expected[:5].round(8))
[1.5 1.53092356 1.62757217 1.80240142 2.07915608]
>>> print(deviation[:5].round(8))
[0.28867513 0.43364958 0.76501802 1.27106355 2.07110879]
For more extensive guides on this approach an others, see the tutorial collection.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chaospy-4.2.3.tar.gz.
File metadata
- Download URL: chaospy-4.2.3.tar.gz
- Upload date:
- Size: 154.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.9 CPython/3.9.0 Linux/4.15.0-1092-aws
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e411975c5c8efead8005d40a29a1c4ebe4d9562a7ac0888b1ee7a5b0460e09af
|
|
| MD5 |
ab77baef3ff15f900a5de1de35d9fac7
|
|
| BLAKE2b-256 |
5a4b4521dfd38bfd1e328725d4f6406d0b1620a08be64f4d2772dba38a26d69d
|
File details
Details for the file chaospy-4.2.3-py2.py3-none-any.whl.
File metadata
- Download URL: chaospy-4.2.3-py2.py3-none-any.whl
- Upload date:
- Size: 240.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.9 CPython/3.9.0 Linux/4.15.0-1092-aws
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b99e34508bac8cb7c8c8c656d4eb5f7b87f06e5372675bfea1e2d1e05f2e0657
|
|
| MD5 |
d82031f26222ba8b81f94b35b24b627c
|
|
| BLAKE2b-256 |
99f44429a93f5961fd851ec74727f61764548e17083359f4e6ac71913a0f5ea0
|