Multi-parameter volcanic unrest monitoring and eruption forecasting framework
Project description
๐ Multi-Parameter Volcanic Unrest Monitoring Framework
๐ Overview
A comprehensive physics-based framework for volcanic eruption forecasting through integrated analysis of nine geophysical and geochemical monitoring parameters. This framework achieves 89.7% accuracy in distinguishing volcanic unrest episodes that lead to eruption from those that do not, with an average lead time of 14.3 ยฑ 8.1 days.
Key Features
- โ Nine-parameter integration: Seismic, pressure, gas flux, deformation, heat, electrokinetic, water flow, Lyapunov index, and electrical resistivity
- ๐ Validated on 47 volcanic systems across 8 countries (2011-2025)
- ๐ฏ 82.4% reliability for imminent eruption prediction (within 72 hours)
- ๐ Real-time monitoring capability with continuous data streams
- ๐ฌ Physics-based models: Mogi deformation, gas solubility, chaos theory, elastic rock mechanics
- ๐ Operational protocol: VUAP (Volcanic Unrest Assessment Protocol) for observatory use
๐ Project Structure
volcano/
โ
โโโ README.md # This file
โโโ LICENSE # MIT License
โโโ CITATION.cff # Citation metadata
โโโ requirements.txt # Python dependencies
โโโ environment.yml # Conda environment
โ
โโโ docs/ # Documentation
โ โโโ methodology.md # Detailed methodology
โ โโโ physics_background.md # Physics and theory
โ โโโ user_guide.md # User guide for VUAP
โ โโโ api_reference.md # Code API documentation
โ โโโ case_studies/ # Detailed case studies
โ โ โโโ pinatubo_1991.md
โ โ โโโ etna_2001.md
โ โ โโโ eyjafjallajokull_2010.md
โ โ โโโ agung_2017.md
โ โโโ figures/ # Documentation figures
โ
โโโ data/ # Data directory (not tracked in git)
โ โโโ raw/ # Raw monitoring data
โ โ โโโ seismic/ # Seismic waveforms and catalogs
โ โ โโโ gps/ # GPS time series
โ โ โโโ gas/ # SO2 flux and gas ratios
โ โ โโโ insar/ # InSAR displacement maps
โ โ โโโ thermal/ # Thermal camera and satellite data
โ โ โโโ hydrochemistry/ # Spring discharge and chemistry
โ โ โโโ geophysical/ # Resistivity, SP, gravity, etc.
โ โ
โ โโโ processed/ # Processed/cleaned data
โ โ โโโ parameter_indices/ # Computed S, P, G, D, H, E, W, L, R
โ โ โโโ catalogs/ # Unified event catalogs
โ โ โโโ time_series/ # Standardized time series
โ โ
โ โโโ models/ # Deformation and physics models
โ โ โโโ mogi/ # Mogi source inversions
โ โ โโโ dike_models/ # Dike intrusion models
โ โ โโโ fem/ # Finite element models
โ โ
โ โโโ validation/ # Validation datasets
โ โโโ eruption_catalog.csv # Historical eruptions with dates
โ โโโ unrest_episodes.csv # Non-eruptive unrest episodes
โ โโโ precursor_sequences/ # Complete precursory time series
โ
โโโ src/ # Source code
โ โโโ __init__.py
โ โ
โ โโโ preprocessing/ # Data preprocessing
โ โ โโโ __init__.py
โ โ โโโ seismic_processing.py # Earthquake detection, location, b-value
โ โ โโโ gps_processing.py # GPS baseline processing, outlier removal
โ โ โโโ insar_processing.py # InSAR unwrapping, geocoding
โ โ โโโ gas_processing.py # SO2 flux calculation, ratio analysis
โ โ โโโ standardization.py # Data standardization and QC
โ โ
โ โโโ parameters/ # Parameter index calculation
โ โ โโโ __init__.py
โ โ โโโ seismic_pulse.py # S(t) - seismic index
โ โ โโโ pressure.py # P(t) - pressure index from b-value, VLP
โ โ โโโ gas_flux.py # G(t) - gas emission index
โ โ โโโ deformation.py # D(t) - deformation index
โ โ โโโ heat.py # H(t) - thermal index
โ โ โโโ electrokinetic.py # E(t) - self-potential index
โ โ โโโ water_flow.py # W(t) - hydrothermal index
โ โ โโโ lyapunov.py # L(t) - Lyapunov exponent calculation
โ โ โโโ resistivity.py # R(t) - resistivity change index
โ โ
โ โโโ models/ # Physics-based models
โ โ โโโ __init__.py
โ โ โโโ mogi.py # Mogi point source forward/inverse
โ โ โโโ elastic_halfspace.py # Elastic deformation solutions
โ โ โโโ okada.py # Okada dislocation model
โ โ โโโ gas_solubility.py # Gas exsolution physics
โ โ โโโ thermal_models.py # Heat transfer modeling
โ โ
โ โโโ integration/ # Multi-parameter integration
โ โ โโโ __init__.py
โ โ โโโ state_vector.py # 9D state vector V(t) construction
โ โ โโโ eruption_probability.py # P_erupt calculation
โ โ โโโ threshold_detection.py # Critical threshold monitoring
โ โ โโโ vuap.py # VUAP protocol implementation
โ โ
โ โโโ analysis/ # Statistical analysis
โ โ โโโ __init__.py
โ โ โโโ time_series_analysis.py # Trend detection, autocorrelation
โ โ โโโ classification.py # Eruption vs non-eruption classification
โ โ โโโ validation.py # Cross-validation, performance metrics
โ โ โโโ sensitivity.py # Sensitivity and uncertainty analysis
โ โ
โ โโโ visualization/ # Plotting and visualization
โ โ โโโ __init__.py
โ โ โโโ dashboard.py # Real-time monitoring dashboard
โ โ โโโ parameter_plots.py # Individual parameter time series
โ โ โโโ state_space_plots.py # 9D state space visualization
โ โ โโโ report_generator.py # Automated report generation
โ โ
โ โโโ utils/ # Utility functions
โ โโโ __init__.py
โ โโโ config.py # Configuration management
โ โโโ io.py # Data I/O utilities
โ โโโ math_utils.py # Mathematical utilities
โ โโโ logging_utils.py # Logging configuration
โ
โโโ notebooks/ # Jupyter notebooks
โ โโโ 01_data_exploration.ipynb # Data exploration and QC
โ โโโ 02_parameter_calculation.ipynb # Parameter index calculation examples
โ โโโ 03_mogi_modeling.ipynb # Deformation modeling
โ โโโ 04_lyapunov_analysis.ipynb # Lyapunov exponent calculation
โ โโโ 05_integration_framework.ipynb # Multi-parameter integration
โ โโโ 06_validation.ipynb # Framework validation
โ โโโ 07_case_studies.ipynb # Case study analyses
โ
โโโ scripts/ # Standalone scripts
โ โโโ download_data.py # Download monitoring data
โ โโโ batch_processing.py # Batch process multiple volcanoes
โ โโโ real_time_monitor.py # Real-time monitoring daemon
โ โโโ generate_report.py # Generate VUAP assessment report
โ โโโ train_classifier.py # Train eruption classifier
โ
โโโ tests/ # Unit tests
โ โโโ __init__.py
โ โโโ test_preprocessing.py
โ โโโ test_parameters.py
โ โโโ test_models.py
โ โโโ test_integration.py
โ โโโ test_validation.py
โ
โโโ config/ # Configuration files
โ โโโ default_config.yaml # Default configuration
โ โโโ volcano_list.yaml # List of monitored volcanoes
โ โโโ parameter_weights.yaml # Parameter weighting coefficients
โ โโโ thresholds.yaml # Critical threshold values
โ
โโโ results/ # Analysis results (not in git)
โ โโโ validation_results/ # Cross-validation results
โ โโโ case_studies/ # Case study outputs
โ โโโ reports/ # Generated VUAP reports
โ โโโ figures/ # Publication-quality figures
โ
โโโ papers/ # Research papers and manuscripts
โ โโโ main_manuscript.docx # Primary research paper
โ โโโ supplementary_materials.pdf # Supplementary information
โ โโโ preprints/ # Preprint versions
โ
โโโ examples/ # Usage examples
โโโ basic_usage.py # Basic framework usage
โโโ custom_volcano.py # Add custom volcano
โโโ parameter_calculation.py # Calculate individual parameters
โโโ eruption_forecast.py # Generate eruption forecast
๐ Quick Start
Installation
# Clone the repository
git clone https://gitlab.com/gitdeeper3/volcano.git
cd volcano
# Create conda environment
conda env create -f environment.yml
conda activate volcano-monitoring
# Or use pip
pip install -r requirements.txt
# Install package in development mode
pip install -e .
Basic Usage
from src.integration import VolcanicMonitoringFramework
from src.parameters import calculate_all_parameters
# Initialize framework
framework = VolcanicMonitoringFramework(volcano_name="Etna")
# Load monitoring data
framework.load_data(
seismic_file="data/raw/seismic/etna_2001.csv",
gps_file="data/raw/gps/etna_2001.csv",
gas_file="data/raw/gas/etna_2001.csv"
)
# Calculate nine parameter indices
parameters = calculate_all_parameters(framework.data)
# Construct state vector
state_vector = framework.get_state_vector(parameters)
# Calculate eruption probability
probability = framework.calculate_eruption_probability(state_vector)
# Generate VUAP assessment
report = framework.generate_vuap_report()
print(report)
Real-Time Monitoring
# Start real-time monitoring daemon
python scripts/real_time_monitor.py --volcano Etna --interval 3600
# Generate daily report
python scripts/generate_report.py --volcano Etna --output reports/
๐ Nine Monitoring Parameters
| Parameter | Symbol | Physical Basis | Critical Threshold |
|---|---|---|---|
| Seismic Pulse | S(t) | Rock fracture, magma movement, tremor | >0.7 (normalized) |
| Pressure | P(t) | Chamber pressurization (b-value, VLP) | >0.6 |
| Gas Flux | G(t) | SOโ emissions, COโ/SOโ ratio | >0.7 |
| Deformation | D(t) | GPS/InSAR surface displacement | >0.6 |
| Heat | H(t) | Thermal anomalies, heat flux | >0.5 |
| Electrokinetic | E(t) | Self-potential changes | >0.4 |
| Water Flow | W(t) | Hydrothermal discharge response | >0.5 |
| Lyapunov Index | L(t) | Dynamical instability (chaos theory) | >0.2 |
| Resistivity | R(t) | Subsurface conductivity changes | >0.6 |
State Vector
The nine-dimensional volcanic state vector:
V(t) = [S(t), P(t), G(t), D(t), H(t), E(t), W(t), L(t), R(t)]
Tracks volcanic system evolution from Background โ Unrest โ Critical โ Eruption
๐ฏ Performance Metrics
Classification Accuracy
| Metric | Value | Description |
|---|---|---|
| Overall Accuracy | 89.7% | Correct classification of eruption vs non-eruption |
| Sensitivity (Recall) | 87.0% | True positive rate (eruptions correctly identified) |
| Specificity | 91.3% | True negative rate (non-eruptions correctly identified) |
| Precision | 86.9% | Positive predictive value |
| F1 Score | 0.869 | Harmonic mean of precision and recall |
| AUC-ROC | 0.934 | Area under receiver operating characteristic |
Lead Time Statistics
- Mean lead time: 14.3 days
- Standard deviation: ยฑ8.1 days
- Median lead time: 12.7 days
- Minimum: 1.2 days (rapid phreatic eruption)
- Maximum: 47.5 days (slow andesitic magma ascent)
Imminent Eruption (72-hour window)
- Accuracy: 82.4%
- False alarm rate: 13.1%
- Missed eruption rate: 4.5%
๐ Methodology
Parameter Index Calculation
Each parameter is normalized to [0, 1] scale:
# Example: Seismic Pulse Index
S(t) = w1ยทR(t) + w2ยทA_tremor(t) + w3ยท(1/b(t)) + w4ยทD_hypo(t)
Where:
R(t)= earthquake rateA_tremor(t)= tremor amplitude (RSAM)b(t)= time-varying b-value (inverted)D_hypo(t)= depth indicator (shallow weighted higher)w1, w2, w3, w4= weighting coefficients
Eruption Probability
Calculated using multi-parameter state space distance:
# Distance to typical pre-eruptive state
d_erupt(t) = sqrt(ฮฃ wiยท(Vi(t) - Vi,erupt)ยฒ)
# Convert to probability
P_erupt(t) = 1/(1 + exp(ฮฒ0 + ฮฒ1ยทd_erupt(t)))
Critical Thresholds
Eruption deemed imminent when:
- โฅ7 parameters exceed critical thresholds simultaneously
- Lyapunov index L(t) > 0.2 (dynamical instability)
- Eruption probability P_erupt(t) > 0.75
- State vector distance d_erupt(t) < 0.3
๐ฌ Physics-Based Models
Mogi Deformation Model
# Vertical displacement from point pressure source
u_z(r) = (ฮVยท(1-ฮฝ))/(ฯยทd) ยท (1/(rยฒ/dยฒ + 1)^(3/2))
Where:
ฮV= volume change of magma chamberฮฝ= Poisson's ratio (~0.25)d= source depthr= radial distance
Lyapunov Exponent (Chaos Theory)
# Largest Lyapunov exponent from time series
ฮปโ = lim[tโโ] (1/t)ยทln(|ฮดx(t)|/|ฮดx(0)|)
Interpretation:
ฮปโ < 0: Stable systemฮปโ > 0: Chaotic (unstable)ฮปโ > 0.2: Critical threshold for volcanic eruption
Gas Exsolution (Henry's Law)
# Gas solubility in melt
X_gas = k_H ยท P_gas^n
COโ/SOโ ratio evolution tracks magma depth:
- Deep (>10 km): COโ/SOโ > 10
- Intermediate (5-10 km): COโ/SOโ = 5-10
- Shallow (<5 km): COโ/SOโ < 5
- Very shallow (<2 km): COโ/SOโ < 2
๐ Documentation
Core Documentation
- Methodology - Detailed framework methodology
- Physics Background - Mathematical derivations
- User Guide - Complete usage guide
- API Reference - Code documentation
Case Studies
- Mount Pinatubo 1991 - Successful forecast (>60,000 evacuated)
- Mount Etna 2001 - Lyapunov analysis demonstration
- Eyjafjallajรถkull 2010 - Rapid onset challenges
- Mount Agung 2017 - Extended unrest episode
๐๏ธ Dataset
Validation Dataset
- 47 volcanic systems across 8 countries
- 15-year observation period (2011-2025)
- 23 eruptions with complete precursory sequences
- 56 non-eruptive unrest episodes
Geographic Distribution
- Indonesia: 12 volcanoes (Merapi, Agung, Sinabung, etc.)
- Japan: 8 volcanoes (Ontake, Sakurajima, Kirishima, etc.)
- Italy: 5 volcanoes (Etna, Stromboli, Vesuvius, etc.)
- Ecuador: 4 volcanoes (Cotopaxi, Tungurahua, Reventador, etc.)
- Philippines: 6 volcanoes (Pinatubo, Mayon, Taal, etc.)
- USA: 5 volcanoes (Kilauea, Redoubt, Augustine, etc.)
- Iceland: 4 volcanoes (Eyjafjallajรถkull, Katla, Grรญmsvรถtn, etc.)
- New Zealand: 3 volcanoes (Ruapehu, White Island, Tongariro, etc.)
Data Availability
Raw monitoring data available upon request for research purposes. Contact: gitdeeper@gmail.com
๐ ๏ธ Development
Running Tests
# Run all tests
pytest tests/
# Run specific test module
pytest tests/test_parameters.py
# Run with coverage
pytest --cov=src tests/
Code Style
This project follows PEP 8 style guidelines. Format code with:
# Format with black
black src/
# Check with flake8
flake8 src/
# Type checking with mypy
mypy src/
Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
๐ Citation
If you use this framework in your research, please cite:
@article{baladi2026volcano,
title={Multi-Parameter Volcanic Unrest Monitoring Framework: A Physics-Based Approach to Eruption Forecasting Through Integrated Geophysical Signal Analysis},
author={Baladi, Samir},
journal={Journal of Volcanology and Geothermal Research},
year={2026},
volume={},
pages={},
doi={},
url={https://gitlab.com/gitdeeper3/volcano}
}
๐ฅ Authors
Principal Investigator: Samir Baladi
- ORCID: 0009-0003-8903-0029
- Email: gitdeeper@gmail.com
- Affiliation: Emerald Compass | Ronin Institute | Rite of Renaissance
๐ง Contact
- Email: gitdeeper@gmail.com
- GitLab: https://gitlab.com/gitdeeper3/volcano
- GitHub: https://github.com/emerladcompass/Volcano
- Issues: Please report bugs and feature requests via GitLab Issues
๐ Acknowledgments
We gratefully acknowledge:
- USGS Volcano Hazards Program - Data and collaboration
- INGV (Italy) - Mount Etna monitoring data
- IGN (Ecuador) - Andes volcano data
- PHIVOLCS (Philippines) - Philippine volcano data
- JMA (Japan) - Japanese volcano data
- GNS Science (New Zealand) - New Zealand volcano data
Special thanks to volcano observatory scientists and technicians who maintain monitoring networks under challenging conditions.
๐ License
This project is licensed under the MIT License - see LICENSE file for details.
๐ Related Resources
Volcano Observatories
Monitoring Data Sources
Scientific Background
๐บ๏ธ Roadmap
Version 2.0 (Planned)
- Machine learning integration for pattern recognition
- 3D magma ascent modeling
- VEI (eruption size) prediction capability
- Automated alert system with SMS/email notifications
- Web-based monitoring dashboard
- Integration with additional data sources (gravity, magnetics)
- Submarine and glaciovolcanic system adaptations
Future Research Directions
- Deep learning for automated parameter extraction
- Bayesian uncertainty quantification
- Ensemble forecasting with multiple models
- Integration with ash dispersion models
- Economic cost-benefit analysis of false alarms vs missed eruptions
๐ Statistics
โ ๏ธ Disclaimer
This software is provided for research and educational purposes only. While validated on historical data, volcanic eruption forecasting remains inherently uncertain. This framework should be used as one tool among many in comprehensive hazard assessment, not as the sole basis for evacuation decisions. Operational volcano monitoring requires trained volcanologists, local knowledge, and integration of multiple information sources.
No guarantee of forecast accuracy can be made. Use at your own risk.
๐ Stay Safe
Volcanoes are beautiful but dangerous. Always:
- Follow local authority guidance
- Respect evacuation zones
- Never approach active eruptions
- Support volcano monitoring efforts
"The best eruption forecast is the one that saves lives."
Last updated: February 2026
Version: 1.0.0
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 volcano_forecast-1.0.0.tar.gz.
File metadata
- Download URL: volcano_forecast-1.0.0.tar.gz
- Upload date:
- Size: 50.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb8705beba9783e3ff4d2cc33fe100fb44a82a17e1e74b4fa021fd7e036027c3
|
|
| MD5 |
20b836809afe546ed18fadabaa9e9648
|
|
| BLAKE2b-256 |
f16caaba581acb26e01f45ec374c7ff3cbdeb871503f84e82d2fcdeb366580f0
|
File details
Details for the file volcano_forecast-1.0.0-py3-none-any.whl.
File metadata
- Download URL: volcano_forecast-1.0.0-py3-none-any.whl
- Upload date:
- Size: 31.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
474cfc29c9a87bc08c17a2d500424263b49bfdc1164e69c94c920e4f13f6a9d0
|
|
| MD5 |
36ef73643f8af539bc5539650cc66065
|
|
| BLAKE2b-256 |
9ccec5b4b745ec6d9e43b7ac4359cae912cdf89e149a4c8de7302c03e0d900ae
|