Uncertainty Quantification in one-dimensional deconvolution#

This tutorial walks through the process of solving a simple 1D deconvolution problem in a Bayesian setting. It also shows how to define such a convolution model in CUQIpy.

Setup#

We start by importing the necessary modules

import cuqi
import numpy as np
import matplotlib.pyplot as plt

Setting up the forward model#

We start by defining the forward model. In this case, we will use a simple convolution model. The forward model is defined by the following equation:

\[\mathbf{y} = \mathbf{A} \mathbf{x}\]

where \(\mathbf{y}\) is the data, \(\mathbf{A}\) is the convolution (forward model) operator, and \(\mathbf{x}\) is the solution.

The easiest way to define the forward model is to use the testproblem module. This module contains a number of pre-defined test problems that contain the forward model and synthetic data. In this case, we will use the cuqi.testproblem.Deconvolution1D test problem. We extract the forward model and synthetic data from the test problem by calling the get_components() method.

# Forward model and data
A, y_data, info = cuqi.testproblem.Deconvolution1D().get_components()

There are many parameters that can be set when creating the test problem. For more details see the cuqi.testproblem.Deconvolution1D documentation. In this case, we will use the default parameters. The get_components() method returns the forward model, synthetic data, and a ProblemInfo object that contains information about the test problem.

Let’s take a look at the forward model

print(A)
CUQI LinearModel: Continuous1D(128,) -> Continuous1D(128,).
    Forward parameters: ['x'].

We see that the forward model is a a LinearModel object. This object contains the forward model and the adjoint model. We also see that the domain and range of the forward model are both continuous 1D spaces. Finally, we see that the default forward parameters are set to \(\mathbf{x}\).

Let’s take a look at the synthetic data and compare with the exact solution that we can find in the ProblemInfo object.

y_data.plot(label="Synthetic data")
info.exactSolution.plot(label="Exact solution")
plt.title("Deconvolution 1D problem")
plt.legend()
Deconvolution 1D problem
<matplotlib.legend.Legend object at 0x7fc7a8734eb0>

Setting up the prior#

We now need to define the prior distribution for the solution. In this case, we will use a Gaussian Markov Random Field (GMRF) prior. For more details on the GMRF prior, see the cuqi.distribution.GMRF documentation.

x = cuqi.distribution.GMRF(np.zeros(A.domain_dim), 200)

Setting up the likelihood#

We now need to define the likelihood. First let us take a look at the information provided by the test problem.

print(info.infoString)
Noise type: Additive Gaussian with std: 0.01

We see that the noise level is known and that the noise is Gaussian. We can use this information to define the likelihood. In this case, we will use a Gaussian distribution.

y = cuqi.distribution.Gaussian(A @ x, 0.01**2)

Bayesian problem (Joint distribution)#

After defining the prior and likelihood, we can now define the Bayesian problem. The Bayesian problem is defined by the joint distribution of the solution and the data. This can be seen when we print the Bayesian problem.

BP = cuqi.problem.BayesianProblem(y, x)

print(BP)
BayesianProblem with target:
 JointDistribution(
    Equation:
        p(y,x) = p(y|x)p(x)
    Densities:
        y ~ CUQI Gaussian. Conditioning variables ['x'].
        x ~ CUQI GMRF.
)

Setting the data (posterior)#

Now to set the data, we need to call the set_data()

BP.set_data(y=y_data)

print(BP)
BayesianProblem with target:
 Posterior(
    Equation:
         p(x|y) ∝ L(x|y)p(x)
    Densities:
        y ~ CUQI Gaussian Likelihood function. Parameters ['x'].
        x ~ CUQI GMRF.
 )

Sampling from the posterior#

We can then use the automatic sampling method to sample from the posterior distribution.

samples = BP.sample_posterior(1000)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Automatic sampler selection is a work-in-progress. !!!
!!!       Always validate the computed results.        !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Using cuqi.sampler LinearRTO sampler.
burn-in: 20%

