Skip to main content

olmoearth_inferenceX

olmoearth_inferenceX checks an Earth-observation map after inference: where it is likely wrong, how wrong it is, which part you can trust, and which of two maps is more accurate. It was built to check OlmoEarth's inference outputs. It reads only the per-class scores a model writes out, never runs the model and needs no torch, so it works as well on other models' maps and on published products that ship a confidence layer.

Structure of olmoearth-inferenceX. Left: Sentinel-2 imagery goes through a model's encoder and decoder to its outputs, a class map and a confidence map. Right: the outputs are pooled to windows. Without reference labels, ranking the windows by confidence gives the review set, and comparing two maps A and B gives the disagreement map. With a labelled sample, a sample of the windows where A and B differ gives their accuracy difference with a 95% interval; a random sample with reference labels gives the error rate with an exact 95% interval and, by exact zone tests, the certified zone

Documentation: https://olmoearth-inferencex.readthedocs.io/

Install

pip install "olmoearth-inferencex[geo]"    # Python 3.11 to 3.13; without [geo] it reads .npy only
oe-inferencex demo                          # a real Dynamic World tile; needs no data

Usage

Question Commands Labels
Where do I look first? assess scores.tif --out audit none
How wrong is the map? sample scores.tif --budget 300 --design random --out to_label.csv, fill in wrong, then estimate to_label.csv about 300 random windows
Which part can I trust? certify to_label.csv --alpha 0.05 the same windows
Which of two maps is more accurate? sample a.tif --other b.tif --budget 100 --out pairs.csv, fill in reference_class, then estimate pairs.csv about 100, where the maps differ
Where do two maps differ? compare a.tif b.tif --out diff none

Every command starts with oe-inferencex. The input is the model's per-class scores before the argmax, as a GeoTIFF or a .npy array of shape (C, H, W). plan says how many labels a question needs, decide turns a result into yes, no or undetermined, and --help lists each command's options. Quick start runs each one on a test map.

Limits: without labels it says where to look, not how wrong the map is. On the one test of a deployed model at a new year and place, graded at the plots of an independent random sample that had imagery, confidence ranked the errors with an AUROC of 0.64 under a one-to-one crosswalk, below the preregistered 0.70; that run cannot say whether the year, the place, the legend or the move from expert-placed points caused it. A model run on inputs unlike its training data can be confident and wrong (--condition treats each input condition on its own). Every interval and certified zone assumes the labels are right, and labelling more and rerunning is a second test, except on a sequential sample.

Use from an agent

oe-inferencex mcp is a local MCP server; nothing is hosted. With uv installed:

claude mcp add --scope user oe-inferencex -- uvx --from "olmoearth-inferencex[geo,mcp]" oe-inferencex mcp

Use a strong model: in a pilot, Claude Sonnet kept the tools' limits and Claude Haiku often dropped them. To try it, write the demo tile into an empty folder, start the agent there and ask:

uvx --from olmoearth-inferencex oe-inferencex demo

Where should I look first in oe_inferencex_demo/sample_probabilities.npy? Use windows of 1 pixel, and grade the order against oe_inferencex_demo/sample_truth.npy.

Evidence

Tested on linear probes of sixteen encoders over the tasks of Ai2's embedding suite, and on seven published land-cover products against six reference samples, with the reference points standing in for the map. On a deployed OlmoEarth model, a re-run of Ai2's configuration for its fine-tuned AWF model, the confidence ranked the map's errors with an AUROC of 0.85 at Ai2's expert-placed validation points but 0.64 on 2017 imagery at the plots of an independent random sample that had imagery (one-to-one crosswalk), below the preregistered 0.70; the record's own fine-tune of the task on OlmoEarth v1.2 gave the same verdicts (0.81 and 0.64). On a second task, Ai2's Forest Loss Driver model graded at 2026 MapBiomas Alerta alerts in the Amazon, the confidence ranked the disagreements at 0.77, the preregistered bar on its point value (the interval reaches 0.68), but not the confident confusions between agriculture and mining. The technical report and the documentation give the results and their limits.

Development and license

Clone the repository, then uv sync and uv run pytest; the experiments also need uv sync --extra encoder --extra geo. Apache License 2.0 (LICENSE); cite with CITATION.cff; questions in GitHub issues.

Metadata

Release files for olmoearth-inferencex 1.11.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 olmoearth-inferencex 1.11.0
File Size Uploaded
olmoearth_inferencex-1.11.0.tar.gz 511.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for olmoearth-inferencex 1.11.0
File Interpreter ABI Platform
olmoearth_inferencex-1.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / olmoearth_inferencex-1.11.0.tar.gz

Download URL olmoearth_inferencex-1.11.0.tar.gz
Size 511.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f85cb94ccab501b31f979d76fe96b03d71f83deb796d215e78774188b4828b9b
BLAKE2b-256 checksum
How to use checksums
866b4234be6796009bfc8e9eec1278e10c3eb4695b043dd3ebe1036ecd48ddda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / olmoearth_inferencex-1.11.0-py3-none-any.whl

Download URL olmoearth_inferencex-1.11.0-py3-none-any.whl
Size 519.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
74a0d96a26bb630d6446502b6544c77a17207d9903b56753f2540e24cc4ad759
BLAKE2b-256 checksum
How to use checksums
76f31530ae6d07495238361f0271b10201c61eeb6330a40b68617578332f4d86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

1.12.2

2 release files

1.12.1

2 release files

1.12.0

2 release files

This release

1.11.0 This release

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.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