Skip to content

Stochastic inversion

Single parameter inference

Now that we know how to compute the rock physics responses, we move towards performing stochastic inversion for rock physics parameters given some rock conductivity and the corresponding uncertainty.

Note

When performing stochastic inversion, make sure you output the vectors from the models, even if its a (1,1) or (1,) vector

julia
# Creating synthetic data
m = Poe2010([1000.0], 100.0)
resp = forward(m, [])
err_resp = RockphyCond(0.01 .* abs.(resp.σ))
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : [0.044462295866947964]

Then create an a priori using corresponding distribution, here Poe2010Distribution. In the above, we want to infer only for temperature and water content in olivine, so we'll define the distribution as such.

Note

Note the resemblance between (Poe2010)[@ref] and (Poe2010Distribution)[@ref]

julia
mdist = Poe2010Distribution(MvNormal([1400.0], [400.0;]), [100.0])
Poe2010Distribution{Distributions.DiagNormal, Vector{Float64}}(DiagNormal(
dim: 1
μ: [1400.0]
Σ: [160000.0;;]
)
, [100.0])

Then defining the likelihood

julia
rdist = RockphyCondDistribution(Porosity.normal_dist)
RockphyCondDistribution{typeof(normal_dist)}(SubsurfaceCore.normal_dist)

and putting everything together to perform the inference using stochastic inverse[@ref]

julia
m_cache = mcmc_cache(mdist, rdist, 1000, Prior());
mcmc_chain_prior = stochastic_inverse(resp, err_resp, [], m_cache);

m_cache = mcmc_cache(mdist, rdist, 1000, NUTS());
mcmc_chain_posterior = stochastic_inverse(resp, err_resp, [], m_cache);
Chains MCMC chain (1000×13×1 Array{Float64, 3}):

Iterations        = 501:1:1500
Number of chains  = 1
Samples per chain = 1000
Wall duration     = 8.04 seconds
Compute duration  = 8.04 seconds
parameters        = m0[:T][1]
internals         = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size

Summary Statistics
  parameters        mean       std      mcse   ess_bulk   ess_tail      rhat 
      Symbol     Float64   Float64   Float64    Float64    Float64   Float64 

   m0[:T][1]   1000.1456    8.6851    0.3911   483.4407   722.5845    0.9996   ⋯
                                                                1 column omitted

Quantiles
  parameters       2.5%      25.0%       50.0%       75.0%       97.5% 
      Symbol    Float64    Float64     Float64     Float64     Float64 

   m0[:T][1]   982.8078   994.4984   1000.3168   1005.7043   1018.3425
Code for this figure
julia
f = Figure()
ax = Axis(f[1, 1]; title="T(K)")

i = mcmc_chain_prior.name_map[1][1]

dat_prior = mcmc_chain_prior[i][:]
dat_posterior = mcmc_chain_posterior[i][:]

density!(ax, dat_prior; label="prior")
density!(ax, dat_posterior; label="posterior")

f[1, 2] = Legend(f, ax)

Double parameter inference

Lets try to also infer the water content along with the temperature. Everything remains the same, except that now, in ps_nt, the vector corresponding to water content Ch2o_ol will be replaced by a corresponding distribution.

julia
mdist = Poe2010Distribution(MvNormal([1200.0], [400.0;]), product_distribution([Uniform(50.0, 150.0)]))
rdist = RockphyCondDistribution(Porosity.normal_dist)

m_cache = mcmc_cache(mdist, rdist, 1000, Prior());
mcmc_chain_prior = stochastic_inverse(resp, err_resp, [], m_cache);

m_cache = mcmc_cache(mdist, rdist, 1000, NUTS());
mcmc_chain_posterior = stochastic_inverse(resp, err_resp, [], m_cache);
Chains MCMC chain (1000×14×1 Array{Float64, 3}):

Iterations        = 501:1:1500
Number of chains  = 1
Samples per chain = 1000
Wall duration     = 5.91 seconds
Compute duration  = 5.91 seconds
parameters        = m0[:T][1], m0[:Ch2o_ol][1]
internals         = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size

Summary Statistics
       parameters        mean       std      mcse   ess_bulk   ess_tail      r
           Symbol     Float64   Float64   Float64    Float64    Float64   Floa

        m0[:T][1]   1013.7072   55.6317    4.6004   143.1454   173.0621    1.0 ⋯
  m0[:Ch2o_ol][1]     97.0215   29.0002    2.3143   137.4723   152.3408    1.0 ⋯
                                                               2 columns omitted

Quantiles
       parameters       2.5%      25.0%       50.0%       75.0%       97.5% 
           Symbol    Float64    Float64     Float64     Float64     Float64 

        m0[:T][1]   929.8405   967.0126   1008.2313   1058.0173   1118.9415
  m0[:Ch2o_ol][1]    51.6498    71.5023     95.1282    121.6264    147.8062
Code for this figure
julia
f = Figure()
ax1 = Axis(f[1, 1]; title="T(K)")

i = mcmc_chain_prior.name_map[1][1]

dat_prior = mcmc_chain_prior[i][:]
dat_posterior = mcmc_chain_posterior[i][:]

density!(ax1, dat_prior; label="prior")
density!(ax1, dat_posterior; label="posterior")

ax2 = Axis(f[1, 2]; title="water conc. (ppm)")

i = mcmc_chain_prior.name_map[1][2]

dat_prior = mcmc_chain_prior[i][:]
dat_posterior = mcmc_chain_posterior[i][:]

density!(ax2, dat_prior; label="prior")
density!(ax2, dat_posterior; label="posterior")

f[2, 1:2] = Legend(f, ax2; orientation=:horizontal)

Two-phase inference

Lets combine SEO3 with Sifre2014 and also try to infer the porosity.

