Skip to main content

GeoXplain

GeoXplain GeoXplain Aurora Adapter Documentation Live demo Paper
Current repository Aurora backend User guide and API Hosted viewer Manuscript

GeoXplain header

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.npz attribution bundles, or compatible Python result objects.
  • Add weather-field overlays from .overlay.npz bundles or compatible overlay objects.
  • Work inside notebooks with GeoXplainWidget or export a self-contained static browser view with GeoXplain.
  • 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 .npy import, and building grids from in-memory NumPy arrays, lives in examples/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:

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)

Source distribution for geoxplain 1.1.0
File Size Uploaded
geoxplain-1.1.0.tar.gz 70.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for geoxplain 1.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page