Sample 12 / 1200
Sample 24 / 1200
Sample 36 / 1200
Sample 48 / 1200
Sample 60 / 1200
Sample 72 / 1200
Sample 84 / 1200
Sample 96 / 1200
Sample 108 / 1200
Sample 120 / 1200
Sample 132 / 1200
Sample 144 / 1200
Sample 156 / 1200
Sample 168 / 1200
Sample 180 / 1200
Sample 192 / 1200
Sample 204 / 1200
Sample 216 / 1200
Sample 228 / 1200
Sample 240 / 1200
Sample 252 / 1200
Sample 264 / 1200
Sample 276 / 1200
Sample 288 / 1200
Sample 300 / 1200
Sample 312 / 1200
Sample 324 / 1200
Sample 336 / 1200
Sample 348 / 1200
Sample 360 / 1200
Sample 372 / 1200
Sample 384 / 1200
Sample 396 / 1200
Sample 408 / 1200
Sample 420 / 1200
Sample 432 / 1200
Sample 444 / 1200
Sample 456 / 1200
Sample 468 / 1200
Sample 480 / 1200
Sample 492 / 1200
Sample 504 / 1200
Sample 516 / 1200
Sample 528 / 1200
Sample 540 / 1200
Sample 552 / 1200
Sample 564 / 1200
Sample 576 / 1200
Sample 588 / 1200
Sample 600 / 1200
Sample 612 / 1200
Sample 624 / 1200
Sample 636 / 1200
Sample 648 / 1200
Sample 660 / 1200
Sample 672 / 1200
Sample 684 / 1200
Sample 696 / 1200
Sample 708 / 1200
Sample 720 / 1200
Sample 732 / 1200
Sample 744 / 1200
Sample 756 / 1200
Sample 768 / 1200
Sample 780 / 1200
Sample 792 / 1200
Sample 804 / 1200
Sample 816 / 1200
Sample 828 / 1200
Sample 840 / 1200
Sample 852 / 1200
Sample 864 / 1200
Sample 876 / 1200
Sample 888 / 1200
Sample 900 / 1200
Sample 912 / 1200
Sample 924 / 1200
Sample 936 / 1200
Sample 948 / 1200
Sample 960 / 1200
Sample 972 / 1200
Sample 984 / 1200
Sample 996 / 1200
Sample 1008 / 1200
Sample 1020 / 1200
Sample 1032 / 1200
Sample 1044 / 1200
Sample 1056 / 1200
Sample 1068 / 1200
Sample 1080 / 1200
Sample 1092 / 1200
Sample 1104 / 1200
Sample 1116 / 1200
Sample 1128 / 1200
Sample 1140 / 1200
Sample 1152 / 1200
Sample 1164 / 1200
Sample 1176 / 1200
Sample 1188 / 1200
Sample 1200 / 1200
Sample 1200 / 1200
Elapsed time: 2.687016725540161

Plotting the results#

samples.plot_ci(exact=info.exactSolution)
UQ in Deconvolution1D
[<matplotlib.lines.Line2D object at 0x7fc7a86f3df0>, <matplotlib.lines.Line2D object at 0x7fc7a86f3280>, <matplotlib.collections.PolyCollection object at 0x7fc7a86f2440>]

Unknown noise level#

In the previous example, we assumed that we knew the noise level of the data. In many cases, this is not the case. If we do not know the noise level, we can use a Gamma distribution to model the noise level.

s = cuqi.distribution.Gamma(1, 1e-4)

Update likelihood with unknown noise level#

y = cuqi.distribution.Gaussian(A @ x, prec=lambda s: s)

Bayesian problem (Joint distribution)#

BP = cuqi.problem.BayesianProblem(y, x, s)

print(BP)
BayesianProblem with target:
 JointDistribution(
    Equation:
        p(y,x,s) = p(y|x,s)p(x)p(s)
    Densities:
        y ~ CUQI Gaussian. Conditioning variables ['x', 's'].
        x ~ CUQI GMRF.
        s ~ CUQI Gamma.
)

Setting the data (posterior)#

BP.set_data(y=y_data)

print(BP)
BayesianProblem with target:
 JointDistribution(
    Equation:
        p(x,s|y) ∝ L(x,s|y)p(x)p(s)
    Densities:
        y ~ CUQI Gaussian Likelihood function. Parameters ['x', 's'].
        x ~ CUQI GMRF.
        s ~ CUQI Gamma.
)

Sampling from the posterior#

samples = BP.sample_posterior(1000)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Automatic sampler selection is a work-in-progress. !!!
!!!       Always validate the computed results.        !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Using Gibbs sampler
burn-in: 20%

Automatically determined sampling strategy:
        x: LinearRTO
        s: Conjugate


Warmup 2 / 200
Warmup 4 / 200
Warmup 6 / 200
Warmup 8 / 200
Warmup 10 / 200
Warmup 12 / 200
Warmup 14 / 200
Warmup 16 / 200
Warmup 18 / 200
Warmup 20 / 200
Warmup 22 / 200
Warmup 24 / 200
Warmup 26 / 200
Warmup 28 / 200
Warmup 30 / 200
Warmup 32 / 200
Warmup 34 / 200
Warmup 36 / 200
Warmup 38 / 200
Warmup 40 / 200
Warmup 42 / 200
Warmup 44 / 200
Warmup 46 / 200
Warmup 48 / 200
Warmup 50 / 200
Warmup 52 / 200
Warmup 54 / 200
Warmup 56 / 200
Warmup 58 / 200
Warmup 60 / 200
Warmup 62 / 200
Warmup 64 / 200
Warmup 66 / 200
Warmup 68 / 200
Warmup 70 / 200
Warmup 72 / 200
Warmup 74 / 200
Warmup 76 / 200
Warmup 78 / 200
Warmup 80 / 200
Warmup 82 / 200
Warmup 84 / 200
Warmup 86 / 200
Warmup 88 / 200
Warmup 90 / 200
Warmup 92 / 200
Warmup 94 / 200
Warmup 96 / 200
Warmup 98 / 200
Warmup 100 / 200
Warmup 102 / 200
Warmup 104 / 200
Warmup 106 / 200
Warmup 108 / 200
Warmup 110 / 200
Warmup 112 / 200
Warmup 114 / 200
Warmup 116 / 200
Warmup 118 / 200
Warmup 120 / 200
Warmup 122 / 200
Warmup 124 / 200
Warmup 126 / 200
Warmup 128 / 200
Warmup 130 / 200
Warmup 132 / 200
Warmup 134 / 200
Warmup 136 / 200
Warmup 138 / 200
Warmup 140 / 200
Warmup 142 / 200
Warmup 144 / 200
Warmup 146 / 200
Warmup 148 / 200
Warmup 150 / 200
Warmup 152 / 200
Warmup 154 / 200
Warmup 156 / 200
Warmup 158 / 200
Warmup 160 / 200
Warmup 162 / 200
Warmup 164 / 200
Warmup 166 / 200
Warmup 168 / 200
Warmup 170 / 200
Warmup 172 / 200
Warmup 174 / 200
Warmup 176 / 200
Warmup 178 / 200
Warmup 180 / 200
Warmup 182 / 200
Warmup 184 / 200
Warmup 186 / 200
Warmup 188 / 200
Warmup 190 / 200
Warmup 192 / 200
Warmup 194 / 200
Warmup 196 / 200
Warmup 198 / 200
Warmup 200 / 200
Warmup 200 / 200