julia
# Creating synthetic data
m = two_phase_modelType(SEO3, Sifre2014, HS1962_plus)
ps_nt = (; T=[1400.0] .+ 273, Ch2o_m=[100.0], Cco2_m=[100.0], ϕ=[0.1])
model = m(ps_nt)
resp = forward(model, [])
err_resp = RockphyCond(0.01 .* abs.(resp.σ))

m = two_phase_modelDistributionType(SEO3Distribution, Sifre2014Distribution, HS1962_plus)
ps_nt_dist = (;
    T=MvNormal([1000.0], [400.0;]), Ch2o_m=product_distribution([Uniform(50.0, 150.0)]),
    Cco2_m=[100.0], ϕ=product_distribution([Uniform(0.01, 0.2)]))
mdist = m(ps_nt_dist)
rdist = RockphyCondDistribution(Porosity.normal_dist)
RockphyCondDistribution{typeof(normal_dist)}(SubsurfaceCore.normal_dist)
julia
m_cache = mcmc_cache(mdist, rdist, 1000, Prior());
mcmc_chain_prior = stochastic_inverse(resp, err_resp, [], m_cache);

m_cache = mcmc_cache(mdist, rdist, 1000, NUTS());
mcmc_chain_posterior = stochastic_inverse(resp, err_resp, [], m_cache);
Chains MCMC chain (1000×15×1 Array{Float64, 3}):

Iterations        = 501:1:1500
Number of chains  = 1
Samples per chain = 1000
Wall duration     = 7.96 seconds
Compute duration  = 7.96 seconds
parameters        = m0[:ϕ][1], m0[:T][1], m0[:Ch2o_m][1]
internals         = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size

Summary Statistics
      parameters        mean       std      mcse   ess_bulk   ess_tail      rh
          Symbol     Float64   Float64   Float64    Float64    Float64   Float

       m0[:ϕ][1]      0.1206    0.0517    0.0040   182.4087   305.3621    1.00 ⋯
       m0[:T][1]   1664.3504   77.9146    6.2283   180.7364   305.3621    1.00 ⋯
  m0[:Ch2o_m][1]    102.4033   28.5603    1.4609   336.2552   192.6788    1.00 ⋯
                                                               2 columns omitted

Quantiles
      parameters        2.5%       25.0%       50.0%       75.0%       97.5% 
          Symbol     Float64     Float64     Float64     Float64     Float64 

       m0[:ϕ][1]      0.0204      0.0810      0.1270      0.1628      0.1960
       m0[:T][1]   1579.9220   1604.6517   1639.7169   1702.1958   1866.1859
  m0[:Ch2o_m][1]     52.5473     78.2064    103.0053    127.2419    148.0809
Code for this figure
julia
f = Figure()

labels = ["ϕ", "T (K)", "water conc. (ppm)"]

for i in 1:3
    axi = Axis(f[1, i]; title=labels[i])

    idx = mcmc_chain_prior.name_map[1][i]

    dat_prior = mcmc_chain_prior[idx][:]
    dat_posterior = mcmc_chain_posterior[idx][:]

    density!(axi, dat_prior; label="prior")
    density!(axi, dat_posterior; label="posterior")
end

f[2, 1:3] = Legend(f, f.content[end]; orientation=:horizontal)
Warning: Assignment to `dat_prior` in soft scope is ambiguous because a global variable by the same name exists: `dat_prior` will be treated as a new local. Disambiguate by using `local dat_prior` to suppress this warning or `global dat_prior` to assign to the existing global variable.
@ stochastic_inverse.md:171
Warning: Assignment to `dat_posterior` in soft scope is ambiguous because a global variable by the same name exists: `dat_posterior` will be treated as a new local. Disambiguate by using `local dat_posterior` to suppress this warning or `global dat_posterior` to assign to the existing global variable.
@ stochastic_inverse.md:172

Multi rock physics inference

Things work similarly here, but we provide an example for convenience:

julia
m = multi_rp_modelType(SEO3, anharmonic_poro, Nothing, Nothing)
ps_nt = (; T=[1000.0] .+ 273, P=3.0, ρ=3300.0, Ch2o_m=1000.0, ϕ=0.1)
model = m(ps_nt)
resp = forward(model, [])
err_resp = multi_rp_response(RockphyCond(0.01 .* abs.(resp.cond.σ)),
    RockphyElastic(0.01 .* resp.elastic.K, 0.01 .* resp.elastic.G,
        0.01 .* resp.elastic.Vp, 0.01 .* resp.elastic.Vs),
    Nothing,
    Nothing)

ps_nt_dist = (; T=product_distribution([Uniform(1200.0, 1400.0)]), P=[3.0], ρ=[3300.0],
    Ch2o_m=MvNormal([100.0], [20.0;]), ϕ=product_distribution([Uniform(0.01, 0.2)]))

m1 = multi_rp_modelDistributionType(SEO3Distribution, anharmonic_poroDistribution, Nothing, Nothing)
mdist = m1(ps_nt_dist)
# rdist = RockphyCondDistribution(Porosity.normal_dist)
rdist = Porosity.multi_rp_responseDistribution(RockphyCondDistribution(normal_dist),
    RockphyElasticDistribution(normal_dist, normal_dist, normal_dist, normal_dist),
    Nothing, Nothing)
julia
m_cache = mcmc_cache(mdist, rdist, 1000, Prior());
mcmc_chain_prior = stochastic_inverse(
    resp, err_resp, [], m_cache; response_fields=[:Vp, :Vs, ]);

m_cache = mcmc_cache(mdist, rdist, 1000, NUTS());
mcmc_chain_posterior = stochastic_inverse(
    resp, err_resp, [], m_cache; response_fields=[:Vp, :Vs, ]);
Chains MCMC chain (1000×14×1 Array{Float64, 3}):

Iterations        = 501:1:1500
Number of chains  = 1
Samples per chain = 1000
Wall duration     = 8.23 seconds
Compute duration  = 8.23 seconds
parameters        = m0[:T][1], m0[:ϕ][1]
internals         = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size

