Aitana: volcano monitoring benchmarking framework
Aitana (named after the great football midfielder Aitana Bonmati) is a Python library intended as a prototype implementation of a validation and benchmarking framework for AI/ML in volcano monitoring.
Operational uptake of machine learning in volcano observatories remains limited because of three structural problems: no community-accepted benchmark datasets, poor reproducibility, and insufficient uncertainty quantification. Aitana is a prototype addressing these gaps.
What is implemented
- Data access — time-series data from three New Zealand volcanoes (Ruapehu, Whakaari/White Island, Taupo) via the GeoNet TILDE API and WFS, with transparent disk caching and incremental date-range updates.
- Pre-processing — RSAM access for Ruapehu and Whakaari; seismic waveform retrieval,
validation, gap-filling, and instrument response removal (
seismic_waveforms.py); moving-window earthquake rate and gradient estimation (util.py). - Evaluation — ROC curves, threshold evaluation (TP/FP/TN/FN), and forecasted-rate
computation with pre-eruption windows (
scoring.py). - State-space models — Kalman-filter models for multi-sensor SO2 fusion and
trend estimation (
assimilate.py). - Benchmarking CLI —
volcanobenchdrives Snakemake workflows for end-to-end benchmarking (download → feature extraction → model training → forecast scoring). One workflow is bundled: a Bayesian network vs decision tree benchmark for Whakaari/White Island.
What is planned / in progress
- Shared implementations of DSAR, spectrograms, and swarm detection.
- Temporal cross-validation schemes.
- Proper scoring rules (log-likelihood, CRPS, reliability diagrams).
- Containerised or environment-locked pipelines (Docker / Apptainer / pixi).
- Semantic versioning of datasets and evaluation protocols.
- Integration with community tools (SeisBench, WOVOdat formats).
Dependencies
- pandas, requests, matplotlib, statsmodels
- obspy (seismic waveform processing)
- snakemake (workflow execution)
- tonik
Installation
pip install -U aitana
Documentation
Learn more in the official documentation.
Try out a Jupyter notebook.
volcanobench CLI
The volcanobench command drives Snakemake benchmarking workflows bundled with Aitana
or registered by third-party packages via the volcanobench.workflows entry-point group.
Commands
| Command | Description |
|---|---|
volcanobench list |
List all registered workflows (name, volcano, description). |
volcanobench run <volcano> <outdir> |
Run every registered workflow for a volcano. |
volcanobench clean <volcano> <outdir> |
Delete all outputs produced by the workflow. |
volcanobench run accepts --cores N (default 1) to control Snakemake parallelism.
Examples
# See what workflows are available
volcanobench list
# Run the Whakaari Bayesian-network benchmark, writing results to ./results
volcanobench run whakaari ./results
# Run with 4 parallel cores
volcanobench run whakaari ./results --cores 4
# Remove all outputs
volcanobench clean whakaari ./results
Bundled workflows
| Name | Volcano | Description |
|---|---|---|
egu2026 |
whakaari | Bayesian network vs decision tree benchmark for Whakaari/White Island (EGU 2026) |
Registering your own workflow
Any Python package can register a workflow by exposing a WorkflowDescriptor instance
under the volcanobench.workflows entry-point group:
# pyproject.toml
[project.entry-points."volcanobench.workflows"]
my_workflow = "my_package.workflows:my_workflow"
# my_package/workflows.py
from pathlib import Path
from aitana import WorkflowDescriptor
my_workflow = WorkflowDescriptor(
name="my_workflow",
volcano="ruapehu",
description="My custom eruption forecast model",
workflowdir=Path(__file__).parent / "snakemake",
outputs={
"forecast": "results/forecasts.nc",
},
)
The workflow directory must contain a Snakefile. Aitana copies it into outdir before
execution, so the original is never modified.
Get in touch
Report bugs, suggest features, view the source code, and ask questions on GitHub.
Release files for aitana 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aitana-0.2.0.tar.gz | 420.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aitana-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 846.9 kB
Release files / aitana-0.2.0.tar.gz
| Download URL | aitana-0.2.0.tar.gz |
|---|---|
| Size | 420.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e6498d09e7e6021506d5558c4baa1c9acf36404343c5bba17f0cbe1d41c7d7e
|
|
BLAKE2b-256 checksum How to use checksums |
20ca6d16c5833b136e61f741021c01c17897930673bb4604221245ad743b3923
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / aitana-0.2.0-py3-none-any.whl
| Download URL | aitana-0.2.0-py3-none-any.whl |
|---|---|
| Size | 426.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
225180842e5f16242c5b12c74b75f059e965ba792d54459f10755245549c43b2
|
|
BLAKE2b-256 checksum How to use checksums |
60796e4de2476ff88c94109cd8fcc66a985eaa6a9b22948eb529b1f48b007d91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|