Sample 10 / 1000
Sample 20 / 1000
Sample 30 / 1000
Sample 40 / 1000
Sample 50 / 1000
Sample 60 / 1000
Sample 70 / 1000
Sample 80 / 1000
Sample 90 / 1000
Sample 100 / 1000
Sample 110 / 1000
Sample 120 / 1000
Sample 130 / 1000
Sample 140 / 1000
Sample 150 / 1000
Sample 160 / 1000
Sample 170 / 1000
Sample 180 / 1000
Sample 190 / 1000
Sample 200 / 1000
Sample 210 / 1000
Sample 220 / 1000
Sample 230 / 1000
Sample 240 / 1000
Sample 250 / 1000
Sample 260 / 1000
Sample 270 / 1000
Sample 280 / 1000
Sample 290 / 1000
Sample 300 / 1000
Sample 310 / 1000
Sample 320 / 1000
Sample 330 / 1000
Sample 340 / 1000
Sample 350 / 1000
Sample 360 / 1000
Sample 370 / 1000
Sample 380 / 1000
Sample 390 / 1000
Sample 400 / 1000
Sample 410 / 1000
Sample 420 / 1000
Sample 430 / 1000
Sample 440 / 1000
Sample 450 / 1000
Sample 460 / 1000
Sample 470 / 1000
Sample 480 / 1000
Sample 490 / 1000
Sample 500 / 1000
Sample 510 / 1000
Sample 520 / 1000
Sample 530 / 1000
Sample 540 / 1000
Sample 550 / 1000
Sample 560 / 1000
Sample 570 / 1000
Sample 580 / 1000
Sample 590 / 1000
Sample 600 / 1000
Sample 610 / 1000
Sample 620 / 1000
Sample 630 / 1000
Sample 640 / 1000
Sample 650 / 1000
Sample 660 / 1000
Sample 670 / 1000
Sample 680 / 1000
Sample 690 / 1000
Sample 700 / 1000
Sample 710 / 1000
Sample 720 / 1000
Sample 730 / 1000
Sample 740 / 1000
Sample 750 / 1000
Sample 760 / 1000
Sample 770 / 1000
Sample 780 / 1000
Sample 790 / 1000
Sample 800 / 1000
Sample 810 / 1000
Sample 820 / 1000
Sample 830 / 1000
Sample 840 / 1000
Sample 850 / 1000
Sample 860 / 1000
Sample 870 / 1000
Sample 880 / 1000
Sample 890 / 1000
Sample 900 / 1000
Sample 910 / 1000
Sample 920 / 1000
Sample 930 / 1000
Sample 940 / 1000
Sample 950 / 1000
Sample 960 / 1000
Sample 970 / 1000
Sample 980 / 1000
Sample 990 / 1000
Sample 1000 / 1000
Sample 1000 / 1000
Elapsed time: 4.370481967926025

Plotting the results#

Let is first look at the estimated noise level and compare it with the true noise level

samples["s"].plot_trace(exact=1/0.01**2)
s, s
array([[<Axes: title={'center': 's'}>, <Axes: title={'center': 's'}>]],
      dtype=object)

We see that the estimated noise level is close to the true noise level. Let’s now look at the estimated solution

samples["x"].plot_ci(exact=info.exactSolution)
UQ in Deconvolution1D
[<matplotlib.lines.Line2D object at 0x7fc7a881b4c0>, <matplotlib.lines.Line2D object at 0x7fc7a881b160>, <matplotlib.collections.PolyCollection object at 0x7fc7a88188b0>]

We can even plot traces of “x” for a few cases and compare

samples["x"].plot_trace(exact=info.exactSolution)
x6, x6, x24, x24, x41, x41, x74, x74, x79, x79
Selecting 5 randomly chosen variables

