Skip to content

A Sensitivity and uncertainty analysis toolbox for Python based on the generalized polynomial chaos method

License

Notifications You must be signed in to change notification settings

jxz21004/pygpc

 
 

Repository files navigation

Build

pygpc

A Sensitivity and uncertainty analysis toolbox for Python based on the generalized polynomial chaos method

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, etc...
  • The parallelization concept allows to run model evaluations in parallel
  • Highly efficient adaptive algorithms allow for analysis of complex systems
  • Includes 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

Areas of application:

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

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 this website. 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 this website.

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 /example folder.

Reference

If you use this framework, please cite:

Contact

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

About

A Sensitivity and uncertainty analysis toolbox for Python based on the generalized polynomial chaos method

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 85.3%
  • Python 14.4%
  • C++ 0.2%
  • Cuda 0.1%
  • MATLAB 0.0%
  • CMake 0.0%