Summary Statistics
  parameters        mean       std      mcse   ess_bulk   ess_tail      rhat 
      Symbol     Float64   Float64   Float64    Float64    Float64   Float64 

   m0[:T][1]   1273.2570    7.8482    0.2661   875.1961   797.5999    1.0013   ⋯
   m0[:ϕ][1]      0.1000    0.0050    0.0002   759.0516   591.5140    1.0004   ⋯
                                                                1 column omitted

Quantiles
  parameters        2.5%       25.0%       50.0%       75.0%       97.5% 
      Symbol     Float64     Float64     Float64     Float64     Float64 

   m0[:T][1]   1257.4580   1268.3240   1273.3918   1278.4541   1288.3325
   m0[:ϕ][1]      0.0896      0.0966      0.1000      0.1033      0.1095
Code for this figure
julia
f = Figure()

labels = ["T (K)", "ϕ"]

for i in 1:2
    axi = Axis(f[1, i]; title=labels[i])

    idx = mcmc_chain_prior.name_map[1][i]

    dat_prior = mcmc_chain_prior[idx][:]
    dat_posterior = mcmc_chain_posterior[idx][:]

    density!(axi, dat_prior; label="prior")
    density!(axi, dat_posterior; label="posterior")
end

f[2, 1:2] = Legend(f, f.content[end]; orientation=:horizontal)
Warning: Assignment to `dat_prior` in soft scope is ambiguous because a global variable by the same name exists: `dat_prior` will be treated as a new local. Disambiguate by using `local dat_prior` to suppress this warning or `global dat_prior` to assign to the existing global variable.
@ stochastic_inverse.md:241
Warning: Assignment to `dat_posterior` in soft scope is ambiguous because a global variable by the same name exists: `dat_posterior` will be treated as a new local. Disambiguate by using `local dat_posterior` to suppress this warning or `global dat_posterior` to assign to the existing global variable.
@ stochastic_inverse.md:242

Multi rock physics with two phase

As a last example, lets take the two phases case above and see if we can do a better job at inference if we also had the Vp, Vs data

julia
# Synthetic data
m_mix = two_phase_modelType(SEO3, Sifre2014, HS1962_plus)
m = multi_rp_modelType(typeof(m_mix), anharmonic, Nothing, Nothing)

ps_nt = (; T=[1200.0] .+ 273, Ch2o_m=[100.0], Cco2_m=[100.0], ϕ=[0.1], P=[3.0], ρ=[3300.0])

model = m(ps_nt)
resp = forward(model, [])

err_resp = multi_rp_response(RockphyCond(0.01 .* abs.(resp.cond.σ)),
    RockphyElastic(0.01 .* resp.elastic.K, 0.01 .* resp.elastic.G,
        0.01 .* resp.elastic.Vp, 0.01 .* resp.elastic.Vs),
    Nothing,
    Nothing)

# Defining apriori

ps_nt_dist = (; T=product_distribution([Uniform(1270.0, 1670.0)]),
    Ch2o_m=product_distribution([Uniform(50.0, 150.0)]), Cco2_m=[100.0],
    ϕ=product_distribution([Uniform(0.01, 0.2)]), P=[3.0], ρ=[3300.0])

m_mixdist = two_phase_modelDistributionType(SEO3Distribution, Sifre2014Distribution, HS1962_plus)
m = multi_rp_modelDistributionType(typeof(m_mixdist), anharmonicDistribution, Nothing, Nothing)

mdist = m(ps_nt_dist);
rdist = Porosity.multi_rp_responseDistribution(RockphyCondDistribution(normal_dist),
    RockphyElasticDistribution(normal_dist, normal_dist, normal_dist, normal_dist),
    Nothing, Nothing)

m_cache = mcmc_cache(mdist, rdist, 1000, Prior());
mcmc_chain_prior = stochastic_inverse(
    resp, err_resp, [], m_cache; response_fields=[:Vp, :Vs, ]);

m_cache = mcmc_cache(mdist, rdist, 1000, NUTS());
mcmc_chain_posterior = stochastic_inverse(
    resp, err_resp, [], m_cache; response_fields=[:Vp, :Vs, ]);
