Step 7: Bayesian Fault Slip Inversion#
Danger
This examples requires the CATMIP Bayesian inversion framework which is not yet publicly available.
In this example we perform the same inversion as in Step 6, but replace the least squares inversion with the CATMIP Bayesian inversion framework. We demonstrate inverting for fault slip using both the original CATMIP algorithm (Step 7a) and the crossfade CATMIP algorithm (Step 7b).
We assume a uniform distribution with positive slip values but use a logistic (sigmoid) distribution to compute the probability. This helps prevent back slip.
Inversion using original CATMIP algorithm#
The catmip_pylith_staticslip
executable uses the original CATMIP algorithm and must be run using at least 2 processes (1 manager process and at least 1 worker process).
The model parameters for the inversion are specified in step07a_catmip.in
(general CATMIP parameters) and catmip_parameters.txt
(specific to the PyLith static slip model).
Currently, the catmip_parameters.txt
filename is hardwired in the PyLith static slip model code.
# Use 100 samples and Markov chains with a length of 50
N 100
Nsteps 50
# Use the current directory for user input and write output files as output/step07a-catmip-
data_directory .
output_directory ./output
output_prefix step07a_catmip-
# Sample parameter file for pylith_catmip model.
# Data files
filename_observations = output/step04_varslip-gps_stations.h5
filename_greens_fns = output/step05_greensfns-gps_stations.h5
# Model parameters
rake_parallel_prior = logistic
rake_parallel_prior_k = 25.0
rake_parallel_prior_min_sample_value = 0.01
rake_parallel_prior_max_sample_value = 2.0
rake_perpendicular_prior = gaussian
# For a 2D problem we only have 1 component of slip.
num_impulse_components = 1
mpiexec -n 2 catmip_pylith_staticslip step07a_catmip.in
By default, the CATMIP code will write the results of the inversion to output/step07a_catmip-*
.
The .gsl
files are raw binary files that can be read using Python.
Step 7a: Plotting the results#
If you are using the PyLith binary, which includes the matplotlib
Python module, or have it installed, then you can plot the results of the simulation using the viz/plot_catmip_results.py
Python script.
viz/plot_catmip_results.py --catmip-theta=output/step07a_catmip-theta20.bin
::{tip}
You can pass--no-gui
as a command line argument to the plotting script turn off displaying the plot window.
This is useful if you do not have a matplotlib GUI backend.
Inversion using CF-CATMIP algorithm
The cfcatmip_pylith_staticslip
executable uses the CF-CATMIP algorithm and must be run using at least 2 processes (1 manager process and at least 1 worker process).
The model parameters for the inversion are specified in step07b_cfcatmip.in
(general CATMIP parameters) and cfcatmip_parameters.txt
(specific to the PyLith static slip model).
Currently, the cfcatmip_parameters.txt
filename is hardwired in the PyLith static slip model code.
We use the same parameters for the prior distribution of model parameters.
For the conjugate posterior distribution, we use a Gaussian distribution with broad enough parameters to sample the parameter space; the CF-CATMIP algorithm is not particularly sensitive to the median and standard deviation of the conjugate posterior Gaussian distribution.
# Use 100 samples and Markov chains with a length of 50
N 100
Nsteps 50
# Use the current directory for user input and write output files as output/step07b-cfcatmip-
data_directory .
output_directory ./output
output_prefix step07b_cfcatmip-
# Sample parameter file for pylith_catmip model.
# Data files
filename_observations = output/step04_varslip-gps_stations.h5
filename_greens_fns = output/step05_greensfns-gps_stations.h5
# Model parameters
rake_parallel_prior = logistic
rake_parallel_prior_k = 25.0
rake_parallel_prior_min_sample_value = 0.01
rake_parallel_prior_max_sample_value = 2.0
rake_perpendicular_prior = gaussian
conjugate_posterior = gaussian
conjugate_posterior_median = 0.5
conjugate_posterior_stddev = 0.2
num_impulse_components = 1
mpiexec -n 2 cfcatmip_pylith_staticslip step07b_cfcatmip.in
By default, the CATMIP code will write the results of the inversion to output/step07b_catmip-*
.
The .gsl
files are raw binary files that can be read using Python.
Step 7b: Plotting the results
If you are using the PyLith binary, which includes the matplotlib
Python module, or have it installed, then you can plot the results of the simulation using the viz/plot_catmip_results.py
Python script.
viz/plot_catmip_results.py --catmip-theta=output/step07b_cfcatmip-theta1.bin