.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/uncertainty/distributions/plot_ot_distribution.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_uncertainty_distributions_plot_ot_distribution.py: Probability distributions based on OpenTURNS ============================================ In this example, we seek to create a probability distribution based on the OpenTURNS library. .. GENERATED FROM PYTHON SOURCE LINES 28-37 .. code-block:: Python from __future__ import annotations from gemseo import configure_logger from gemseo.uncertainty import create_distribution from gemseo.uncertainty import get_available_distributions configure_logger() .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 38-40 First of all, we can access the names of the available probability distributions from the API: .. GENERATED FROM PYTHON SOURCE LINES 40-43 .. code-block:: Python all_distributions = get_available_distributions() all_distributions .. rst-class:: sphx-glr-script-out .. code-block:: none ['OTDiracDistribution', 'OTDistribution', 'OTExponentialDistribution', 'OTJointDistribution', 'OTNormalDistribution', 'OTTriangularDistribution', 'OTUniformDistribution', 'OTWeibullDistribution', 'SPDistribution', 'SPExponentialDistribution', 'SPJointDistribution', 'SPNormalDistribution', 'SPTriangularDistribution', 'SPUniformDistribution', 'SPWeibullDistribution'] .. GENERATED FROM PYTHON SOURCE LINES 44-46 and filter the ones based on the OpenTURNS library (their names start with the acronym 'OT'): .. GENERATED FROM PYTHON SOURCE LINES 46-49 .. code-block:: Python ot_distributions = get_available_distributions("OTDistribution") ot_distributions .. rst-class:: sphx-glr-script-out .. code-block:: none ['OTDiracDistribution', 'OTDistribution', 'OTExponentialDistribution', 'OTNormalDistribution', 'OTTriangularDistribution', 'OTUniformDistribution', 'OTWeibullDistribution'] .. GENERATED FROM PYTHON SOURCE LINES 50-59 Create a distribution --------------------- Then, we can create a probability distribution for a two-dimensional random variable with independent components that follow a normal distribution. Case 1: the OpenTURNS distribution has a GEMSEO class ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For the standard normal distribution (mean = 0 and standard deviation = 1): .. GENERATED FROM PYTHON SOURCE LINES 59-62 .. code-block:: Python distribution_0_1 = create_distribution("x", "OTNormalDistribution", 2) distribution_0_1 .. rst-class:: sphx-glr-script-out .. code-block:: none Normal[2](mu=0.0, sigma=1.0) .. GENERATED FROM PYTHON SOURCE LINES 63-64 For a normal with mean = 1 and standard deviation = 2: .. GENERATED FROM PYTHON SOURCE LINES 64-69 .. code-block:: Python distribution_1_2 = create_distribution( "x", "OTNormalDistribution", 2, mu=1.0, sigma=2.0 ) distribution_1_2 .. rst-class:: sphx-glr-script-out .. code-block:: none Normal[2](mu=1.0, sigma=2.0) .. GENERATED FROM PYTHON SOURCE LINES 70-80 Case 2: the OpenTURNS distribution has no GEMSEO class ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When GEMSEO does not offer a class for the OpenTURNS distribution, we can use the generic GEMSEO class :class:`.OTDistribution` to create any OpenTURNS distribution by setting ``interfaced_distribution`` to its OpenTURNS name and ``parameters`` as a tuple of OpenTURNS parameter values (`see the documentation of OpenTURNS `__). .. GENERATED FROM PYTHON SOURCE LINES 80-85 .. code-block:: Python distribution_1_2 = create_distribution( "x", "OTDistribution", 2, interfaced_distribution="Normal", parameters=(1.0, 2.0) ) distribution_1_2 .. rst-class:: sphx-glr-script-out .. code-block:: none Normal[2](1.0, 2.0) .. GENERATED FROM PYTHON SOURCE LINES 86-90 Plot the distribution --------------------- We can plot both cumulative and probability density functions for the first marginal: .. GENERATED FROM PYTHON SOURCE LINES 90-92 .. code-block:: Python distribution_0_1.plot() .. image-sg:: /examples/uncertainty/distributions/images/sphx_glr_plot_ot_distribution_001.png :alt: Probability distribution of x[0] :srcset: /examples/uncertainty/distributions/images/sphx_glr_plot_ot_distribution_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 93-99 .. note:: We can provide a marginal index as first argument of the :meth:`.BaseDistribution.plot` method but in the current version of |g|, all components have the same distributions and so the plot will be the same. .. GENERATED FROM PYTHON SOURCE LINES 101-106 Get statistics -------------- Mean ~~~~ We can access the mean of the distribution: .. GENERATED FROM PYTHON SOURCE LINES 106-108 .. code-block:: Python distribution_0_1.mean .. rst-class:: sphx-glr-script-out .. code-block:: none array([0., 0.]) .. GENERATED FROM PYTHON SOURCE LINES 109-112 Standard deviation ~~~~~~~~~~~~~~~~~~ We can access the standard deviation of the distribution: .. GENERATED FROM PYTHON SOURCE LINES 112-114 .. code-block:: Python distribution_0_1.standard_deviation .. rst-class:: sphx-glr-script-out .. code-block:: none array([1., 1.]) .. GENERATED FROM PYTHON SOURCE LINES 115-120 Numerical range ~~~~~~~~~~~~~~~ We can access the range, i.e. the difference between the numerical minimum and maximum, of the distribution: .. GENERATED FROM PYTHON SOURCE LINES 120-122 .. code-block:: Python distribution_0_1.range .. rst-class:: sphx-glr-script-out .. code-block:: none [array([-7.65062809, 7.65062809]), array([-7.65062809, 7.65062809])] .. GENERATED FROM PYTHON SOURCE LINES 123-128 Mathematical support ~~~~~~~~~~~~~~~~~~~~ We can access the range, i.e. the difference between the minimum and maximum, of the distribution: .. GENERATED FROM PYTHON SOURCE LINES 128-130 .. code-block:: Python distribution_0_1.support .. rst-class:: sphx-glr-script-out .. code-block:: none [array([-inf, inf]), array([-inf, inf])] .. GENERATED FROM PYTHON SOURCE LINES 131-136 Compute CDF ----------- We can compute the cumulative density function component per component (here the probability that the first component is lower than 0. and that the second one is lower than 1.): .. GENERATED FROM PYTHON SOURCE LINES 136-138 .. code-block:: Python distribution_0_1.compute_cdf([0.0, 1.0]) .. rst-class:: sphx-glr-script-out .. code-block:: none array([0.5 , 0.84134475]) .. GENERATED FROM PYTHON SOURCE LINES 139-145 Compute inverse CDF ------------------- We can compute the inverse cumulative density function component per component (here the quantile at 50% for the first component and the quantile at 97.5% for the second one): .. GENERATED FROM PYTHON SOURCE LINES 145-147 .. code-block:: Python distribution_0_1.compute_inverse_cdf([0.5, 0.975]) .. rst-class:: sphx-glr-script-out .. code-block:: none array([0. , 1.95996398]) .. GENERATED FROM PYTHON SOURCE LINES 148-151 Generate samples ---------------- We can generate 10 samples of the distribution: .. GENERATED FROM PYTHON SOURCE LINES 151-152 .. code-block:: Python distribution_0_1.compute_samples(10) .. rst-class:: sphx-glr-script-out .. code-block:: none array([[ 0.60820165, -0.4705256 ], [-1.2661731 , 0.26101794], [-0.43826562, -2.29006198], [ 1.2054782 , -1.28288529], [-2.18138523, -1.31178112], [ 0.35004209, -0.09078383], [-0.35500705, 0.99579323], [ 1.43724931, -0.13945282], [ 0.81066798, -0.5602056 ], [ 0.79315601, 0.4454897 ]]) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.149 seconds) .. _sphx_glr_download_examples_uncertainty_distributions_plot_ot_distribution.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_ot_distribution.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_ot_distribution.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_