GAT - Grid Analysis Toolkit
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 PLEXOSSolution.zipfiles through the DuckDB-backed engine instead: install withpip install "nlr-gat[plexos]"and pass the.zippath directly toPlexosScenario— 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-gatbecausegaton PyPI is an unrelated genomics package. The import package and CLI are stillgat, which also meansnlr-gatcannot 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):
- Quickstart: scenarios and palettes
- Python API:
gat.load(...) - Sienna scaling and raw dataset access
- Custom plots and the reporting framework
- v1 architecture & migration pattern
- Legacy scenario handler deprecation
- Migrating from v0.x to v1.0
- Changelog
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)
| File | Size | Uploaded | |
|---|---|---|---|
| nlr_gat-0.1.1.tar.gz | 714.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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