Climate data, grid-ready — open NOAA/NASA/USDA inputs for electric utility predictive maintenance
Project description
climagrid
Free, open-source environmental stress features for electric utility predictive maintenance —
turning public NOAA, NASA, USDA, and USFS data into ML-ready inputs for the tools utilities already run.
Why this exists
Power outages cost the U.S. economy about $67 billion every year on average, according to Oak Ridge National Laboratory. Most of those outages trace back to weather, vegetation, and environmental stress on aging grid equipment: transformers, power lines, and circuit breakers.
Large utilities can afford expensive software to monitor this risk. The roughly 900 rural electric cooperatives and 2,000 municipal utilities that serve 42 million Americans across 56% of U.S. landmass mostly cannot. They have small engineering teams, no data scientists, and no budget for six-figure software contracts.
climagrid is built for them. It is free, open source (Apache 2.0), and runs on a single laptop. It takes weather and environmental data that the U.S. government already publishes for free, from NOAA, NASA, the USDA, and the U.S. Forest Service, and turns it into the kind of information a maintenance engineer can actually use: which of my transformers are under the most stress this month? Which power-line spans are at the highest fire risk? Which areas need a crew sent out first?
The U.S. Department of Energy reports that predictive maintenance can cut equipment costs by 25-30% and return roughly $10 for every $1 invested. climagrid aims to make those benefits available to the smaller utilities that serve rural America.
What it does
flowchart LR
subgraph sources["Public Data Sources"]
direction TB
hrrr["NOAA HRRR\natmospheric · 3 km"]
power["NASA POWER\nsatellite-derived"]
ncei["NOAA NCEI\nsurface stations"]
nrcs["USDA NRCS\nsoil sensors"]
wfigs["USFS WFIGS\nfire perimeters"]
end
assets["Your assets\nCSV or GeoJSON\nasset_id · lat · lon"]
run(["climagrid.run()"])
subgraph features["Stress Features — one row per asset per hour"]
direction TB
thermal["feat_thermal_aging_factor"]
sag["feat_conductor_sag_index"]
ice["feat_ice_loading_risk"]
ft["feat_freeze_thaw_cycles"]
soil["feat_soil_saturation_index"]
fire["feat_wildfire_proximity"]
end
df[("ML-ready DataFrame")]
sources --> run
assets --> run
run --> features
features --> df
Who this is for
- Rural electric cooperatives and municipal utilities that want to start using weather and environmental data in their maintenance planning but don't have a data-science team to build the pipeline.
- Utility engineers who already run predictive-maintenance or anomaly-detection models and want to add environmental features to improve them.
- Researchers and journalists studying grid resilience and rural energy equity.
If you serve fewer than 100,000 meters and your weather "data integration" today is "we check the National Weather Service app before a storm," this toolkit is built for you.
Quick start
pip install climagrid
import climagrid
from datetime import datetime, timezone
df = climagrid.run(
"my_transformers.csv", # CSV with asset_id, lat, lon columns
start_dt=datetime(2024, 7, 1, tzinfo=timezone.utc),
end_dt=datetime(2024, 7, 31, tzinfo=timezone.utc),
sources=["nasa_power"], # no API key required
features="all",
)
df.to_parquet("stress_features.parquet")
You now have a file you can join to your maintenance records and feed into whatever model or spreadsheet you already use. See the quickstart notebook for a worked example.
For the lower-level adapter API (fetching individual data sources, custom feature computation) see the documentation.
Data sources
| Agency | Dataset | Variables | Frequency |
|---|---|---|---|
| NOAA | HRRR (3 km CONUS) | Temperature, wind, precipitation, humidity, solar | Hourly |
| NOAA | NCEI CDO (stations) | Temperature, wind, precipitation | Hourly/Daily |
| NASA | POWER API (MERRA-2) | Surface meteorology, irradiance | Hourly/Daily |
| USDA NRCS | SCAN / SNOTEL | Soil moisture, soil temperature, snow water equivalent | Hourly |
| USFS / NIFC | WFIGS | Active wildfire perimeters, fire area | Daily |
All sources are free and publicly accessible. NOAA NCEI requires a free API token (register at ncdc.noaa.gov/cdo-web/token, then set the NOAA_CDO_TOKEN environment variable). All other sources work without credentials.
Environmental stress features
| Feature | Output column | Target assets | Standard |
|---|---|---|---|
| Transformer thermal aging factor | feat_thermal_aging_factor |
Transformers | IEEE C57.91 |
| Heat accumulation hours | feat_heat_hours_above_35c |
Transformers, switchgear | IEEE C57.91 |
| Freeze-thaw cycles | feat_freeze_thaw_cycles |
Conductors, insulators, poles | — |
| Ice loading risk | feat_ice_loading_risk |
Overhead T&D lines | ASCE 7-22 |
| Soil saturation index | feat_soil_saturation_index |
Underground cables, poles | — |
| Wildfire proximity score | feat_wildfire_proximity |
All overhead assets | — |
| Conductor sag index | feat_conductor_sag_index |
Overhead T&D lines | IEEE 738-2012 |
How this is different from existing tools
| Tool | What it does | How climagrid is different |
|---|---|---|
| atlite (PyPSA) | Turns weather into renewable-generation forecasts | climagrid focuses on equipment failure stress, not generation |
| ERAD (NREL) | Estimates damage from one-time disasters (hurricanes, floods) | climagrid produces continuous stress features for day-to-day maintenance |
| OpenSTEF | Forecasts feeder load using weather inputs | climagrid produces asset-health features, not load forecasts |
| NRECA OMF | Simulates rural-coop feeders to evaluate new technologies | climagrid feeds maintenance models, not feeder simulators |
| EEweather (OpenDSM) | Pulls NOAA temperature for energy-efficiency baselines | climagrid integrates five federal sources and produces grid-stress features |
See the full related-work review.
National impact
- About 42 million Americans are served by rural electric cooperatives, covering 56% of U.S. landmass (NRECA).
- Major U.S. power outages cost roughly $67 billion per year on average (Oak Ridge National Laboratory).
- Predictive maintenance reduces equipment-maintenance costs by 25-30% with about a 10-to-1 return on investment (U.S. Department of Energy).
- climagrid is released under the Apache 2.0 license so that any utility, regardless of size or budget, can use, modify, and redistribute it freely and permanently.
For more on how climagrid ties into U.S. grid resilience priorities, see docs/national_impact.md.
Citation
If you use climagrid in research, regulatory filings, or utility planning, please cite it using the metadata in CITATION.cff, or:
Adesiji, T. (2026). climagrid: Open-source environmental stress feature toolkit
for electric utility predictive maintenance (v0.1.0). Apache 2.0.
https://doi.org/10.5281/zenodo.XXXXXXX
Contributing
climagrid welcomes contributions from utility engineers, data scientists, and researchers. See CONTRIBUTING.md for how to add a new data source adapter or stress feature. Project governance is documented in GOVERNANCE.md.
License
Apache License 2.0. See LICENSE for full text.
Copyright 2026 Temidire Adesiji
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file climagrid-0.1.0.tar.gz.
File metadata
- Download URL: climagrid-0.1.0.tar.gz
- Upload date:
- Size: 867.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d8a0c8fef69982e26462b9cd6c1a8ce0e40d1a486be3152182a7744091b1b57
|
|
| MD5 |
47c1dc288973510ac95397831a7aafd0
|
|
| BLAKE2b-256 |
513509288cab324675a5cd7b685f9b17b3064f8ae5e13719ad0f3ed42b1c524e
|
Provenance
The following attestation bundles were made for climagrid-0.1.0.tar.gz:
Publisher:
publish.yml on TemidireAdesiji/climagrid
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
climagrid-0.1.0.tar.gz -
Subject digest:
3d8a0c8fef69982e26462b9cd6c1a8ce0e40d1a486be3152182a7744091b1b57 - Sigstore transparency entry: 1560322098
- Sigstore integration time:
-
Permalink:
TemidireAdesiji/climagrid@19f6b71b65bbe0bcacba56eca813dd04a16c60d0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TemidireAdesiji
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19f6b71b65bbe0bcacba56eca813dd04a16c60d0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file climagrid-0.1.0-py3-none-any.whl.
File metadata
- Download URL: climagrid-0.1.0-py3-none-any.whl
- Upload date:
- Size: 48.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
981b6d64cdef8fb6f0c093d859248cb34bc84e3f270377ac071087f4abcf1439
|
|
| MD5 |
97ccfc9416e6cd6abebf03450cbc3524
|
|
| BLAKE2b-256 |
0d6083dcbc8fcef2f742ba8ceb65e3cd924d3034ba116e78d5115ea816e55e46
|
Provenance
The following attestation bundles were made for climagrid-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on TemidireAdesiji/climagrid
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
climagrid-0.1.0-py3-none-any.whl -
Subject digest:
981b6d64cdef8fb6f0c093d859248cb34bc84e3f270377ac071087f4abcf1439 - Sigstore transparency entry: 1560322481
- Sigstore integration time:
-
Permalink:
TemidireAdesiji/climagrid@19f6b71b65bbe0bcacba56eca813dd04a16c60d0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/TemidireAdesiji
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19f6b71b65bbe0bcacba56eca813dd04a16c60d0 -
Trigger Event:
push
-
Statement type: