
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_algorithms/plot_algorithm_mestatic_IO.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        Click :ref:`here <sphx_glr_download_auto_algorithms_plot_algorithm_mestatic_IO.py>`
        to download the full example code

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_algorithms_plot_algorithm_mestatic_IO.py:


Algorithm: MEStatic_IO
==============================

.. GENERATED FROM PYTHON SOURCE LINES 5-19

.. code-block:: default

    # Windows users have to encapsulate the code into a main function to avoid multiprocessing errors.
    # def main():
    import pygpc
    import numpy as np
    from scipy.integrate import odeint
    import matplotlib
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    from collections import OrderedDict

    fn_results = 'tmp/mestatic_IO'  # filename of output
    save_session_format = ".pkl"    # file format of saved gpc session ".hdf5" (slow) or ".pkl" (fast)
    np.random.seed(1)








.. GENERATED FROM PYTHON SOURCE LINES 20-22

Setup input and output data
----------------------------------------------------------------------------------------------------------------

.. GENERATED FROM PYTHON SOURCE LINES 22-52

.. code-block:: default


    # We artificially generate some coordinates for the input data the user has to provide where the model was sampled
    n_grid = 400
    rho_0 = np.random.rand(n_grid)
    beta = np.random.rand(n_grid) * 20.
    alpha = 1.

    # define the properties of the random variables
    parameters = OrderedDict()
    parameters["rho_0"] = pygpc.Beta(pdf_shape=[1, 1], pdf_limits=[0, 1])
    parameters["beta"] = pygpc.Beta(pdf_shape=[1, 1], pdf_limits=[0, 20])

    # generate a grid object from the input data
    grid = pygpc.RandomGrid(parameters_random=parameters, coords=np.vstack((rho_0,beta)).T)

    # get output data (here: SurfaceCoverageSpecies function)
    def deq(rho, t, alpha, beta, gamma):
        return alpha * (1. - rho) - gamma * rho - beta * (rho - 1) ** 2 * rho

    # Constants
    gamma = 0.01

    # Simulation parameters
    dt = 0.01
    t_end = 1.
    t = np.arange(0, t_end, dt)

    # Solve
    results = odeint(deq, rho_0, t, args=(alpha, beta, gamma))[-1][:, np.newaxis]








.. GENERATED FROM PYTHON SOURCE LINES 53-55

Setting up the algorithm
------------------------

.. GENERATED FROM PYTHON SOURCE LINES 55-79

.. code-block:: default


    # gPC options
    options = dict()
    options["solver"] = "LarsLasso"
    options["settings"] = None
    options["order"] = [9, 9]
    options["order_max"] = 9
    options["interaction_order"] = 2
    options["matrix_ratio"] = None
    options["n_cpu"] = 0
    options["error_type"] = "loocv"
    options["qoi"] = "all"
    options["classifier"] = "learning"
    options["classifier_options"] = {"clusterer": "KMeans",
                                     "n_clusters": 2,
                                     "classifier": "MLPClassifier",
                                     "classifier_solver": "lbfgs"}
    options["fn_results"] = fn_results
    options["save_session_format"] = save_session_format
    options["verbose"] = True

    # define algorithm
    algorithm = pygpc.MEStatic_IO(parameters=parameters, options=options, grid=grid, results=results)








.. GENERATED FROM PYTHON SOURCE LINES 80-82

Running the gpc
---------------

.. GENERATED FROM PYTHON SOURCE LINES 82-89

.. code-block:: default


    # initialize gPC Session
    session = pygpc.Session(algorithm=algorithm)

    # run gPC algorithm
    session, coeffs, results = session.run()





.. rst-class:: sphx-glr-script-out

 Out:

 .. code-block:: none

    Determining gPC approximation for QOI #0:
    =========================================
    Determine gPC coefficients using 'LarsLasso' solver ...
    Determine gPC coefficients using 'LarsLasso' solver ...

    LOOCV 01 from 25 [=                                       ] 4.0%

    LOOCV 02 from 25 [===                                     ] 8.0%

    LOOCV 03 from 25 [====                                    ] 12.0%

    LOOCV 04 from 25 [======                                  ] 16.0%

    LOOCV 05 from 25 [========                                ] 20.0%

    LOOCV 06 from 25 [=========                               ] 24.0%

    LOOCV 07 from 25 [===========                             ] 28.0%

    LOOCV 08 from 25 [============                            ] 32.0%

    LOOCV 09 from 25 [==============                          ] 36.0%

    LOOCV 10 from 25 [================                        ] 40.0%

    LOOCV 11 from 25 [=================                       ] 44.0%

    LOOCV 12 from 25 [===================                     ] 48.0%

    LOOCV 13 from 25 [====================                    ] 52.0%

    LOOCV 14 from 25 [======================                  ] 56.0%

    LOOCV 15 from 25 [========================                ] 60.0%

    LOOCV 16 from 25 [=========================               ] 64.0%

    LOOCV 17 from 25 [===========================             ] 68.0%

    LOOCV 18 from 25 [============================            ] 72.0%

    LOOCV 19 from 25 [==============================          ] 76.0%

    LOOCV 20 from 25 [================================        ] 80.0%

    LOOCV 21 from 25 [=================================       ] 84.0%

    LOOCV 22 from 25 [===================================     ] 88.0%

    LOOCV 23 from 25 [====================================    ] 92.0%

    LOOCV 24 from 25 [======================================  ] 96.0%

    LOOCV 25 from 25 [========================================] 100.0%
    LOOCV computation time: 0.5486202239990234 sec
    -> relative loocv error = 0.05238332091729374

    LOOCV 01 from 25 [=                                       ] 4.0%

    LOOCV 02 from 25 [===                                     ] 8.0%

    LOOCV 03 from 25 [====                                    ] 12.0%

    LOOCV 04 from 25 [======                                  ] 16.0%

    LOOCV 05 from 25 [========                                ] 20.0%

    LOOCV 06 from 25 [=========                               ] 24.0%

    LOOCV 07 from 25 [===========                             ] 28.0%

    LOOCV 08 from 25 [============                            ] 32.0%

    LOOCV 09 from 25 [==============                          ] 36.0%

    LOOCV 10 from 25 [================                        ] 40.0%

    LOOCV 11 from 25 [=================                       ] 44.0%

    LOOCV 12 from 25 [===================                     ] 48.0%

    LOOCV 13 from 25 [====================                    ] 52.0%

    LOOCV 14 from 25 [======================                  ] 56.0%

    LOOCV 15 from 25 [========================                ] 60.0%

    LOOCV 16 from 25 [=========================               ] 64.0%

    LOOCV 17 from 25 [===========================             ] 68.0%

    LOOCV 18 from 25 [============================            ] 72.0%

    LOOCV 19 from 25 [==============================          ] 76.0%

    LOOCV 20 from 25 [================================        ] 80.0%

    LOOCV 21 from 25 [=================================       ] 84.0%

    LOOCV 22 from 25 [===================================     ] 88.0%

    LOOCV 23 from 25 [====================================    ] 92.0%

    LOOCV 24 from 25 [======================================  ] 96.0%

    LOOCV 25 from 25 [========================================] 100.0%
    LOOCV computation time: 0.35370612144470215 sec

    LOOCV 01 from 25 [=                                       ] 4.0%

    LOOCV 02 from 25 [===                                     ] 8.0%

    LOOCV 03 from 25 [====                                    ] 12.0%

    LOOCV 04 from 25 [======                                  ] 16.0%

    LOOCV 05 from 25 [========                                ] 20.0%

    LOOCV 06 from 25 [=========                               ] 24.0%

    LOOCV 07 from 25 [===========                             ] 28.0%

    LOOCV 08 from 25 [============                            ] 32.0%

    LOOCV 09 from 25 [==============                          ] 36.0%

    LOOCV 10 from 25 [================                        ] 40.0%

    LOOCV 11 from 25 [=================                       ] 44.0%

    LOOCV 12 from 25 [===================                     ] 48.0%

    LOOCV 13 from 25 [====================                    ] 52.0%

    LOOCV 14 from 25 [======================                  ] 56.0%

    LOOCV 15 from 25 [========================                ] 60.0%

    LOOCV 16 from 25 [=========================               ] 64.0%

    LOOCV 17 from 25 [===========================             ] 68.0%

    LOOCV 18 from 25 [============================            ] 72.0%

    LOOCV 19 from 25 [==============================          ] 76.0%

    LOOCV 20 from 25 [================================        ] 80.0%

    LOOCV 21 from 25 [=================================       ] 84.0%

    LOOCV 22 from 25 [===================================     ] 88.0%

    LOOCV 23 from 25 [====================================    ] 92.0%

    LOOCV 24 from 25 [======================================  ] 96.0%

    LOOCV 25 from 25 [========================================] 100.0%
    LOOCV computation time: 0.5250899791717529 sec




.. GENERATED FROM PYTHON SOURCE LINES 90-92

Postprocessing
--------------

.. GENERATED FROM PYTHON SOURCE LINES 92-122

.. code-block:: default


    # read session
    session = pygpc.read_session(fname=session.fn_session, folder=session.fn_session_folder)

    # Post-process gPC
    pygpc.get_sensitivities_hdf5(fn_gpc=options["fn_results"],
                                 output_idx=None,
                                 calc_sobol=True,
                                 calc_global_sens=True,
                                 calc_pdf=True,
                                 algorithm="standard",
                                 n_samples=int(1e4))

    # plot gPC approximation and IO data
    pygpc.plot_gpc(session=session,
                   coeffs=coeffs,
                   random_vars=["rho_0", "beta"],
                   output_idx=0,
                   n_grid=[100, 100],
                   coords=grid.coords,
                   results=results,
                   fn_out=None,
                   camera_pos=[45., 65])

    # On Windows subprocesses will import (i.e. execute) the main module at start.
    # You need to insert an if __name__ == '__main__': guard in the main module to avoid
    # creating subprocesses recursively.
    #
    # if __name__ == '__main__':
    #     main()



.. image-sg:: /auto_algorithms/images/sphx_glr_plot_algorithm_mestatic_IO_001.png
   :alt: gPC approximation, Probability density
   :srcset: /auto_algorithms/images/sphx_glr_plot_algorithm_mestatic_IO_001.png
   :class: sphx-glr-single-img


.. rst-class:: sphx-glr-script-out

 Out:

 .. code-block:: none

    > Loading gpc session object: tmp/mestatic_IO.pkl
    > Loading gpc coeffs: tmp/mestatic_IO.hdf5
    > Adding results to: tmp/mestatic_IO.hdf5





.. rst-class:: sphx-glr-timing

   **Total running time of the script:** ( 0 minutes  9.018 seconds)


.. _sphx_glr_download_auto_algorithms_plot_algorithm_mestatic_IO.py:


.. only :: html

 .. container:: sphx-glr-footer
    :class: sphx-glr-footer-example



  .. container:: sphx-glr-download sphx-glr-download-python

     :download:`Download Python source code: plot_algorithm_mestatic_IO.py <plot_algorithm_mestatic_IO.py>`



  .. container:: sphx-glr-download sphx-glr-download-jupyter

     :download:`Download Jupyter notebook: plot_algorithm_mestatic_IO.ipynb <plot_algorithm_mestatic_IO.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
