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.12 seconds
Compute duration  = 8.12 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.3356    9.6382    0.5054   367.6093   646.7308    0.9990   ⋯
                                                                1 column omitted

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

   m0[:T][1]   981.2187   993.6542   1000.4107   1006.9460   1019.6952
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.94 seconds
Compute duration  = 5.94 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]   1010.1813   53.4920    5.0997   106.2147   193.3005    1.0 ⋯
  m0[:Ch2o_ol][1]     99.1010   28.5236    2.8731    96.0001   102.0039    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.6088   963.4604   1006.8675   1049.3010   1112.1988
  m0[:Ch2o_ol][1]    53.1164    75.7607     98.2167    123.3631    147.9431
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.8 seconds
Compute duration  = 7.8 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.1520    0.0274    0.0022   141.3522    93.7814    0.99 ⋯
       m0[:T][1]   1617.2052   25.7900    2.1920   136.6497    99.9684    0.99 ⋯
  m0[:Ch2o_m][1]    100.9552   28.3087    2.1027   170.0038   186.5376    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.1062      0.1287      0.1526      0.1768      0.1959
       m0[:T][1]   1579.5792   1594.4144   1613.4405   1637.8417   1665.1622
  m0[:Ch2o_m][1]     53.3138     76.0117    100.2298    125.1963    147.2592
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     = 7.93 seconds
Compute duration  = 7.93 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.4037    7.3635    0.2297   1026.2756   729.8951    1.0029  ⋯
   m0[:ϕ][1]      0.1001    0.0050    0.0002   1000.9804   698.9634    1.0005  ⋯
                                                                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.8647   1268.4511   1273.4346   1278.2173   1287.8642
   m0[:ϕ][1]      0.0903      0.0967      0.1000      0.1034      0.1094
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:38
Sampling   1%|▍                                         |  ETA: 0:00:19
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:05
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:00
Sampling  30%|████████████▍                             |  ETA: 0:00:00
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:01
Sampling   1%|▍                                         |  ETA: 0:06:57
Sampling   2%|▋                                         |  ETA: 0:04:32
Sampling   2%|▉                                         |  ETA: 0:03:28
Sampling   3%|█▏                                        |  ETA: 0:02:44
Sampling   3%|█▎                                        |  ETA: 0:02:18
Sampling   4%|█▌                                        |  ETA: 0:01:57
Sampling   4%|█▋                                        |  ETA: 0:01:43
Sampling   5%|█▉                                        |  ETA: 0:01:31
Sampling   5%|██▏                                       |  ETA: 0:01:22
Sampling   6%|██▍                                       |  ETA: 0:01:15
Sampling   6%|██▌                                       |  ETA: 0:01:09
Sampling   7%|██▊                                       |  ETA: 0:01:03
Sampling   7%|███                                       |  ETA: 0:00:59
Sampling   8%|███▏                                      |  ETA: 0:00:55
Sampling   8%|███▍                                      |  ETA: 0:00:51
Sampling   9%|███▋                                      |  ETA: 0:00:48
Sampling   9%|███▊                                      |  ETA: 0:00:45
Sampling  10%|████                                      |  ETA: 0:00:43
Sampling  10%|████▎                                     |  ETA: 0:00:41
Sampling  11%|████▍                                     |  ETA: 0:00:39
Sampling  11%|████▋                                     |  ETA: 0:00:37
Sampling  12%|████▉                                     |  ETA: 0:00:35
Sampling  12%|█████                                     |  ETA: 0:00:34
Sampling  13%|█████▎                                    |  ETA: 0:00:32
Sampling  13%|█████▌                                    |  ETA: 0:00:31
Sampling  14%|█████▋                                    |  ETA: 0:00:30
Sampling  14%|█████▉                                    |  ETA: 0:00:28
Sampling  15%|██████▏                                   |  ETA: 0:00:27
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:23
Sampling  18%|███████▍                                  |  ETA: 0:00:22
Sampling  18%|███████▌                                  |  ETA: 0:00:22
Sampling  19%|███████▊                                  |  ETA: 0:00:21
Sampling  19%|████████                                  |  ETA: 0:00:20
Sampling  20%|████████▎                                 |  ETA: 0:00:20
Sampling  20%|████████▍                                 |  ETA: 0:00:19
Sampling  21%|████████▋                                 |  ETA: 0:00:19
Sampling  21%|████████▉                                 |  ETA: 0:00:18
Sampling  22%|█████████                                 |  ETA: 0:00:18
Sampling  22%|█████████▎                                |  ETA: 0:00:17
Sampling  23%|█████████▌                                |  ETA: 0:00:17
Sampling  23%|█████████▋                                |  ETA: 0:00:16
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:14
Sampling  26%|██████████▉                               |  ETA: 0:00:14
Sampling  27%|███████████▏                              |  ETA: 0:00:14
Sampling  27%|███████████▍                              |  ETA: 0:00:13
Sampling  28%|███████████▋                              |  ETA: 0:00:13
Sampling  28%|███████████▊                              |  ETA: 0:00:13
Sampling  29%|████████████                              |  ETA: 0:00:13
Sampling  29%|████████████▏                             |  ETA: 0:00:12
Sampling  30%|████████████▍                             |  ETA: 0:00:12
Sampling  30%|████████████▋                             |  ETA: 0:00:12
Sampling  31%|████████████▉                             |  ETA: 0:00:11
Sampling  31%|█████████████                             |  ETA: 0:00:11
Sampling  32%|█████████████▎                            |  ETA: 0:00:11
Sampling  32%|█████████████▌                            |  ETA: 0:00:11
Sampling  33%|█████████████▋                            |  ETA: 0:00:11
Sampling  33%|█████████████▉                            |  ETA: 0:00:10
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:09
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:08
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:07
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:06
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:05
Sampling  56%|███████████████████████▌                  |  ETA: 0:00:05
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:04
Sampling  63%|██████████████████████████▎               |  ETA: 0:00:04
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: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: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: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