Info: variables to be inferred : [:ϕ, :T, :Ch2o_m]
variables used for inference : [:Vp, :Vs, :σ]
model type : multi_rp_modelType{two_phase_modelType{SEO3, Sifre2014, HS1962_plus}, anharmonic, Nothing, Nothing}
Sampling   0%|                                          |  ETA: N/A
Sampling   0%|▎                                         |  ETA: 0:00:41
Sampling   1%|▍                                         |  ETA: 0:00:20
Sampling   2%|▋                                         |  ETA: 0:00:13
Sampling   2%|▉                                         |  ETA: 0:00:10
Sampling   2%|█                                         |  ETA: 0:00:08
Sampling   3%|█▎                                        |  ETA: 0:00:07
Sampling   4%|█▌                                        |  ETA: 0:00:06
Sampling   4%|█▋                                        |  ETA: 0:00:05
Sampling   4%|█▉                                        |  ETA: 0:00:04
Sampling   5%|██▏                                       |  ETA: 0:00:04
Sampling   6%|██▎                                       |  ETA: 0:00:04
Sampling   6%|██▌                                       |  ETA: 0:00:03
Sampling   6%|██▊                                       |  ETA: 0:00:03
Sampling   7%|███                                       |  ETA: 0:00:03
Sampling   8%|███▏                                      |  ETA: 0:00:03
Sampling   8%|███▍                                      |  ETA: 0:00:02
Sampling   8%|███▋                                      |  ETA: 0:00:02
Sampling   9%|███▊                                      |  ETA: 0:00:02
Sampling  10%|████                                      |  ETA: 0:00:02
Sampling  10%|████▎                                     |  ETA: 0:00:02
Sampling  10%|████▍                                     |  ETA: 0:00:02
Sampling  11%|████▋                                     |  ETA: 0:00:02
Sampling  12%|████▉                                     |  ETA: 0:00:02
Sampling  12%|█████                                     |  ETA: 0:00:02
Sampling  12%|█████▎                                    |  ETA: 0:00:01
Sampling  13%|█████▌                                    |  ETA: 0:00:01
Sampling  14%|█████▋                                    |  ETA: 0:00:01
Sampling  14%|█████▉                                    |  ETA: 0:00:01
Sampling  14%|██████▏                                   |  ETA: 0:00:01
Sampling  15%|██████▎                                   |  ETA: 0:00:01
Sampling  16%|██████▌                                   |  ETA: 0:00:01
Sampling  16%|██████▊                                   |  ETA: 0:00:01
Sampling  16%|██████▉                                   |  ETA: 0:00:01
Sampling  17%|███████▏                                  |  ETA: 0:00:01
Sampling  18%|███████▍                                  |  ETA: 0:00:01
Sampling  18%|███████▌                                  |  ETA: 0:00:01
Sampling  18%|███████▊                                  |  ETA: 0:00:01
Sampling  19%|████████                                  |  ETA: 0:00:01
Sampling  20%|████████▎                                 |  ETA: 0:00:01
Sampling  20%|████████▍                                 |  ETA: 0:00:01
Sampling  20%|████████▋                                 |  ETA: 0:00:01
Sampling  21%|████████▉                                 |  ETA: 0:00:01
Sampling  22%|█████████                                 |  ETA: 0:00:01
Sampling  22%|█████████▎                                |  ETA: 0:00:01
Sampling  22%|█████████▌                                |  ETA: 0:00:01
Sampling  23%|█████████▋                                |  ETA: 0:00:01
Sampling  24%|█████████▉                                |  ETA: 0:00:01
Sampling  24%|██████████▏                               |  ETA: 0:00:01
Sampling  24%|██████████▎                               |  ETA: 0:00:01
Sampling  25%|██████████▌                               |  ETA: 0:00:01
Sampling  26%|██████████▊                               |  ETA: 0:00:01
Sampling  26%|██████████▉                               |  ETA: 0:00:01
Sampling  26%|███████████▏                              |  ETA: 0:00:01
Sampling  27%|███████████▍                              |  ETA: 0:00:01
Sampling  28%|███████████▌                              |  ETA: 0:00:01
Sampling  28%|███████████▊                              |  ETA: 0:00:01
Sampling  28%|████████████                              |  ETA: 0:00:01
Sampling  29%|████████████▏                             |  ETA: 0:00:01
Sampling  30%|████████████▍                             |  ETA: 0:00:01
Sampling  30%|████████████▋                             |  ETA: 0:00:01
Sampling  30%|████████████▊                             |  ETA: 0:00:00
Sampling  31%|█████████████                             |  ETA: 0:00:00
Sampling  32%|█████████████▎                            |  ETA: 0:00:00
Sampling  32%|█████████████▌                            |  ETA: 0:00:00
Sampling  32%|█████████████▋                            |  ETA: 0:00:00
Sampling  33%|█████████████▉                            |  ETA: 0:00:00
Sampling  34%|██████████████▏                           |  ETA: 0:00:00
Sampling  34%|██████████████▎                           |  ETA: 0:00:00
Sampling  34%|██████████████▌                           |  ETA: 0:00:00
Sampling  35%|██████████████▊                           |  ETA: 0:00:00
Sampling  36%|██████████████▉                           |  ETA: 0:00:00
Sampling  36%|███████████████▏                          |  ETA: 0:00:00
Sampling  36%|███████████████▍                          |  ETA: 0:00:00
Sampling  37%|███████████████▌                          |  ETA: 0:00:00
Sampling  38%|███████████████▊                          |  ETA: 0:00:00
Sampling  38%|████████████████                          |  ETA: 0:00:00
Sampling  38%|████████████████▏                         |  ETA: 0:00:00
Sampling  39%|████████████████▍                         |  ETA: 0:00:00
Sampling  40%|████████████████▋                         |  ETA: 0:00:00
Sampling  40%|████████████████▊                         |  ETA: 0:00:00
Sampling  40%|█████████████████                         |  ETA: 0:00:00
Sampling  41%|█████████████████▎                        |  ETA: 0:00:00
Sampling  42%|█████████████████▍                        |  ETA: 0:00:00
Sampling  42%|█████████████████▋                        |  ETA: 0:00:00
Sampling  42%|█████████████████▉                        |  ETA: 0:00:00
Sampling  43%|██████████████████                        |  ETA: 0:00:00
Sampling  44%|██████████████████▎                       |  ETA: 0:00:00
Sampling  44%|██████████████████▌                       |  ETA: 0:00:00
Sampling  44%|██████████████████▊                       |  ETA: 0:00:00
Sampling  45%|██████████████████▉                       |  ETA: 0:00:00
Sampling  46%|███████████████████▏                      |  ETA: 0:00:00
Sampling  46%|███████████████████▍                      |  ETA: 0:00:00
Sampling  46%|███████████████████▌                      |  ETA: 0:00:00
Sampling  47%|███████████████████▊                      |  ETA: 0:00:00
Sampling  48%|████████████████████                      |  ETA: 0:00:00
Sampling  48%|████████████████████▏                     |  ETA: 0:00:00
Sampling  48%|████████████████████▍                     |  ETA: 0:00:00
Sampling  49%|████████████████████▋                     |  ETA: 0:00:00
Sampling  50%|████████████████████▊                     |  ETA: 0:00:00
Sampling  50%|█████████████████████                     |  ETA: 0:00:00
Sampling  50%|█████████████████████▎                    |  ETA: 0:00:00
Sampling  51%|█████████████████████▍                    |  ETA: 0:00:00
Sampling  52%|█████████████████████▋                    |  ETA: 0:00:00
Sampling  52%|█████████████████████▉                    |  ETA: 0:00:00
Sampling  52%|██████████████████████                    |  ETA: 0:00:00
Sampling  53%|██████████████████████▎                   |  ETA: 0:00:00
Sampling  54%|██████████████████████▌                   |  ETA: 0:00:00
Sampling  54%|██████████████████████▋                   |  ETA: 0:00:00
Sampling  55%|██████████████████████▉                   |  ETA: 0:00:00
Sampling  55%|███████████████████████▏                  |  ETA: 0:00:00
Sampling  56%|███████████████████████▎                  |  ETA: 0:00:00
Sampling  56%|███████████████████████▌                  |  ETA: 0:00:00
Sampling  56%|███████████████████████▊                  |  ETA: 0:00:00
Sampling  57%|████████████████████████                  |  ETA: 0:00:00
Sampling  57%|████████████████████████▏                 |  ETA: 0:00:00
Sampling  58%|████████████████████████▍                 |  ETA: 0:00:00
Sampling  58%|████████████████████████▋                 |  ETA: 0:00:00
Sampling  59%|████████████████████████▊                 |  ETA: 0:00:00
Sampling  60%|█████████████████████████                 |  ETA: 0:00:00
Sampling  60%|█████████████████████████▎                |  ETA: 0:00:00
Sampling  60%|█████████████████████████▍                |  ETA: 0:00:00
Sampling  61%|█████████████████████████▋                |  ETA: 0:00:00
Sampling  62%|█████████████████████████▉                |  ETA: 0:00:00
Sampling  62%|██████████████████████████                |  ETA: 0:00:00
Sampling  62%|██████████████████████████▎               |  ETA: 0:00:00
Sampling  63%|██████████████████████████▌               |  ETA: 0:00:00
Sampling  64%|██████████████████████████▋               |  ETA: 0:00:00
Sampling  64%|██████████████████████████▉               |  ETA: 0:00:00
Sampling  64%|███████████████████████████▏              |  ETA: 0:00:00
Sampling  65%|███████████████████████████▎              |  ETA: 0:00:00
Sampling  66%|███████████████████████████▌              |  ETA: 0:00:00
Sampling  66%|███████████████████████████▊              |  ETA: 0:00:00
Sampling  66%|███████████████████████████▉              |  ETA: 0:00:00
Sampling  67%|████████████████████████████▏             |  ETA: 0:00:00
Sampling  68%|████████████████████████████▍             |  ETA: 0:00:00
Sampling  68%|████████████████████████████▌             |  ETA: 0:00:00
Sampling  68%|████████████████████████████▊             |  ETA: 0:00:00
Sampling  69%|█████████████████████████████             |  ETA: 0:00:00
Sampling  70%|█████████████████████████████▎            |  ETA: 0:00:00
Sampling  70%|█████████████████████████████▍            |  ETA: 0:00:00
Sampling  70%|█████████████████████████████▋            |  ETA: 0:00:00
Sampling  71%|█████████████████████████████▉            |  ETA: 0:00:00
Sampling  72%|██████████████████████████████            |  ETA: 0:00:00
Sampling  72%|██████████████████████████████▎           |  ETA: 0:00:00
Sampling  72%|██████████████████████████████▌           |  ETA: 0:00:00
Sampling  73%|██████████████████████████████▋           |  ETA: 0:00:00
Sampling  74%|██████████████████████████████▉           |  ETA: 0:00:00
Sampling  74%|███████████████████████████████▏          |  ETA: 0:00:00
Sampling  74%|███████████████████████████████▎          |  ETA: 0:00:00
Sampling  75%|███████████████████████████████▌          |  ETA: 0:00:00
Sampling  76%|███████████████████████████████▊          |  ETA: 0:00:00
Sampling  76%|███████████████████████████████▉          |  ETA: 0:00:00
Sampling  76%|████████████████████████████████▏         |  ETA: 0:00:00
Sampling  77%|████████████████████████████████▍         |  ETA: 0:00:00
Sampling  78%|████████████████████████████████▌         |  ETA: 0:00:00
Sampling  78%|████████████████████████████████▊         |  ETA: 0:00:00
Sampling  78%|█████████████████████████████████         |  ETA: 0:00:00
Sampling  79%|█████████████████████████████████▏        |  ETA: 0:00:00
Sampling  80%|█████████████████████████████████▍        |  ETA: 0:00:00
Sampling  80%|█████████████████████████████████▋        |  ETA: 0:00:00
Sampling  80%|█████████████████████████████████▊        |  ETA: 0:00:00
Sampling  81%|██████████████████████████████████        |  ETA: 0:00:00
Sampling  82%|██████████████████████████████████▎       |  ETA: 0:00:00
Sampling  82%|██████████████████████████████████▌       |  ETA: 0:00:00
Sampling  82%|██████████████████████████████████▋       |  ETA: 0:00:00
Sampling  83%|██████████████████████████████████▉       |  ETA: 0:00:00
Sampling  84%|███████████████████████████████████▏      |  ETA: 0:00:00
Sampling  84%|███████████████████████████████████▎      |  ETA: 0:00:00
Sampling  84%|███████████████████████████████████▌      |  ETA: 0:00:00
Sampling  85%|███████████████████████████████████▊      |  ETA: 0:00:00
Sampling  86%|███████████████████████████████████▉      |  ETA: 0:00:00
Sampling  86%|████████████████████████████████████▏     |  ETA: 0:00:00
Sampling  86%|████████████████████████████████████▍     |  ETA: 0:00:00
Sampling  87%|████████████████████████████████████▌     |  ETA: 0:00:00
Sampling  88%|████████████████████████████████████▊     |  ETA: 0:00:00
Sampling  88%|█████████████████████████████████████     |  ETA: 0:00:00
Sampling  88%|█████████████████████████████████████▏    |  ETA: 0:00:00
Sampling  89%|█████████████████████████████████████▍    |  ETA: 0:00:00
Sampling  90%|█████████████████████████████████████▋    |  ETA: 0:00:00
Sampling  90%|█████████████████████████████████████▊    |  ETA: 0:00:00
Sampling  90%|██████████████████████████████████████    |  ETA: 0:00:00
Sampling  91%|██████████████████████████████████████▎   |  ETA: 0:00:00
Sampling  92%|██████████████████████████████████████▍   |  ETA: 0:00:00
Sampling  92%|██████████████████████████████████████▋   |  ETA: 0:00:00
Sampling  92%|██████████████████████████████████████▉   |  ETA: 0:00:00
Sampling  93%|███████████████████████████████████████   |  ETA: 0:00:00
Sampling  94%|███████████████████████████████████████▎  |  ETA: 0:00:00
Sampling  94%|███████████████████████████████████████▌  |  ETA: 0:00:00
Sampling  94%|███████████████████████████████████████▊  |  ETA: 0:00:00
Sampling  95%|███████████████████████████████████████▉  |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▏ |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▍ |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▌ |  ETA: 0:00:00
Sampling  97%|████████████████████████████████████████▊ |  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████ |  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████▏|  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████▍|  ETA: 0:00:00
Sampling  99%|█████████████████████████████████████████▋|  ETA: 0:00:00
Sampling 100%|█████████████████████████████████████████▊|  ETA: 0:00:00
Sampling 100%|██████████████████████████████████████████| Time: 0:00:00
Sampling 100%|██████████████████████████████████████████| Time: 0:00:00
Info: variables to be inferred : [:ϕ, :T, :Ch2o_m]
variables used for inference : [:Vp, :Vs, :σ]
model type : multi_rp_modelType{two_phase_modelType{SEO3, Sifre2014, HS1962_plus}, anharmonic, Nothing, Nothing}
Sampling   0%|                                          |  ETA: N/A
Info: Found initial step size
  ϵ = 0.05