array([[<Axes: title={'center': 'x6'}>, <Axes: title={'center': 'x6'}>],
       [<Axes: title={'center': 'x24'}>, <Axes: title={'center': 'x24'}>],
       [<Axes: title={'center': 'x41'}>, <Axes: title={'center': 'x41'}>],
       [<Axes: title={'center': 'x74'}>, <Axes: title={'center': 'x74'}>],
       [<Axes: title={'center': 'x79'}>, <Axes: title={'center': 'x79'}>]],
      dtype=object)

And finally we note that the UQ method does this analysis automatically and shows a selected number of plots

BP.UQ(exact={"x": info.exactSolution, "s": 1/0.01**2})
  • UQ in Deconvolution1D
  • s, s
Computing 1000 samples
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Automatic sampler selection is a work-in-progress. !!!
!!!       Always validate the computed results.        !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Using Gibbs sampler
burn-in: 20%

Automatically determined sampling strategy:
        x: LinearRTO
        s: Conjugate


Warmup 2 / 200
Warmup 4 / 200
Warmup 6 / 200
Warmup 8 / 200
Warmup 10 / 200
Warmup 12 / 200
Warmup 14 / 200
Warmup 16 / 200
Warmup 18 / 200
Warmup 20 / 200
Warmup 22 / 200
Warmup 24 / 200
Warmup 26 / 200
Warmup 28 / 200
Warmup 30 / 200
Warmup 32 / 200
Warmup 34 / 200
Warmup 36 / 200
Warmup 38 / 200
Warmup 40 / 200
Warmup 42 / 200
Warmup 44 / 200
Warmup 46 / 200
Warmup 48 / 200
Warmup 50 / 200
Warmup 52 / 200
Warmup 54 / 200
Warmup 56 / 200
Warmup 58 / 200
Warmup 60 / 200
Warmup 62 / 200
Warmup 64 / 200
Warmup 66 / 200
Warmup 68 / 200
Warmup 70 / 200
Warmup 72 / 200
Warmup 74 / 200
Warmup 76 / 200
Warmup 78 / 200
Warmup 80 / 200
Warmup 82 / 200
Warmup 84 / 200
Warmup 86 / 200
Warmup 88 / 200
Warmup 90 / 200
Warmup 92 / 200
Warmup 94 / 200
Warmup 96 / 200
Warmup 98 / 200
Warmup 100 / 200
Warmup 102 / 200
Warmup 104 / 200
Warmup 106 / 200
Warmup 108 / 200
Warmup 110 / 200
Warmup 112 / 200
Warmup 114 / 200
Warmup 116 / 200
Warmup 118 / 200
Warmup 120 / 200
Warmup 122 / 200
Warmup 124 / 200
Warmup 126 / 200
Warmup 128 / 200
Warmup 130 / 200
Warmup 132 / 200
Warmup 134 / 200
Warmup 136 / 200
Warmup 138 / 200
Warmup 140 / 200
Warmup 142 / 200
Warmup 144 / 200
Warmup 146 / 200
Warmup 148 / 200
Warmup 150 / 200
Warmup 152 / 200
Warmup 154 / 200
Warmup 156 / 200
Warmup 158 / 200
Warmup 160 / 200
Warmup 162 / 200
Warmup 164 / 200
Warmup 166 / 200
Warmup 168 / 200
Warmup 170 / 200
Warmup 172 / 200
Warmup 174 / 200
Warmup 176 / 200
Warmup 178 / 200
Warmup 180 / 200
Warmup 182 / 200
Warmup 184 / 200
Warmup 186 / 200
Warmup 188 / 200
Warmup 190 / 200
Warmup 192 / 200
Warmup 194 / 200
Warmup 196 / 200
Warmup 198 / 200
Warmup 200 / 200
Warmup 200 / 200

Sample 10 / 1000
Sample 20 / 1000
Sample 30 / 1000
Sample 40 / 1000
Sample 50 / 1000
Sample 60 / 1000
Sample 70 / 1000
Sample 80 / 1000
Sample 90 / 1000
Sample 100 / 1000
Sample 110 / 1000
Sample 120 / 1000
Sample 130 / 1000
Sample 140 / 1000
Sample 150 / 1000
Sample 160 / 1000
Sample 170 / 1000
Sample 180 / 1000
Sample 190 / 1000
Sample 200 / 1000
Sample 210 / 1000
Sample 220 / 1000
Sample 230 / 1000
Sample 240 / 1000
Sample 250 / 1000
Sample 260 / 1000
Sample 270 / 1000
Sample 280 / 1000
Sample 290 / 1000
Sample 300 / 1000
Sample 310 / 1000
Sample 320 / 1000
Sample 330 / 1000
Sample 340 / 1000
Sample 350 / 1000
Sample 360 / 1000
Sample 370 / 1000
Sample 380 / 1000
Sample 390 / 1000
Sample 400 / 1000
Sample 410 / 1000
Sample 420 / 1000
Sample 430 / 1000
Sample 440 / 1000
Sample 450 / 1000
Sample 460 / 1000
Sample 470 / 1000
Sample 480 / 1000
Sample 490 / 1000
Sample 500 / 1000
Sample 510 / 1000
Sample 520 / 1000
Sample 530 / 1000
Sample 540 / 1000
Sample 550 / 1000
Sample 560 / 1000
Sample 570 / 1000
Sample 580 / 1000
Sample 590 / 1000
Sample 600 / 1000
Sample 610 / 1000
Sample 620 / 1000
Sample 630 / 1000
Sample 640 / 1000
Sample 650 / 1000
Sample 660 / 1000
Sample 670 / 1000
Sample 680 / 1000
Sample 690 / 1000
Sample 700 / 1000
Sample 710 / 1000
Sample 720 / 1000
Sample 730 / 1000
Sample 740 / 1000
Sample 750 / 1000
Sample 760 / 1000
Sample 770 / 1000
Sample 780 / 1000
Sample 790 / 1000
Sample 800 / 1000
Sample 810 / 1000
Sample 820 / 1000
Sample 830 / 1000
Sample 840 / 1000
Sample 850 / 1000
Sample 860 / 1000
Sample 870 / 1000
Sample 880 / 1000
Sample 890 / 1000
Sample 900 / 1000
Sample 910 / 1000
Sample 920 / 1000
Sample 930 / 1000
Sample 940 / 1000
Sample 950 / 1000
Sample 960 / 1000
Sample 970 / 1000
Sample 980 / 1000
Sample 990 / 1000
Sample 1000 / 1000
Sample 1000 / 1000
Elapsed time: 4.380834341049194
Plotting results

