GithubHelp home page GithubHelp logo

pygpc-polynomial-chaos / pygpc Goto Github PK

View Code? Open in Web Editor NEW
69.0 2.0 21.0 748.17 MB

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

License: GNU General Public License v3.0

Python 15.46% MATLAB 0.02% C++ 0.17% CMake 0.01% Cuda 0.10% Jupyter Notebook 84.23% Julia 0.01%
uncertainty-quantification dynamical-systems polynomial-chaos-expansion uncertainty-propagation uncertainty-estimation gpc

pygpc's Introduction

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.

pygpc's People

Contributors

0nu avatar erikjackmueller avatar konstantinweise avatar nikdierks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pygpc's Issues

plot_gpc function giving error in case of multiple QoI's with 2 random variables

plot_gpc giving below error in case of multiple QoI's with 2 random variables

File C:\ProgramData\Anaconda3\envs\pygpcnew\lib\site-packages\pygpc\validation.py:553, in plot_gpc(session, coeffs, random_vars, coords, results, n_grid, output_idx, fn_out, camera_pos, zlim)
550 ax1 = fig.add_subplot(1, 2, 1, projection='3d')
551 im1 = ax1.plot_surface(x1_2d, x2_2d, np.reshape(y_gpc[:, i], (x[1].size, x[0].size), order='f'),
552 cmap="jet", alpha=0.75, linewidth=0, edgecolors=None)
--> 553 ax1.scatter(coords[:, idx_global[0]], coords[:, idx_global[1]], results,
554 'k', alpha=1, edgecolors='k', depthshade=False)
555 ax1.set_title(r'gPC approximation', fontsize=fs)
556 ax1.set_xlabel(r"%s" % random_vars[0], fontsize=fs)

ValueError: shape mismatch: objects cannot be broadcast to a single shape. Mismatch is between arg 0 with shape (151,) and arg 2 with shape (604,).

image

Thanks

Seshagiri

Problem when importing pygpc

I have installed the module using 'pip install pygpc'. However when importing pygpc I have the following error:

File "C:\Users\Alez_\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/.../pygpcTest.py", line 3, in
import pygpc

File "C:..._init_.py", line 2, in
import pygpc.GPC

File "C:...\pygpc\GPC.py", line 20, in
from pygpc.calc_gpc_matrix_cpu import calc_gpc_matrix_cpu

File "init.pxd", line 918, in init pygpc.calc_gpc_matrix_cpu

ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 192 from PyObject

I am using python 3.7.1 in Windows 10 Home x64 with Spyder.

Errors in example-scripts

Hi there,

I'm new to this python-package for uncertainty and sensitivity tools and I'd love to use it for some research as UA&SA packages in python are quite scarce.
I'm wondering why almost all of the examples in the repo don't run. Either the script can't find a certain model or function (that it requires to run properly) or I get a back to back to back to back ... error of this kind (see below). I have python 3.6 and installed the package as stated here on the home page. At first sight, due to these issues, i'm not sure if the package is that user-friendly at the moment..

Traceback (most recent call last):
File "", line 1, in
File "C:\Program Files\Python 3.6\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "C:\Program Files\Python 3.6\lib\multiprocessing\spawn.py", line 114, in _main
prepare(preparation_data)
File "C:\Program Files\Python 3.6\lib\multiprocessing\spawn.py", line 225, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "C:\Program Files\Python 3.6\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
run_name="mp_main")
File "C:\Program Files\Python 3.6\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "C:\Program Files\Python 3.6\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "C:\Program Files\Python 3.6\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\myvhove\Documents\GitHub\pygpc\examples\gpc\plot_basis.py", line 45, in
interaction_order=3)
File "C:\Program Files\Python 3.6\lib\site-packages\pygpc\Basis.py", line 168, in init_basis_sgpc
with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
File "C:\Program Files\Python 3.6\lib\multiprocessing\context.py", line 119, in Pool
context=self.get_context())
File "C:\Program Files\Python 3.6\lib\multiprocessing\pool.py", line 174, in init
self._repopulate_pool()
File "C:\Program Files\Python 3.6\lib\multiprocessing\pool.py", line 239, in _repopulate_pool
w.start()
File "C:\Program Files\Python 3.6\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\Program Files\Python 3.6\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Program Files\Python 3.6\lib\multiprocessing\popen_spawn_win32.py", line 33, in init
prep_data = spawn.get_preparation_data(process_obj._name)
File "C:\Program Files\Python 3.6\lib\multiprocessing\spawn.py", line 143, in get_preparation_data
_check_not_importing_main()
File "C:\Program Files\Python 3.6\lib\multiprocessing\spawn.py", line 136, in _check_not_importing_main
is not going to be frozen to produce an executable.''')
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.

    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.