GLIMPSE is a graph-based desktop application to visualize and update GridLAB-D power grid models. With GLIMPSE, you can:
- Search and highlight power grid model objects
- Update model attributes
- Export modified models for future simulations
- Leverage GPU acceleration for rendering large power grids
The application is built with React.js, Electron.js, Node.js, Sigma.js, and Python.
Note
If you're looking for the EPA-developed energy planning tool called glimpse, visit epa.gov/glimpse.
comming soon
This section will walk you through installing dependencies and building GLIMPSE. Here's what you'll do:
- ✅ Install Node.js (and optionally Nim)
- ✅ Clone the repository and install Node dependencies
- ✅ Create and activate a Python environment
- ✅ Install Python dependencies and plugins
- ✅ Start the development server
- Node.js — Required for all users
- Nim — Only needed if:
- You're on Apple silicon (M chips), OR
- You plan to export modified GLM files
In a directory of your choice, clone the repository:
git clone http://github.com/pnnl/GLIMPSEcd GLIMPSE
npm installNavigate to the local server directory:
cd GLIMPSE/local-server/Option A: UV (Recommended)
uv add -r requirements.txt --prerelease=allowOption B: VENV
python -m venv .venvOption C: Conda
conda create -n glimpse_env
conda activate glimpse_env| Platform | Shell | Command |
|---|---|---|
| POSIX | bash/zsh | source .venv/bin/activate |
| - | fish | source .venv/bin/activate.fish |
| - | csh/tcsh | source .venv/bin/activate.csh |
| - | PowerShell | .\.venv\Scripts\activate.ps1 |
| Windows | cmd.exe | .venv\Scripts\activate.bat |
| - | PowerShell | .\.venv\Scripts\activate.ps1 |
| macOS | bash/zsh | source .venv/bin/activate |
Note
You'll know the environment is active when you see (.venv) at the start of your command line.
For conda, use conda activate glimpse_env instead.
If you used VENV or Conda, install requirements:
pip install -r requirements.txtCIM-Builder is needed to export modified CIM/XML files.
In GLIMPSE/local-server/, clone CIM-Builder:
git clone -b develop https://github.com/PNNL-CIM-Tools/CIM-Builder.gitNavigate to the CIM-Builder directory and install it (without dependencies, as it requires an older version of cim-graph):
cd CIM-BuilderWith PIP:
python -m pip install . --no-depsWith UV:
uv pip install . --no-depsWith PIP:
pip install glmWith UV:
uv pip install glmYou'll need to build the GLM parser from source using Nim.
Clone the GLM parser:
cd GLIMPSE/local-server/git clone https://github.com/NREL/glm.gitcd glmBuild the parser (ensure Nim is installed and in your PATH):
nim c -d:release --opt:size --passC:"-flto" --passL:"-flto" --app:lib --out:lib/_glm.so src/glm.nimCreate a wheel:
python setup.py bdist_wheel
# or
python3 setup.py bdist_wheelInstall the wheel from dist/ folder:
With PIP:
pip install dist/<whl-filename>.whlWith UV:
uv pip install dist/<whl-filename>.whlFrom the GLIMPSE/ root directory, run:
npm run devThe application will start in development mode. Open your browser and navigate to the provided local address (typically http://localhost:5173/) to access GLIMPSE.
The repository ships with a Docker Compose setup that builds and runs GLIMPSE as two containers — the React frontend (served by nginx) and the Flask + SocketIO backend — so you don't need to install Node, Python, or any of the plugins yourself.
Note
This section assumes you already have a working Docker Engine with the Docker Compose plugin (docker compose version should print a version). If not, see Docker's install guide.
git clone http://github.com/pnnl/GLIMPSE
cd GLIMPSEFrom the GLIMPSE/ root directory (where docker-compose.yml lives), run:
docker compose up --buildThe first build takes a few minutes while images are created; subsequent runs are cached and start quickly. Add -d to run detached (in the background):
docker compose up --build -dOnce the containers are running, open your browser and navigate to:
http://localhost:5173
The frontend serves the UI on port 5173 and the backend listens on port 5052.
docker compose downThis stops and removes the containers and network. Built images remain cached for the next start. (If you ran in the foreground, you can also press Ctrl+C first, then run docker compose down to clean up.)
GLIMPSE supports two JSON file formats for custom graph visualizations:
-
GLIMPSE JSON Format — Based on glm2json parser output
-
NetworkX Node-Link Format — From NetworkX's node_link_data function
To get started with GridLAB-D models:
- Start with example models in
GLIMPSE/testing/123/— upload all.glmfiles from this folder - Try larger models:
3000/,8500/, and9500/to experience GPU-accelerated rendering with Sigma.js - To re-upload files after visualization, click the LOAD button at the top right
GLIMPSE can import and export CIM (Common Information Model) files.
- Example CIM files are available here
- Modified models can be exported as CIM/XML files through the GLIMPSE interface
@inproceedings{sanchez2024glimpse,
title={GLIMPSE of Future Power Grid Models},
author={Sanchez, Armando Mendoza and Purohit, Sumit},
booktitle={2024 IEEE 18th International Conference on Semantic Computing (ICSC)},
pages={224--225},
year={2024},
organization={IEEE}
}