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 0x7fad7829caa0>

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.9734134674072266

Plotting the results#

samples.plot_ci(exact=info.exactSolution)
UQ in Deconvolution1D
[<matplotlib.lines.Line2D object at 0x7fad73fd1b50>, <matplotlib.lines.Line2D object at 0x7fad73fd0dd0>, <matplotlib.collections.FillBetweenPolyCollection object at 0x7fad73d45550>]

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.619251728057861

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 0x7fad78127f50>, <matplotlib.lines.Line2D object at 0x7fad78126510>, <matplotlib.collections.FillBetweenPolyCollection object at 0x7fad785b8bc0>]

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

samples["x"].plot_trace(exact=info.exactSolution)
x13, x13, x17, x17, x39, x39, x56, x56, x119, x119
Selecting 5 randomly chosen variables

array([[<Axes: title={'center': 'x13'}>, <Axes: title={'center': 'x13'}>],
       [<Axes: title={'center': 'x17'}>, <Axes: title={'center': 'x17'}>],
       [<Axes: title={'center': 'x39'}>, <Axes: title={'center': 'x39'}>],
       [<Axes: title={'center': 'x56'}>, <Axes: title={'center': 'x56'}>],
       [<Axes: title={'center': 'x119'}>,
        <Axes: title={'center': 'x119'}>]], 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.604166030883789
Plotting results

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

Ns (number of samples):
 1000

Geometry:
 _DefaultGeometry1D[128]

Shape:
 (128, 1000)

Samples:
 [[ 0.0618453   0.07626861 -0.06397197 ...  0.03660061 -0.018834
   0.02208633]
 [ 0.04090545  0.10575296 -0.07316161 ...  0.07386206 -0.01817452
   0.0461615 ]
 [ 0.12200632  0.06148444  0.02467105 ...  0.04250902  0.00584573
   0.01069121]
 ...
 [ 0.05785521 -0.01794829  0.03422982 ...  0.09473283  0.05314016
   0.08696787]
 [ 0.0555219  -0.02355431  0.09301284 ... -0.01661903  0.04886413
   0.05206315]
 [ 0.00247182 -0.01837786 -0.0454012  ... -0.00911954  0.02045178
  -0.03140952]]

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

Ns (number of samples):
 1000

Geometry:
 _DefaultGeometry1D[1]

Shape:
 (1, 1000)

Samples:
 [[10594.12379585 12121.81508892 11384.40144924 13206.41902302
  12897.3404173  12482.16457027  9903.94371797 12381.72939327
  10637.89769919 12975.83955567 11346.95125214 11354.12084202
  12857.39922942 10595.53164607 10994.2787046  10972.7584469
   9933.35655342  9972.88349757 13340.88668782  9511.72000169
  11421.33066053 11203.56883978 11173.06595463 10971.93398827
  10879.54381593  9646.0988863  12519.25709992 14589.94679495
  10524.57845522 10049.6470148  11620.7068093  11223.75361607
  11884.14763227 10877.64520596 11907.21364198 13092.10335647
   9608.4000084  12950.69565685  9884.04716277 12076.32479784
  10921.93011504 17138.94615697 10849.47540006 10910.14964701
  10450.56686927 10993.54900787 12287.43011962 11925.44963422
  12181.1387665  10535.41333859 10612.47622835 10416.81449308
  12157.68861117  9676.60657771  9700.28939409 11652.6349611
  10307.45360464  9585.06872042 12078.89459884  9255.40569048
  11488.63935796 10542.41976532  7964.75074076 11831.78392991
  12008.73310787  8788.75185933  9263.18340513 11042.04663026
  10949.07085081 12332.05050864  9109.69344445  8998.26760453
  13359.7418854   8853.89986407  9377.21318852  8710.64417829
  12983.61491636 17679.4124463  13283.69117397 12012.46089558
   9662.71248534 10794.56259557 10809.7638544  11869.62599182
   9144.29698053  8901.32125575 11403.19668682  8818.16890911
  10139.44082208 10755.37060704  6991.70373787 12369.72913377
   9194.04714783 15612.56104698  9479.72797807  9951.5409136
  13088.76631881 11111.82598035 12725.97411866 15310.79002738
  10681.30123668 10377.87916269 10028.08892901  9819.75564239
  10740.41055382  9062.28911934  9470.89833465  8687.44679147
  12273.04825024 11516.44308774 12110.71197165 11939.36843149
  13441.34244039 10507.61522016 10328.50701505 11258.92930116
  11676.42778387 11152.60374552 10530.85078977 11003.86521688
  11495.47589233 11000.9306232  10044.45133797 12706.29584723
   9094.51670662 10878.0893366  15736.55563276 10971.6319834
  10423.2896032  10719.33180758 14647.78755744  9953.28938384
  11222.44876257  8895.63982787 12496.99397139 13817.19526406
  12553.20037382 10330.36893412 10826.33519099  9130.34346561
  11779.80844561 11619.14467799 10069.63176147 13325.90008257
  12983.73521642  9693.93467166 12214.19908371 12751.23780335
  12407.70041205 11078.37470557  7411.01932312 14209.14348228
  11541.88622176 11500.72828656 11067.60555821 10638.47115554
  11760.8624633  10470.27370814  9013.01582414  8556.44455479
  11022.44926231 15620.86845345 13527.42292158 12474.02297392
  10523.27463257 10527.0690884  10555.76792695 11342.75578118
  10655.18805342 11876.80340403  9679.71436917  8687.77043686
  12117.72566768 10354.06540727 11782.58896053 11850.77478272
  10758.90235808 12171.34614499 10983.26514569  9266.71887704
  12439.8654418  11600.57119173 12098.37902884 11026.90199896
  10486.16278315 13965.64881633  9233.12146265 12191.98379094
  11979.4968778  11944.5482305  10937.01569627 15056.74693427
  14978.95505753 12737.04587454 10017.61226916 12111.29192365
  11934.5741539   9168.73632424 12556.50080669 11478.30087508
   9132.80231997 14270.20450583 11767.50226967  9554.81083825
  11481.81924444 10196.47725806 10445.21766055  7894.28562242
   9749.3722853  12230.84728121  9612.0406013  11085.87253359
  10734.8486424  11303.17915218 10744.48924333 12086.78966263
   9801.12286978  7814.89814369  9258.31475352 10060.23679658
  12022.89707776 12139.7990572   9011.82529928 10402.36732388
   7550.65097583  9744.80237477 10242.24247853 10474.29074554
   9738.93343083 10147.2691982   9033.14311544 12205.931854
  12553.15639064 12562.71430149 13081.24698091  8885.34770011
  10308.9073294  12476.73187952 11601.17506296 10748.02607877
  11430.50715298 10510.03783627 10887.72732355 11024.78963035
  12589.06870558 10264.13005232  9791.57267278 12256.15736854
  10704.57705141 10002.48052525 13054.49943636 12983.5920998
  10184.44996488 12430.47056218 10237.03607675 10526.22666624
  11589.69216291 11697.32865026 12711.30778295  9135.23245648
  10283.45146767 12672.75908339 10253.53261168 11943.18203269
  11457.27510469 11896.32822396 11024.85908677  9054.82210047
   9944.88700497 12269.35718851  9940.69224427  9781.07412834
   9373.66530606 11079.52162979  9104.41433744 13145.98992562
  12255.19342022 12714.34080192 10980.3451025  11125.06678753
  11625.57391313 10758.6041761   9983.00486709  8900.45195425
  10609.13171629 10206.62182637 10741.46446332 11054.68216957
  11040.53791813 11496.10110572  9881.75863444 10189.47100409
  12031.00297818  9604.28801859  8781.0297404  10530.11935684
  11646.3117946   9277.0134658  11460.16963358 14915.08725479
   9222.69053268 13424.29969388 13120.60737328 12632.54438275
  10098.86483745 14336.69830068 12615.62791917 10942.88626912
  10447.60105479 14687.47602178 10845.1439582   9777.75303734
  11990.43851419  9046.53448607  9953.04590494 12406.14646305
  11654.99502624 11531.42310297 10723.52574074  7731.72324489
   9195.10357443 10662.37096399  9843.41814303 10914.23482905
   8934.72000389 14087.53832414 10549.87894609  8803.92578152
  12019.99027362 14204.59997342 11395.70345701 13427.4257323
   9239.70651168  9015.19939474 11335.74664549 11566.95341886
   9650.07683912 12354.89328513 13326.61877839 11492.89671563
  10644.97077223 12296.87632492 10587.23428804 11997.23767337
   9024.54652598 11931.62630754  9693.38707704 12460.04073512
  12297.81640506 12456.68298759 13529.28048655 10664.9774981
  11843.08282295  9456.33147406 11735.98114533 11417.7073899
   9494.41498592 14823.9392158  10012.1646761  12837.68712024
   9637.60534264  8133.0608038  10331.31574562 10359.97224109
   9817.34791595 10455.10199163 11288.98373187 10025.86361831
   7935.09908742 11664.21905924 11186.17931336 11186.1741954
  11753.97008014 12714.36143174 10579.66126212 13058.3021784
  11855.7320109  11393.62743773 14285.49875352 10530.62129899
  11724.2572037  11017.83693138 10650.48928523 11374.11836196
  10975.12374096 12690.28112351 10087.10004164 12078.32997664
  13929.83321958 11170.17830383 11154.3899742  12989.24579032
  11851.30446243 11744.2021436   9305.47874158 11296.95514001
  11121.87384979 11128.76851467 13190.25323165  9755.3483751
  10310.72253633  8407.92288241 12663.35343973 11228.28342954
  12751.2603629  11938.33973095 10430.01347151 10946.90455256
  10401.52003921 10873.41199656 10818.90327912 12696.53078535
  13592.4510716  11345.53961216 15131.42269983 12417.67602759
  11139.83540244 10815.2732654  10455.16010127 10944.93759248
  11054.91897915  9414.25699357 12660.23582493 12020.71697968
  11789.10636819 10772.39813519 11225.20336995 11205.66061508
  11875.92256829 10516.4821887  10561.20882969  9733.19406657
  10726.38545594 10256.51850204 10300.51643544 11331.9765072
  11415.11619316 11481.30379403 11498.46362111 14844.4608728
  12354.86174982 10963.91758086 11128.91765874 10870.77342656
  11887.10302907 11883.95356546  9617.84238557 11228.91045721
  10593.93424294  9488.14144297 11722.34914606  8928.29160206
  10268.62962071 10990.0008196   9730.8305126  11319.68087306
  10792.86922525 12367.60539862 12256.2638786  11820.44244239
  12145.53865054 10538.45331499 12701.73666063  9444.76625146
   8140.48922321 15087.32276166 10968.5648219  12350.56214775
   8079.28868207  9428.80774557 11484.74514322 11120.38242181
   8890.52747031 10199.91975856 12080.10816724 12576.65158233
  13983.98794662 11272.19472104 12357.98031127 10838.39118559
   9675.60091114 10669.34220023 13336.3406668  10566.73492998
  12047.03341168 10804.35835442  8860.02840821 10826.93213088
  14866.44034643 10230.44255583 14407.7268981   9492.78644831
   8464.27150211  9861.94572294 11836.09198986  9105.50046974
  10558.29469349 11407.4320745  13099.61702722 11801.57326291
   9001.11810021 11075.54742293 10652.92534929 10410.36969435
  11066.37289841 13326.63673967 10655.32940907  9542.50840557
  10995.97515001 11082.12974112  9896.89722186  9937.58711581
   9361.293177   11785.33087258 10317.58371824 11267.64453076
  11980.16868535 12334.44595855  9952.12701203 12610.67856417
  11181.3970614  10212.43994951 11498.29820365 12514.51039462
   9475.44906054  9133.13379124 12745.16171609 12768.77584376
   8963.60896944 12134.49968329 10096.67008827 10233.66863706
  10843.99095465 10156.94085769 10200.8902646  10306.83853406
  11109.32214265 10114.45197863  9774.27441544  9865.73357088
  10570.49909457  9060.098773    9890.4286328   9685.18116769
  12280.31816088 11675.27166959 10630.83080518 11213.19402134
  10439.08716022 11054.97264789 12097.0315394  12136.37140329
  12441.81578239  9852.20184832 11690.26193845  9851.47687755
  10582.33249182 12053.49720599 12311.60145343 13571.40857684
  11976.39306471 10804.55271547 11855.09733834  9844.12198882
  11499.38934222 10691.02728762 11830.04038147  9258.08643735
  10276.15770018  9720.06547274  8768.79545387  9535.60125164
  10185.09481576  9370.1519177  12607.04356326 10076.8539566
   9740.7293486  11187.52029029 13305.83291634 11750.57258767
  11250.39538764  8378.90662761 13254.19748071  9098.70658199
  12672.52442756 11876.22093979  8807.69977581 10430.43139611
  11759.2387969   9424.57186777  9675.68028969 11453.85396029
  10289.98098843 11942.98187933  9499.99331338 12020.1634422
  11327.14331782 10199.61632103  9961.27082597 12008.67081341
  10831.97345527 11704.89045011  9459.56968704 10560.65636587
   9723.77201898 10728.39616912 11500.90756301 13346.2932437
   8400.1378139   8125.94800156  9909.67441743 12412.51147506
  12135.9405446  11312.36286469 10533.16057216 10032.89022376
   9547.98751909 16349.13343331  9789.56803443 11603.30090164
  11743.14690009 12465.35955852 10882.12806127  9343.70958842
  10873.14344919 11981.16651085 12627.27267109 13117.3141186
  10285.52478886 11802.18975972  9535.02392788  8140.71413766
   9247.92794213  9074.69395341 10559.81408776 12800.95239538
  11109.64371455  9795.57733332 10963.31786607 12131.36342299
   9117.8748008  10479.00840634  9732.25936459 11451.59298538
  10123.26229572 12209.16323606 13448.44965399 13379.01484959
  11485.61030058 12565.51281589 11917.25167293 12049.17314336
  10553.45946946 12415.4060728  10065.20489233 10252.26819324
  10668.59960082 11153.83034979 10607.31682954  9806.25551777
  11324.74572504 10907.3053547  11658.7552148  14390.38169561
  10979.18083471 12355.8496319  12635.72886725  9991.60908027
  10782.82982835 12188.72147855 10906.02352603  9263.91433912
  12395.91390489 10964.44242842 11825.13077514  9150.11292267
  12552.47469277 11014.60611273 12574.98605067 15524.13494427
  11813.72441454 10934.77947558 13538.6648494  10788.22072831
  11666.26712548 12132.00228793 13729.5936973  11067.30527308
  11644.32325121 10562.23026982 10256.80459794 10793.53768897
  11979.08153204 10862.8204499  13068.32318779 10124.65165135
  12396.18890621 12045.2051124   9969.57450745 12120.05428284
  10916.85597556 12029.96332899  9558.04378398  9691.94661007
   9085.20082801  9295.27765043 11845.21524618 11935.93176643
  11773.93229347  9808.61632798 13423.33053445 12118.87872043
  13720.24251587 12995.98325384  9628.05750195 12234.93512152
  12292.0235158  11933.05263018 11677.04157499  9462.88866859
   9822.26147446 11634.53680838 10706.20469161 11855.97820822
  10857.4530902  11328.7268283  10118.90904219 11046.34813097
   8712.94194611  8797.98273601 12244.8089166  13394.18960266
  12054.97462307 10554.46541475 11641.12619592 11785.1606529
  12990.54256357 12438.69898695 11960.05659858  8505.70710869
   9436.29258292 13269.08769597  9848.07935148 10947.86543369
  11715.08248806 12926.61443273 11239.51334154 11197.70654715
  11690.4145397  10504.89497095 11370.08278744 12687.35479691
  12088.15783143 10354.62877265 10330.70421436 11734.53374729
  10826.97675641  9832.31953517 11355.46596685 11027.33091068
  11385.94583288 13238.13453155 10500.38631374 12311.36116504
  11458.38757232 15061.6293487  10520.39195474  8828.11532043
  14050.16137759  9007.86844845 11429.35069399  9567.61880713
   9015.18148636 12905.04844353 10259.37270674 13931.74671614
  10205.8174276   9857.37985346  9220.81035253 11399.1142157
   9864.08508313 11572.85385455 11707.98166889 11245.52115426
   9340.09912029  9253.25216984 10362.66821528  9155.01630077
   9768.59906766 10115.68176166 11368.28406487 10179.9211757
   9882.54007627 10707.35813715 12873.56442554 12105.38860931
  13685.52440224 11929.60282687 13449.65924622  9965.70968006
   9375.63089792 10231.74650073  9278.75961772 10036.79664233
  12873.69792092 11092.53259079 11144.24457821  9157.18839634
  10365.63595951 12690.17350821 10630.3104646  12217.24203627
  10829.447942    8390.43946019 12494.23855078 10323.08762107
  12695.27845194  8521.25071359 10914.60519663 14015.25028051
  13107.48456428 11747.33349469 10557.289088    8243.57455251
   9554.97003618 10493.41053987 10950.24392418 11671.66493361
  10701.18370844 11394.98595172 11809.60424206 16044.35554794
   9626.73702849 10272.31197517 11065.60210209 11060.41899807
   9478.46924551 10858.77407377  8393.35756562 11039.59152982
  10868.35917992 13695.0465726  11362.40194267 12980.95755729
   8486.20374737  9584.91796113 12344.56718377  9432.19946095
  11789.85254053 10010.49111375 10078.46161388 10879.74685394
  10905.41965527  9494.1857229  12552.9906509  10246.89684294
   9469.14873937  9776.07385022 10376.83656793  8719.60410227
  10529.75927708  9964.23312991 12508.67800499 10970.69246237
  11038.46968144 13753.02639538 13725.50707606 10824.09038973
  10018.01536204 11059.03653501 10926.47892112  9274.41736464
  12450.06227127  9835.07964199 12780.42047494 10145.41999757
  11107.75717594 11826.79298863 10266.48758119 10250.42333403
  10980.63981344 12777.15456567 10077.64687139  9669.70753551
  11087.80871517 13666.36074022 10583.96911148 10457.32978604
  11127.42688755  9904.02841771 12158.43277214 11414.45612891
  10481.80004028  9086.73833002 12503.5404358  10168.91227067
  11357.68375769  9921.08288745 11001.79284124 12402.97957422
  11543.73923776 12397.93374653  9123.60757679 12606.74865444
  10707.94159951  8813.36769446  9781.27434809 11188.09721958
  11149.74177843 11924.84580853 11282.10474479 11304.64384147
  11210.0924355  10838.80818972 12846.03606339 12098.54226253
  12582.38901783 11954.66869474 12215.75250948  9000.63896943
  10751.63336085 11809.65100643 12190.7262239  12232.49042276
  11128.26253678 11457.89111953 10608.99581703  9934.84001852
   9357.72958773  9245.30091254 12541.00665958 11034.28187128
  10335.55086847  8828.95557341 11885.75630844 11861.12335134
  12069.33670745  9521.05785003 11262.06495961 10515.68429075
   9875.8345821  10338.64172932 12216.97020211 10002.67843112
  11221.37373007 11676.74022912 12533.30206102 10262.18424668
  10268.78149461 11664.18456609 10049.57729043 11647.1305917
   9923.59442854 13846.39698191 11359.87334017 10483.09339809
  12158.32796057 11309.96061504 10725.31328517  8049.5992518
  12242.32635036  7909.99627535 10958.76691941 10377.0944774
   9699.14080033 12083.49660307 10208.69953023 12292.19612773
  12261.12958396 10485.53886781 12374.19105202 12504.37864922
   9924.7931988   9148.71569062 11302.58762266 10466.9969137
  11257.40388534 14138.14512861  9522.90256695 12071.34071664
  13284.71453025  8063.44964682 10021.5983743  11455.46873749
  10432.35503795 10824.27755498 11052.33818769  9374.17268964
  12694.03585676 10038.22511381 11743.04602448 12093.52307808
   8655.64838909  9709.97598948  9778.23374852 12220.78489299
  12521.80559035 10526.6018747  12620.53385689 12443.28893711]]

}

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

Gallery generated by Sphinx-Gallery