Install
IBIS release 0.3.2 supports Python 3.12, 3.13 and 3.14. Python 3.14 is recommended for a fresh installation.
Create a virtual environment using a supported Python interpreter. The examples below use Python 3.14.
On macOS or Linux:
python3.14 -m venv .venv
source .venv/bin/activate
On Windows, in PowerShell:
py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1
If python3.14 is not on your Mac's PATH after using the standard python.org installer, create the environment with:
/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14 -m venv .venv
source .venv/bin/activate
With the environment active, install IBIS:
python -m pip install --upgrade pip
python -m pip install ibis-uth
python -m pip check
Jupyter notebooks
Install the optional notebook dependencies in the same environment:
python -m pip install "ibis-uth[notebook]"
python -m ipykernel install --user --name ibis-uth --display-name "Python (IBIS U-Th)"
python -m jupyterlab
Open your notebook and select Kernel > Change Kernel > Python (IBIS U-Th). Confirm that it uses the intended environment:
import sys
print(sys.executable)
Update to the latest package
Activate your IBIS environment, then run:
python -m pip install --upgrade ibis-uth
python -m pip check
For an installation with notebook support:
python -m pip install --upgrade "ibis-uth[notebook]"
python -m pip check
Restart your notebook kernel after an update.
Dependencies
Runtime dependencies are declared in pyproject.toml: NumPy, pandas, SciPy, scikit-learn, Matplotlib, Tqdm, Joblib, Dill and OpenPyXL. Pip installs these libraries and their dependencies automatically.
requirements.txt installs the local project using those same declarations. The optional notebook extra supplies IPykernel and JupyterLab; the dev extra supplies build and Twine. This keeps package installation and the requirements files consistent.
To install a local checkout, run from the directory containing pyproject.toml:
python -m pip install -e ".[notebook,dev]"
python -m pip check
Import
import ibis
from ibis.IBIS_Main import IBIS
IBIS
IBIS is a probabilisitc Bayesian model to infer unique sample-specific initial thorium compositions estaimtes thoughtout a speleothem and "correct" apparent U—Th ages accordingly.
Why does this matter?
- Ultimately the precision and accuracy of the U—Th method is dependent on this correction.
- Correction can bias ages dramatically, in particular for "dirtier" samples higher thorium content - low measured $^{230}$Th/$^{232}$Th activity ratios and also young samples with a lower "true" $^{230}$Th radiogenic budget.
Age Equation
$$ \Delta_{\lambda} = \lambda_{230} - \lambda_{234}$$
$$ \bigg[\bigg(\frac{^{230}Th}{^{238}U}\bigg)A - \bigg(\frac{^{232}Th}{^{238}U}\bigg)A \bigg(\frac{^{230}Th}{^{232}Th}\bigg){A0} e^{-\lambda{230}t}\bigg]= 1 - e^{-\lambda_{230}t} + \bigg[ \bigg( \frac{^{234}U}{^{238}U}\bigg){A} - 1\bigg]\frac{\lambda{230}}{\Delta_{\lambda}}(1 - e^{-\Delta_{\lambda}t})$$
- $\lambda_{230}$ - 230Th decay constant
- $\lambda_{234}$ - 234U decay constant
- $\bigg(\frac{^{230}Th}{^{238}U}\bigg)_A$ - measured activity ratio of 230Th to 238U
- $\bigg(\frac{^{232}Th}{^{238}U}\bigg)_A$ - measured activity ratio of 232Th to 238U
- $\bigg(\frac{^{234}U}{^{238}U}\bigg)_A$ - measured activity ratio of 234U to 238U
- $\bigg(\frac{^{230}Th}{^{232}Th}\bigg)_{A0}$ - estimate initial activity ratio at the time of formation/deposition/crystallization
A U-Th age requires the initial thorium $\bigg(\frac{^{230}Th}{^{232}Th}\bigg)_{A0}$ correction. In the age equation you need to guess a value for this component at the time of deposition and then it is brought forward in time to the present day. This present day initial is then used to correct the present day measured activity ratios.
Fixed vs. variable correction
Common practice in U—Th dating is to use an assumed initial thorium distribution (some mean and some uncertainty) and then apply this uniformly to all samples within a given speleothem.
Bulk Earth
-- An attractive approach is to use the average U-Th content of the upper crust (Taylor and Mclennan, 1995). This gives a thorium activity ratio of 230Th/232Th = 0.83 ± 0.43 (1sigma). The value would then be used to correct all samples using the above age equation framework.
- Assumption that there is not temporal or spatial variability in $^{230}$Th/$^{232}$Th
- The upper crust is a reasonable description for all karst environments.
Hellstrom, (2006) like approach.
Another approach is to use stratigraphic constraints to determine a boutique initial thorium correction that is then used to correct all samples uniformly (Hellstrom, 2006). An extension of this to include co-evality constraints is shown by Roy-Barman and Pons-Branchu, (2010).
- Similar to Bulk-Earth this is sill a fixed appraoch in that a single distribution is constructed from the speleothem globally and this is applied throughout.
- Better than bulk-earth, as it uses the data and physical stratigraphic constraints to define a "best" global correction but does not account for the potential that the initial thorium incorporation is variable in space and time.
Isochrons
The "gold standard" approach to estimation joint age—initial thorium composition is to use an isochron. I term this "gold standard" because it is the only approach that provides a truly independent estiamte with no assumptions. That is not to say that it is always perfect and in some cases far form it. Carolin et al. (2016) provide a suite of isochrons that range in scatter showing the good, bad, and ugly of using isochrons.
- Enough sample (~ 6; this is a guess but 3 is definitely a minimum as two points always make a line and 6 feels robust but probably a better statistical way of doing this)
- Enough spread in U-Th space.
There is a secondary aspect to this in that a common practice is to measured one (e.g., Carolin et al. 2016) or multipe (e.g., Moseley et al., 2015) and then apply this correction to all samples or bracketing samples throughout the speleothem. This makes it a "fixed" correction as a single initial thorium correction distribution is applied to a series of samples so it is not truly allowed to vary throughout.
## IBIS
IBIS uses a Bayesian framework to make an unique sample-specific initial thorium correction. This approach allows initial thorium to vary spatially/temporally througout a speleothem
References
Carolin, S.A., Cobb, K.M., Lynch-Stieglitz, J., Moerman, J.W., Partin, J.W., Lejau, S., Malang, J., Clark, B., Tuen, A.A. and Adkins, J.F., 2016. Northern Borneo stalagmite records reveal West Pacific hydroclimate across MIS 5 and 6. Earth and Planetary Science Letters, 439, pp.182-193.
Hellstrom, J., 2006. U–Th dating of speleothems with high initial 230Th using stratigraphical constraint. Quaternary geochronology, 1(4), pp.289-295.
Kinsley, C.W., Carter, J.N. and Sharp, W.D., 2025. IBIS: an Integrated Bayesian approach for unique Initial thorium corrections and age-depth models in U-Th dating of Speleothems. Quaternary Science Reviews, 369, p.109626.
Moseley, G.E., Richards, D.A., Smart, P.L., Standish, C.D., Hoffmann, D.L., ten Hove, H. and Vinn, O., 2015. Early–middle Holocene relative sea-level oscillation events recorded in a submerged speleothem from the Yucatán Peninsula, Mexico. The Holocene, 25(9), pp.1511-1521.
Roy-Barman, M. and Pons-Branchu, E., 2016. Improved U–Th dating of carbonates with high initial 230Th using stratigraphical and coevality constraints. Quaternary Geochronology, 32, pp.29-39.
Taylor, S.R. and McLennan, S.M., 1995. The geochemical evolution of the continental crust. Reviews of geophysics, 33(2), pp.241-265.
Metadata
Release files for ibis-uth 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ibis_uth-0.3.2.tar.gz | 54.4 kB | Without provenance | Details for ibis_uth-0.3.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ibis_uth-0.3.2-py3-none-any.whl | Python 3 | none | any | Details for ibis_uth-0.3.2-py3-none-any.whl |
Total release size: 108.2 kB
Release files / ibis_uth-0.3.2.tar.gz
| Download URL | ibis_uth-0.3.2.tar.gz |
|---|---|
| Size | 54.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e299c0d694b1586beb76e2837d2283fb213b06b87eaec32b482eb20ff4ee7473
|
|
BLAKE2b-256 checksum How to use checksums |
956935d46c82bcf773481c7b50bb5b4a101ad5132156868d6a5108b3c1106f98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.8
|
Release files / ibis_uth-0.3.2-py3-none-any.whl
| Download URL | ibis_uth-0.3.2-py3-none-any.whl |
|---|---|
| Size | 53.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ab902f7db2f05954703f919c3ec0f0869675135c742d6f324601aaede54105f
|
|
BLAKE2b-256 checksum How to use checksums |
9a55441bde6568ab266dbbc09ba0f622a308d2044231fc9b6f574bd6a197a35c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.8
|
Security for ibis-uth 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.