# Basic features:#

Highly efficient

**uncertainty analysis of N-dimensional systems**Sensitivity analysis using

**Sobol indices**and**Global derivative based sensitivity indices**Easy

**coupling**to user defined models written in Python, Matlab, Julia, etc…The

**parallelization**concept allows to run model evaluations in parallelHighly efficient

**adaptive algorithms**allow for analysis of complex systemsIncludes highly efficient

**CPU**and**GPU (CUDA)**implementations to significantly accelerate algorithmic and post-processing routines for high-dimensional and complex problems- Includes
**state-of-the-art techniques**such as: **Projection:**determination of optimal reduced basis**L1-minimization:**reduction of necessary model evaluations by making use of concepts from compressed sensing**Gradient enhanced gPC:**use of gradient information of the model function to increase accuracy**Multi-element gPC:**analyzing systems with discontinuities and sharp transitions**Optimized Latin Hypercube Sampling**for fast convergence

- Includes

# Areas of application:#

pygpc can be used to analyze a variety of different of problems. It is used for example in the frameworks of:

Nondestructive testing:

Noninvasive brain stimulation:

Energy storage:

Aerospace engineering:

Cancer treatment:

If you use pygpc in your studies, please contact Konstantin Weise to extend the list above.

# Installation#

**Installation using pip:**

Pygpc can be installed via the pip command with Python >= 3.6. Simply run the following command in your terminal:

```
pip install pygpc
```

If you want to use the plot functionalities of pygpc, please also install matplotlib and seaborn:

```
pip install matplotlib seaborn
```

**Installation using the GitHub repository:**

Alternatively, it is possible to clone this repository and run the setup manually. This requires a compiler that supports OpenMP which is used by the C-extensions and NumPy for some headers. You can install NumPy by running the following command:

```
pip install numpy
```

Alternatively you can install the build dependencies with the following command:

```
pip install -r requirements.txt
```

Afterwards, pygpc can be installed by running the following line from the directory in which the repository was cloned:

```
python setup.py install
```

**Installation of the CUDA backend:**

Pygpc also provides a CUDA-backend to speed up some computations. To use the backend you need to build it manually. This requires the CUDA-toolkit and CMake. CMake can be installd via the pip command. Simply run the following command in your terminal:

```
pip install cmake
```

For the installation of the CUDA-toolkit please refer to: https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html. If CMake and the CUDA-toolkit are installed on your machine you can build the extension with:

```
python build_pygpc_extensions_cuda.py
```

**Troubleshooting for OSX:**

On a mac you need GCC to install pygpc. If you are using the brew package manager you can simply run:

```
brew install gcc libomp
```

Then install pygpc with:

```
CC=gcc-9 CXX=g++-9 python setup.py install
```

**Troubleshooting for Windows:**

On windows you might need a compiler to install pygpc. To install the Visual C++ Build Tools, please refer to: http://go.microsoft.com/fwlink/?LinkId=691126&fixForIE=.exe.

# Documentation#

For a full API of pygpc, see https://pygpc.readthedocs.io/en/latest/.
For examplary simulations and model configurations, please have a look at the jupyter notebooks provided in the `/tutorial`

folder and the templates in the `/templates`

folder.

# Reference#

If you use pygpc, please cite:

# Contact#

If you have questions, problems or suggestions regarding pygpc, please contact Konstantin Weise.

## Examples Gallery#

- orphan:

# Introduction#

Introduction to generalized Polynomial Chaos (gPC)

Introduction to uncertainty analysis

Gallery generated by Sphinx-Gallery

- orphan:

# Generalized Polynomial Chaos#

Validation of gPC approximation

Modelling discontinuous model functions

Gallery generated by Sphinx-Gallery

- orphan:

# Algorithms#

Algorithm: Static (Quadrature)

Algorithm: Static (Regression)

Algorithm: RegAdaptiveProjection

Algorithm: MERegAdaptiveProjection

Gallery generated by Sphinx-Gallery

- orphan:

# Sampling schemes#

Comparison of sampling schemes

Latin Hypercube Sampling (LHS)

Gallery generated by Sphinx-Gallery

- orphan:

# Features#

Analyzing Julia models with pygpc

Analyzing MATLAB models with pygpc

Parallel processing capabilities of pygpc

Gallery generated by Sphinx-Gallery

- orphan:

# Examples#

Example: Lorenz system of differential equations (Julia)

Example: Lorenz system of differential equations

Example: Ishigami Testfunction

Example: Modelling of an electrode