Access volcano monitoring data.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aitana-0.2.0.tar.gz.
File metadata
- Download URL: aitana-0.2.0.tar.gz
- Upload date:
- Size: 420.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e6498d09e7e6021506d5558c4baa1c9acf36404343c5bba17f0cbe1d41c7d7e
|
|
| MD5 |
cfc4165e0780356b29a8d52b33132efe
|
|
| BLAKE2b-256 |
20ca6d16c5833b136e61f741021c01c17897930673bb4604221245ad743b3923
|
File details
Details for the file aitana-0.2.0-py3-none-any.whl.
File metadata
- Download URL: aitana-0.2.0-py3-none-any.whl
- Upload date:
- Size: 426.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
225180842e5f16242c5b12c74b75f059e965ba792d54459f10755245549c43b2
|
|
| MD5 |
4bd8d98896f05ad6b14a8d43484745b0
|
|
| BLAKE2b-256 |
60796e4de2476ff88c94109cd8fcc66a985eaa6a9b22948eb529b1f48b007d91
|