PyGREET impact dominance — where does a life-cycle impact come from?
A module for Argonne's PyGREET platform that breaks a life-cycle total into ranked per-process contributions. Merged upstream after review.
PythonNumPySciPyDjango RESTpytestGitHub Actions
Private repository
Overview
Life-cycle assessment normally reports one total per metric. During summer 2026 at Argonne National Laboratory (DOE SULI program, Life Cycle Analysis Group) I contributed a module to PyGREET, the Python platform for Argonne’s R&D GREET life-cycle model, which has 70,000+ users. The module shows where in a supply chain an impact comes from.
What I built
- An impact dominance analyzer that ranks per-process contributions and reports how concentrated an impact is.
- It reuses the engine’s already-solved sparse direct-contribution matrices, so there is no re-solve.
- An upstream contribution tree builder.
- Django REST endpoints, tested with pytest, pre-commit and GitHub Actions. The module was merged into PyGREET after review.
- An interactive front end was designed as a wireframe only; it was not built.
Result
In a case study on battery-grade lithium hydroxide (a DOE critical material), at most 7 of 217 processes produced at least 80% of the impact for every indicator analyzed (GWP, CO2, energy, water, PM2.5). Which processes dominated changed from one indicator to the next.
Deliverables
Research report, symposium poster, lightning talk, general-audience abstract, and a peer review.
Scope note
The code lives in PyGREET, which is developed by Argonne’s group; I contributed this module and am not an author of the PyGREET platform or its publications.