#! /usr/bin/env python

from __future__ import print_function
import openturns as ot

ot.TESTPREAMBLE()

ot.PlatformInfo.SetNumericalPrecision(5)
size = 10000


for distribution in [ot.GeneralizedExtremeValue(2.0, 1.5, -0.15),
                     ot.GeneralizedExtremeValue(2.0, 1.5,  0.0)]:
                     # ot.GeneralizedExtremeValue(2.0, 1.5,  0.15)]:

    sample = distribution.getSample(size)
    factory = ot.GeneralizedExtremeValueFactory()
    estimatedDistribution = factory.build(sample)
    print("distribution=", repr(distribution))
    print("Estimated distribution=", repr(estimatedDistribution))

    estimatedDistribution = factory.build()
    print("Default distribution=", estimatedDistribution)
    estimatedDistribution = factory.build(distribution.getParameter())
    print("Distribution from parameters=", estimatedDistribution)
    estimatedGeneralizedExtremeValue = factory.buildAsGeneralizedExtremeValue(
        sample)
    print("GeneralizedExtremeValue          =", distribution)
    print("Estimated GeneralizedExtremeValue=",
          estimatedGeneralizedExtremeValue)
    estimatedGeneralizedExtremeValue = factory.buildAsGeneralizedExtremeValue()
import openturns as ot
from matplotlib import pyplot as plt
from openturns.viewer import View

pdf_graph = ot.Graph('PDF graph', 'x', 'PDF', True, 'topleft')
cdf_graph = ot.Graph('CDF graph', 'x', 'CDF', True, 'topleft')
palette = ot.Drawable.BuildDefaultPalette(10)
for i, p in enumerate([-1.0, 0.0, 1.0]):
    distribution = ot.GeneralizedExtremeValue(0.0, 1.0, p)
    pdf_curve = distribution.drawPDF().getDrawable(0)
    cdf_curve = distribution.drawCDF().getDrawable(0)
    pdf_curve.setColor(palette[i])
    cdf_curve.setColor(palette[i])
    pdf_curve.setLegend('xi={}'.format(p))
    cdf_curve.setLegend('xi={}'.format(p))
    pdf_graph.add(pdf_curve)
    cdf_graph.add(cdf_curve)
fig = plt.figure(figsize=(10, 4))
pdf_axis = fig.add_subplot(121)
cdf_axis = fig.add_subplot(122)
View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=True)
View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=True)
fig.suptitle('GeneralizedExtremeValue(0,1,xi)')
import openturns as ot
from matplotlib import pyplot as plt
from openturns.viewer import View
if ot.GeneralizedExtremeValue().__class__.__name__ == 'ComposedDistribution':
    correlation = ot.CorrelationMatrix(2)
    correlation[1, 0] = 0.25
    aCopula = ot.NormalCopula(correlation)
    marginals = [ot.Normal(1.0, 2.0), ot.Normal(2.0, 3.0)]
    distribution = ot.ComposedDistribution(marginals, aCopula)
elif ot.GeneralizedExtremeValue(
).__class__.__name__ == 'CumulativeDistributionNetwork':
    distribution = ot.CumulativeDistributionNetwork(
        [ot.Normal(2), ot.Dirichlet([0.5, 1.0, 1.5])],
        ot.BipartiteGraph([[0, 1], [0, 1]]))
elif ot.GeneralizedExtremeValue().__class__.__name__ == 'Histogram':
    distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15])
else:
    distribution = ot.GeneralizedExtremeValue()
dimension = distribution.getDimension()
if dimension == 1:
    distribution.setDescription(['$x$'])
    pdf_graph = distribution.drawPDF()
    cdf_graph = distribution.drawCDF()
    fig = plt.figure(figsize=(10, 4))
    plt.suptitle(str(distribution))
    pdf_axis = fig.add_subplot(121)
    cdf_axis = fig.add_subplot(122)
    View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False)
    View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=False)
elif dimension == 2:
    distribution.setDescription(['$x_1$', '$x_2$'])
import openturns as ot
from matplotlib import pyplot as plt
from openturns.viewer import View
if (ot.GeneralizedExtremeValue().__class__.__name__ == 'ComposedDistribution'):
    correlation = ot.CorrelationMatrix(2)
    correlation[1, 0] = 0.25
    aCopula = ot.NormalCopula(correlation)
    marginals = [ot.Normal(1.0, 2.0), ot.Normal(2.0, 3.0)]
    distribution = ot.ComposedDistribution(marginals, aCopula)
elif (ot.GeneralizedExtremeValue().__class__.__name__ ==
      'CumulativeDistributionNetwork'):
    distribution = ot.CumulativeDistributionNetwork(
        [ot.Normal(2), ot.Dirichlet([0.5, 1.0, 1.5])],
        ot.BipartiteGraph([[0, 1], [0, 1]]))
else:
    distribution = ot.GeneralizedExtremeValue()
dimension = distribution.getDimension()
if dimension <= 2:
    if distribution.getDimension() == 1:
        distribution.setDescription(['$x$'])
        pdf_graph = distribution.drawPDF()
        cdf_graph = distribution.drawCDF()
        fig = plt.figure(figsize=(10, 4))
        plt.suptitle(str(distribution))
        pdf_axis = fig.add_subplot(121)
        cdf_axis = fig.add_subplot(122)
        View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False)
        View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=False)
    else:
        distribution.setDescription(['$x_1$', '$x_2$'])
        pdf_graph = distribution.drawPDF()
#! /usr/bin/env python

from __future__ import print_function
import openturns as ot

ot.TESTPREAMBLE()

ot.PlatformInfo.SetNumericalPrecision(5)
size = 10000

for distribution in [
        ot.GeneralizedExtremeValue(2.0, 1.5, -0.15),
        ot.GeneralizedExtremeValue(2.0, 1.5, 0.0)
]:
    # ot.GeneralizedExtremeValue(2.0, 1.5,  0.15)]:

    sample = distribution.getSample(size)
    factory = ot.GeneralizedExtremeValueFactory()
    estimatedDistribution = factory.build(sample)
    print("distribution=", repr(distribution))
    print("Estimated distribution=", repr(estimatedDistribution))

    estimatedDistribution = factory.build()
    print("Default distribution=", estimatedDistribution)
    estimatedDistribution = factory.build(distribution.getParameter())
    print("Distribution from parameters=", estimatedDistribution)
    estimatedGeneralizedExtremeValue = factory.buildAsGeneralizedExtremeValue(
        sample)
    print("GeneralizedExtremeValue          =", distribution)
    print("Estimated GeneralizedExtremeValue=",
          estimatedGeneralizedExtremeValue)