GeoXplain
| GeoXplain | GeoXplain Aurora Adapter | Documentation | Live demo | Paper |
|---|---|---|---|---|
| Current repository | Aurora backend | User guide and API | Hosted viewer | Manuscript |
GeoXplain is an interactive Python-based visualization toolkit for exploring geospatial attribution maps across climate variables, atmospheric pressure layers, and forecast time. It turns computed attribution arrays, saved result bundles, targets, timestamps, vertical levels, and weather overlays into an interactive Jupyter widget or a standalone browser viewer.
The core package does not compute explanations and does not need to import your model. It is the visualization and interchange layer. Compute can happen anywhere: in your own pipeline, in a batch job, in another library, or through a backend such as the separate Aurora adapter.
Cite us
The GeoXplain preprint is available on arXiv and has been submitted to vis4climate at IEEE VIS 2026. Until the conference version is available, use the arXiv preprint:
Koprolin, C. W., Trentini, L., Soja, B., El-Assady, M., & Humer, C. (2026). GeoXplain: On-the-Fly Visual Explanations for Weather Foundation Models. arXiv:2607.05655 [cs.HC]. https://doi.org/10.48550/arXiv.2607.05655
@misc{koprolin2026geoxplainontheflyvisualexplanations,
title={GeoXplain: On-the-Fly Visual Explanations for Weather Foundation Models},
author={Clemens Walter Koprolin and Leonardo Trentini and Benedikt Soja and Mennatallah El-Assady and Christina Humer},
year={2026},
eprint={2607.05655},
archivePrefix={arXiv},
primaryClass={cs.HC},
doi={10.48550/arXiv.2607.05655},
url={https://arxiv.org/abs/2607.05655},
}
Why GeoXplain
- Inspect geospatial attributions across variables, levels, methods, and time.
- Import raw NumPy arrays,
.xia.npzattribution bundles, or compatible Python result objects. - Add weather-field overlays from
.overlay.npzbundles or compatible overlay objects. - Work inside notebooks with
GeoXplainWidgetor export a self-contained static browser view withGeoXplain. - Keep model-specific compute code out of the viewer package.
Import computed data
The most portable GeoXplain workflow is to compute explanations somewhere else
and import the result. A saved .xia.npz bundle is self-describing, so the
viewer can recover method names, timestamps, targets, layer labels, and
attribution grids without the original model package.
Quickstart: a runnable walkthrough of the snippets below, including bundle import, manual
.npyimport, and building grids from in-memory NumPy arrays, lives inexamples/quickstart.ipynb.
from geoxplain import GeoXplainWidget
from geoxplain.xia_result import load_xia_result
result = load_xia_result("zurich.xia.npz") # can be found in examples
widget = GeoXplainWidget(title="Zurich attribution", height=720) # both optional
widget.add_attribution(result)
widget
You can also add arrays directly when you already have a computed grid:
import numpy as np
from geoxplain import GeoXplainWidget
saliency = np.load("saliency_700hPa.npy")
widget = GeoXplainWidget(title="Model attribution")
widget.add_attribution(
saliency,
pressure_level=700,
method="Saliency",
timestamp="2024-03-20T00:00:00Z",
target=(46.25, 8.75),
)
widget
Weather overlays use the same idea:
from geoxplain.overlay_result import load_overlay_result
overlay = load_overlay_result("zurich.overlay.npz")
widget.add_overlay(overlay)
Compute on-the-fly with a backend
When you want GeoXplain to sit next to live explanation computation, use a
backend that produces GeoXplain-compatible results. The first packaged backend
is the separate geoxplain-aurora-adapter, which computes attributions and
weather overlays for Microsoft Aurora.
Quickstart: find a runnable walkthrough for on-the-fly computations in
examples/quickstart_on_the_fly.ipynb.
import geoxplain_aurora_adapter as ax
from geoxplain import GeoXplainWidget
target = ax.Target.point(
var="q",
level=850,
lat=46.25,
lon=8.75,
timestamp="2024-03-20T00:00:00Z",
)
result = ax.run_saliency(
target=target,
input=["t", "q"],
remote="http://localhost:8765",
)
GeoXplainWidget(result=result, height=720)
Without remote=, the adapter runs in the current Python process. With a
listener URL, the same call can dispatch work to a GPU workstation, server, or
SLURM-backed service while GeoXplain remains the viewer.
Installation
pip install geoxplain
This package is only the visualization tool; for on-the-fly computations for Microsoft Aurora, see GeoXplain Aurora Adapter.
Screenshot capture is optional:
pip install "geoxplain[screenshots]"
For local documentation and development:
uv sync --group dev
uv run mkdocs serve
Documentation
The documentation source lives in docs/ and is built with MkDocs
Material. The deployed documentation is available at clemenskoprolin.github.io/geoxplain.
Useful starting points:
- Quickstart
- Visualize results
- Data model and file formats
- Aurora backend overview
- Python API reference
Quick reference links for LLMs and tooling:
Build docs locally
uv run python docs/_tooling/generate_llm_reference.py
uv run mkdocs build --strict
License
GeoXplain is distributed under the MIT License. See LICENSE and THIRD_PARTY_NOTICES.md.
Metadata
Release files for geoxplain 1.1.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 | |
|---|---|---|---|
| geoxplain-1.1.0.tar.gz | 70.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| geoxplain-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.9 MB
Release files / geoxplain-1.1.0.tar.gz
| Download URL | geoxplain-1.1.0.tar.gz |
|---|---|
| Size | 70.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2b733f205199280550fde333b4bf978482b9aaa23a912268648d7d5d6c07e1c
|
|
BLAKE2b-256 checksum How to use checksums |
e60baca8f4ea1a6d1025e97e846e3f59ce486bb0ae5329a3b9bc9819bb4eef96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency logRelease files / geoxplain-1.1.0-py3-none-any.whl
| Download URL | geoxplain-1.1.0-py3-none-any.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
31db075d201597d2be1f6c3aaf47414ec45f577968b5b005e00cbf87d358a891
|
|
BLAKE2b-256 checksum How to use checksums |
5cb9adb67865f2e8b74bf2f8b0fbe4d2c19a7e36334491dd490f45c3803e9c53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency log