Skip to main content

Physics-guided AI for geohazards

Project description

GeoPrior logo

Physics-guided AI for Geohazards

GitHub Actions Workflow Status Read the Docs License Black PyPI - Version GitHub Release Contributions

GeoPrior-v3 is an open, reproducible research codebase for physics-guided machine learning in geohazard forecasting and risk assessment. Today, it focuses on land subsidence via GeoPriorSubsNet; next, it expands toward landslides and broader geohazard regimes.


✨ Why GeoPrior?

GeoPrior is built to answer practical scientific questions:

  • Physics-consistent forecasting — Can predictions respect governing constraints (e.g., consolidation / groundwater dynamics)?
  • Generalization across cities/regions — Can one workflow adapt to different regimes with a consistent packaging strategy?
  • Uncertainty that supports decisions — How reliable are forecast intervals, and where do risks concentrate?
  • Reproducibility — Can reviewers and researchers re-run results end-to-end (GitHub + Code Ocean)?

🔭 Scope & Roadmap

Current focus

  • Land subsidence forecasting with GeoPriorSubsNet v3.2
  • Physics residual monitoring + learned closures (e.g., effective parameters)

Planned

  • Landslide forecasting modules (susceptibility + triggers + dynamics)
  • Multi-hazard risk analytics (composable workflows and diagnostics)

📥 Installation

From PyPI (recommended)

pip install geoprior-v3

This installs GeoPrior and the scientific Python stack it depends on. Python 3.10+ is supported.

Development install (editable)

git clone https://github.com/earthai-tech/geoprior-v3.git
cd geoprior-v3
pip install -e .[dev]

The [dev] extra installs testing and tooling dependencies

(e.g., pytest, coverage, black, ruff).


⚡ Quick Start

1) Import + logging

import geoprior as gp
from geoprior.logging import get_logger, initialize_logging

initialize_logging(verbose=False)
log = get_logger(__name__)
log.info("GeoPrior logging is ready.")

2) Initialize a project config

GeoPrior now exposes a family-based CLI. The root entry point is geoprior, and dedicated shortcuts are also available for the run, build, and plot families.

geoprior-init --help
geoprior --help
geoprior-run --help
geoprior-build --help

To create nat.com/config.py interactively:

geoprior-init

3) Use the CLI families

The canonical root form is:

geoprior run <command> [args]
geoprior build <command> [args]
geoprior plot <command> [args]

Family-specific entry points avoid repeating the family name:

geoprior-run <command> [args]
geoprior-build <command> [args]
geoprior-plot <command> [args]

Examples:

geoprior run stage1-preprocess
geoprior-run stage2-train --help
geoprior build full-inputs-npz --help
geoprior-build physics-payload-npz --help
geoprior-run sm3-suite --preset tau50 --help

Compact CLI command table

Family Command Purpose
run stage1-preprocess Stage-1 preprocessing and artifact export.
run stage2-train Train the main GeoPrior model.
run stage3-tune Hyperparameter tuning workflow.
run stage4-infer Inference, evaluation, and export from trained runs.
run stage5-transfer Cross-city transfer evaluation.
run sensitivity Run physics or lambda sensitivity workflows.
run sm3-identifiability Run one SM3 synthetic identifiability experiment.
run sm3-suite Launch preset SM3 regime suites such as tau50 or both50.
run offset-diagnostics Run SM3 log-offset diagnostics.
build full-inputs-npz Merge Stage-1 split input NPZ files into one union NPZ.
build physics-payload-npz Export a physics payload NPZ from a trained model and inputs.
build external-validation-metrics Compute borehole or external validation metrics.
build external-validation-fullcity Build the full-city validation workflow end to end.
build assign-boreholes Assign validation boreholes to the nearest city cloud.
build add-zsurf-from-coords Merge elevation lookup tables and add z_surf to tabular data.
build sm3-collect-summaries Combine per-regime SM3 summary CSV files into one table.

Typical usage:

geoprior run stage1-preprocess
geoprior run stage2-train
geoprior build full-inputs-npz
geoprior-build external-validation-metrics --help
geoprior-run sm3-suite --preset tau50

4) Reproduce paper-style workflows

A typical end-to-end workflow is organized as:

  • Stage-1 preprocessing
  • Stage-2 training
  • Stage-3 tuning
  • Stage-4 inference
  • Stage-5 transfer evaluation
  • supplementary build and diagnostic commands

Example:

geoprior run stage1-preprocess
geoprior run stage2-train
geoprior run stage4-infer --help
geoprior build external-validation-metrics --help
geoprior build sm3-collect-summaries --help

🧪 Reproducibility

GeoPrior-v3 is designed for end-to-end reproducible science.

  • Stable configs via nat.com/config.py and CLI overrides
  • Deterministic pipeline stages exposed through geoprior run ...
  • Reusable artifact builders exposed through geoprior build ...
  • Capsule-friendly execution via codeocean/

If you publish results, please pin:

  • the GeoPrior version (tag / release)
  • config files used
  • CLI commands invoked
  • environment definition (e.g., environment.yml)

📚 Documentation

For detailed usage, API reference, workflow guides, and example galleries, please visit the official documentation:

geoprior-v3.readthedocs.io


💻 GeoPrior 3.0 Forecaster App

The GeoPrior research core is openly available to support reproducible scientific research.

In addition, GeoPrior includes the GeoPrior 3.0 Forecaster App, which offers a complete GUI-based application workflow built on top of the research framework. This application version is maintained separately from the public repository, which focuses on the core scientific and reproducible modules.

For access to the GeoPrior 3.0 Forecaster App, please contact the author directly.


🙌 Contributing

Contributions are welcome.

  1. Check the Issues tracker for bugs or ideas.
  2. Fork the repository.
  3. Create a new branch for your feature/fix.
  4. Add tests when applicable.
  5. Open a Pull Request.

Please see CONTRIBUTING.md for details.


📜 License

GeoPrior-v3 is distributed under the Apache License 2.0. See LICENSE and NOTICE for details.


📞 Contact & Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geoprior_v3-3.2.1.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geoprior_v3-3.2.1-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file geoprior_v3-3.2.1.tar.gz.

File metadata

  • Download URL: geoprior_v3-3.2.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for geoprior_v3-3.2.1.tar.gz
Algorithm Hash digest
SHA256 ee102ba7da18e8cb0e9e64c690c42efb6eb1efef935b37acfdf1fdd2bc1899b9
MD5 e4c4e08a2544bb0bea3532396b1b7643
BLAKE2b-256 89961795a11d85bbfbac01c7dc71474d0c69bf3365a314f14f5d465d63342a60

See more details on using hashes here.

File details

Details for the file geoprior_v3-3.2.1-py3-none-any.whl.

File metadata

  • Download URL: geoprior_v3-3.2.1-py3-none-any.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for geoprior_v3-3.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6d6f3b40ef603c390b1cd97cf6fdb035cf6b055a5f6a7dfaf530f0497dc828d1
MD5 d594654378101947051bd6decae91f2a
BLAKE2b-256 36cfe652046fbc38752d5292e3808df1cc81228b75866f3bacb55768b2af2a62

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page