Stokes I Simultaneous Image and Instrument Modeling
In this tutorial, we will create a preliminary reconstruction of the 2017 M87 data on April 6 by simultaneously creating an image and model for the instrument. By instrument model, we mean something akin to self-calibration in traditional VLBI imaging terminology. However, unlike traditional self-cal, we will solve for the gains each time we update the image self-consistently. This allows us to model the correlations between gains and the image.
To get started we load Comrade.
using Comrade
using VLBIFiles
using LinearAlgebraFor reproducibility we use a stable random number genreator
using StableRNGs
rng = StableRNG(42)StableRNGs.LehmerRNG(state=0x00000000000000000000000000000055)Load the Data
To download the data visit https://doi.org/10.25739/g85n-f134 First we will load our data:
uvd = VLBIFiles.load(
VLBIFiles.UVData,
joinpath(__DIR, "..", "..", "Data", "SR1_M87_2017_096_lo_hops_netcal_StokesI.uvfits")
)VLBIFiles.UVData("/home/runner/work/Comrade.jl/Comrade.jl/examples/Data/SR1_M87_2017_096_lo_hops_netcal_StokesI.uvfits", VLBIFiles.UVHeader(SIMPLE = T / conforms to FITS standard
BITPIX = -32 / array data type
NAXIS = 7 / number of array dimensions
NAXIS1 = 0
NAXIS2 = 3
NAXIS3 = 4
NAXIS4 = 1
NAXIS5 = 1
NAXIS6 = 1
NAXIS7 = 1
EXTEND = T
GROUPS = T / has groups
PCOUNT = 9 / number of parameters
GCOUNT = 8645 / number of groups
OBSRA = 187.7059307575226
OBSDEC = 12.39112323919932
OBJECT = 'M87 '
MJD = 57849.0
DATE-OBS= '2017-04-06'
BSCALE = 1.0
BZERO = 0.0
BUNIT = 'JY '
VELREF = 3
EQUINOX = 'J2000 '
ALTRPIX = 1.0
ALTRVAL = 0.0
TELESCOP= 'VLBA '
INSTRUME= 'VLBA '
OBSERVER= 'EHT '
CTYPE2 = 'COMPLEX '
CRVAL2 = 1.0
CDELT2 = 1.0
CRPIX2 = 1.0
CROTA2 = 0.0
CTYPE3 = 'STOKES '
CRVAL3 = -1.0
CDELT3 = -1.0
CRPIX3 = 1.0
CROTA3 = 0.0
CTYPE4 = 'FREQ '
CRVAL4 = 2.27070703125e11
CDELT4 = 1.856e9
CRPIX4 = 1.0
CROTA4 = 0.0
CTYPE6 = 'RA '
CRVAL6 = 187.7059307575226
CDELT6 = 1.0
CRPIX6 = 1.0
CROTA6 = 0.0
CTYPE7 = 'DEC '
CRVAL7 = 12.39112323919932
CDELT7 = 1.0
CRPIX7 = 1.0
CROTA7 = 0.0
PTYPE1 = 'UU---SIN'
PSCAL1 = 4.4039146672722e-12
PZERO1 = 0.0
PTYPE2 = 'VV---SIN'
PSCAL2 = 4.4039146672722e-12
PZERO2 = 0.0
PTYPE3 = 'WW---SIN'
PSCAL3 = 4.4039146672722e-12
PZERO3 = 0.0
PTYPE4 = 'BASELINE'
PSCAL4 = 1.0
PZERO4 = 0.0
PTYPE5 = 'DATE '
PSCAL5 = 1.0
PZERO5 = 0.0
PTYPE6 = 'DATE '
PSCAL6 = 1.0
PZERO6 = 0.0
PTYPE7 = 'INTTIM '
PSCAL7 = 1.0
PZERO7 = 0.0
PTYPE8 = 'TAU1 '
PSCAL8 = 1.0
PZERO8 = 0.0
PTYPE9 = 'TAU2 '
PSCAL9 = 1.0
PZERO9 = 0.0
HISTORY AIPS SORT ORDER='TB', "M87", Dates.Date("2017-04-06"), [:RR, :LL, :RL, :LR], 2.27070703125e11 Hz), VLBIFiles.FrequencyWindow[VLBIFiles.FrequencyWindow(1, 1, 2.270707f11 Hz, 1.856f9 Hz, 1, 1, 1.0f0)], VLBIFiles.AntArray[VLBIFiles.AntArray("VLBA", 2.270707f11 Hz, {1 = Antenna AA, 2 = Antenna AP, 3 = Antenna AZ, 4 = Antenna JC, 5 = Antenna LM, 6 = Antenna PV, 7 = Antenna SM, 8 = Antenna SR}, [0.0, 0.0, 0.0])])Extract scan-averaged complex visibilities. Then inflate the noise by 2% to account for residual calibration errors.
dvis = extract_table(uvd, Visibilities(; time_average = VLBI.GapBasedScans()))
add_fractional_noise!(dvis, 0.02)EHTObservationTable{Comrade.EHTVisibilityDatum{:I}}
source: M87
mjd: 57849
bandwidth: 1.856e9
sites: [:AA, :AP, :AZ, :JC, :LM, :PV, :SM]
nsamples: 274##Building the Model/Posterior
Now, we must build our intensity/visibility model. That is, the model that takes in a named tuple of parameters and perhaps some metadata required to construct the model. For our model, we will use a raster or ContinuousImage for our image model. The model is given below:
The model construction is very similar to Imaging a Black Hole using only Closure Quantities, except we include a large scale gaussian since we want to model the zero baselines. For more information about the image model please read the closure-only example. We use the @sky macro to bundle the model and its priors in one block. Each name ~ dist line adds an entry to the prior; everything else is the model body.
using VLBIImagePriors
using Distributions
@sky function sky(grid; ftot, mimg, cprior)
c ~ cprior
σimg ~ VLBITruncated(VLBIGaussian(0.0, 0.5); lower = 0.0)
fg ~ VLBIUniform(0.0, 1.0)
# Apply the GMRF fluctuations to the image
rast = apply_fluctuations(CenteredLR(), mimg, σimg .* c.params)
pimg = parent(rast)
@. pimg = (ftot * (1 - fg)) * pimg
m = ContinuousImage(rast, BSplinePulse{3}())
# Add a large-scale gaussian to deal with the over-resolved mas flux
g = modify(Gaussian(), Stretch(μas2rad(500.0), μas2rad(500.0)), Renormalize(ftot * fg))
x, y = centroid(m)
return shifted(m, -x, -y) + g
endsky (generic function with 1 method)Now, let's set up our image model. The EHT's nominal resolution is 20-25 μas. Additionally, the EHT is not very sensitive to a larger field of view. Typically 60-80 μas is enough to describe the compact flux of M87. Given this, we only need to use a small number of pixels to describe our image.
npix = 64
fovx = μas2rad(200.0)
fovy = μas2rad(200.0)9.69627362219072e-10Now let's form our cache's. First, we have our usual image cache which is needed to numerically compute the visibilities.
grid = imagepixels(fovx, fovy, npix, npix)RectiGrid(
executor: ComradeBase.Serial()
Dimensions:
(↓ X Sampled{Float64} LinRange{Float64}(-4.772384673421995e-10, 4.772384673421995e-10, 64) ForwardOrdered Regular Points,
→ Y Sampled{Float64} LinRange{Float64}(-4.772384673421995e-10, 4.772384673421995e-10, 64) ForwardOrdered Regular Points)
)Since we are using a Gaussian Markov random field prior we need to first specify our mean image. This behaves somewhat similary to a entropy regularizer in that it will start with an initial guess for the image structure. For this tutorial we will use a a symmetric Gaussian with a FWHM of 50 μas
fwhmfac = 2 * sqrt(2 * log(2))
mpr = modify(Gaussian(), Stretch(μas2rad(50.0) ./ fwhmfac))
mimg_raw = intensitymap(mpr, grid)
mimg = mimg_raw ./ Comrade.flux(mimg_raw)┌ 64×64 IntensityMap{Float64, 2} ┐
├────────────────────────────────┴─────────────────────────────────────── dims ┐
↓ X Sampled{Float64} LinRange{Float64}(-4.772384673421995e-10, 4.772384673421995e-10, 64) ForwardOrdered Regular Points,
→ Y Sampled{Float64} LinRange{Float64}(-4.772384673421995e-10, 4.772384673421995e-10, 64) ForwardOrdered Regular Points
└──────────────────────────────────────────────────────────────────────────────┘
↓ → -4.77238e-10 -4.62088e-10 -4.46938e-10 -4.31787e-10 -4.16637e-10 -4.01486e-10 -3.86336e-10 -3.71185e-10 -3.56035e-10 -3.40885e-10 -3.25734e-10 -3.10584e-10 -2.95433e-10 -2.80283e-10 -2.65132e-10 -2.49982e-10 -2.34832e-10 -2.19681e-10 -2.04531e-10 -1.8938e-10 -1.7423e-10 -1.59079e-10 -1.43929e-10 -1.28779e-10 -1.13628e-10 -9.84778e-11 -8.33274e-11 -6.81769e-11 -5.30265e-11 -3.78761e-11 -2.27256e-11 -7.57521e-12 7.57521e-12 2.27256e-11 3.78761e-11 5.30265e-11 6.81769e-11 8.33274e-11 9.84778e-11 1.13628e-10 1.28779e-10 1.43929e-10 1.59079e-10 1.7423e-10 1.8938e-10 2.04531e-10 2.19681e-10 2.34832e-10 2.49982e-10 2.65132e-10 2.80283e-10 2.95433e-10 3.10584e-10 3.25734e-10 3.40885e-10 3.56035e-10 3.71185e-10 3.86336e-10 4.01486e-10 4.16637e-10 4.31787e-10 4.46938e-10 4.62088e-10 4.77238e-10
-4.77238e-10 1.59667e-12 3.12492e-12 5.98487e-12 1.12166e-11 2.05714e-11 3.69197e-11 6.48403e-11 1.11436e-10 1.87412e-10 3.08434e-10 4.9673e-10 7.82838e-10 1.2073e-9 1.82202e-9 2.6908e-9 3.88869e-9 5.49944e-9 7.61073e-9 1.03069e-8 1.3659e-8 1.77136e-8 2.24795e-8 2.79163e-8 3.39252e-8 4.03441e-8 4.69494e-8 5.34654e-8 5.95812e-8 6.49737e-8 6.93361e-8 7.24059e-8 7.39914e-8 7.39914e-8 7.24059e-8 6.93361e-8 6.49737e-8 5.95812e-8 5.34654e-8 4.69494e-8 4.03441e-8 3.39252e-8 2.79163e-8 2.24795e-8 1.77136e-8 1.3659e-8 1.03069e-8 7.61073e-9 5.49944e-9 3.88869e-9 2.6908e-9 1.82202e-9 1.2073e-9 7.82838e-10 4.9673e-10 3.08434e-10 1.87412e-10 1.11436e-10 6.48403e-11 3.69197e-11 2.05714e-11 1.12166e-11 5.98487e-12 3.12492e-12 1.59667e-12
-4.62088e-10 3.12492e-12 6.11592e-12 1.17132e-11 2.19526e-11 4.02612e-11 7.22572e-11 1.26902e-10 2.18096e-10 3.66792e-10 6.0365e-10 9.72173e-10 1.53213e-9 2.36286e-9 3.56595e-9 5.26628e-9 7.61073e-9 1.07632e-8 1.48953e-8 2.0172e-8 2.67327e-8 3.46681e-8 4.39955e-8 5.46362e-8 6.63965e-8 7.89592e-8 9.18867e-8 1.0464e-7 1.16609e-7 1.27163e-7 1.35701e-7 1.41709e-7 1.44812e-7 1.44812e-7 1.41709e-7 1.35701e-7 1.27163e-7 1.16609e-7 1.0464e-7 9.18867e-8 7.89592e-8 6.63965e-8 5.46362e-8 4.39955e-8 3.46681e-8 2.67327e-8 2.0172e-8 1.48953e-8 1.07632e-8 7.61073e-9 5.26628e-9 3.56595e-9 2.36286e-9 1.53213e-9 9.72173e-10 6.0365e-10 3.66792e-10 2.18096e-10 1.26902e-10 7.22572e-11 4.02612e-11 2.19526e-11 1.17132e-11 6.11592e-12 3.12492e-12
-4.46938e-10 5.98487e-12 1.17132e-11 2.24333e-11 4.20437e-11 7.71086e-11 1.38387e-10 2.43043e-10 4.17699e-10 7.02483e-10 1.15611e-9 1.86191e-9 2.93434e-9 4.52537e-9 6.82952e-9 1.0086e-8 1.45761e-8 2.06137e-8 2.85276e-8 3.86336e-8 5.11987e-8 6.63965e-8 8.42605e-8 1.0464e-7 1.27163e-7 1.51223e-7 1.75982e-7 2.00406e-7 2.2333e-7 2.43543e-7 2.59895e-7 2.71401e-7 2.77344e-7 2.77344e-7 2.71401e-7 2.59895e-7 2.43543e-7 2.2333e-7 2.00406e-7 1.75982e-7 1.51223e-7 1.27163e-7 1.0464e-7 8.42605e-8 6.63965e-8 5.11987e-8 3.86336e-8 2.85276e-8 2.06137e-8 1.45761e-8 1.0086e-8 6.82952e-9 4.52537e-9 2.93434e-9 1.86191e-9 1.15611e-9 7.02483e-10 4.17699e-10 2.43043e-10 1.38387e-10 7.71086e-11 4.20437e-11 2.24333e-11 1.17132e-11 5.98487e-12
-4.31787e-10 1.12166e-11 2.19526e-11 4.20437e-11 7.8797e-11 1.44514e-10 2.59361e-10 4.55504e-10 7.82838e-10 1.31657e-9 2.16675e-9 3.48954e-9 5.49944e-9 8.4813e-9 1.27997e-8 1.89029e-8 2.73181e-8 3.86336e-8 5.34654e-8 7.24059e-8 9.59549e-8 1.24438e-7 1.57918e-7 1.96112e-7 2.38325e-7 2.83417e-7 3.2982e-7 3.75595e-7 4.18558e-7 4.56441e-7 4.87087e-7 5.08652e-7 5.1979e-7 5.1979e-7 5.08652e-7 4.87087e-7 4.56441e-7 4.18558e-7 3.75595e-7 3.2982e-7 2.83417e-7 2.38325e-7 1.96112e-7 1.57918e-7 1.24438e-7 9.59549e-8 7.24059e-8 5.34654e-8 3.86336e-8 2.73181e-8 1.89029e-8 1.27997e-8 8.4813e-9 5.49944e-9 3.48954e-9 2.16675e-9 1.31657e-9 7.82838e-10 4.55504e-10 2.59361e-10 1.44514e-10 7.8797e-11 4.20437e-11 2.19526e-11 1.12166e-11
-4.16637e-10 2.05714e-11 4.02612e-11 7.71086e-11 1.44514e-10 2.65041e-10 4.75671e-10 8.35398e-10 1.43573e-9 2.4146e-9 3.97384e-9 6.39984e-9 1.0086e-8 1.55548e-8 2.34747e-8 3.46681e-8 5.01016e-8 7.08544e-8 9.80561e-8 1.32793e-7 1.75982e-7 2.28221e-7 2.89624e-7 3.59671e-7 4.37089e-7 5.1979e-7 6.04892e-7 6.88845e-7 7.67639e-7 8.37117e-7 8.93321e-7 9.32872e-7 9.53299e-7 9.53299e-7 9.32872e-7 8.93321e-7 8.37117e-7 7.67639e-7 6.88845e-7 6.04892e-7 5.1979e-7 4.37089e-7 3.59671e-7 2.89624e-7 2.28221e-7 1.75982e-7 1.32793e-7 9.80561e-8 7.08544e-8 5.01016e-8 3.46681e-8 2.34747e-8 1.55548e-8 1.0086e-8 6.39984e-9 3.97384e-9 2.4146e-9 1.43573e-9 8.35398e-10 4.75671e-10 2.65041e-10 1.44514e-10 7.71086e-11 4.02612e-11 2.05714e-11
-4.01486e-10 3.69197e-11 7.22572e-11 1.38387e-10 2.59361e-10 4.75671e-10 8.5369e-10 1.4993e-9 2.57672e-9 4.33351e-9 7.13189e-9 1.14858e-8 1.81015e-8 2.79163e-8 4.21303e-8 6.22191e-8 8.99178e-8 1.27163e-7 1.75982e-7 2.38325e-7 3.15837e-7 4.09589e-7 5.1979e-7 6.45505e-7 7.84448e-7 9.32872e-7 1.08561e-6 1.23628e-6 1.37769e-6 1.50238e-6 1.60325e-6 1.67423e-6 1.71089e-6 1.71089e-6 1.67423e-6 1.60325e-6 1.50238e-6 1.37769e-6 1.23628e-6 1.08561e-6 9.32872e-7 7.84448e-7 6.45505e-7 5.1979e-7 4.09589e-7 3.15837e-7 2.38325e-7 1.75982e-7 1.27163e-7 8.99178e-8 6.22191e-8 4.21303e-8 2.79163e-8 1.81015e-8 1.14858e-8 7.13189e-9 4.33351e-9 2.57672e-9 1.4993e-9 8.5369e-10 4.75671e-10 2.59361e-10 1.38387e-10 7.22572e-11 3.69197e-11
-3.86336e-10 6.48403e-11 1.26902e-10 2.43043e-10 4.55504e-10 8.35398e-10 1.4993e-9 2.63314e-9 4.52537e-9 7.61073e-9 1.25254e-8 2.0172e-8 3.17907e-8 4.9028e-8 7.39914e-8 1.09272e-7 1.57918e-7 2.2333e-7 3.09069e-7 4.18558e-7 5.54689e-7 7.19342e-7 9.12882e-7 1.13367e-6 1.37769e-6 1.63836e-6 1.9066e-6 2.17121e-6 2.41957e-6 2.63856e-6 2.81571e-6 2.94038e-6 3.00476e-6 3.00476e-6 2.94038e-6 2.81571e-6 2.63856e-6 2.41957e-6 2.17121e-6 1.9066e-6 1.63836e-6 1.37769e-6 1.13367e-6 9.12882e-7 7.19342e-7 5.54689e-7 4.18558e-7 3.09069e-7 2.2333e-7 1.57918e-7 1.09272e-7 7.39914e-8 4.9028e-8 3.17907e-8 2.0172e-8 1.25254e-8 7.61073e-9 4.52537e-9 2.63314e-9 1.4993e-9 8.35398e-10 4.55504e-10 2.43043e-10 1.26902e-10 6.48403e-11
-3.71185e-10 1.11436e-10 2.18096e-10 4.17699e-10 7.82838e-10 1.43573e-9 2.57672e-9 4.52537e-9 7.77738e-9 1.30799e-8 2.15264e-8 3.46681e-8 5.46362e-8 8.42605e-8 1.27163e-7 1.87798e-7 2.71401e-7 3.8382e-7 5.31172e-7 7.19342e-7 9.53299e-7 1.23628e-6 1.5689e-6 1.94835e-6 2.36772e-6 2.81571e-6 3.27672e-6 3.73149e-6 4.15832e-6 4.53468e-6 4.83914e-6 5.05339e-6 5.16404e-6 5.16404e-6 5.05339e-6 4.83914e-6 4.53468e-6 4.15832e-6 3.73149e-6 3.27672e-6 2.81571e-6 2.36772e-6 1.94835e-6 1.5689e-6 1.23628e-6 9.53299e-7 7.19342e-7 5.31172e-7 3.8382e-7 2.71401e-7 1.87798e-7 1.27163e-7 8.42605e-8 5.46362e-8 3.46681e-8 2.15264e-8 1.30799e-8 7.77738e-9 4.52537e-9 2.57672e-9 1.43573e-9 7.82838e-10 4.17699e-10 2.18096e-10 1.11436e-10
-3.56035e-10 1.87412e-10 3.66792e-10 7.02483e-10 1.31657e-9 2.4146e-9 4.33351e-9 7.61073e-9 1.30799e-8 2.19978e-8 3.62029e-8 5.83045e-8 9.18867e-8 1.41709e-7 2.13862e-7 3.15837e-7 4.56441e-7 6.45505e-7 8.93321e-7 1.20978e-6 1.60325e-6 2.07916e-6 2.63856e-6 3.27672e-6 3.98202e-6 4.73545e-6 5.51076e-6 6.27559e-6 6.99343e-6 7.62639e-6 8.13843e-6 8.49875e-6 8.68485e-6 8.68485e-6 8.49875e-6 8.13843e-6 7.62639e-6 6.99343e-6 6.27559e-6 5.51076e-6 4.73545e-6 3.98202e-6 3.27672e-6 2.63856e-6 2.07916e-6 1.60325e-6 1.20978e-6 8.93321e-7 6.45505e-7 4.56441e-7 3.15837e-7 2.13862e-7 1.41709e-7 9.18867e-8 5.83045e-8 3.62029e-8 2.19978e-8 1.30799e-8 7.61073e-9 4.33351e-9 2.4146e-9 1.31657e-9 7.02483e-10 3.66792e-10 1.87412e-10
-3.40885e-10 3.08434e-10 6.0365e-10 1.15611e-9 2.16675e-9 3.97384e-9 7.13189e-9 1.25254e-8 2.15264e-8 3.62029e-8 5.95812e-8 9.59549e-8 1.51223e-7 2.33218e-7 3.51964e-7 5.1979e-7 7.5119e-7 1.06234e-6 1.47019e-6 1.99101e-6 2.63856e-6 3.42179e-6 4.34242e-6 5.39267e-6 6.55343e-6 7.79339e-6 9.06936e-6 1.03281e-5 1.15095e-5 1.25512e-5 1.33939e-5 1.39869e-5 1.42931e-5 1.42931e-5 1.39869e-5 1.33939e-5 1.25512e-5 1.15095e-5 1.03281e-5 9.06936e-6 7.79339e-6 6.55343e-6 5.39267e-6 4.34242e-6 3.42179e-6 2.63856e-6 1.99101e-6 1.47019e-6 1.06234e-6 7.5119e-7 5.1979e-7 3.51964e-7 2.33218e-7 1.51223e-7 9.59549e-8 5.95812e-8 3.62029e-8 2.15264e-8 1.25254e-8 7.13189e-9 3.97384e-9 2.16675e-9 1.15611e-9 6.0365e-10 3.08434e-10
-3.25734e-10 4.9673e-10 9.72173e-10 1.86191e-9 3.48954e-9 6.39984e-9 1.14858e-8 2.0172e-8 3.46681e-8 5.83045e-8 9.59549e-8 1.54534e-7 2.43543e-7 3.75595e-7 5.66835e-7 8.37117e-7 1.20978e-6 1.71089e-6 2.36772e-6 3.2065e-6 4.24937e-6 5.51076e-6 6.99343e-6 8.68485e-6 1.05542e-5 1.25512e-5 1.46061e-5 1.66333e-5 1.85359e-5 2.02135e-5 2.15707e-5 2.25257e-5 2.3019e-5 2.3019e-5 2.25257e-5 2.15707e-5 2.02135e-5 1.85359e-5 1.66333e-5 1.46061e-5 1.25512e-5 1.05542e-5 8.68485e-6 6.99343e-6 5.51076e-6 4.24937e-6 3.2065e-6 2.36772e-6 1.71089e-6 1.20978e-6 8.37117e-7 5.66835e-7 3.75595e-7 2.43543e-7 1.54534e-7 9.59549e-8 5.83045e-8 3.46681e-8 2.0172e-8 1.14858e-8 6.39984e-9 3.48954e-9 1.86191e-9 9.72173e-10 4.9673e-10
-3.10584e-10 7.82838e-10 1.53213e-9 2.93434e-9 5.49944e-9 1.0086e-8 1.81015e-8 3.17907e-8 5.46362e-8 9.18867e-8 1.51223e-7 2.43543e-7 3.8382e-7 5.91931e-7 8.93321e-7 1.31928e-6 1.9066e-6 2.69634e-6 3.73149e-6 5.05339e-6 6.69693e-6 8.68485e-6 1.10215e-5 1.36872e-5 1.66333e-5 1.97804e-5 2.3019e-5 2.62137e-5 2.92122e-5 3.18562e-5 3.3995e-5 3.55001e-5 3.62774e-5 3.62774e-5 3.55001e-5 3.3995e-5 3.18562e-5 2.92122e-5 2.62137e-5 2.3019e-5 1.97804e-5 1.66333e-5 1.36872e-5 1.10215e-5 8.68485e-6 6.69693e-6 5.05339e-6 3.73149e-6 2.69634e-6 1.9066e-6 1.31928e-6 8.93321e-7 5.91931e-7 3.8382e-7 2.43543e-7 1.51223e-7 9.18867e-8 5.46362e-8 3.17907e-8 1.81015e-8 1.0086e-8 5.49944e-9 2.93434e-9 1.53213e-9 7.82838e-10
-2.95433e-10 1.2073e-9 2.36286e-9 4.52537e-9 8.4813e-9 1.55548e-8 2.79163e-8 4.9028e-8 8.42605e-8 1.41709e-7 2.33218e-7 3.75595e-7 5.91931e-7 9.12882e-7 1.37769e-6 2.03461e-6 2.94038e-6 4.15832e-6 5.75474e-6 7.79339e-6 1.03281e-5 1.33939e-5 1.69975e-5 2.11085e-5 2.5652e-5 3.05056e-5 3.55001e-5 4.04271e-5 4.50514e-5 4.91289e-5 5.24275e-5 5.47486e-5 5.59475e-5 5.59475e-5 5.47486e-5 5.24275e-5 4.91289e-5 4.50514e-5 4.04271e-5 3.55001e-5 3.05056e-5 2.5652e-5 2.11085e-5 1.69975e-5 1.33939e-5 1.03281e-5 7.79339e-6 5.75474e-6 4.15832e-6 2.94038e-6 2.03461e-6 1.37769e-6 9.12882e-7 5.91931e-7 3.75595e-7 2.33218e-7 1.41709e-7 8.42605e-8 4.9028e-8 2.79163e-8 1.55548e-8 8.4813e-9 4.52537e-9 2.36286e-9 1.2073e-9
-2.80283e-10 1.82202e-9 3.56595e-9 6.82952e-9 1.27997e-8 2.34747e-8 4.21303e-8 7.39914e-8 1.27163e-7 2.13862e-7 3.51964e-7 5.66835e-7 8.93321e-7 1.37769e-6 2.07916e-6 3.07056e-6 4.43751e-6 6.27559e-6 8.68485e-6 1.17615e-5 1.55868e-5 2.02135e-5 2.5652e-5 3.18562e-5 3.87131e-5 4.60379e-5 5.35755e-5 6.10111e-5 6.799e-5 7.41436e-5 7.91216e-5 8.26247e-5 8.44339e-5 8.44339e-5 8.26247e-5 7.91216e-5 7.41436e-5 6.799e-5 6.10111e-5 5.35755e-5 4.60379e-5 3.87131e-5 3.18562e-5 2.5652e-5 2.02135e-5 1.55868e-5 1.17615e-5 8.68485e-6 6.27559e-6 4.43751e-6 3.07056e-6 2.07916e-6 1.37769e-6 8.93321e-7 5.66835e-7 3.51964e-7 2.13862e-7 1.27163e-7 7.39914e-8 4.21303e-8 2.34747e-8 1.27997e-8 6.82952e-9 3.56595e-9 1.82202e-9
-2.65132e-10 2.6908e-9 5.26628e-9 1.0086e-8 1.89029e-8 3.46681e-8 6.22191e-8 1.09272e-7 1.87798e-7 3.15837e-7 5.1979e-7 8.37117e-7 1.31928e-6 2.03461e-6 3.07056e-6 4.53468e-6 6.55343e-6 9.26795e-6 1.2826e-5 1.73697e-5 2.3019e-5 2.98519e-5 3.78836e-5 4.7046e-5 5.71725e-5 6.799e-5 7.91216e-5 9.01028e-5 0.000100409 0.000109497 0.000116849 0.000122022 0.000124694 0.000124694 0.000122022 0.000116849 0.000109497 0.000100409 9.01028e-5 7.91216e-5 6.799e-5 5.71725e-5 4.7046e-5 3.78836e-5 2.98519e-5 2.3019e-5 1.73697e-5 1.2826e-5 9.26795e-6 6.55343e-6 4.53468e-6 3.07056e-6 2.03461e-6 1.31928e-6 8.37117e-7 5.1979e-7 3.15837e-7 1.87798e-7 1.09272e-7 6.22191e-8 3.46681e-8 1.89029e-8 1.0086e-8 5.26628e-9 2.6908e-9
-2.49982e-10 3.88869e-9 7.61073e-9 1.45761e-8 2.73181e-8 5.01016e-8 8.99178e-8 1.57918e-7 2.71401e-7 4.56441e-7 7.5119e-7 1.20978e-6 1.9066e-6 2.94038e-6 4.43751e-6 6.55343e-6 9.47089e-6 1.33939e-5 1.85359e-5 2.51024e-5 3.32666e-5 4.31414e-5 5.47486e-5 6.799e-5 8.26247e-5 9.82578e-5 0.000114345 0.000130215 0.00014511 0.000158243 0.000168868 0.000176344 0.000180206 0.000180206 0.000176344 0.000168868 0.000158243 0.00014511 0.000130215 0.000114345 9.82578e-5 8.26247e-5 6.799e-5 5.47486e-5 4.31414e-5 3.32666e-5 2.51024e-5 1.85359e-5 1.33939e-5 9.47089e-6 6.55343e-6 4.43751e-6 2.94038e-6 1.9066e-6 1.20978e-6 7.5119e-7 4.56441e-7 2.71401e-7 1.57918e-7 8.99178e-8 5.01016e-8 2.73181e-8 1.45761e-8 7.61073e-9 3.88869e-9
-2.34832e-10 5.49944e-9 1.07632e-8 2.06137e-8 3.86336e-8 7.08544e-8 1.27163e-7 2.2333e-7 3.8382e-7 6.45505e-7 1.06234e-6 1.71089e-6 2.69634e-6 4.15832e-6 6.27559e-6 9.26795e-6 1.33939e-5 1.89418e-5 2.62137e-5 3.55001e-5 4.7046e-5 6.10111e-5 7.74262e-5 9.61524e-5 0.000116849 0.000138958 0.000161708 0.000184152 0.000205216 0.00022379 0.000238815 0.000249388 0.000254849 0.000254849 0.000249388 0.000238815 0.00022379 0.000205216 0.000184152 0.000161708 0.000138958 0.000116849 9.61524e-5 7.74262e-5 6.10111e-5 4.7046e-5 3.55001e-5 2.62137e-5 1.89418e-5 1.33939e-5 9.26795e-6 6.27559e-6 4.15832e-6 2.69634e-6 1.71089e-6 1.06234e-6 6.45505e-7 3.8382e-7 2.2333e-7 1.27163e-7 7.08544e-8 3.86336e-8 2.06137e-8 1.07632e-8 5.49944e-9
-2.19681e-10 7.61073e-9 1.48953e-8 2.85276e-8 5.34654e-8 9.80561e-8 1.75982e-7 3.09069e-7 5.31172e-7 8.93321e-7 1.47019e-6 2.36772e-6 3.73149e-6 5.75474e-6 8.68485e-6 1.2826e-5 1.85359e-5 2.62137e-5 3.62774e-5 4.91289e-5 6.51074e-5 8.44339e-5 0.000107151 0.000133066 0.000161708 0.000192305 0.00022379 0.000254849 0.000284001 0.000309705 0.000330499 0.000345131 0.000352688 0.000352688 0.000345131 0.000330499 0.000309705 0.000284001 0.000254849 0.00022379 0.000192305 0.000161708 0.000133066 0.000107151 8.44339e-5 6.51074e-5 4.91289e-5 3.62774e-5 2.62137e-5 1.85359e-5 1.2826e-5 8.68485e-6 5.75474e-6 3.73149e-6 2.36772e-6 1.47019e-6 8.93321e-7 5.31172e-7 3.09069e-7 1.75982e-7 9.80561e-8 5.34654e-8 2.85276e-8 1.48953e-8 7.61073e-9
-2.04531e-10 1.03069e-8 2.0172e-8 3.86336e-8 7.24059e-8 1.32793e-7 2.38325e-7 4.18558e-7 7.19342e-7 1.20978e-6 1.99101e-6 3.2065e-6 5.05339e-6 7.79339e-6 1.17615e-5 1.73697e-5 2.51024e-5 3.55001e-5 4.91289e-5 6.65331e-5 8.81721e-5 0.000114345 0.00014511 0.000180206 0.000218994 0.00026043 0.000303069 0.000345131 0.000384609 0.00041942 0.00044758 0.000467396 0.00047763 0.00047763 0.000467396 0.00044758 0.00041942 0.000384609 0.000345131 0.000303069 0.00026043 0.000218994 0.000180206 0.00014511 0.000114345 8.81721e-5 6.65331e-5 4.91289e-5 3.55001e-5 2.51024e-5 1.73697e-5 1.17615e-5 7.79339e-6 5.05339e-6 3.2065e-6 1.99101e-6 1.20978e-6 7.19342e-7 4.18558e-7 2.38325e-7 1.32793e-7 7.24059e-8 3.86336e-8 2.0172e-8 1.03069e-8
-1.8938e-10 1.3659e-8 2.67327e-8 5.11987e-8 9.59549e-8 1.75982e-7 3.15837e-7 5.54689e-7 9.53299e-7 1.60325e-6 2.63856e-6 4.24937e-6 6.69693e-6 1.03281e-5 1.55868e-5 2.3019e-5 3.32666e-5 4.7046e-5 6.51074e-5 8.81721e-5 0.000116849 0.000151534 0.000192305 0.000238815 0.000290219 0.000345131 0.000401638 0.00045738 0.000509699 0.00055583 0.000593149 0.00061941 0.000632973 0.000632973 0.00061941 0.000593149 0.00055583 0.000509699 0.00045738 0.000401638 0.000345131 0.000290219 0.000238815 0.000192305 0.000151534 0.000116849 8.81721e-5 6.51074e-5 4.7046e-5 3.32666e-5 2.3019e-5 1.55868e-5 1.03281e-5 6.69693e-6 4.24937e-6 2.63856e-6 1.60325e-6 9.53299e-7 5.54689e-7 3.15837e-7 1.75982e-7 9.59549e-8 5.11987e-8 2.67327e-8 1.3659e-8
-1.7423e-10 1.77136e-8 3.46681e-8 6.63965e-8 1.24438e-7 2.28221e-7 4.09589e-7 7.19342e-7 1.23628e-6 2.07916e-6 3.42179e-6 5.51076e-6 8.68485e-6 1.33939e-5 2.02135e-5 2.98519e-5 4.31414e-5 6.10111e-5 8.44339e-5 0.000114345 0.000151534 0.000196516 0.000249388 0.000309705 0.000376368 0.00044758 0.00052086 0.000593149 0.000660997 0.000720823 0.000769219 0.000803275 0.000820865 0.000820865 0.000803275 0.000769219 0.000720823 0.000660997 0.000593149 0.00052086 0.00044758 0.000376368 0.000309705 0.000249388 0.000196516 0.000151534 0.000114345 8.44339e-5 6.10111e-5 4.31414e-5 2.98519e-5 2.02135e-5 1.33939e-5 8.68485e-6 5.51076e-6 3.42179e-6 2.07916e-6 1.23628e-6 7.19342e-7 4.09589e-7 2.28221e-7 1.24438e-7 6.63965e-8 3.46681e-8 1.77136e-8
-1.59079e-10 2.24795e-8 4.39955e-8 8.42605e-8 1.57918e-7 2.89624e-7 5.1979e-7 9.12882e-7 1.5689e-6 2.63856e-6 4.34242e-6 6.99343e-6 1.10215e-5 1.69975e-5 2.5652e-5 3.78836e-5 5.47486e-5 7.74262e-5 0.000107151 0.00014511 0.000192305 0.000249388 0.000316487 0.000393031 0.00047763 0.000568001 0.000660997 0.000752736 0.000838839 0.000914761 0.000976178 0.0010194 0.00104172 0.00104172 0.0010194 0.000976178 0.000914761 0.000838839 0.000752736 0.000660997 0.000568001 0.00047763 0.000393031 0.000316487 0.000249388 0.000192305 0.00014511 0.000107151 7.74262e-5 5.47486e-5 3.78836e-5 2.5652e-5 1.69975e-5 1.10215e-5 6.99343e-6 4.34242e-6 2.63856e-6 1.5689e-6 9.12882e-7 5.1979e-7 2.89624e-7 1.57918e-7 8.42605e-8 4.39955e-8 2.24795e-8
-1.43929e-10 2.79163e-8 5.46362e-8 1.0464e-7 1.96112e-7 3.59671e-7 6.45505e-7 1.13367e-6 1.94835e-6 3.27672e-6 5.39267e-6 8.68485e-6 1.36872e-5 2.11085e-5 3.18562e-5 4.7046e-5 6.799e-5 9.61524e-5 0.000133066 0.000180206 0.000238815 0.000309705 0.000393031 0.000488089 0.000593149 0.000705377 0.000820865 0.000934791 0.00104172 0.001136 0.00121227 0.00126595 0.00129367 0.00129367 0.00126595 0.00121227 0.001136 0.00104172 0.000934791 0.000820865 0.000705377 0.000593149 0.000488089 0.000393031 0.000309705 0.000238815 0.000180206 0.000133066 9.61524e-5 6.799e-5 4.7046e-5 3.18562e-5 2.11085e-5 1.36872e-5 8.68485e-6 5.39267e-6 3.27672e-6 1.94835e-6 1.13367e-6 6.45505e-7 3.59671e-7 1.96112e-7 1.0464e-7 5.46362e-8 2.79163e-8
-1.28779e-10 3.39252e-8 6.63965e-8 1.27163e-7 2.38325e-7 4.37089e-7 7.84448e-7 1.37769e-6 2.36772e-6 3.98202e-6 6.55343e-6 1.05542e-5 1.66333e-5 2.5652e-5 3.87131e-5 5.71725e-5 8.26247e-5 0.000116849 0.000161708 0.000218994 0.000290219 0.000376368 0.00047763 0.000593149 0.000720823 0.000857207 0.000997554 0.001136 0.00126595 0.00138052 0.00147321 0.00153844 0.00157213 0.00157213 0.00153844 0.00147321 0.00138052 0.00126595 0.001136 0.000997554 0.000857207 0.000720823 0.000593149 0.00047763 0.000376368 0.000290219 0.000218994 0.000161708 0.000116849 8.26247e-5 5.71725e-5 3.87131e-5 2.5652e-5 1.66333e-5 1.05542e-5 6.55343e-6 3.98202e-6 2.36772e-6 1.37769e-6 7.84448e-7 4.37089e-7 2.38325e-7 1.27163e-7 6.63965e-8 3.39252e-8
-1.13628e-10 4.03441e-8 7.89592e-8 1.51223e-7 2.83417e-7 5.1979e-7 9.32872e-7 1.63836e-6 2.81571e-6 4.73545e-6 7.79339e-6 1.25512e-5 1.97804e-5 3.05056e-5 4.60379e-5 6.799e-5 9.82578e-5 0.000138958 0.000192305 0.00026043 0.000345131 0.00044758 0.000568001 0.000705377 0.000857207 0.0010194 0.0011863 0.00135094 0.00150547 0.00164173 0.00175196 0.00182952 0.00186958 0.00186958 0.00182952 0.00175196 0.00164173 0.00150547 0.00135094 0.0011863 0.0010194 0.000857207 0.000705377 0.000568001 0.00044758 0.000345131 0.00026043 0.000192305 0.000138958 9.82578e-5 6.799e-5 4.60379e-5 3.05056e-5 1.97804e-5 1.25512e-5 7.79339e-6 4.73545e-6 2.81571e-6 1.63836e-6 9.32872e-7 5.1979e-7 2.83417e-7 1.51223e-7 7.89592e-8 4.03441e-8
-9.84778e-11 4.69494e-8 9.18867e-8 1.75982e-7 3.2982e-7 6.04892e-7 1.08561e-6 1.9066e-6 3.27672e-6 5.51076e-6 9.06936e-6 1.46061e-5 2.3019e-5 3.55001e-5 5.35755e-5 7.91216e-5 0.000114345 0.000161708 0.00022379 0.000303069 0.000401638 0.00052086 0.000660997 0.000820865 0.000997554 0.0011863 0.00138052 0.00157213 0.00175196 0.00191052 0.00203879 0.00212906 0.00217568 0.00217568 0.00212906 0.00203879 0.00191052 0.00175196 0.00157213 0.00138052 0.0011863 0.000997554 0.000820865 0.000660997 0.00052086 0.000401638 0.000303069 0.00022379 0.000161708 0.000114345 7.91216e-5 5.35755e-5 3.55001e-5 2.3019e-5 1.46061e-5 9.06936e-6 5.51076e-6 3.27672e-6 1.9066e-6 1.08561e-6 6.04892e-7 3.2982e-7 1.75982e-7 9.18867e-8 4.69494e-8
-8.33274e-11 5.34654e-8 1.0464e-7 2.00406e-7 3.75595e-7 6.88845e-7 1.23628e-6 2.17121e-6 3.73149e-6 6.27559e-6 1.03281e-5 1.66333e-5 2.62137e-5 4.04271e-5 6.10111e-5 9.01028e-5 0.000130215 0.000184152 0.000254849 0.000345131 0.00045738 0.000593149 0.000752736 0.000934791 0.001136 0.00135094 0.00157213 0.00179032 0.00199511 0.00217568 0.00232176 0.00242455 0.00247764 0.00247764 0.00242455 0.00232176 0.00217568 0.00199511 0.00179032 0.00157213 0.00135094 0.001136 0.000934791 0.000752736 0.000593149 0.00045738 0.000345131 0.000254849 0.000184152 0.000130215 9.01028e-5 6.10111e-5 4.04271e-5 2.62137e-5 1.66333e-5 1.03281e-5 6.27559e-6 3.73149e-6 2.17121e-6 1.23628e-6 6.88845e-7 3.75595e-7 2.00406e-7 1.0464e-7 5.34654e-8
-6.81769e-11 5.95812e-8 1.16609e-7 2.2333e-7 4.18558e-7 7.67639e-7 1.37769e-6 2.41957e-6 4.15832e-6 6.99343e-6 1.15095e-5 1.85359e-5 2.92122e-5 4.50514e-5 6.799e-5 0.000100409 0.00014511 0.000205216 0.000284001 0.000384609 0.000509699 0.000660997 0.000838839 0.00104172 0.00126595 0.00150547 0.00175196 0.00199511 0.00222332 0.00242455 0.00258733 0.00270189 0.00276105 0.00276105 0.00270189 0.00258733 0.00242455 0.00222332 0.00199511 0.00175196 0.00150547 0.00126595 0.00104172 0.000838839 0.000660997 0.000509699 0.000384609 0.000284001 0.000205216 0.00014511 0.000100409 6.799e-5 4.50514e-5 2.92122e-5 1.85359e-5 1.15095e-5 6.99343e-6 4.15832e-6 2.41957e-6 1.37769e-6 7.67639e-7 4.18558e-7 2.2333e-7 1.16609e-7 5.95812e-8
-5.30265e-11 6.49737e-8 1.27163e-7 2.43543e-7 4.56441e-7 8.37117e-7 1.50238e-6 2.63856e-6 4.53468e-6 7.62639e-6 1.25512e-5 2.02135e-5 3.18562e-5 4.91289e-5 7.41436e-5 0.000109497 0.000158243 0.00022379 0.000309705 0.00041942 0.00055583 0.000720823 0.000914761 0.001136 0.00138052 0.00164173 0.00191052 0.00217568 0.00242455 0.00264399 0.00282151 0.00294643 0.00301094 0.00301094 0.00294643 0.00282151 0.00264399 0.00242455 0.00217568 0.00191052 0.00164173 0.00138052 0.001136 0.000914761 0.000720823 0.00055583 0.00041942 0.000309705 0.00022379 0.000158243 0.000109497 7.41436e-5 4.91289e-5 3.18562e-5 2.02135e-5 1.25512e-5 7.62639e-6 4.53468e-6 2.63856e-6 1.50238e-6 8.37117e-7 4.56441e-7 2.43543e-7 1.27163e-7 6.49737e-8
-3.78761e-11 6.93361e-8 1.35701e-7 2.59895e-7 4.87087e-7 8.93321e-7 1.60325e-6 2.81571e-6 4.83914e-6 8.13843e-6 1.33939e-5 2.15707e-5 3.3995e-5 5.24275e-5 7.91216e-5 0.000116849 0.000168868 0.000238815 0.000330499 0.00044758 0.000593149 0.000769219 0.000976178 0.00121227 0.00147321 0.00175196 0.00203879 0.00232176 0.00258733 0.00282151 0.00301094 0.00314425 0.0032131 0.0032131 0.00314425 0.00301094 0.00282151 0.00258733 0.00232176 0.00203879 0.00175196 0.00147321 0.00121227 0.000976178 0.000769219 0.000593149 0.00044758 0.000330499 0.000238815 0.000168868 0.000116849 7.91216e-5 5.24275e-5 3.3995e-5 2.15707e-5 1.33939e-5 8.13843e-6 4.83914e-6 2.81571e-6 1.60325e-6 8.93321e-7 4.87087e-7 2.59895e-7 1.35701e-7 6.93361e-8
-2.27256e-11 7.24059e-8 1.41709e-7 2.71401e-7 5.08652e-7 9.32872e-7 1.67423e-6 2.94038e-6 5.05339e-6 8.49875e-6 1.39869e-5 2.25257e-5 3.55001e-5 5.47486e-5 8.26247e-5 0.000122022 0.000176344 0.000249388 0.000345131 0.000467396 0.00061941 0.000803275 0.0010194 0.00126595 0.00153844 0.00182952 0.00212906 0.00242455 0.00270189 0.00294643 0.00314425 0.00328346 0.00335536 0.00335536 0.00328346 0.00314425 0.00294643 0.00270189 0.00242455 0.00212906 0.00182952 0.00153844 0.00126595 0.0010194 0.000803275 0.00061941 0.000467396 0.000345131 0.000249388 0.000176344 0.000122022 8.26247e-5 5.47486e-5 3.55001e-5 2.25257e-5 1.39869e-5 8.49875e-6 5.05339e-6 2.94038e-6 1.67423e-6 9.32872e-7 5.08652e-7 2.71401e-7 1.41709e-7 7.24059e-8
-7.57521e-12 7.39914e-8 1.44812e-7 2.77344e-7 5.1979e-7 9.53299e-7 1.71089e-6 3.00476e-6 5.16404e-6 8.68485e-6 1.42931e-5 2.3019e-5 3.62774e-5 5.59475e-5 8.44339e-5 0.000124694 0.000180206 0.000254849 0.000352688 0.00047763 0.000632973 0.000820865 0.00104172 0.00129367 0.00157213 0.00186958 0.00217568 0.00247764 0.00276105 0.00301094 0.0032131 0.00335536 0.00342883 0.00342883 0.00335536 0.0032131 0.00301094 0.00276105 0.00247764 0.00217568 0.00186958 0.00157213 0.00129367 0.00104172 0.000820865 0.000632973 0.00047763 0.000352688 0.000254849 0.000180206 0.000124694 8.44339e-5 5.59475e-5 3.62774e-5 2.3019e-5 1.42931e-5 8.68485e-6 5.16404e-6 3.00476e-6 1.71089e-6 9.53299e-7 5.1979e-7 2.77344e-7 1.44812e-7 7.39914e-8
7.57521e-12 7.39914e-8 1.44812e-7 2.77344e-7 5.1979e-7 9.53299e-7 1.71089e-6 3.00476e-6 5.16404e-6 8.68485e-6 1.42931e-5 2.3019e-5 3.62774e-5 5.59475e-5 8.44339e-5 0.000124694 0.000180206 0.000254849 0.000352688 0.00047763 0.000632973 0.000820865 0.00104172 0.00129367 0.00157213 0.00186958 0.00217568 0.00247764 0.00276105 0.00301094 0.0032131 0.00335536 0.00342883 0.00342883 0.00335536 0.0032131 0.00301094 0.00276105 0.00247764 0.00217568 0.00186958 0.00157213 0.00129367 0.00104172 0.000820865 0.000632973 0.00047763 0.000352688 0.000254849 0.000180206 0.000124694 8.44339e-5 5.59475e-5 3.62774e-5 2.3019e-5 1.42931e-5 8.68485e-6 5.16404e-6 3.00476e-6 1.71089e-6 9.53299e-7 5.1979e-7 2.77344e-7 1.44812e-7 7.39914e-8
2.27256e-11 7.24059e-8 1.41709e-7 2.71401e-7 5.08652e-7 9.32872e-7 1.67423e-6 2.94038e-6 5.05339e-6 8.49875e-6 1.39869e-5 2.25257e-5 3.55001e-5 5.47486e-5 8.26247e-5 0.000122022 0.000176344 0.000249388 0.000345131 0.000467396 0.00061941 0.000803275 0.0010194 0.00126595 0.00153844 0.00182952 0.00212906 0.00242455 0.00270189 0.00294643 0.00314425 0.00328346 0.00335536 0.00335536 0.00328346 0.00314425 0.00294643 0.00270189 0.00242455 0.00212906 0.00182952 0.00153844 0.00126595 0.0010194 0.000803275 0.00061941 0.000467396 0.000345131 0.000249388 0.000176344 0.000122022 8.26247e-5 5.47486e-5 3.55001e-5 2.25257e-5 1.39869e-5 8.49875e-6 5.05339e-6 2.94038e-6 1.67423e-6 9.32872e-7 5.08652e-7 2.71401e-7 1.41709e-7 7.24059e-8
3.78761e-11 6.93361e-8 1.35701e-7 2.59895e-7 4.87087e-7 8.93321e-7 1.60325e-6 2.81571e-6 4.83914e-6 8.13843e-6 1.33939e-5 2.15707e-5 3.3995e-5 5.24275e-5 7.91216e-5 0.000116849 0.000168868 0.000238815 0.000330499 0.00044758 0.000593149 0.000769219 0.000976178 0.00121227 0.00147321 0.00175196 0.00203879 0.00232176 0.00258733 0.00282151 0.00301094 0.00314425 0.0032131 0.0032131 0.00314425 0.00301094 0.00282151 0.00258733 0.00232176 0.00203879 0.00175196 0.00147321 0.00121227 0.000976178 0.000769219 0.000593149 0.00044758 0.000330499 0.000238815 0.000168868 0.000116849 7.91216e-5 5.24275e-5 3.3995e-5 2.15707e-5 1.33939e-5 8.13843e-6 4.83914e-6 2.81571e-6 1.60325e-6 8.93321e-7 4.87087e-7 2.59895e-7 1.35701e-7 6.93361e-8
5.30265e-11 6.49737e-8 1.27163e-7 2.43543e-7 4.56441e-7 8.37117e-7 1.50238e-6 2.63856e-6 4.53468e-6 7.62639e-6 1.25512e-5 2.02135e-5 3.18562e-5 4.91289e-5 7.41436e-5 0.000109497 0.000158243 0.00022379 0.000309705 0.00041942 0.00055583 0.000720823 0.000914761 0.001136 0.00138052 0.00164173 0.00191052 0.00217568 0.00242455 0.00264399 0.00282151 0.00294643 0.00301094 0.00301094 0.00294643 0.00282151 0.00264399 0.00242455 0.00217568 0.00191052 0.00164173 0.00138052 0.001136 0.000914761 0.000720823 0.00055583 0.00041942 0.000309705 0.00022379 0.000158243 0.000109497 7.41436e-5 4.91289e-5 3.18562e-5 2.02135e-5 1.25512e-5 7.62639e-6 4.53468e-6 2.63856e-6 1.50238e-6 8.37117e-7 4.56441e-7 2.43543e-7 1.27163e-7 6.49737e-8
6.81769e-11 5.95812e-8 1.16609e-7 2.2333e-7 4.18558e-7 7.67639e-7 1.37769e-6 2.41957e-6 4.15832e-6 6.99343e-6 1.15095e-5 1.85359e-5 2.92122e-5 4.50514e-5 6.799e-5 0.000100409 0.00014511 0.000205216 0.000284001 0.000384609 0.000509699 0.000660997 0.000838839 0.00104172 0.00126595 0.00150547 0.00175196 0.00199511 0.00222332 0.00242455 0.00258733 0.00270189 0.00276105 0.00276105 0.00270189 0.00258733 0.00242455 0.00222332 0.00199511 0.00175196 0.00150547 0.00126595 0.00104172 0.000838839 0.000660997 0.000509699 0.000384609 0.000284001 0.000205216 0.00014511 0.000100409 6.799e-5 4.50514e-5 2.92122e-5 1.85359e-5 1.15095e-5 6.99343e-6 4.15832e-6 2.41957e-6 1.37769e-6 7.67639e-7 4.18558e-7 2.2333e-7 1.16609e-7 5.95812e-8
8.33274e-11 5.34654e-8 1.0464e-7 2.00406e-7 3.75595e-7 6.88845e-7 1.23628e-6 2.17121e-6 3.73149e-6 6.27559e-6 1.03281e-5 1.66333e-5 2.62137e-5 4.04271e-5 6.10111e-5 9.01028e-5 0.000130215 0.000184152 0.000254849 0.000345131 0.00045738 0.000593149 0.000752736 0.000934791 0.001136 0.00135094 0.00157213 0.00179032 0.00199511 0.00217568 0.00232176 0.00242455 0.00247764 0.00247764 0.00242455 0.00232176 0.00217568 0.00199511 0.00179032 0.00157213 0.00135094 0.001136 0.000934791 0.000752736 0.000593149 0.00045738 0.000345131 0.000254849 0.000184152 0.000130215 9.01028e-5 6.10111e-5 4.04271e-5 2.62137e-5 1.66333e-5 1.03281e-5 6.27559e-6 3.73149e-6 2.17121e-6 1.23628e-6 6.88845e-7 3.75595e-7 2.00406e-7 1.0464e-7 5.34654e-8
9.84778e-11 4.69494e-8 9.18867e-8 1.75982e-7 3.2982e-7 6.04892e-7 1.08561e-6 1.9066e-6 3.27672e-6 5.51076e-6 9.06936e-6 1.46061e-5 2.3019e-5 3.55001e-5 5.35755e-5 7.91216e-5 0.000114345 0.000161708 0.00022379 0.000303069 0.000401638 0.00052086 0.000660997 0.000820865 0.000997554 0.0011863 0.00138052 0.00157213 0.00175196 0.00191052 0.00203879 0.00212906 0.00217568 0.00217568 0.00212906 0.00203879 0.00191052 0.00175196 0.00157213 0.00138052 0.0011863 0.000997554 0.000820865 0.000660997 0.00052086 0.000401638 0.000303069 0.00022379 0.000161708 0.000114345 7.91216e-5 5.35755e-5 3.55001e-5 2.3019e-5 1.46061e-5 9.06936e-6 5.51076e-6 3.27672e-6 1.9066e-6 1.08561e-6 6.04892e-7 3.2982e-7 1.75982e-7 9.18867e-8 4.69494e-8
1.13628e-10 4.03441e-8 7.89592e-8 1.51223e-7 2.83417e-7 5.1979e-7 9.32872e-7 1.63836e-6 2.81571e-6 4.73545e-6 7.79339e-6 1.25512e-5 1.97804e-5 3.05056e-5 4.60379e-5 6.799e-5 9.82578e-5 0.000138958 0.000192305 0.00026043 0.000345131 0.00044758 0.000568001 0.000705377 0.000857207 0.0010194 0.0011863 0.00135094 0.00150547 0.00164173 0.00175196 0.00182952 0.00186958 0.00186958 0.00182952 0.00175196 0.00164173 0.00150547 0.00135094 0.0011863 0.0010194 0.000857207 0.000705377 0.000568001 0.00044758 0.000345131 0.00026043 0.000192305 0.000138958 9.82578e-5 6.799e-5 4.60379e-5 3.05056e-5 1.97804e-5 1.25512e-5 7.79339e-6 4.73545e-6 2.81571e-6 1.63836e-6 9.32872e-7 5.1979e-7 2.83417e-7 1.51223e-7 7.89592e-8 4.03441e-8
1.28779e-10 3.39252e-8 6.63965e-8 1.27163e-7 2.38325e-7 4.37089e-7 7.84448e-7 1.37769e-6 2.36772e-6 3.98202e-6 6.55343e-6 1.05542e-5 1.66333e-5 2.5652e-5 3.87131e-5 5.71725e-5 8.26247e-5 0.000116849 0.000161708 0.000218994 0.000290219 0.000376368 0.00047763 0.000593149 0.000720823 0.000857207 0.000997554 0.001136 0.00126595 0.00138052 0.00147321 0.00153844 0.00157213 0.00157213 0.00153844 0.00147321 0.00138052 0.00126595 0.001136 0.000997554 0.000857207 0.000720823 0.000593149 0.00047763 0.000376368 0.000290219 0.000218994 0.000161708 0.000116849 8.26247e-5 5.71725e-5 3.87131e-5 2.5652e-5 1.66333e-5 1.05542e-5 6.55343e-6 3.98202e-6 2.36772e-6 1.37769e-6 7.84448e-7 4.37089e-7 2.38325e-7 1.27163e-7 6.63965e-8 3.39252e-8
1.43929e-10 2.79163e-8 5.46362e-8 1.0464e-7 1.96112e-7 3.59671e-7 6.45505e-7 1.13367e-6 1.94835e-6 3.27672e-6 5.39267e-6 8.68485e-6 1.36872e-5 2.11085e-5 3.18562e-5 4.7046e-5 6.799e-5 9.61524e-5 0.000133066 0.000180206 0.000238815 0.000309705 0.000393031 0.000488089 0.000593149 0.000705377 0.000820865 0.000934791 0.00104172 0.001136 0.00121227 0.00126595 0.00129367 0.00129367 0.00126595 0.00121227 0.001136 0.00104172 0.000934791 0.000820865 0.000705377 0.000593149 0.000488089 0.000393031 0.000309705 0.000238815 0.000180206 0.000133066 9.61524e-5 6.799e-5 4.7046e-5 3.18562e-5 2.11085e-5 1.36872e-5 8.68485e-6 5.39267e-6 3.27672e-6 1.94835e-6 1.13367e-6 6.45505e-7 3.59671e-7 1.96112e-7 1.0464e-7 5.46362e-8 2.79163e-8
1.59079e-10 2.24795e-8 4.39955e-8 8.42605e-8 1.57918e-7 2.89624e-7 5.1979e-7 9.12882e-7 1.5689e-6 2.63856e-6 4.34242e-6 6.99343e-6 1.10215e-5 1.69975e-5 2.5652e-5 3.78836e-5 5.47486e-5 7.74262e-5 0.000107151 0.00014511 0.000192305 0.000249388 0.000316487 0.000393031 0.00047763 0.000568001 0.000660997 0.000752736 0.000838839 0.000914761 0.000976178 0.0010194 0.00104172 0.00104172 0.0010194 0.000976178 0.000914761 0.000838839 0.000752736 0.000660997 0.000568001 0.00047763 0.000393031 0.000316487 0.000249388 0.000192305 0.00014511 0.000107151 7.74262e-5 5.47486e-5 3.78836e-5 2.5652e-5 1.69975e-5 1.10215e-5 6.99343e-6 4.34242e-6 2.63856e-6 1.5689e-6 9.12882e-7 5.1979e-7 2.89624e-7 1.57918e-7 8.42605e-8 4.39955e-8 2.24795e-8
1.7423e-10 1.77136e-8 3.46681e-8 6.63965e-8 1.24438e-7 2.28221e-7 4.09589e-7 7.19342e-7 1.23628e-6 2.07916e-6 3.42179e-6 5.51076e-6 8.68485e-6 1.33939e-5 2.02135e-5 2.98519e-5 4.31414e-5 6.10111e-5 8.44339e-5 0.000114345 0.000151534 0.000196516 0.000249388 0.000309705 0.000376368 0.00044758 0.00052086 0.000593149 0.000660997 0.000720823 0.000769219 0.000803275 0.000820865 0.000820865 0.000803275 0.000769219 0.000720823 0.000660997 0.000593149 0.00052086 0.00044758 0.000376368 0.000309705 0.000249388 0.000196516 0.000151534 0.000114345 8.44339e-5 6.10111e-5 4.31414e-5 2.98519e-5 2.02135e-5 1.33939e-5 8.68485e-6 5.51076e-6 3.42179e-6 2.07916e-6 1.23628e-6 7.19342e-7 4.09589e-7 2.28221e-7 1.24438e-7 6.63965e-8 3.46681e-8 1.77136e-8
1.8938e-10 1.3659e-8 2.67327e-8 5.11987e-8 9.59549e-8 1.75982e-7 3.15837e-7 5.54689e-7 9.53299e-7 1.60325e-6 2.63856e-6 4.24937e-6 6.69693e-6 1.03281e-5 1.55868e-5 2.3019e-5 3.32666e-5 4.7046e-5 6.51074e-5 8.81721e-5 0.000116849 0.000151534 0.000192305 0.000238815 0.000290219 0.000345131 0.000401638 0.00045738 0.000509699 0.00055583 0.000593149 0.00061941 0.000632973 0.000632973 0.00061941 0.000593149 0.00055583 0.000509699 0.00045738 0.000401638 0.000345131 0.000290219 0.000238815 0.000192305 0.000151534 0.000116849 8.81721e-5 6.51074e-5 4.7046e-5 3.32666e-5 2.3019e-5 1.55868e-5 1.03281e-5 6.69693e-6 4.24937e-6 2.63856e-6 1.60325e-6 9.53299e-7 5.54689e-7 3.15837e-7 1.75982e-7 9.59549e-8 5.11987e-8 2.67327e-8 1.3659e-8
2.04531e-10 1.03069e-8 2.0172e-8 3.86336e-8 7.24059e-8 1.32793e-7 2.38325e-7 4.18558e-7 7.19342e-7 1.20978e-6 1.99101e-6 3.2065e-6 5.05339e-6 7.79339e-6 1.17615e-5 1.73697e-5 2.51024e-5 3.55001e-5 4.91289e-5 6.65331e-5 8.81721e-5 0.000114345 0.00014511 0.000180206 0.000218994 0.00026043 0.000303069 0.000345131 0.000384609 0.00041942 0.00044758 0.000467396 0.00047763 0.00047763 0.000467396 0.00044758 0.00041942 0.000384609 0.000345131 0.000303069 0.00026043 0.000218994 0.000180206 0.00014511 0.000114345 8.81721e-5 6.65331e-5 4.91289e-5 3.55001e-5 2.51024e-5 1.73697e-5 1.17615e-5 7.79339e-6 5.05339e-6 3.2065e-6 1.99101e-6 1.20978e-6 7.19342e-7 4.18558e-7 2.38325e-7 1.32793e-7 7.24059e-8 3.86336e-8 2.0172e-8 1.03069e-8
2.19681e-10 7.61073e-9 1.48953e-8 2.85276e-8 5.34654e-8 9.80561e-8 1.75982e-7 3.09069e-7 5.31172e-7 8.93321e-7 1.47019e-6 2.36772e-6 3.73149e-6 5.75474e-6 8.68485e-6 1.2826e-5 1.85359e-5 2.62137e-5 3.62774e-5 4.91289e-5 6.51074e-5 8.44339e-5 0.000107151 0.000133066 0.000161708 0.000192305 0.00022379 0.000254849 0.000284001 0.000309705 0.000330499 0.000345131 0.000352688 0.000352688 0.000345131 0.000330499 0.000309705 0.000284001 0.000254849 0.00022379 0.000192305 0.000161708 0.000133066 0.000107151 8.44339e-5 6.51074e-5 4.91289e-5 3.62774e-5 2.62137e-5 1.85359e-5 1.2826e-5 8.68485e-6 5.75474e-6 3.73149e-6 2.36772e-6 1.47019e-6 8.93321e-7 5.31172e-7 3.09069e-7 1.75982e-7 9.80561e-8 5.34654e-8 2.85276e-8 1.48953e-8 7.61073e-9
2.34832e-10 5.49944e-9 1.07632e-8 2.06137e-8 3.86336e-8 7.08544e-8 1.27163e-7 2.2333e-7 3.8382e-7 6.45505e-7 1.06234e-6 1.71089e-6 2.69634e-6 4.15832e-6 6.27559e-6 9.26795e-6 1.33939e-5 1.89418e-5 2.62137e-5 3.55001e-5 4.7046e-5 6.10111e-5 7.74262e-5 9.61524e-5 0.000116849 0.000138958 0.000161708 0.000184152 0.000205216 0.00022379 0.000238815 0.000249388 0.000254849 0.000254849 0.000249388 0.000238815 0.00022379 0.000205216 0.000184152 0.000161708 0.000138958 0.000116849 9.61524e-5 7.74262e-5 6.10111e-5 4.7046e-5 3.55001e-5 2.62137e-5 1.89418e-5 1.33939e-5 9.26795e-6 6.27559e-6 4.15832e-6 2.69634e-6 1.71089e-6 1.06234e-6 6.45505e-7 3.8382e-7 2.2333e-7 1.27163e-7 7.08544e-8 3.86336e-8 2.06137e-8 1.07632e-8 5.49944e-9
2.49982e-10 3.88869e-9 7.61073e-9 1.45761e-8 2.73181e-8 5.01016e-8 8.99178e-8 1.57918e-7 2.71401e-7 4.56441e-7 7.5119e-7 1.20978e-6 1.9066e-6 2.94038e-6 4.43751e-6 6.55343e-6 9.47089e-6 1.33939e-5 1.85359e-5 2.51024e-5 3.32666e-5 4.31414e-5 5.47486e-5 6.799e-5 8.26247e-5 9.82578e-5 0.000114345 0.000130215 0.00014511 0.000158243 0.000168868 0.000176344 0.000180206 0.000180206 0.000176344 0.000168868 0.000158243 0.00014511 0.000130215 0.000114345 9.82578e-5 8.26247e-5 6.799e-5 5.47486e-5 4.31414e-5 3.32666e-5 2.51024e-5 1.85359e-5 1.33939e-5 9.47089e-6 6.55343e-6 4.43751e-6 2.94038e-6 1.9066e-6 1.20978e-6 7.5119e-7 4.56441e-7 2.71401e-7 1.57918e-7 8.99178e-8 5.01016e-8 2.73181e-8 1.45761e-8 7.61073e-9 3.88869e-9
2.65132e-10 2.6908e-9 5.26628e-9 1.0086e-8 1.89029e-8 3.46681e-8 6.22191e-8 1.09272e-7 1.87798e-7 3.15837e-7 5.1979e-7 8.37117e-7 1.31928e-6 2.03461e-6 3.07056e-6 4.53468e-6 6.55343e-6 9.26795e-6 1.2826e-5 1.73697e-5 2.3019e-5 2.98519e-5 3.78836e-5 4.7046e-5 5.71725e-5 6.799e-5 7.91216e-5 9.01028e-5 0.000100409 0.000109497 0.000116849 0.000122022 0.000124694 0.000124694 0.000122022 0.000116849 0.000109497 0.000100409 9.01028e-5 7.91216e-5 6.799e-5 5.71725e-5 4.7046e-5 3.78836e-5 2.98519e-5 2.3019e-5 1.73697e-5 1.2826e-5 9.26795e-6 6.55343e-6 4.53468e-6 3.07056e-6 2.03461e-6 1.31928e-6 8.37117e-7 5.1979e-7 3.15837e-7 1.87798e-7 1.09272e-7 6.22191e-8 3.46681e-8 1.89029e-8 1.0086e-8 5.26628e-9 2.6908e-9
2.80283e-10 1.82202e-9 3.56595e-9 6.82952e-9 1.27997e-8 2.34747e-8 4.21303e-8 7.39914e-8 1.27163e-7 2.13862e-7 3.51964e-7 5.66835e-7 8.93321e-7 1.37769e-6 2.07916e-6 3.07056e-6 4.43751e-6 6.27559e-6 8.68485e-6 1.17615e-5 1.55868e-5 2.02135e-5 2.5652e-5 3.18562e-5 3.87131e-5 4.60379e-5 5.35755e-5 6.10111e-5 6.799e-5 7.41436e-5 7.91216e-5 8.26247e-5 8.44339e-5 8.44339e-5 8.26247e-5 7.91216e-5 7.41436e-5 6.799e-5 6.10111e-5 5.35755e-5 4.60379e-5 3.87131e-5 3.18562e-5 2.5652e-5 2.02135e-5 1.55868e-5 1.17615e-5 8.68485e-6 6.27559e-6 4.43751e-6 3.07056e-6 2.07916e-6 1.37769e-6 8.93321e-7 5.66835e-7 3.51964e-7 2.13862e-7 1.27163e-7 7.39914e-8 4.21303e-8 2.34747e-8 1.27997e-8 6.82952e-9 3.56595e-9 1.82202e-9
2.95433e-10 1.2073e-9 2.36286e-9 4.52537e-9 8.4813e-9 1.55548e-8 2.79163e-8 4.9028e-8 8.42605e-8 1.41709e-7 2.33218e-7 3.75595e-7 5.91931e-7 9.12882e-7 1.37769e-6 2.03461e-6 2.94038e-6 4.15832e-6 5.75474e-6 7.79339e-6 1.03281e-5 1.33939e-5 1.69975e-5 2.11085e-5 2.5652e-5 3.05056e-5 3.55001e-5 4.04271e-5 4.50514e-5 4.91289e-5 5.24275e-5 5.47486e-5 5.59475e-5 5.59475e-5 5.47486e-5 5.24275e-5 4.91289e-5 4.50514e-5 4.04271e-5 3.55001e-5 3.05056e-5 2.5652e-5 2.11085e-5 1.69975e-5 1.33939e-5 1.03281e-5 7.79339e-6 5.75474e-6 4.15832e-6 2.94038e-6 2.03461e-6 1.37769e-6 9.12882e-7 5.91931e-7 3.75595e-7 2.33218e-7 1.41709e-7 8.42605e-8 4.9028e-8 2.79163e-8 1.55548e-8 8.4813e-9 4.52537e-9 2.36286e-9 1.2073e-9
3.10584e-10 7.82838e-10 1.53213e-9 2.93434e-9 5.49944e-9 1.0086e-8 1.81015e-8 3.17907e-8 5.46362e-8 9.18867e-8 1.51223e-7 2.43543e-7 3.8382e-7 5.91931e-7 8.93321e-7 1.31928e-6 1.9066e-6 2.69634e-6 3.73149e-6 5.05339e-6 6.69693e-6 8.68485e-6 1.10215e-5 1.36872e-5 1.66333e-5 1.97804e-5 2.3019e-5 2.62137e-5 2.92122e-5 3.18562e-5 3.3995e-5 3.55001e-5 3.62774e-5 3.62774e-5 3.55001e-5 3.3995e-5 3.18562e-5 2.92122e-5 2.62137e-5 2.3019e-5 1.97804e-5 1.66333e-5 1.36872e-5 1.10215e-5 8.68485e-6 6.69693e-6 5.05339e-6 3.73149e-6 2.69634e-6 1.9066e-6 1.31928e-6 8.93321e-7 5.91931e-7 3.8382e-7 2.43543e-7 1.51223e-7 9.18867e-8 5.46362e-8 3.17907e-8 1.81015e-8 1.0086e-8 5.49944e-9 2.93434e-9 1.53213e-9 7.82838e-10
3.25734e-10 4.9673e-10 9.72173e-10 1.86191e-9 3.48954e-9 6.39984e-9 1.14858e-8 2.0172e-8 3.46681e-8 5.83045e-8 9.59549e-8 1.54534e-7 2.43543e-7 3.75595e-7 5.66835e-7 8.37117e-7 1.20978e-6 1.71089e-6 2.36772e-6 3.2065e-6 4.24937e-6 5.51076e-6 6.99343e-6 8.68485e-6 1.05542e-5 1.25512e-5 1.46061e-5 1.66333e-5 1.85359e-5 2.02135e-5 2.15707e-5 2.25257e-5 2.3019e-5 2.3019e-5 2.25257e-5 2.15707e-5 2.02135e-5 1.85359e-5 1.66333e-5 1.46061e-5 1.25512e-5 1.05542e-5 8.68485e-6 6.99343e-6 5.51076e-6 4.24937e-6 3.2065e-6 2.36772e-6 1.71089e-6 1.20978e-6 8.37117e-7 5.66835e-7 3.75595e-7 2.43543e-7 1.54534e-7 9.59549e-8 5.83045e-8 3.46681e-8 2.0172e-8 1.14858e-8 6.39984e-9 3.48954e-9 1.86191e-9 9.72173e-10 4.9673e-10
3.40885e-10 3.08434e-10 6.0365e-10 1.15611e-9 2.16675e-9 3.97384e-9 7.13189e-9 1.25254e-8 2.15264e-8 3.62029e-8 5.95812e-8 9.59549e-8 1.51223e-7 2.33218e-7 3.51964e-7 5.1979e-7 7.5119e-7 1.06234e-6 1.47019e-6 1.99101e-6 2.63856e-6 3.42179e-6 4.34242e-6 5.39267e-6 6.55343e-6 7.79339e-6 9.06936e-6 1.03281e-5 1.15095e-5 1.25512e-5 1.33939e-5 1.39869e-5 1.42931e-5 1.42931e-5 1.39869e-5 1.33939e-5 1.25512e-5 1.15095e-5 1.03281e-5 9.06936e-6 7.79339e-6 6.55343e-6 5.39267e-6 4.34242e-6 3.42179e-6 2.63856e-6 1.99101e-6 1.47019e-6 1.06234e-6 7.5119e-7 5.1979e-7 3.51964e-7 2.33218e-7 1.51223e-7 9.59549e-8 5.95812e-8 3.62029e-8 2.15264e-8 1.25254e-8 7.13189e-9 3.97384e-9 2.16675e-9 1.15611e-9 6.0365e-10 3.08434e-10
3.56035e-10 1.87412e-10 3.66792e-10 7.02483e-10 1.31657e-9 2.4146e-9 4.33351e-9 7.61073e-9 1.30799e-8 2.19978e-8 3.62029e-8 5.83045e-8 9.18867e-8 1.41709e-7 2.13862e-7 3.15837e-7 4.56441e-7 6.45505e-7 8.93321e-7 1.20978e-6 1.60325e-6 2.07916e-6 2.63856e-6 3.27672e-6 3.98202e-6 4.73545e-6 5.51076e-6 6.27559e-6 6.99343e-6 7.62639e-6 8.13843e-6 8.49875e-6 8.68485e-6 8.68485e-6 8.49875e-6 8.13843e-6 7.62639e-6 6.99343e-6 6.27559e-6 5.51076e-6 4.73545e-6 3.98202e-6 3.27672e-6 2.63856e-6 2.07916e-6 1.60325e-6 1.20978e-6 8.93321e-7 6.45505e-7 4.56441e-7 3.15837e-7 2.13862e-7 1.41709e-7 9.18867e-8 5.83045e-8 3.62029e-8 2.19978e-8 1.30799e-8 7.61073e-9 4.33351e-9 2.4146e-9 1.31657e-9 7.02483e-10 3.66792e-10 1.87412e-10
3.71185e-10 1.11436e-10 2.18096e-10 4.17699e-10 7.82838e-10 1.43573e-9 2.57672e-9 4.52537e-9 7.77738e-9 1.30799e-8 2.15264e-8 3.46681e-8 5.46362e-8 8.42605e-8 1.27163e-7 1.87798e-7 2.71401e-7 3.8382e-7 5.31172e-7 7.19342e-7 9.53299e-7 1.23628e-6 1.5689e-6 1.94835e-6 2.36772e-6 2.81571e-6 3.27672e-6 3.73149e-6 4.15832e-6 4.53468e-6 4.83914e-6 5.05339e-6 5.16404e-6 5.16404e-6 5.05339e-6 4.83914e-6 4.53468e-6 4.15832e-6 3.73149e-6 3.27672e-6 2.81571e-6 2.36772e-6 1.94835e-6 1.5689e-6 1.23628e-6 9.53299e-7 7.19342e-7 5.31172e-7 3.8382e-7 2.71401e-7 1.87798e-7 1.27163e-7 8.42605e-8 5.46362e-8 3.46681e-8 2.15264e-8 1.30799e-8 7.77738e-9 4.52537e-9 2.57672e-9 1.43573e-9 7.82838e-10 4.17699e-10 2.18096e-10 1.11436e-10
3.86336e-10 6.48403e-11 1.26902e-10 2.43043e-10 4.55504e-10 8.35398e-10 1.4993e-9 2.63314e-9 4.52537e-9 7.61073e-9 1.25254e-8 2.0172e-8 3.17907e-8 4.9028e-8 7.39914e-8 1.09272e-7 1.57918e-7 2.2333e-7 3.09069e-7 4.18558e-7 5.54689e-7 7.19342e-7 9.12882e-7 1.13367e-6 1.37769e-6 1.63836e-6 1.9066e-6 2.17121e-6 2.41957e-6 2.63856e-6 2.81571e-6 2.94038e-6 3.00476e-6 3.00476e-6 2.94038e-6 2.81571e-6 2.63856e-6 2.41957e-6 2.17121e-6 1.9066e-6 1.63836e-6 1.37769e-6 1.13367e-6 9.12882e-7 7.19342e-7 5.54689e-7 4.18558e-7 3.09069e-7 2.2333e-7 1.57918e-7 1.09272e-7 7.39914e-8 4.9028e-8 3.17907e-8 2.0172e-8 1.25254e-8 7.61073e-9 4.52537e-9 2.63314e-9 1.4993e-9 8.35398e-10 4.55504e-10 2.43043e-10 1.26902e-10 6.48403e-11
4.01486e-10 3.69197e-11 7.22572e-11 1.38387e-10 2.59361e-10 4.75671e-10 8.5369e-10 1.4993e-9 2.57672e-9 4.33351e-9 7.13189e-9 1.14858e-8 1.81015e-8 2.79163e-8 4.21303e-8 6.22191e-8 8.99178e-8 1.27163e-7 1.75982e-7 2.38325e-7 3.15837e-7 4.09589e-7 5.1979e-7 6.45505e-7 7.84448e-7 9.32872e-7 1.08561e-6 1.23628e-6 1.37769e-6 1.50238e-6 1.60325e-6 1.67423e-6 1.71089e-6 1.71089e-6 1.67423e-6 1.60325e-6 1.50238e-6 1.37769e-6 1.23628e-6 1.08561e-6 9.32872e-7 7.84448e-7 6.45505e-7 5.1979e-7 4.09589e-7 3.15837e-7 2.38325e-7 1.75982e-7 1.27163e-7 8.99178e-8 6.22191e-8 4.21303e-8 2.79163e-8 1.81015e-8 1.14858e-8 7.13189e-9 4.33351e-9 2.57672e-9 1.4993e-9 8.5369e-10 4.75671e-10 2.59361e-10 1.38387e-10 7.22572e-11 3.69197e-11
4.16637e-10 2.05714e-11 4.02612e-11 7.71086e-11 1.44514e-10 2.65041e-10 4.75671e-10 8.35398e-10 1.43573e-9 2.4146e-9 3.97384e-9 6.39984e-9 1.0086e-8 1.55548e-8 2.34747e-8 3.46681e-8 5.01016e-8 7.08544e-8 9.80561e-8 1.32793e-7 1.75982e-7 2.28221e-7 2.89624e-7 3.59671e-7 4.37089e-7 5.1979e-7 6.04892e-7 6.88845e-7 7.67639e-7 8.37117e-7 8.93321e-7 9.32872e-7 9.53299e-7 9.53299e-7 9.32872e-7 8.93321e-7 8.37117e-7 7.67639e-7 6.88845e-7 6.04892e-7 5.1979e-7 4.37089e-7 3.59671e-7 2.89624e-7 2.28221e-7 1.75982e-7 1.32793e-7 9.80561e-8 7.08544e-8 5.01016e-8 3.46681e-8 2.34747e-8 1.55548e-8 1.0086e-8 6.39984e-9 3.97384e-9 2.4146e-9 1.43573e-9 8.35398e-10 4.75671e-10 2.65041e-10 1.44514e-10 7.71086e-11 4.02612e-11 2.05714e-11
4.31787e-10 1.12166e-11 2.19526e-11 4.20437e-11 7.8797e-11 1.44514e-10 2.59361e-10 4.55504e-10 7.82838e-10 1.31657e-9 2.16675e-9 3.48954e-9 5.49944e-9 8.4813e-9 1.27997e-8 1.89029e-8 2.73181e-8 3.86336e-8 5.34654e-8 7.24059e-8 9.59549e-8 1.24438e-7 1.57918e-7 1.96112e-7 2.38325e-7 2.83417e-7 3.2982e-7 3.75595e-7 4.18558e-7 4.56441e-7 4.87087e-7 5.08652e-7 5.1979e-7 5.1979e-7 5.08652e-7 4.87087e-7 4.56441e-7 4.18558e-7 3.75595e-7 3.2982e-7 2.83417e-7 2.38325e-7 1.96112e-7 1.57918e-7 1.24438e-7 9.59549e-8 7.24059e-8 5.34654e-8 3.86336e-8 2.73181e-8 1.89029e-8 1.27997e-8 8.4813e-9 5.49944e-9 3.48954e-9 2.16675e-9 1.31657e-9 7.82838e-10 4.55504e-10 2.59361e-10 1.44514e-10 7.8797e-11 4.20437e-11 2.19526e-11 1.12166e-11
4.46938e-10 5.98487e-12 1.17132e-11 2.24333e-11 4.20437e-11 7.71086e-11 1.38387e-10 2.43043e-10 4.17699e-10 7.02483e-10 1.15611e-9 1.86191e-9 2.93434e-9 4.52537e-9 6.82952e-9 1.0086e-8 1.45761e-8 2.06137e-8 2.85276e-8 3.86336e-8 5.11987e-8 6.63965e-8 8.42605e-8 1.0464e-7 1.27163e-7 1.51223e-7 1.75982e-7 2.00406e-7 2.2333e-7 2.43543e-7 2.59895e-7 2.71401e-7 2.77344e-7 2.77344e-7 2.71401e-7 2.59895e-7 2.43543e-7 2.2333e-7 2.00406e-7 1.75982e-7 1.51223e-7 1.27163e-7 1.0464e-7 8.42605e-8 6.63965e-8 5.11987e-8 3.86336e-8 2.85276e-8 2.06137e-8 1.45761e-8 1.0086e-8 6.82952e-9 4.52537e-9 2.93434e-9 1.86191e-9 1.15611e-9 7.02483e-10 4.17699e-10 2.43043e-10 1.38387e-10 7.71086e-11 4.20437e-11 2.24333e-11 1.17132e-11 5.98487e-12
4.62088e-10 3.12492e-12 6.11592e-12 1.17132e-11 2.19526e-11 4.02612e-11 7.22572e-11 1.26902e-10 2.18096e-10 3.66792e-10 6.0365e-10 9.72173e-10 1.53213e-9 2.36286e-9 3.56595e-9 5.26628e-9 7.61073e-9 1.07632e-8 1.48953e-8 2.0172e-8 2.67327e-8 3.46681e-8 4.39955e-8 5.46362e-8 6.63965e-8 7.89592e-8 9.18867e-8 1.0464e-7 1.16609e-7 1.27163e-7 1.35701e-7 1.41709e-7 1.44812e-7 1.44812e-7 1.41709e-7 1.35701e-7 1.27163e-7 1.16609e-7 1.0464e-7 9.18867e-8 7.89592e-8 6.63965e-8 5.46362e-8 4.39955e-8 3.46681e-8 2.67327e-8 2.0172e-8 1.48953e-8 1.07632e-8 7.61073e-9 5.26628e-9 3.56595e-9 2.36286e-9 1.53213e-9 9.72173e-10 6.0365e-10 3.66792e-10 2.18096e-10 1.26902e-10 7.22572e-11 4.02612e-11 2.19526e-11 1.17132e-11 6.11592e-12 3.12492e-12
4.77238e-10 1.59667e-12 3.12492e-12 5.98487e-12 1.12166e-11 2.05714e-11 3.69197e-11 6.48403e-11 1.11436e-10 1.87412e-10 3.08434e-10 4.9673e-10 7.82838e-10 1.2073e-9 1.82202e-9 2.6908e-9 3.88869e-9 5.49944e-9 7.61073e-9 1.03069e-8 1.3659e-8 1.77136e-8 2.24795e-8 2.79163e-8 3.39252e-8 4.03441e-8 4.69494e-8 5.34654e-8 5.95812e-8 6.49737e-8 6.93361e-8 7.24059e-8 7.39914e-8 7.39914e-8 7.24059e-8 6.93361e-8 6.49737e-8 5.95812e-8 5.34654e-8 4.69494e-8 4.03441e-8 3.39252e-8 2.79163e-8 2.24795e-8 1.77136e-8 1.3659e-8 1.03069e-8 7.61073e-9 5.49944e-9 3.88869e-9 2.6908e-9 1.82202e-9 1.2073e-9 7.82838e-10 4.9673e-10 3.08434e-10 1.87412e-10 1.11436e-10 6.48403e-11 3.69197e-11 2.05714e-11 1.12166e-11 5.98487e-12 3.12492e-12 1.59667e-12To make the Gaussian Markov random field efficient we first precompute a bunch of quantities that allow us to scale things linearly with the number of image pixels. The returns a functional that accepts a single argument related to the correlation length of the field. The second argument defines the underlying random field of the Markov process. Here we are using a zero mean and unit variance Gaussian Markov random field. For this tutorial we will use the first order random field
cprior = corr_image_prior(grid, dvis)HierarchicalPrior(
map:
ConditionalMarkov(
Random Field: VLBIImagePriors.GaussMarkovRandomField
Graph: MarkovRandomFieldGraph{1}(
dims: (64, 64)
)
) hyper prior:
ProbabilityTransports.Truncated{ProbabilityTransports.PushforwardDistribution{ProbabilityTransports.ScaleShift{Float64, Float64}, ProbabilityTransports.StdInverseGamma{Float64, Float64, 0, Float64}, 0, Float64}, Float64, Int64, Float64}(
untruncated: PushforwardDistribution(f=ScaleShift, base=StdInverseGamma)
lower: 1.0
upper: 128
logtp: -0.2874456235846066
lcdf: 1.0495081953639747e-16
)
)Now we can construct our sky model. We fix the total flux to the observed value 1.1 because total flux is degenerate with a global shift in the gain amplitudes.
skym = sky(grid; ftot = 1.1, mimg, cprior)SkyModel
with map: _sky_sky
on grid:
RectiGrid(
executor: ComradeBase.Serial()
Dimensions:
(↓ X Sampled{Float64} LinRange{Float64}(-4.772384673421995e-10, 4.772384673421995e-10, 64) ForwardOrdered Regular Points,
→ Y Sampled{Float64} LinRange{Float64}(-4.772384673421995e-10, 4.772384673421995e-10, 64) ForwardOrdered Regular Points)
)
)Unlike other imaging examples (e.g., Imaging a Black Hole using only Closure Quantities) we also need to include a model for the instrument, i.e., gains. The gains will be broken into two components
Gain amplitudes which are typically known to 10-20%, except for LMT, which has amplitudes closer to 50-100%.
Gain phases which are more difficult to constrain and can shift rapidly.
Rather than treating every integration as independent, we will use the time-correlated GaussMarkovSitePrior. For the gain amplitudes each site's log-gain series is a stationary OrnsteinUhlenbeck process (the continuous-time AR(1) process) whose marginal standard deviation σ and correlation time τ (in hours) can either be fixed numbers or hyperparameters that are fit alongside the gains — pass a Distribution to fit a hyperparameter with that prior.
The gain phases live on the circle: the likelihood only sees a phase through exp(iθ), so a real-line (Gaussian) prior on a phase creates spurious posterior modes at 2π shifts. We therefore use the circular process WrappedBrownian, whose wrapped-normal transitions make the prior exactly 2π-periodic — all wrapped modes are equivalent, and the fitted coherence time τ is unbiased by phase wraps. In the visibility domain the process decorrelates as exp(-Δt/τ), so τ is the phase coherence time in hours — the same units as the amplitude chain's τ. Starting each chain uniformly on the circle (init = UniformInit()) absorbs the per-track phase offset, so no separate offset term is needed. To remove the trivial station-phase degeneracy we pin one site's phases to zero.
We set centered = true for the amplitude chains, which can help with mixing/ divergences in HMC sampling when every gain is strongly data-constrained. The wrapped phase chains keep the default NonCentered coordinates: each phase's coordinate is its scaled step onto the previous one, so the flat target is N(0, I) and the chain's own correlation — which a diagonal mass matrix cannot absorb, and which couples a whole station's phases to the image structure at once — is not handed to the sampler. Sheet weights keep those coordinates proper, so the sampler sees a single mode rather than the 2π-shifted copies the phase periodicity would otherwise produce, and the circular model itself is exactly unchanged.
To reduce repetition we define small helpers that build the amplitude and phase processes,
ou_amp(σ0) = GaussMarkovSitePrior(IntegSeg(), OrnsteinUhlenbeck(σ = VLBIExponential(σ0), τ = VLBIInverseGamma(1.0, -log(0.1) * 0.1)); centered = true)
wb_phase(τ0) = GaussMarkovSitePrior(IntegSeg(), WrappedBrownian(τ = VLBIInverseGamma(1.0, -log(0.1) * τ0)); init = UniformInit())wb_phase (generic function with 1 method)Just like the sky model, we use the @instrument macro to bundle the Jones matrices and their priors in one block. Each Jones term is a @jones block whose name ~ ArrayPrior(...) lines are its priors and whose body builds and returns the Jones matrix.
@instrument function instrument()
return @jones begin
lg ~ ArrayPrior(ou_amp(0.2); LM = ou_amp(0.5))
gp ~ ArrayPrior(wb_phase(0.5); refant = SingleReference(:AA, 0.0))
# SingleStokesGain is a single complex gain for each site.
return SingleStokesGain(exp(complex(lg, gp)))
end
end
intmodel = instrument()InstrumentModel
with Jones: SingleStokesGain
with reference basis: PolarizedTypes.CirBasis()To form the posterior we just combine the skymodel, instrument model and the data. To utilize gradients of the posterior we also need to load Enzyme.jl. Under the hood, Comrade will use Enzyme to compute the gradients of the posterior.
using Enzyme
post = VLBIPosterior(skym, intmodel, dvis);Optimization and Sampling
Now we need to actually compute our image. For this we will first follow standard approaches in VLBI and find the maximum a posteriori (MAP) estimate of the image and instrument model. This is done using the comrade_opt function which accepts the posterior, an optimization algorithm, and some keyword arguments. For this tutorial we will use the L-BFGS algorithm. For more information about the optimization algorithms available see the Optimization.jl docs.
using Optimization, OptimizationLBFGSB
xopt, sol = comrade_opt(
post, LBFGSB(); initial_params = prior_sample(rng, post),
maxiters = 2000, g_tol = 1.0e-1
);Warning
Fitting gains tends to be very difficult, meaning that optimization can take a lot longer. The upside is that we usually get nicer images.
First we will evaluate our fit by plotting the residuals
using CairoMakie
using DisplayAs
res = residuals(post, xopt)
plotfields(res[1], :uvdist, :res) |> DisplayAs.PNG |> DisplayAs.Text
These look reasonable, although there may be some minor overfitting. This could be improved in a few ways, but that is beyond the goal of this quick tutorial. Plotting the image, we see that we have a much cleaner version of the closure-only image from Imaging a Black Hole using only Closure Quantities.
g = imagepixels(fovx, fovy, 128, 128)
img = intensitymap(skymodel(post, xopt), g)
imageviz(img, size = (500, 400)) |> DisplayAs.PNG |> DisplayAs.Text
Because we also fit the instrument model, we can inspect their parameters. First, let's query the posterior object with the optimal parameters to get the instrument model.
intopt = instrumentmodel(post, xopt)126-element Comrade.SiteArray{ComplexF64, 1, Vector{ComplexF64}, Vector{Comrade.IntegrationTime{Int64, Float64}}, Vector{Comrade.FrequencyChannel{Float64, Int64}}, Vector{Symbol}}:
0.9975046694093364 + 0.0im
-0.7303057173976137 + 1.1786864975666573im
0.9803424000245818 + 0.0im
-0.5983538765089994 - 0.829833081205153im
0.7713603633945402 - 0.3027773733849097im
-0.5539318707498267 + 1.3066515466254134im
0.9933271782659349 + 0.0im
-0.6327792518457857 - 0.8040834045072612im
0.9444705517675431 - 0.30250205604163405im
-0.28480838853768775 + 1.2648523680419215im
1.0084923299497686 + 0.0im
-0.6657142298406413 - 0.7773013966545356im
0.8891490166784417 - 0.24703304977571838im
-0.07241610277844587 + 1.2080299763314581im
1.0017940349922783 + 0.0im
-0.7060499555094835 - 0.7411747049352018im
0.9000060066202562 - 0.1934889541275967im
0.14189489981057438 + 1.0727004616818447im
-0.7261432843298969 - 0.7218383068348001im
-0.2947822028849409 - 0.5860338964123688im
0.2629054053621379 + 0.9326970059221122im
1.0191262022159833 + 0.0im
-0.7548369443747577 - 0.6921546879285256im
0.597689247415313 - 0.12002675643555429im
0.5063644877002125 + 0.9428338527117657im
1.0126460158139414 + 0.0im
-0.7792152567745368 - 0.6649395446191483im
0.5368509565445078 - 0.10218448655251064im
0.6694251080966543 + 0.8460617081350921im
1.023407668416639 + 0.0im
-0.7979445009864339 - 0.642594879210945im
0.5240605782726635 - 0.11268399661469136im
0.8359807081302213 + 0.6886257311393507im
1.0186862665199468 + 0.0im
-0.7991234319357037 - 0.6413860603925458im
0.7925925577169003 - 0.6005963020077087im
0.45382339497616186 - 0.11671249193229065im
1.0355379783974785 + 0.49362452661409884im
0.9984003916514644 + 0.0im
-0.7871242605577411 - 0.6563078731280687im
0.6922667519502208 - 0.7112693249975476im
0.483683117829233 - 0.1680259750268786im
1.1341141310658123 + 0.23796766846316453im
1.0188972866588204 + 0.0im
-0.7944376162733966 - 0.6476603194572881im
0.5785892698030689 - 0.8047611356640056im
0.5549501429761389 - 0.2699592493804698im
1.33420548345917 - 0.0295868327793664im
1.005708872654742 + 0.0im
-0.7433175496468888 - 0.7059657996225208im
0.4016852796121851 - 0.9050020027096576im
-0.9465489878174074 - 0.3231393610162897im
0.46221000785587785 - 0.2820211386441602im
1.4039317595611085 - 0.4273882819046731im
1.0224426174574686 + 0.0im
-0.7663724495880216 - 0.6811303614506073im
0.22332138853637915 - 0.9634137409937341im
-0.92256201250223 - 0.38640133364424595im
0.4033409606578641 - 0.34118893885696244im
1.3921364644109737 - 0.9334242595419717im
-0.6509396620127369 + 0.7593478208893555im
0.9485337173520532 + 0.0im
-0.7465064799981633 - 0.7029680443404638im
0.02868896914762243 - 0.9874270075451426im
-0.8995381129033686 - 0.4373911986803171im
0.30461509626591815 - 0.3824597992732723im
1.415631493919348 - 1.4857366465787758im
-0.4501267164343005 + 0.8929647201903399im
0.9102212805846561 + 0.0im
-0.6915922786802197 - 0.756937014580632im
-0.1201345706565951 - 0.9793936350753009im
-0.8833348823209728 - 0.46926705036286837im
0.21145252577784945 - 0.43359280589165106im
0.8371129687765733 - 1.3808228091420411im
-0.09904836697708824 + 0.9950694581665755im
0.9852917408121511 + 0.0im
-0.3495935912528922 - 0.9219031514974162im
-0.8767432203536487 - 0.48150707242622615im
0.0475072804269585 - 0.4898772019836023im
0.231810161179985 + 0.9729020975015161im
1.0473818775666588 + 0.0im
-0.6198757044261402 - 0.8160397591787855im
-0.6000469127495006 - 0.7808571605278242im
-0.8791210809995411 - 0.4770932767314335im
-0.31649551758956734 - 0.4087036389099357im
1.022096210809114 + 0.0im
-0.574909983794192 - 0.8480874772716807im
-0.7430139624935308 - 0.6448749166212746im
-0.8889712963456949 - 0.45847012595653236im
-0.4222736161111304 - 0.09981532151178824im
0.6346036568139508 + 0.7729075661128185im
1.0891852436274243 + 0.0im
-0.8919591784046959 - 0.41334051882938533im
-0.8964989458212277 - 0.4435269646840236im
-0.45270567356069286 + 0.09648736417686345im
0.7667348610265763 + 0.642394549880756im
1.0812311155093135 + 0.0im
-0.5213199397904318 - 0.8816799205196264im
-0.967721419326722 - 0.16755932285629838im
-0.9008738622001569 - 0.4345561047581636im
-0.35149305323993274 + 0.20311272491771237im
0.8642609979710123 + 0.5034909012186265im
1.0139725673619064 + 0.0im
-0.44479835910878085 - 0.92258219219515im
-0.9754450546327987 + 0.10376708160482924im
-0.8993032374464748 - 0.4378031221425061im
-0.2908285038981605 + 0.32052412192200375im
0.8877321088612777 + 0.4608576498171967im
1.0041907642051116 + 0.0im
-0.39407003783203437 - 0.945306679201965im
-0.9277001628744096 + 0.31619705337941983im
-0.89065925343148 - 0.4551270837470103im
-0.2848357588237026 + 0.4686220423972866im
0.8955732612007496 + 0.44545383664763905im
0.9788626496863779 + 0.0im
-0.3191906006633541 - 0.9729997325740156im
-0.8357048285198247 + 0.5108468577010709im
-0.8804404873652344 - 0.47459607724866937im
-0.19771365062167073 + 0.49915400974223456im
0.8681481116991472 + 0.49648083907993734im
0.9898753015059785 + 0.0im
-0.2678179117119135 - 0.9882533084683749im
-0.7685962868751648 + 0.6065919788319024im
-0.861705435073107 - 0.5078106783901158im
-0.12041534078945648 + 0.4909204236582129im
0.8436740160818312 + 0.5371474715322108imThis returns a SiteArray object which contains the gains as a flat vector with metadata about the sites, time, and frequency. To visualize the gains we can use the plotcaltable function which automatically plots the gains. Since the gains are complex we will first plot the phases.
plotcaltable(angle.(intopt)) |> DisplayAs.PNG |> DisplayAs.Text
Due to the a priori calibration of the data, the gain phases are quite stable and just drift over time. Note that the one outlier around 2.5 UT is when ALMA leaves the array. As a result we shift the reference antenna to APEX on that scan causing the gain phases to jump.
We can also plot the gain amplitudes
plotcaltable(abs.(intopt)) |> DisplayAs.PNG |> DisplayAs.Text
Here we find relatively stable gains for most stations. The exception is LMT which has a large offset after 2.5 UT. This is a known issue with the LMT in 2017 and is due to pointing issues. However, we can see the power of simultaneous imaging and instrument modeling as we are able to solve for the gain amplitudes and get a reasonable image.
Because the amplitude and phase processes have fitted hyperparameters, their samples are named tuples with a params field holding the gain series and a hyperparams field holding the process hyperparameters, nested under each site's name. Let's look at the fitted amplitude variability σ and correlation time τ (in hours) for each site,
xopt.instrument.lg.hyperparams(AA = (σ = 0.03779158217462342, τ = 0.48865033315804796), AP = (σ = 0.005710417680865149, τ = 34.33353358496839), AZ = (σ = 0.009117078891298562, τ = 7.380454393855165), JC = (σ = 0.0005624448320940139, τ = 4.352708940534048), LM = (σ = 0.4631158965239244, τ = 6.994844698252464), PV = (σ = 0.22360383895275893, τ = 0.7976480535538579), SM = (σ = 0.0012283310402049748, τ = 0.2282109753005428))and the per-site phase coherence times τ (also in hours)
xopt.instrument.gp.hyperparams(AA = (τ = 14.763708876636722,), AP = (τ = 238.59972012811082,), AZ = (τ = 31.684162561123017,), JC = (τ = 529.8197829541475,), LM = (τ = 0.12105542987166597,), PV = (τ = 0.3802105699327959,), SM = (τ = 72.54064279982187,))Warning
Joint MAP estimates of hierarchical hyperparameters are systematically biased: the mode prefers smaller σ and longer τ than the truth. Use the posterior samples below for reliable hyperparameter inference.
Why we should Sample from the Posterior
One problem with the MAP estimate is that it does not provide uncertainties on the image. That is we are unable to statistically assess which components of the image are certain. Comrade is really a Bayesian imaging and calibration package for VLBI. Therefore, our goal is to sample from the posterior distribution of the image and instrument model. This is a very high-dimensional distribution with typically 1,000 - 100,000 parameters. To sample from this very high dimensional distribution, Comrade has an array of samplers that can be used. However, note that Comrade also satisfies the LogDensityProblems.jl interface. Therefore, you can use any package that supports LogDensityProblems.jl if you have your own fancy sampler.
For this example, we will use HMC, specifically the NUTS algorithm. For However, due to the need to sample a large number of gain parameters, constructing the posterior can take a few minutes. Therefore, for this tutorial, we will only do a quick preliminary run.
using AdvancedHMC
chain = sample(rng, post, NUTS(0.8), 700; n_adapts = 500, initial_params = xopt, progress = false)PosteriorSamples
Samples size: (700,)
sampler used: AHMC
Mean
┌───────────────────────────────────────────────────────────────────────────────
│ sky ⋯
│ @NamedTuple{c::@NamedTuple{params::Matrix{Float64}, hyperparams::Float64}, σ ⋯
├───────────────────────────────────────────────────────────────────────────────
│ (c = (params = [0.023217 -0.000179938 … -0.135513 -0.194485; 0.0171373 -0.02 ⋯
└───────────────────────────────────────────────────────────────────────────────
2 columns omitted
Std. Dev.
┌───────────────────────────────────────────────────────────────────────────────
│ sky ⋯
│ @NamedTuple{c::@NamedTuple{params::Matrix{Float64}, hyperparams::Float64}, σ ⋯
├───────────────────────────────────────────────────────────────────────────────
│ (c = (params = [0.514564 0.512751 … 0.582607 0.607785; 0.61463 0.629424 … 0. ⋯
└───────────────────────────────────────────────────────────────────────────────
2 columns omittedNote
The above sampler will store the samples in memory, i.e. RAM. For large models this can lead to out-of-memory issues. To avoid this we recommend using the saveto = DiskStore() kwargs which periodically saves the samples to disk limiting memory useage. You can load the chain using load_samples(diskout) where diskout is the object returned from sample.
Now we prune the adaptation phase
chain = chain[(begin + 500):end]PosteriorSamples
Samples size: (200,)
sampler used: AHMC
Mean
┌───────────────────────────────────────────────────────────────────────────────
│ sky ⋯
│ @NamedTuple{c::@NamedTuple{params::Matrix{Float64}, hyperparams::Float64}, σ ⋯
├───────────────────────────────────────────────────────────────────────────────
│ (c = (params = [-0.0298507 -0.106938 … -0.0141355 -0.00149274; -0.077948 -0. ⋯
└───────────────────────────────────────────────────────────────────────────────
2 columns omitted
Std. Dev.
┌───────────────────────────────────────────────────────────────────────────────
│ sky ⋯
│ @NamedTuple{c::@NamedTuple{params::Matrix{Float64}, hyperparams::Float64}, σ ⋯
├───────────────────────────────────────────────────────────────────────────────
│ (c = (params = [0.538307 0.568106 … 0.627333 0.612984; 0.559403 0.61302 … 0. ⋯
└───────────────────────────────────────────────────────────────────────────────
2 columns omittedWarning
This should be run for likely an order of magnitude more steps to properly estimate expectations of the posterior
Now that we have our posterior, we can put error bars on all of our plots above. Let's start by finding the mean and standard deviation of the gain phases
mchain = Comrade.rmap(mean, chain);
schain = Comrade.rmap(std, chain);Now we can use the measurements package to automatically plot everything with error bars. First we create a caltable the same way but making sure all of our variables have errors attached to them. For the hierarchical (Gauss-Markov) terms we only want the gain series, so we unwrap the (params, hyperparams) named tuples with Comrade.siteparams.
using Measurements
gmeas = instrumentmodel(
post, (;
instrument = map(
(x, y) -> Measurements.measurement.(Comrade.siteparams(x), Comrade.siteparams(y)),
mchain.instrument, schain.instrument
),
)
)
ctable_am = caltable(abs.(gmeas))
ctable_ph = caltable(angle.(gmeas))┌─────────┬───────────────────┬─────────┬──────────────┬────────────┬───────────
│ Ti │ Fr │ AA │ AP │ AZ │ ⋯
│ Any │ Any │ Any │ Any │ Any │ A ⋯
├─────────┼───────────────────┼─────────┼──────────────┼────────────┼───────────
│ 0.92 hr │ 227.070705664 GHz │ 0.0±0.0 │ missing │ missing │ missi ⋯
│ 1.22 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.197±0.017 │ missing │ missi ⋯
│ 1.52 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.244±0.016 │ missing │ missi ⋯
│ 1.82 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.277±0.015 │ missing │ missi ⋯
│ 2.12 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.329±0.017 │ missing │ missi ⋯
│ 2.45 hr │ 227.070705664 GHz │ missing │ -2.348±0.051 │ missing │ missi ⋯
│ 2.75 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.401±0.017 │ missing │ missi ⋯
│ 3.05 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.433±0.018 │ missing │ missi ⋯
│ 3.35 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.461±0.018 │ missing │ missi ⋯
│ 3.68 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.466±0.017 │ -0.33±0.31 │ missi ⋯
│ 3.98 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.443±0.019 │ -0.45±0.3 │ missi ⋯
│ 4.28 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.46±0.017 │ -0.6±0.3 │ missi ⋯
│ 4.58 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.384±0.019 │ -0.77±0.3 │ -2.0±0. ⋯
│ 4.92 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.416±0.016 │ -0.97±0.29 │ -1.77±0. ⋯
│ 5.18 hr │ 227.070705664 GHz │ 0.0±0.0 │ -2.381±0.016 │ -1.14±0.29 │ -1.58±0. ⋯
│ ⋮ │ ⋮ │ ⋮ │ ⋮ │ ⋮ │ ⋱
└─────────┴───────────────────┴─────────┴──────────────┴────────────┴───────────
4 columns and 10 rows omittedNow let's plot the phase curves
plotcaltable(ctable_ph) |> DisplayAs.PNG |> DisplayAs.Text
and now the amplitude curves
plotcaltable(ctable_am) |> DisplayAs.PNG |> DisplayAs.Text
Finally let's construct some representative image reconstructions.
samples = skymodel.(Ref(post), chain[begin:5:end])
imgs = intensitymap.(samples, Ref(g))
mimg = mean(imgs)
simg = std(imgs)
fig = Figure(; size = (700, 700));
axs = [Axis(fig[i, j], xreversed = true, aspect = 1) for i in 1:2, j in 1:2]
image!(axs[1, 1], mimg, colormap = :afmhot); axs[1, 1].title = "Mean"
image!(axs[1, 2], simg ./ (max.(mimg, 1.0e-8)), colorrange = (0.0, 2.0), colormap = :afmhot);axs[1, 2].title = "Frac. Uncer."
image!(axs[2, 1], imgs[1], colormap = :afmhot);
image!(axs[2, 2], imgs[end], colormap = :afmhot);
hidedecorations!.(axs)
fig |> DisplayAs.PNG |> DisplayAs.Text
And viola, you have just finished making a preliminary image and instrument model reconstruction. In reality, you should run the sample step for many more MCMC steps to get a reliable estimate for the reconstructed image and instrument model parameters.
This page was generated using Literate.jl.