Bayesian Erosion Modeling for inversion of detrital Low-Temperature Thermochronometric ages
Published:
In Borgohain et al. (2025), 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 ( ANIDT4)
- Details about code options (Will be uploaded soon).
- Details about code modification for Borgohain et al. (2025) (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:
datadetrital_ui.
- The simulation is carried out in Ubuntu 20.04.6 LTS, 64 bits.
- Conda environment was created (for example
py2) and activated. - In
py2environment, 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::kabukicode 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
dataanddetrital_ui. - Upload two input data files in
datafolder of ANIDT4- Age file
.csvin 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
.xyzin 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_uifolder of downloaded file , and then paste these in ANIDT4’sdetrital_uifolder. 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.pyand then clickenter
Output files
Done, the model output contains:
- Simulated age-elevation plot, a
.pngfile (summary.png) - Goodness of fit test plot, a
.pngfile (KS_test.png) - A
.csvfile (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_uifolder 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.xyzcatchment_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.csvsample_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
0to3mm/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.pyfile, 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 60Ma for ANIDT4 sample. This prior can be assigned from minimum and maximum ages of the measured age distribution of ANIDT4 sample. Inmodel_setup.pyfile, 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.pyfile, 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=1for the one-break scenario refers to one discrete change in erosion rates through time, andbreak=2for 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 60Ma
- 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., (2025). Spatial-Temporal Variation in Erosion Rate of Lohit Bomi-Chayu Batholith around Eastern Himalayan Syntaxis (SE of Namche Barwa massif), Tectonics, 44, e2024TC008507, https://doi.org/10.1029/2024TC008507