Bayesian Erosion Modeling for inversion of detrital Low-Temperature Thermochronometric ages
Published:
Borgohain et al. 2024 (under review in Tectonics), which utilizes a Bayesian erosion model developed by Avdeev et al. (2011), demonstrate the results of Bayesian erosion modeling for estimating erosion history from detrital fission-track thermochronometric ages.
The following documentation describes:
- Overview of running the Bayesian erosion model of Avdeev et al. (2011)
- Configuring a model for a catchment with code name ANIDT4
- Details about code options (Will be uploaded soon).
Overview of the Bayesian erosion modeling in Python
Installation and computer setup demonstrated in Borgohain et al. 2024 (under review in Tectonics)
- Original Avdeev et al. (2011) can be downloaded from a link click here. Downloaded file contains two main folders:
data
detrital_ui
.
- The simulation is carried out in Ubuntu 20.04.6 LTS, 64 bits.
- Conda environment was created (for example
py2
) and activated. - In
py2
environment, the following packages and libraries are required to run Avdeev et al. (2011) Bayesian erosion model- Python 2.7 (specifically version python=2.7.18) installed
- numpy (version 1.16.6), matplotlib (1.5.0) installed along with required libraries. Other libraries detail can be found in file called
Bayesian_detrital_env.yml
, link is here - Pymc (version - 2.3.8) installed, a link for details is here
conda install pymc::kabuki
code was used to install PyMc- Check for installation of
pymc
$ python >>> import pymc >>>
- Now all set to begin
Start…
Load input files
- Create a folder with a sample name (for example ANIDT4)
- In ANIDT4 create another two folder with name
data
anddetrital_ui
. - Upload two input data files in
data
folder of ANIDT4- Age file
.csv
in the following formate (This is detrital cooling age distribution of sample ANIDT4)27.0 13.7 11.7 14.2 9.4 6.9 . .
- DEM file
.xyz
in the following format (This is latitude-x, longitude-y, elevation of catchment-z of sample colleceted from catchment called as ANIDT4).x y z 217623.033 3251932.988 5165 217653.033 3251932.988 5167 217683.033 3251932.988 5168 . . . . . .
- Age file
- Copy code files from the
detrital_ui
folder of downloaded file , and then paste these in ANIDT4’sdetrital_ui
folder. Specifically, the following files:- Python files (
.py
):common.py
,data_type.py
,model_setup.py
,plot.py
, andrun.py
- Python files (
Running a model
- Open a terminal in the folder (
detrital_ui
) of ANIDT4 containing code files (i.e., Python files) and activate the environmentpy2
- Run the Bayesian erosion model by typing
python run.py
and then clickenter
Output files
Done, the model output contains:
- Simulated age-elevation plot, a
.png
file (summary.png) - Goodness of fit test plot, a
.png
file (KS_test.png) - A
.csv
file (statistics.csv) containing:- Erosion rates (mm/yr)
e1
,e2
,e3
,… - Age of erosion rate change (Ma)
abr1
,abr2
,…
- Erosion rates (mm/yr)
…End
Configuring a model
model_setup.py
file (in detrital_ui
folder of downloaded file) is used primarily to configure the model for a sample for various erosion history scenarios (here example sample is ANIDT4). The following changes are required in model_setup.py
, this can be done by editing class and variables in the model_setup.py
:
- Assign paths of input data files
- Assign DEM file location and file name, for example, DEM file name is
ANIDT4.xyz
catchment_1 = Catchment(hypsometry_file = "../data/ANIDT4.xyz", elevation_column = 'z')
- Assign age file location, sample name, catchment data (
catchement_1
), thermochronometric type (AFT
), for example, the age file name isANIDT4.csv
sample_1 = DetritalSample(age_file = "../data/ANIDT4.csv", sample_name = 'ANIDT4', catchment = catchment_1, tc_type = 'AFT')
- Assign DEM file location and file name, for example, DEM file name is
- Priors (In Bayesian statistics, a prior is the initial beliefs and assumptions about a model’s parameters. Priors are based on existing knowledge or expert opinion, and are usually specified using probability distributions)
- First prior is the range of the erosion rate that the sample would have experienced, for example, from
0
to3
mm/yr for ANIDT4 catchment sample, here 0 is a minimum and 3 is a maximum erosion rate that a catchment ( ANIDT4) would have experienced. This is based on previous studies around the sample location, or it can be a guess. Inmodel_setup.py
file, this is coded aserate_prior = (0,3)
. - Second prior is a range of the timing of change (or changes) in erosion rates that a catchment would have experienced, for example, from
0 to 60
Ma for ANIDT4 sample. This prior can be assigned from minimum and maximum ages of the measured age distribution of ANIDT4 sample. Inmodel_setup.py
file, this is coded asabr_prior = (0,60)
.
- First prior is the range of the erosion rate that the sample would have experienced, for example, from
- Model scenarios: such as uniform and non-uniform erosion history scenarios. This is modeled by assigning the number of breaks in the model. In
model_setup.py
file, this is coded asbreak =...
.- Uniform erosion rate scenarios: In the uniform erosion history scenario, the break will be zero, i.e.,
break = 0
, which refers to uniform erosion rates through time or no change in erosion rates throughout the time. - Non-uniform erosion rate scenario (
break=1,2
), which refers to variation in erosion rates through time. Here,break=1
for the one-break scenario refers to one discrete change in erosion rates through time, andbreak=2
for the two-break refers to two discrete changes in erosion rate through time. Note the change can happen any time (break=1
) or any number of times (break=2
) between the assigned time range of change in erosion rates, here, for example between0 to 60
Ma
- Uniform erosion rate scenarios: In the uniform erosion history scenario, the break will be zero, i.e.,
- The best model scenario (whether
break=0
[zero-break],break=1
[one-break], orbreak=2
[two-break]) is evaluated by comparing the cumulative probability distribution of modeled ages and measured ages using a goodness-of-fit (GOF) plot that displays the results of Kolmogorov-Smirnov (KS) test. An overlap of these two data suites indicates an acceptable model fit. For example, the plot below displays a degree of overlap between simulated ages and measured ages; it is shown using the cumulative probability plots of measured AFT (orange dots) and swaths of modeled (or simulated) AFT (blue) ages. Here (the bottom three subplots) show p-values for zero break, one break, and two breaks models. The p-value is used to select the best model; it refers to the probability of getting model results close to observed results and the acceptable fitting criteria considered here is p >0.05. One-break model displays a better p-value (0.35) compared to the zero-break model (0.02) and the two-break model (0.22), indicating that statistical inference supports a single discrete change in erosion history. This suggests that erosion rates in catchment ANIDT4 shifted significantly around ~6.3 Ma, transitioning from initially slow (e2 = 0.07 mm/yr) to later rapid rates (0.6 mm/yr).
Three model scenarios: zero-break
, one-break
, and two-break
for a detrital AFT age distribution from a catchment ANIDT4
Example displaying modeled cooling history using Bayesian erosion model.
References
Avdeev, B., Niemi, N. A., & Clark, M. K. (2011). Doing more with less: Bayesian estimation of erosion models with detrital thermochronometric data. Earth and Planetary Science Letters, 305(3–4), 385–395. https://doi.org/10.1016/j.epsl.2011.03.020
Borgohain, B., Mathew, G., Salvi, D., Harbola, D., Rai, P., (2024). Spatial-Temporal Variation in Erosion Rate of Lohit Bomi-Chayu Batholith around Eastern Himalayan Syntaxis (SE of Namche Barwa massif), (Under Review in Tectonics)