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.

Download files

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

Source Distribution

geoxplain-1.1.0.tar.gz (70.7 MB view details)

Uploaded Source

Built Distribution

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

geoxplain-1.1.0-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file geoxplain-1.1.0.tar.gz.

File metadata

  • Download URL: geoxplain-1.1.0.tar.gz
  • Upload date:
  • Size: 70.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for geoxplain-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c2b733f205199280550fde333b4bf978482b9aaa23a912268648d7d5d6c07e1c
MD5 0083a73405c909b8b5ef208234e56417
BLAKE2b-256 e60baca8f4ea1a6d1025e97e846e3f59ce486bb0ae5329a3b9bc9819bb4eef96

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoxplain-1.1.0.tar.gz:

Publisher: publish.yml on clemenskoprolin/geoxplain

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoxplain-1.1.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for geoxplain-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31db075d201597d2be1f6c3aaf47414ec45f577968b5b005e00cbf87d358a891
MD5 cc6b0c817c937c34216a1a4c1b93b890
BLAKE2b-256 5cb9adb67865f2e8b74bf2f8b0fbe4d2c19a7e36334491dd490f45c3803e9c53

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoxplain-1.1.0-py3-none-any.whl:

Publisher: publish.yml on clemenskoprolin/geoxplain

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 files

1.0.0

2 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