Sampling   1%|▎                                         |  ETA: 0:13:18
Sampling   1%|▍                                         |  ETA: 0:07:07
Sampling   2%|▋                                         |  ETA: 0:04:38
Sampling   2%|▉                                         |  ETA: 0:03:34
Sampling   3%|█▏                                        |  ETA: 0:02:49
Sampling   3%|█▎                                        |  ETA: 0:02:23
Sampling   4%|█▌                                        |  ETA: 0:02:01
Sampling   4%|█▋                                        |  ETA: 0:01:48
Sampling   5%|█▉                                        |  ETA: 0:01:35
Sampling   5%|██▏                                       |  ETA: 0:01:26
Sampling   6%|██▍                                       |  ETA: 0:01:18
Sampling   6%|██▌                                       |  ETA: 0:01:12
Sampling   7%|██▊                                       |  ETA: 0:01:06
Sampling   7%|███                                       |  ETA: 0:01:01
Sampling   8%|███▏                                      |  ETA: 0:00:56
Sampling   8%|███▍                                      |  ETA: 0:00:53
Sampling   9%|███▋                                      |  ETA: 0:00:49
Sampling   9%|███▊                                      |  ETA: 0:00:47
Sampling  10%|████                                      |  ETA: 0:00:44
Sampling  10%|████▎                                     |  ETA: 0:00:42
Sampling  11%|████▍                                     |  ETA: 0:00:40
Sampling  11%|████▋                                     |  ETA: 0:00:38
Sampling  12%|████▉                                     |  ETA: 0:00:36
Sampling  12%|█████                                     |  ETA: 0:00:34
Sampling  13%|█████▎                                    |  ETA: 0:00:33
Sampling  13%|█████▌                                    |  ETA: 0:00:32
Sampling  14%|█████▋                                    |  ETA: 0:00:31
Sampling  14%|█████▉                                    |  ETA: 0:00:30
Sampling  15%|██████▏                                   |  ETA: 0:00:28
Sampling  15%|██████▎                                   |  ETA: 0:00:27
Sampling  16%|██████▌                                   |  ETA: 0:00:26
Sampling  16%|██████▊                                   |  ETA: 0:00:25
Sampling  17%|███████                                   |  ETA: 0:00:24
Sampling  17%|███████▏                                  |  ETA: 0:00:24
Sampling  18%|███████▍                                  |  ETA: 0:00:23
Sampling  18%|███████▌                                  |  ETA: 0:00:22
Sampling  19%|███████▊                                  |  ETA: 0:00:22
Sampling  19%|████████                                  |  ETA: 0:00:21
Sampling  20%|████████▎                                 |  ETA: 0:00:20
Sampling  20%|████████▍                                 |  ETA: 0:00:20
Sampling  21%|████████▋                                 |  ETA: 0:00:19
Sampling  21%|████████▉                                 |  ETA: 0:00:19
Sampling  22%|█████████                                 |  ETA: 0:00:18
Sampling  22%|█████████▎                                |  ETA: 0:00:18
Sampling  23%|█████████▌                                |  ETA: 0:00:17
Sampling  23%|█████████▋                                |  ETA: 0:00:17
Sampling  24%|█████████▉                                |  ETA: 0:00:16
Sampling  24%|██████████▏                               |  ETA: 0:00:16
Sampling  25%|██████████▎                               |  ETA: 0:00:15
Sampling  25%|██████████▌                               |  ETA: 0:00:15
Sampling  26%|██████████▊                               |  ETA: 0:00:15
Sampling  26%|██████████▉                               |  ETA: 0:00:14
Sampling  27%|███████████▏                              |  ETA: 0:00:14
Sampling  27%|███████████▍                              |  ETA: 0:00:14
Sampling  28%|███████████▋                              |  ETA: 0:00:13
Sampling  28%|███████████▊                              |  ETA: 0:00:13
Sampling  29%|████████████                              |  ETA: 0:00:13
Sampling  29%|████████████▏                             |  ETA: 0:00:13
Sampling  30%|████████████▍                             |  ETA: 0:00:12
Sampling  30%|████████████▋                             |  ETA: 0:00:12
Sampling  31%|████████████▉                             |  ETA: 0:00:12
Sampling  31%|█████████████                             |  ETA: 0:00:12
Sampling  32%|█████████████▎                            |  ETA: 0:00:11
Sampling  32%|█████████████▌                            |  ETA: 0:00:11
Sampling  33%|█████████████▋                            |  ETA: 0:00:11
Sampling  33%|█████████████▉                            |  ETA: 0:00:11
Sampling  34%|██████████████▏                           |  ETA: 0:00:10
Sampling  34%|██████████████▎                           |  ETA: 0:00:10
Sampling  35%|██████████████▌                           |  ETA: 0:00:10
Sampling  35%|██████████████▊                           |  ETA: 0:00:10
Sampling  36%|██████████████▉                           |  ETA: 0:00:10
Sampling  36%|███████████████▏                          |  ETA: 0:00:10
Sampling  37%|███████████████▍                          |  ETA: 0:00:09
Sampling  37%|███████████████▌                          |  ETA: 0:00:09
Sampling  38%|███████████████▊                          |  ETA: 0:00:09
Sampling  38%|████████████████                          |  ETA: 0:00:09
Sampling  39%|████████████████▏                         |  ETA: 0:00:09
Sampling  39%|████████████████▍                         |  ETA: 0:00:08
Sampling  40%|████████████████▋                         |  ETA: 0:00:08
Sampling  40%|████████████████▊                         |  ETA: 0:00:08
Sampling  41%|█████████████████                         |  ETA: 0:00:08
Sampling  41%|█████████████████▎                        |  ETA: 0:00:08
Sampling  42%|█████████████████▌                        |  ETA: 0:00:08
Sampling  42%|█████████████████▋                        |  ETA: 0:00:08
Sampling  43%|█████████████████▉                        |  ETA: 0:00:07
Sampling  43%|██████████████████                        |  ETA: 0:00:07
Sampling  44%|██████████████████▎                       |  ETA: 0:00:07
Sampling  44%|██████████████████▌                       |  ETA: 0:00:07
Sampling  45%|██████████████████▊                       |  ETA: 0:00:07
Sampling  45%|██████████████████▉                       |  ETA: 0:00:07
Sampling  46%|███████████████████▏                      |  ETA: 0:00:07
Sampling  46%|███████████████████▍                      |  ETA: 0:00:07
Sampling  47%|███████████████████▌                      |  ETA: 0:00:06
Sampling  47%|███████████████████▊                      |  ETA: 0:00:06
Sampling  48%|████████████████████                      |  ETA: 0:00:06
Sampling  48%|████████████████████▏                     |  ETA: 0:00:06
Sampling  49%|████████████████████▍                     |  ETA: 0:00:06
Sampling  49%|████████████████████▋                     |  ETA: 0:00:06
Sampling  50%|████████████████████▊                     |  ETA: 0:00:06
Sampling  50%|█████████████████████                     |  ETA: 0:00:06
Sampling  51%|█████████████████████▎                    |  ETA: 0:00:06
Sampling  51%|█████████████████████▍                    |  ETA: 0:00:05
Sampling  52%|█████████████████████▋                    |  ETA: 0:00:05
Sampling  52%|█████████████████████▉                    |  ETA: 0:00:05
Sampling  53%|██████████████████████▏                   |  ETA: 0:00:05
Sampling  53%|██████████████████████▎                   |  ETA: 0:00:05
Sampling  54%|██████████████████████▌                   |  ETA: 0:00:05
Sampling  54%|██████████████████████▋                   |  ETA: 0:00:05
Sampling  55%|██████████████████████▉                   |  ETA: 0:00:05
Sampling  55%|███████████████████████▏                  |  ETA: 0:00:05
Sampling  56%|███████████████████████▍                  |  ETA: 0:00:05
Sampling  56%|███████████████████████▌                  |  ETA: 0:00:05
Sampling  57%|███████████████████████▊                  |  ETA: 0:00:05
Sampling  57%|████████████████████████                  |  ETA: 0:00:04
Sampling  58%|████████████████████████▏                 |  ETA: 0:00:04
Sampling  58%|████████████████████████▍                 |  ETA: 0:00:04
Sampling  59%|████████████████████████▋                 |  ETA: 0:00:04
Sampling  59%|████████████████████████▊                 |  ETA: 0:00:04
Sampling  60%|█████████████████████████                 |  ETA: 0:00:04
Sampling  60%|█████████████████████████▎                |  ETA: 0:00:04
Sampling  61%|█████████████████████████▍                |  ETA: 0:00:04
Sampling  61%|█████████████████████████▋                |  ETA: 0:00:04
Sampling  62%|█████████████████████████▉                |  ETA: 0:00:04
Sampling  62%|██████████████████████████                |  ETA: 0:00:04
Sampling  63%|██████████████████████████▎               |  ETA: 0:00:04
Sampling  63%|██████████████████████████▌               |  ETA: 0:00:04
Sampling  64%|██████████████████████████▋               |  ETA: 0:00:03
Sampling  64%|██████████████████████████▉               |  ETA: 0:00:03
Sampling  65%|███████████████████████████▏              |  ETA: 0:00:03
Sampling  65%|███████████████████████████▎              |  ETA: 0:00:03
Sampling  66%|███████████████████████████▌              |  ETA: 0:00:03
Sampling  66%|███████████████████████████▊              |  ETA: 0:00:03
Sampling  67%|████████████████████████████              |  ETA: 0:00:03
Sampling  67%|████████████████████████████▏             |  ETA: 0:00:03
Sampling  68%|████████████████████████████▍             |  ETA: 0:00:03
Sampling  68%|████████████████████████████▌             |  ETA: 0:00:03
Sampling  69%|████████████████████████████▊             |  ETA: 0:00:03
Sampling  69%|█████████████████████████████             |  ETA: 0:00:03
Sampling  70%|█████████████████████████████▎            |  ETA: 0:00:03
Sampling  70%|█████████████████████████████▍            |  ETA: 0:00:03
Sampling  71%|█████████████████████████████▋            |  ETA: 0:00:03
Sampling  71%|█████████████████████████████▉            |  ETA: 0:00:03
Sampling  72%|██████████████████████████████            |  ETA: 0:00:02
Sampling  72%|██████████████████████████████▎           |  ETA: 0:00:02
Sampling  73%|██████████████████████████████▌           |  ETA: 0:00:02
Sampling  73%|██████████████████████████████▋           |  ETA: 0:00:02
Sampling  74%|██████████████████████████████▉           |  ETA: 0:00:02
Sampling  74%|███████████████████████████████▏          |  ETA: 0:00:02
Sampling  75%|███████████████████████████████▎          |  ETA: 0:00:02
Sampling  75%|███████████████████████████████▌          |  ETA: 0:00:02
Sampling  76%|███████████████████████████████▊          |  ETA: 0:00:02
Sampling  76%|███████████████████████████████▉          |  ETA: 0:00:02
Sampling  77%|████████████████████████████████▏         |  ETA: 0:00:02
Sampling  77%|████████████████████████████████▍         |  ETA: 0:00:02
Sampling  78%|████████████████████████████████▋         |  ETA: 0:00:02
Sampling  78%|████████████████████████████████▊         |  ETA: 0:00:02
Sampling  79%|█████████████████████████████████         |  ETA: 0:00:02
Sampling  79%|█████████████████████████████████▏        |  ETA: 0:00:02
Sampling  80%|█████████████████████████████████▍        |  ETA: 0:00:02
Sampling  80%|█████████████████████████████████▋        |  ETA: 0:00:02
Sampling  81%|█████████████████████████████████▉        |  ETA: 0:00:02
Sampling  81%|██████████████████████████████████        |  ETA: 0:00:02
Sampling  82%|██████████████████████████████████▎       |  ETA: 0:00:01
Sampling  82%|██████████████████████████████████▌       |  ETA: 0:00:01
Sampling  83%|██████████████████████████████████▋       |  ETA: 0:00:01
Sampling  83%|██████████████████████████████████▉       |  ETA: 0:00:01
Sampling  84%|███████████████████████████████████▏      |  ETA: 0:00:01
Sampling  84%|███████████████████████████████████▎      |  ETA: 0:00:01
Sampling  85%|███████████████████████████████████▌      |  ETA: 0:00:01
Sampling  85%|███████████████████████████████████▊      |  ETA: 0:00:01
Sampling  86%|███████████████████████████████████▉      |  ETA: 0:00:01
Sampling  86%|████████████████████████████████████▏     |  ETA: 0:00:01
Sampling  87%|████████████████████████████████████▍     |  ETA: 0:00:01
Sampling  87%|████████████████████████████████████▌     |  ETA: 0:00:01
Sampling  88%|████████████████████████████████████▊     |  ETA: 0:00:01
Sampling  88%|█████████████████████████████████████     |  ETA: 0:00:01
Sampling  89%|█████████████████████████████████████▏    |  ETA: 0:00:01
Sampling  89%|█████████████████████████████████████▍    |  ETA: 0:00:01
Sampling  90%|█████████████████████████████████████▋    |  ETA: 0:00:01
Sampling  90%|█████████████████████████████████████▊    |  ETA: 0:00:01
Sampling  91%|██████████████████████████████████████    |  ETA: 0:00:01
Sampling  91%|██████████████████████████████████████▎   |  ETA: 0:00:01
Sampling  92%|██████████████████████████████████████▌   |  ETA: 0:00:01
Sampling  92%|██████████████████████████████████████▋   |  ETA: 0:00:01
Sampling  93%|██████████████████████████████████████▉   |  ETA: 0:00:01
Sampling  93%|███████████████████████████████████████   |  ETA: 0:00:01
Sampling  94%|███████████████████████████████████████▎  |  ETA: 0:00:00
Sampling  94%|███████████████████████████████████████▌  |  ETA: 0:00:00
Sampling  95%|███████████████████████████████████████▊  |  ETA: 0:00:00
Sampling  95%|███████████████████████████████████████▉  |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▏ |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▍ |  ETA: 0:00:00
Sampling  97%|████████████████████████████████████████▌ |  ETA: 0:00:00
Sampling  97%|████████████████████████████████████████▊ |  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████ |  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████▏|  ETA: 0:00:00
Sampling  99%|█████████████████████████████████████████▍|  ETA: 0:00:00
Sampling  99%|█████████████████████████████████████████▋|  ETA: 0:00:00
Sampling 100%|█████████████████████████████████████████▊|  ETA: 0:00:00
Sampling 100%|██████████████████████████████████████████| Time: 0:00:06
Sampling 100%|██████████████████████████████████████████| Time: 0:00:07
Code for this figure
julia
f = Figure()

labels = ["ϕ", "T (K)", "water conc. (ppm)"]

for i in 1:3
    axi = Axis(f[1, i]; title=labels[i])

    idx = mcmc_chain_prior.name_map[1][i]

    dat_prior = mcmc_chain_prior[idx][:]
    dat_posterior = mcmc_chain_posterior[idx][:]

    density!(axi, dat_prior; label="prior")
    density!(axi, dat_posterior; label="posterior")
end

f[2, 1:3] = Legend(f, f.content[end]; orientation=:horizontal)
Warning: Assignment to `dat_prior` in soft scope is ambiguous because a global variable by the same name exists: `dat_prior` will be treated as a new local. Disambiguate by using `local dat_prior` to suppress this warning or `global dat_prior` to assign to the existing global variable.
@ stochastic_inverse.md:171
Warning: Assignment to `dat_posterior` in soft scope is ambiguous because a global variable by the same name exists: `dat_posterior` will be treated as a new local. Disambiguate by using `local dat_posterior` to suppress this warning or `global dat_posterior` to assign to the existing global variable.
@ stochastic_inverse.md:172