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.55 seconds
Compute duration  = 8.55 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.6569    9.6219    0.4484   464.2731   714.9738    0.9998   ⋯
                                                                1 column omitted

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

   m0[:T][1]   983.0043   993.8902   1000.6088   1006.6775   1019.8167
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     = 6.09 seconds
Compute duration  = 6.09 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]   1017.7802   55.5303    3.8342   207.9474   283.1245    1.0 ⋯
  m0[:Ch2o_ol][1]     94.9706   28.7850    1.9609   210.4366   288.2496    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]   928.6611   971.6630   1013.5118   1062.3852   1117.4514
  m0[:Ch2o_ol][1]    51.2761    69.7955     92.4524    118.4963    148.2847
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     = 8.72 seconds
Compute duration  = 8.72 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.1257    0.0484    0.0045   120.8629   190.0049    1.00 ⋯
       m0[:T][1]   1654.8175   66.6601    6.5373   121.4986   194.6769    1.00 ⋯
  m0[:Ch2o_m][1]     98.6854   28.5862    1.2084   541.5644   422.1175    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.0341      0.0846      0.1326      0.1696      0.1976
       m0[:T][1]   1579.0431   1600.1993   1633.4151   1696.0102   1816.3291
  m0[:Ch2o_m][1]     53.2959     73.6644     98.2294    122.8449    147.4093
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.18 seconds
Compute duration  = 8.18 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.1592    7.4971    0.2212   1127.7384   625.8391    1.0002  ⋯
   m0[:ϕ][1]      0.0999    0.0048    0.0002    956.6638   634.2434    1.0015  ⋯
                                                                1 column omitted

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

   m0[:T][1]   1258.9274   1268.1406   1272.9423   1278.0852   1288.8565
   m0[:ϕ][1]      0.0907      0.0966      0.1000      0.1031      0.1091
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:40
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:06
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:03
Sampling   6%|██▌                                       |  ETA: 0:00:03
Sampling   6%|██▊                                       |  ETA: 0:00:03
Sampling   7%|███                                       |  ETA: 0:00:03
Sampling   8%|███▏                                      |  ETA: 0:00:02
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:01
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:00
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:29
Sampling   1%|▍                                         |  ETA: 0:07:20
Sampling   2%|▋                                         |  ETA: 0:04:47
Sampling   2%|▉                                         |  ETA: 0:03:39
Sampling   3%|█▏                                        |  ETA: 0:02:53
Sampling   3%|█▎                                        |  ETA: 0:02:26
Sampling   4%|█▌                                        |  ETA: 0:02:03
Sampling   4%|█▋                                        |  ETA: 0:01:49
Sampling   5%|█▉                                        |  ETA: 0:01:36
Sampling   5%|██▏                                       |  ETA: 0:01:27
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:57
Sampling   8%|███▍                                      |  ETA: 0:00:54
Sampling   9%|███▋                                      |  ETA: 0:00:50
Sampling   9%|███▊                                      |  ETA: 0:00:47
Sampling  10%|████                                      |  ETA: 0:00:45
Sampling  10%|████▎                                     |  ETA: 0:00:42
Sampling  11%|████▍                                     |  ETA: 0:00:40
Sampling  11%|████▋                                     |  ETA: 0:00:39
Sampling  12%|████▉                                     |  ETA: 0:00:37
Sampling  12%|█████                                     |  ETA: 0:00:35
Sampling  13%|█████▎                                    |  ETA: 0:00:34
Sampling  13%|█████▌                                    |  ETA: 0:00:32
Sampling  14%|█████▋                                    |  ETA: 0:00:31
Sampling  14%|█████▉                                    |  ETA: 0:00:30
Sampling  15%|██████▏                                   |  ETA: 0:00:29
Sampling  15%|██████▎                                   |  ETA: 0:00:28
Sampling  16%|██████▌                                   |  ETA: 0:00:27
Sampling  16%|██████▊                                   |  ETA: 0:00:26
Sampling  17%|███████                                   |  ETA: 0:00:25
Sampling  17%|███████▏                                  |  ETA: 0:00:24
Sampling  18%|███████▍                                  |  ETA: 0:00:23
Sampling  18%|███████▌                                  |  ETA: 0:00:23
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:16
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:09
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:07
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:06
Sampling  46%|███████████████████▍                      |  ETA: 0:00:06
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:05
Sampling  51%|█████████████████████▎                    |  ETA: 0:00:05
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:04
Sampling  56%|███████████████████████▌                  |  ETA: 0:00:04
Sampling  57%|███████████████████████▊                  |  ETA: 0:00:04
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:03
Sampling  63%|██████████████████████████▎               |  ETA: 0:00:03
Sampling  63%|██████████████████████████▌               |  ETA: 0:00:03
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:02
Sampling  70%|█████████████████████████████▍            |  ETA: 0:00:02
Sampling  71%|█████████████████████████████▋            |  ETA: 0:00:02
Sampling  71%|█████████████████████████████▉            |  ETA: 0:00:02
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:01
Sampling  80%|█████████████████████████████████▋        |  ETA: 0:00:01
Sampling  81%|█████████████████████████████████▉        |  ETA: 0:00:01
Sampling  81%|██████████████████████████████████        |  ETA: 0:00:01
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:00
Sampling  93%|███████████████████████████████████████   |  ETA: 0:00:00
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:06
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