{'x': CUQIpy Samples:
---------------

Ns (number of samples):
 1000

Geometry:
 _DefaultGeometry1D(128,)

Shape:
 (128, 1000)

Samples:
 [[ 0.06715144 -0.04846987  0.06083039 ... -0.03247262 -0.01685955
  -0.03604911]
 [ 0.07834204  0.04782093  0.03510226 ...  0.00827605  0.04878372
  -0.00091468]
 [ 0.05198169  0.01627004  0.04456163 ...  0.02012335  0.08066384
   0.07502316]
 ...
 [ 0.10112118  0.04984318 -0.01973655 ...  0.05401438  0.09951384
   0.14686536]
 [ 0.100433    0.0999588   0.03329683 ...  0.00273207  0.1824102
   0.13280877]
 [ 0.06957498  0.1184197   0.016138   ...  0.04557706  0.05593751
   0.02635453]]

, 's': CUQIpy Samples:
---------------

Ns (number of samples):
 1000

Geometry:
 _DefaultGeometry1D(1,)

Shape:
 (1, 1000)

Samples:
 [[ 9566.57219058  9915.10225181  8697.58863443  9133.91028984
   9925.15447986 10314.58422243  9647.61215779  9654.53207801
   8575.92264547  9084.13069588  7882.75807063  7184.83177396
  12176.4221161  10504.66236636  8996.95036902  9829.51306657
   9722.50378926 10334.45629504  9307.02654976 12271.16204431
   9474.56030308  7340.70222587 11993.02227666  7108.00082942
   7631.74138272 11168.63058323 10095.33005789  8815.11712795
   7477.34186625  7618.24515842  9953.5763848   7722.04533003
   8622.04433363 10087.48044062  7590.74867683  9065.15922136
  13062.39625503  9022.54139306  9458.01652528  8201.60913622
   7062.55054572  7880.23134325  8017.11219843 10800.58079739
  10688.48915471  9728.30273546  9402.78212293  8270.86480264
   9131.21588807  9228.29550605  8949.66157159 11481.49563665
   8840.74391794  8813.01023413  7484.22735915  9074.11389076
   9009.25895653 10215.33576018 10124.3334798  10036.87555864
   8149.60226731  7865.63288644 10014.49927476  9914.25569273
   8712.78119809  7185.65472416  8440.48824243  9147.17127534
   8914.51396971 10885.42036897  7439.18122141  7969.00854978
   9598.85868606 13118.99176129  9791.26840692  9224.06485502
  10184.09842993  8034.84086376  9517.07624759 11750.71552251
   9974.47379107  8467.18317878 11146.78213621  7366.59577764
   9498.71683871 10612.73595143 10446.27925373  9152.74400874
  11114.14783584  8738.07958096  9852.48267721  8729.27771483
   9401.09386331 10285.33577932 11287.35167887  9179.37974714
  10349.90464066  8687.60065916  8671.34076388  8709.50700032
   9937.02715261  8485.10552726 10896.10867265  8422.78092238
   9794.50582515 10098.00925054  9291.01457664  9858.0073441
   9471.1530679   9037.15971543 10952.27671402  9348.26288183
   9212.85915215  8448.27239745  9225.44163739  9894.81220996
  10516.53393111  9574.60778738 11305.28765639  8068.27970329
   9850.09987689  7441.62465661  8285.57248402 10941.81527419
   6247.02182022  7634.62065692  9870.24931688  8558.99033103
   9969.54897936 10153.22845566 10248.31122128  9753.01236285
   8903.2114689   8002.71557765  9287.50411579  7903.20894881
  10211.91701191  8568.32396602  8948.69263147 10847.14392137
   8884.45358063  7315.79478314 10145.82830395 10107.5307982
  10666.91886563 10199.19922056 10446.47237158  8590.48283625
   8981.62341623  9546.67263358  8447.14605208  9400.24410522
   9566.83258872 10016.13882491  7883.88533268 10695.12121459
   8639.55958571  9294.46697974 10493.04028001 10373.51528036
  11902.93405178  9400.97259977  9433.02548495  8992.14859483
  12289.3788842   8536.23093453 10262.28957242  8668.71957964
   8911.66770992  9688.50612364 10561.89443941 11752.13556833
   7892.63657875  9400.72365512  8421.942982   10204.40528719
   8450.54280526  9621.47114645 10738.11589026  9412.71798638
  11462.81216473  8307.16345538 11310.93057079  7434.6011296
   8354.79752361  8989.91761012 10695.3445257  10133.02805848
   6996.96791417  8690.89410121  8904.94431127  8711.55095989
   9876.08154182  8675.44036077  8170.63280817  9362.99491389
   9268.22792303  7646.34314246  8646.01530853  7677.22263265
   8453.47648913  6854.32957864  7729.06149619  9803.81373278
   9687.52118055  9247.73334902 11148.75205603 10447.88929379
   9962.94601503  9036.8294263   9149.78315435  9116.61422785
  10890.67873518  7724.72678017  8084.88363045 10428.14071202
   8554.62879538 10090.33096372  8903.20091898  9657.93308905
   9220.70465896  9167.74060792 10119.36478556 10816.80153251
  10759.22881542  8027.58861654  9502.7640472   7770.27190173
   7691.98946169  9786.88740664  8524.64148985  8248.29007639
   7482.87497139  7841.10538647  9034.0113462  11312.33899814
   8496.13384174  8105.33139501  6588.81049989  9059.51258832
  10005.59831884  8298.39688853  8806.92379523  9427.36530971
   7863.98028855  8151.02121921  9014.86634784 10923.25260751
   8761.73045916  8906.66013047  8876.80707003  8201.7681625
   8482.10882468  8888.39104239  9175.42445884 12236.908862
   8442.52252283  8377.69644491 11044.93751437 10288.15391955
   6930.21529437 10290.499423   12545.92256546 10134.20277757
   8513.95470221  8471.14440419  8296.53010275  8429.2100536
   9799.79291203  9664.48016983 10601.69381285  8562.20496651
   9863.84111443  8798.88861622  8869.4021813  10923.75540318
   7861.08425554 10176.17085342  8883.20041836 10896.03177437
   7372.59825421  7683.756232    7943.1425404   7937.2194744
   8638.97858047  9560.05538821  8006.63691518  9628.5210657
   8573.50943576  8430.79409002 10464.7497422  10256.28493926
   7973.43562214 11081.94116288  9457.07121847 11496.48931529
   8643.55214874  9287.6723384   8218.1409012   6229.46113959
   9844.33404071  9687.27726573  7944.64110521  8463.74125789
   9349.36503153  8211.17390396  9835.57679839 10596.93637124
   8373.21210427  8127.65999253  8776.91312354 12162.46075452
  10311.92783749  8949.24801602  8696.42013986 10133.54989021
  10710.08102835  8479.77763167  9048.82744276  8805.31761479
   8968.56930585 10700.47289264  9321.54168474  9689.7092913
   9238.81142716 10383.51004897  9081.6401106   7483.99695085
   9129.78777285 10490.68617094 10604.03401836 12022.27392975
  10285.68682288  8726.50368627 11313.81454137  8887.25860543
   9962.01310336  9693.888436    8384.37863452  8776.89950777
  11597.97161211  8912.55124514  9596.14581179 10707.75523147
  10562.76874885  9454.83777486 10027.67910058 10670.17427873
   8268.13921744  9253.28939648  6963.85360828  9244.11357008
  10419.82978693  9631.56006472  7501.87154451  9427.31493204
  10558.58953681 10788.51751853  8592.19307814 10496.94151638
   8027.05571321  7859.41067393  7691.26406232  9276.10236129
   9881.29015326 10971.28973855  8984.02403279 10415.22117952
  10458.47183938  7473.30337159  6910.13441891  8852.44463893
  10131.8722065   9339.61674723 10690.571216    9048.10287465
   7607.23838292  8026.20958728  8740.5982046   9452.8884745
  12121.50918709 10934.54421129  8595.71709175 10772.18757056
   7928.95414525  8742.98464914  8853.26871284  9217.47677463
   9590.95857788  9452.15038186  9294.91651936  8162.56889122
  10397.9399299   9689.37703071  7860.17982325  7519.64836815
   9878.24895054  7385.11266868  7413.91287886  9672.2655792
   8508.25425689  8952.05423878  7847.76185303  8967.47805649
   9437.00502514 10336.67744695  9139.37276651  8473.99629681
   8640.55968178 11262.90722645 10236.82785084  9873.2807496
   8104.92730509  9983.92142921 10239.01239046  9669.62570458
   9339.8824586   8397.99989908  7215.35228883  7468.99400743
  10743.10915708  8312.70278845 10013.82440214  9487.10622432
   9463.32261285  9838.84095052  9044.78108993  9599.45514184
   8026.93999805  8026.12805645  8388.02324902  9674.63112654
   7608.171144    9533.19466256  7365.29477151  8272.69321198
  10195.11662846 11765.30079342  8717.17994462 10359.11905827
   7849.9892524   9326.10211796  8726.80166546  9797.07326079
   9333.23291008  9728.99892474  9015.2532336   8067.70870107
   9755.67741614  9693.2624736   7866.4134279   8544.78863417
   9808.17931477 10169.37380113  9206.47223973 10990.67041657
   8125.39445299  8555.60601744  6998.94168936 10551.22153255
   9252.63448842 10608.17335598  9898.75044904  8656.20233208
   9080.50215591  8605.11343518  8951.88650044  8950.70536735
  10542.47289276 11339.05275985  9422.07606365 12527.0713686
  10281.91409911  9204.0883842   8894.27979665  8626.70341622
   8996.87754493  9183.64355971  7773.191704   10493.60112034
  10048.50094659  9792.345931    8927.23715889  9350.6793047
   9298.2709065   9916.46447089  8675.73168064  8750.22750506
   8050.01985958  8975.87421492  8494.0120271   8485.31731168
   9352.34017044  9411.93295654  9455.66551467  9635.77055803
  12368.72463456 10280.99001304  9033.96726579  9229.58586434
   9060.40515965  9975.19143431  9927.92247445  8014.5689354
   9359.98545383  8839.02834372  7959.90376799  9788.67825228
   7471.26520111  8628.66462507  9172.89315518  8038.55798243
   9321.12976938  9007.15010011 10298.97213392 10199.34450571
   9902.03747429 10149.03585092  8798.76035236 10514.70644805
   7803.12042583  6804.81766283 12525.04096337  9152.85940062
  10173.06754179  6649.11241034  7790.17737447  9445.42529769
   9259.98756433  7350.55085234  8508.96716921 10002.67820437
  10533.73685935 11740.6291104   9424.34699386 10327.30306217
   9028.23367528  8031.71282278  8830.00473372 11108.57530332
   8753.78322299  9897.16614409  8873.48822303  7313.26083262
   8995.79421557 12250.00581482  8416.95221268 11786.7122141
   7792.88427144  6993.41787009  8243.42292739  9768.35334565
   7494.68096735  8796.39086725  9551.11799882 10841.89728124
   9737.18340572  7414.55904894  9003.62551435  8844.07305388
   8599.79055366  9247.5835248  11175.55551159  8870.52307632
   7990.84021092  9086.83368204  9188.34997571  8348.39728897
   8318.18226737  7794.86347526  9993.74340041  8597.21105638
   9294.60205253  9860.00932301 10261.85438365  8289.90083756
  10426.98964876  9288.95832299  8408.9416525   9507.3084279
  10363.37374803  7829.11652805  7437.38975285 10529.5685407
  10611.06298088  7430.75538824  9873.34410195  8344.67630073
   8442.37974273  8965.11617796  8472.26191181  8423.47157261
   8465.21416849  9230.71886158  8375.5147155   8146.27864536
   8143.78265806  8717.43820265  7451.64485007  8230.05314119
   8049.79518595 10167.00702338  9734.61595097  8834.71124452
   9304.79865337  8720.01667155  9181.96645045 10040.52622407
  10151.14880082 10254.66395569  8209.19160597  9727.29623852
   8213.48538793  8848.35033311 10032.30077283 10274.83957217
  11252.75758057  9933.64517379  8947.7381321   9919.18187379
   8135.04769639  9500.24548134  8862.84125099  9775.36370962
   7620.51095413  8423.211813    8046.40798126  7234.41434777
   7969.28791558  8487.91055014  7710.09337896 10572.86880887
   8356.94588757  8047.13009304  9243.03578297 10959.85006036
   9867.03623565  9394.83402341  6964.36462222 11014.31832489
   7493.38397364 10462.46638136  9856.34795723  7179.37047338
   8486.96462412  9755.79253907  7783.79600908  7960.98695148
   9523.12804661  8552.86370433  9972.87174407  7811.02420286
   9932.90455119  9371.96556432  8454.13614767  8239.03455656
   9985.29036949  9035.54631089  9685.40701511  7788.9686399
   8801.70452881  8100.6740477   9048.40127263  9565.62149829
  11113.34925362  6963.79218595  6756.58252053  8359.88449501
  10361.41187748 10106.79919451  9389.89780979  8695.7228596
   8334.63996135  7952.639831   13561.46156089  8117.81092662
   9660.25245729  9764.12486999 10347.11535987  9021.59973404
   7727.283232    8975.19146721  9987.67647604 10427.76547212
  10787.72593173  8542.00105294  9706.617863    7905.87477683
   6710.55877063  7625.39609368  7488.12973996  8744.41315092
  10663.56468993  9306.48245351  8203.03704039  9061.54876634
  10143.39206935  7503.94015399  8681.2125703   8026.62987901
   9516.56098885  8378.69884114 10122.26654291 11177.26277456
  11080.95190187  9495.95879039 10391.4106425   9889.48066939
   9944.42161996  8697.2522755  10267.02321361  8400.96177025
   8506.22334562  8923.62995023  9295.89802669  8800.16683338
   8119.06833227  9484.93239287  9124.92611273  9720.78567071
  12045.76631851  9069.39280885 10203.47811003 10437.98513831
   8287.26316936  8939.1903839  10043.37921677  9008.62202936
   7672.00642618 10407.77233263  9007.92951839  9818.75573482
   7558.1076105  10332.68491765  9101.00498709 10274.96590366
  12779.11024156  9779.00176387  9058.51040729 11218.77497723
   9005.30766014  9697.56746054 10059.76011902 11379.1882131
   9243.56321838  9701.37400239  8866.40763534  8438.51721947
   8949.26703209  9907.81981119  9085.05089062 10865.98383163
   8391.25915474 10261.22561731 10016.42466815  8291.11490876
  10029.61023815  9139.53757795  9966.68920084  7992.63697806
   8062.76322951  7565.87686279  7756.1548039   9876.9328974
   9900.33125936  9829.61935867  8202.07981667 11178.14302091
  10057.63900255 11417.2929216  10844.6644043   7949.95637951
  10165.39468472 10159.63591771  9872.22858222  9717.95694071
   7913.99301366  8224.0266829   9756.68545893  8908.62537146
   9875.49374334  8984.74523362  9405.95038991  8436.11844421
   9074.14768605  7067.10313806  7292.9614069  10079.32918271
  11081.11631302 10038.78168692  8805.26225811  9682.68461155
   9717.79071651 10647.51688139 10164.67954494  9787.38966642
   7118.22200165  7868.80214187 11037.58909016  8149.30473825
   9121.39267905  9399.30995878 10563.58900472  9277.49863804
   9328.47357604  9671.64160125  8617.47943485  9448.57406565
  10618.64119367 10020.07673508  8665.06550596  8617.22156218
   9643.74279425  8984.42560459  8160.0490223   9349.20290553
   9134.25428519  9452.78690776 10939.00078543  8724.51833692
  10289.38219516  9534.88040539 12504.09143628  8689.22935136
   7293.28489943 11621.65121287  7442.87877524  9488.45806855
   7884.57856939  7492.61463577 10710.75116771  8494.13818877
  11524.20748078  8516.78670744  8251.90827221  7672.55864643
   9473.18522067  8154.17533249  9614.22594682  9724.01807117
   9236.77956358  7784.66755676  7615.98164728  8610.20539627
   7792.30400845  8123.50167775  8422.66404566  9421.112492
   8465.76891719  8292.60016608  8854.63357836 10703.11744783
   9965.65037466 11333.26705257  9863.69174693 11179.37832321
   8280.41698111  7818.51511466  8511.00118531  7637.44618109
   8275.44720923 10716.16599764  9201.0287214   9288.17167077
   7579.54011735  8582.78922263 10553.53836263  8801.74958627
  10090.97266232  8950.226294    6971.69390018 10408.77886904
   8505.39751152 10464.38977588  7082.88273963  9082.43817344
  11636.1659839  10989.1765544   9827.45629719  8876.94058625
   6846.52717742  7993.45633417  8647.41647754  9065.64403709
   9668.20471495  8932.65624395  9521.96268171  9840.08424519
  13297.750488    8012.00571665  8523.28433301  9144.19455772
   9094.91319644  7809.68235808  8920.25706807  6902.91119384
   9163.57941893  9004.66684973 11424.2007592   9405.29141171
  10740.7070729   6980.99066694  7999.21869874 10235.4533347
   7841.85785302  9748.94926071  8322.90996342  8426.26055271
   9082.45206584  9087.77241095  7967.13856743 10346.53628969
   8485.15483995  7876.78297608  8115.68779628  8578.64462363
   7169.40278814  8792.85125849  8313.83662335 10391.32351703
   9110.06904455  9221.32478693 11487.62024487 11410.18554512
   9019.34163594  8377.92586527  9209.66096704  9108.68823615
   7701.37820039 10391.0523738   8181.45736997 10266.8493219
   8453.19281951  9147.08401551  9629.04114538  8401.28625602
   8428.67395814  8995.37118686 10488.38460495  8319.12195156
   7957.15419281  9213.62266072 11333.1199612   8805.17724215
   8773.71332746  9226.49842588  8187.15058661 10065.1217637
   9449.47089075  8648.53528179  7530.97158828 10376.96513205
   8499.88831853  9282.03308869  8190.67979273  9168.88780272
  10435.51993551  9668.08380499 10300.35678734  7605.64506695
  10545.42742898  8937.11592044  7273.48893122  8012.82109031
   9172.10082765  9288.91188636  9903.29515872  9338.3500292
   9402.39722779  9397.09585821  9129.28399516 10802.93140701
  10041.16401724 10436.21407499  9941.27892246 10063.45020182
   7394.99763513  8889.68993702  9773.25161534 10107.92200728
  10157.9310838   9133.620305    9438.30876333  8784.39237032
   8231.7521642   7722.34120258  7676.36342998 10446.33586932
   9245.27408974  8613.80634449  7349.59727072  9880.47475296
   9872.39504527 10112.71296337  7889.75508575  9281.59602676
   8794.06694153  8217.32617091  8564.85101741 10155.27187382]]

}

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

Gallery generated by Sphinx-Gallery