Skip to main content

GAT - Grid Analysis Toolkit

tests lint code style: black docs PyPI Python License

A toolkit for wrangling data for Bulk Grid Dispatch and Transmission Analysis.

GAT aims to provide simplified access to PCM and CEM results in a standard format while also allowing raw data access to underlying datasets specific to the model.

For plotting, GAT defaults to standard National Lab of the Rockies (NLR) color schemes and standard styles while allowing customization.

[!WARNING] GAT's public API is still evolving. Expect breaking changes between releases before v1.0 — pin an exact version (e.g. nlr-gat==0.1.0) if you need stability.

[!WARNING] Support for PLEXOS solution files produced by H5PLEXOS.jl (.h5) will be removed in v0.2.0. Load native PLEXOS Solution.zip files through the DuckDB-backed engine instead: install with pip install "nlr-gat[plexos]" and pass the .zip path directly to PlexosScenario — backend selection is automatic.

Installation

It is recommended to create a virtual environment for installing GAT.

In your desired directory, run one of the following.

python -m venv .venv

python3 -m venv .venv

Then activate your virtual environment by running.

. .venv/bin/activate on MacOS or Linux

or .venv/Scripts/Activate on Windows. If you are having trouble activating the virtual environment on Windows, you may need to update your execution policy. More can be read here.

Install the latest release from PyPI:

pip install nlr-gat

Note: the distribution is named nlr-gat because gat on PyPI is an unrelated genomics package. The import package and CLI are still gat, which also means nlr-gat cannot share an environment with that genomics package.

Choosing extras

The bare install above pulls in only the format-agnostic core — no scenario handler is usable yet. Each simulation/model format has its own extra, so you only install the (often large, native-code) dependencies you actually need:

Extra Adds Installs
sienna SiennaScenario h5py, polars, geopandas
plexos PlexosScenario (both backends, for now — see the H5PLEXOS.jl deprecation notice above) h5py, duckdb, plexos2duckdb
reeds ReEDsScenario (base deps only)
plots gat.quickplots / the .plot property on any scenario matplotlib (+ PySide6 on macOS)
server gat.server (the data server) fastapi, uvicorn, duckdb, pyarrow
client gat.client (remote scenario access) httpx, pyarrow
all everything above

Combine as needed, e.g.:

pip install "nlr-gat[sienna,plots]"

pip install "nlr-gat[plexos,server]"

pip install "nlr-gat[all]"

Or install from GitHub — the latest, a specific release, or a branch:

pip install git+https://github.com/NatLabRockies/GridAnalysisToolkit

pip install git+https://github.com/NatLabRockies/GridAnalysisToolkit@v0.1.0

pip install git+https://github.com/NatLabRockies/GridAnalysisToolkit@{branch_name}

Documentation

The latest stable documentation lives at natlabrockies.github.io/GridAnalysisToolkit. The example gallery is a good starting point for visual capability.

Highest-traffic doc pages (also readable directly in the repo):

Example data

example_data/ is gitignored — the binaries are too large to track in-tree. Sienna fixtures regenerate via make sienna-fixture-v4 (requires Docker; see docker/sienna/README.md). For Plexos (pip install nlr-gat[plexos]), point the GAT_PLEXOS_FIXTURE environment variable at a directory of .h5 solution files of your own, or GAT_PLEXOS_ZIP_FIXTURE at a native PLEXOS Solution.zip.

Contributing

If you wish to contribute to the development of GAT, please clone the repo and install the dev dependencies as follows.

git clone https://github.com/NatLabRockies/GridAnalysisToolkit.git

cd GridAnalysisToolkit

Follow the instructions for creating a virtual environment above, then:

pip install -e ".[dev]"

When you are ready, please open a pull request for review.

If you plan to contribute to documentation, install the documentation dependencies as well.

pip install -e ".[dev,doc]"

Commit messages and PR titles should follow Conventional Commits (feat: ..., fix: ..., docs: ..., etc.) — releases are generated automatically from these (see .github/workflows/release.yml).

Building the documentation

After installing the doc dependencies:

cd docs && sphinx-build -b html source build/html

Review documentation changes locally:

open build/html/index.html

Software Record and Disclaimer

GAT is developed by the National Lab of the Rockies (NLR) and released under software record SWR-25-41 "GAT (Grid Analysis Toolkit)".

See DISCLAIMER.md for the full disclaimer.

Release files for nlr-gat 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nlr-gat 0.1.1
File Size Uploaded
nlr_gat-0.1.1.tar.gz 714.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nlr-gat 0.1.1
File Interpreter ABI Platform
nlr_gat-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 996.1 kB

Release files / nlr_gat-0.1.1.tar.gz

Download URL nlr_gat-0.1.1.tar.gz
Size 714.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a3b881438f6bafee57fa75f553486083a577cd45e32a7e6c0c2f3eb09bbf625e
BLAKE2b-256 checksum
How to use checksums
6acfa674cec27ab40b6b0e7ed0e40f01d305a076ada6a9c72f38a0f593a879c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 4, 2026.

Transparency log

Release files / nlr_gat-0.1.1-py3-none-any.whl

Download URL nlr_gat-0.1.1-py3-none-any.whl
Size 281.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
14be8a2f99cac47d5c1f44e93f61ee3826bb22ff7d76ffbf087655c08d3b1fbc
BLAKE2b-256 checksum
How to use checksums
becbf897981ffa1d8ee511ad9a94dc463a0e2b9299153ddc95cfa0cb1722aac1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

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