snl-quest
An open source, Python-based software platform for energy storage simulation and analysis developed by Sandia National Laboratories.
Science Score: 46.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: ieee.org -
✓Committers with academic emails
2 of 12 committers (16.7%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.3%) to scientific vocabulary
Keywords
Repository
An open source, Python-based software platform for energy storage simulation and analysis developed by Sandia National Laboratories.
Basic Info
Statistics
- Stars: 143
- Watchers: 23
- Forks: 44
- Open Issues: 42
- Releases: 11
Topics
Metadata Files
README.md

QuESt 2.0.b: Open-source Platform for Energy Storage Analytics
Current release version: 2.0
Release date: March, 2024
Contact
For issues and feedback we would appreciate it if you could use the "Issues" feature of this repository. This helps others join the discussion and helps us keep track of and document issues.
Project maintainer (Tu Nguyen) @sandia.gov: tunguy
Table of contents
- Introduction
- App Hub
- Workspace
- QuESt GPT
- Innovations
- Uniqueness
- Advantages
- Installation
- Contact
- Feedback
- References
What is it?
QuESt 2.0 is an evolved version of the original QuESt, an open-source Python software designed for energy storage (ES) analytics. It transforms into a platform providing centralized access to multiple tools and improved data analytics, aiming to simplify ES analysis and democratize access to these tools.

Currently, QuESt 2.0 includes three main components:
The App Hub
The QuESt App Hub operates similarly to an app store, offering access points to a multitude of applications. Currently, various energy storage analytics tools have been available on QuESt App hub. For example:
QuESt Data Manager manages the acquisition of data.
QuESt Valuation estimates the potential revenue generated by energy storage systems when providing ancillary services in the electricity markets.
QuESt BTM (Behind-The-Meter) calculates the cost savings for time-of-use and net energy metering customers utilizing behind-the-meter energy storage systems.
QuESt Technology Selection supports in selecting the appropriate energy storage technology based on specific applications and requirements.
QuESt Performance evaluates the performance of energy storage systems in different climatic conditions.
QuESt Microgrid supports microgrid design and simulation considering energy storage as a key component.
It has been designed with key features to improve user experience and application management:
User-Friendly Access: Users can easily find and install applications that suit their specific needs.
Isolated Environments: Upon installation, each application creates an isolated environment. This ensures that applications run independently, preventing conflicts, and enhancing stability.
Simultaneous Operation: Multiple applications can be installed and operated simultaneously, allowing users to leverage different tools without interference.
The Workspace
The QuESt Workspace provides an integrated environment where users can create workflows by assembling multiple applications into a coherent process. It enhances the platform's usability and efficiency through several mechanisms:
Integration of Applications: Users can create work processes that integrate multiple apps by assembling pipelines using plugin extensions. This modular approach allows for the flexible composition of analytics workflows tailored to specific needs.
Workflow Management: The workspace supports the selection, assembly, connection, and post-processing of data and tools. This structured approach streamlines the analytics process, from data preparation to visualization, making it easier to manage and understand.
QuESt GPT
QuESt GPT represents a leap forward in data analytics within the platform, utilizing generative AI (specifically Large Language Models, or LLM) for data characterization and visualization:
Data Insights: Users can select datasets and ask questions about the data, with QuESt GPT providing insights based on the data's characteristics. This interaction model simplifies complex data analysis, making it accessible to users without deep technical expertise.
Utilization of LLMs: By leveraging advanced open-source LLMs such as OpenAis GPT-4 and Metas Llama2, QuESt GPT can perform sophisticated data analytics tasks, such as characterizing and visualizing large datasets. This enables users to gain deeper insights from their data, supporting more informed decision-making at no costs.
What are the key innovations of QuESt 2.0?
QuESt 2.0 facilitates the advancement of energy storage technology by making powerful analytics tools accessible to all energy storage stakeholders, aligning with DOEs energy storage program goals. The platform standardizes data and program structures, integrates applications seamlessly, and utilizes generative AI for advanced analytics, simplifying user interaction and enabling deeper insights from diverse data sources. This positions QuESt 2.0 as a pioneering platform in the energy storage domain, with the potential to significantly impact both the field and the broader energy landscape. Specifically, the key innovations of QuESt 2.0 include: 1. Integration and Usability: At its core, QuESt 2.0 revolutionizes how energy storage analytics are performed by providing a seamless, user-friendly platform that integrates multiple applications developed by independent developers. This allows for a more cohesive and efficient user experience, significantly lowering the learning curve for users at various levels of expertise. 2. AI-powered Data Analytics: The incorporation of QuESt GPT, utilizing Large Language Models (LLM), represents a significant technological leap forward. This feature enables users to perform more sophisticated data analytics, providing deeper insights from diverse data sources. It allows users to interact with data in an intuitive way, asking questions and receiving insights, which democratizes access to complex data analysis. 3. Complex Workflows: The QuESt Workspace and the QuESt App Hub enhance the platform's capability to support complex analytical workflows. Users can integrate multiple applications into a single process, creating efficient pipelines for data analysis. The users can run their workflows locally or schedule them to run on cloud services (e.g., AWS, Azure..)
How is QuESt 2.0 different from the other tools in Energy Storage Analytics?
QuESt 2.0 distinguishes itself in the crowded space of energy storage analytics tools by offering a unified platform rather than a collection of individual tools. While there are numerous tools available, these tend to focus on specific aspects of energy storage analysis and lack the integration and broad applicability that QuESt 2.0 provides.
Key Competitive Advantages of QuESt 2.0:
Unified Platform: Unlike individual tools that offer limited capabilities in specific topics, QuESt 2.0 serves as a comprehensive platform that integrates multiple applications for energy storage analytics. This integration allows users to access a wide range of tools and functionalities within a single environment, streamlining the workflow and enhancing productivity.
Advanced Data Analytics: With the inclusion of QuESt GPT for advanced data analytics, QuESt 2.0 utilizes generative AI to provide deeper insights from diverse data sources. This capability is not commonly found in other tools, giving QuESt 2.0 a significant technological edge.
Flexibility and Scalability: QuESt 2.0's modular design allows for the easy integration of new tools and applications, ensuring that the platform remains relevant and adaptable to future developments in energy storage analytics.
Collaborative Development: As an open-source platform, QuESt 2.0 benefits from contributions by a wide community of developers, enhancing its capabilities and ensuring continuous improvement.
How to download QuESt?
QuESt is currently available on Github at: https://github.com/sandialabs/snl-quest.
Installation Instructions for QuESt
Easy Installation (Recommended)
For Windows Users:
- Click on the releases located on the right side.

- Download the questwin.zip file found in the assets of QuESt2.0.b pre-release. <img src="quest/images/read/questwin_zip.png" alt="Download zip" width=600px margin="auto" />
- Extract the downloaded file.
- Navigate inside the directory and double click on start.bat. This will setup QuESt and launch it when it is finished. This will also launch QuESt in the future.
For Unix Users (Linux and macOS):
Click on the code button at the top of the page and then select "Download ZIP" from the dropdown.

Go to the location of the downloaded ZIP folder (default is Downloads).
Extract the ZIP folder to your desired location (e.g., Desktop).
Install python (3.9.13)
Installing Python
- Go to python.org.
- Download a version of Python suitable for your operating system (3.9.x recommended).
Follow the installation instructions provided on the website.
Install git
Installing Git
- Visit git-scm.com to download Git for your operating system.
- Follow the installation instructions provided on the website.
- Open a terminal inside the installed quest directory and create a virtual env.
Setting Up a Virtual Environment
Install
virtualenv(if not already installed):bash python3 -m pip install virtualenvCreate a virtual environment:
bash virtualenv envActivate the virtual environment:
bash source env/bin/activateWith the virtual env activated we can now setup the environment for QuESt with the following command:
bash python3 -m pip install -e .Run QuESt with the following command:
```bash python3 -m quest ```
Installation for Developers:
Prerequisites
- Python (3.9.x recommended) installed on your system
- Git installed on your system
Installing Python
- Go to python.org.
- Download a version of Python suitable for your operating system (3.9.x recommended).
- Follow the installation instructions provided on the website.
Installing Git
- Visit git-scm.com to download Git for your operating system.
- Follow the installation instructions provided on the website.
Setting Up a Virtual Environment
Install
virtualenv(if not already installed):bash pip install virtualenvCreate a virtual environment:
bash virtualenv envActivate the virtual environment:
- On Windows:
bash .\env\Scripts\activate - On Linux/macOS:
bash source env/bin/activate
- On Windows:
Installing QuESt
Clone the Repository:
bash git clone <repository_url>Replace<repository_url>with the URL of the QuESt GitHub repository.Navigate to the QuESt Directory:
bash cd <repository_name>Replace<repository_name>with the name of the directory where QuESt was cloned.Install Dependencies:
bash pip install -e .
Running QuESt
Easy Version:
- If you have followed the Easy Installation steps you can now double click on the start.bat if you are on windows or on the unixentry if you are on mac or linux to launch quest. Some unix based systems may require users to always use the terminal to run the unixentry.sh script to launch QuESt.
For Developers:
- Run QuESt:
- Once the dependencies are installed, ensure you have navigated to the directory where QuESt is installed and the virtual environment is activated. You can run QuESt using the following command:
- On Windows:
bash python -m quest - On Linux/macOS:
bash python3 -m quest - Alternatively quest may be run any directory as long as the venv is active using the terminal command:
bash quest
- On Windows:
- Once the dependencies are installed, ensure you have navigated to the directory where QuESt is installed and the virtual environment is activated. You can run QuESt using the following command:
Deactivating the Virtual Environment
- Deactivate the Virtual Environment:
bash deactivateThis will return you to your system's default Python environment.
References
Nguyen, Tu A., David A. Copp, and Raymond H. Byrne. "Stacking Revenue of Energy Storage System from Resilience, T&D Deferral and Arbitrage." 2019 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2019.
Byrne, Raymond H., Tu A. Nguyen, and Ricky J. Concepcion. "Opportunities for Energy Storage in CAISO." 2018 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2018. Available online.
Byrne, Raymond H., Tu Anh Nguyen, and Ricky James Concepcion. Opportunities for Energy Storage in CAISO. No. SAND2018-5272C. Sandia National Lab.(SNL-NM), Albuquerque, NM (United States), 2018. Available online.
Concepcion, Ricky J., Felipe Wilches-Bernal, and Raymond H. Byrne. "Revenue Opportunities for Electric Storage Resources in the Southwest Power Pool Integrated Marketplace." 2018 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2018. Available online.
Wilches-Bernal, Felipe, Ricky J. Concepcion, and Raymond H. Byrne. "Electrical Energy Storage Participation in the NYISO Electricity and Frequency Regulation Markets." 2018 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2018.
Nguyen, Tu A., and Raymond H. Byrne. "Maximizing the cost-savings for time-of-use and net-metering customers using behind-the-meter energy storage systems." 2017 North American Power Symposium (NAPS). IEEE, 2017. Available online.
Nguyen, Tu A., et al. "Maximizing revenue from electrical energy storage in MISO energy & frequency regulation markets." 2017 IEEE Power & Energy Society General Meeting. IEEE, 2017. Available online.
Byrne, Raymond H., Ricky J. Concepcion, and Csar A. Silva-Monroy. "Estimating potential revenue from electrical energy storage in PJM." 2016 IEEE Power and Energy Society General Meeting (PESGM). IEEE, 2016. Available online.
Byrne, Raymond H., et al. "The value proposition for energy storage at the Sterling Municipal Light Department." 2017 IEEE Power & Energy Society General Meeting. IEEE, 2017. Available online.
Byrne, Raymond H., et al. "Energy management and optimization methods for grid energy storage systems." IEEE Access 6 (2017): 13231-13260. Available online.
Byrne, Raymond H., and Csar A. Silva-Monroy. "Potential revenue from electrical energy storage in ERCOT: The impact of location and recent trends." 2015 IEEE Power & Energy Society General Meeting. IEEE, 2015. Available online.
Owner
- Name: Sandia National Laboratories
- Login: sandialabs
- Kind: organization
- Location: United States
- Website: https://software.sandia.gov
- Repositories: 123
- Profile: https://github.com/sandialabs
Exceptional service in the national interest.
GitHub Events
Total
- Create event: 7
- Issues event: 7
- Release event: 2
- Watch event: 13
- Delete event: 2
- Issue comment event: 1
- Member event: 2
- Push event: 29
- Pull request event: 2
- Fork event: 4
Last Year
- Create event: 7
- Issues event: 7
- Release event: 2
- Watch event: 13
- Delete event: 2
- Issue comment event: 1
- Member event: 2
- Push event: 29
- Pull request event: 2
- Fork event: 4
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Tu Nguyen | t****y@s****v | 208 |
| rconcep | r****p@s****v | 107 |
| Pomeroy | y****r@s****v | 44 |
| Ricky Concepcion | r****p@s****v | 30 |
| Alvaro Furlani Bastos | a****s@u****u | 12 |
| rconcep | r****6@c****u | 11 |
| powerjedi | 4****a | 7 |
| Lopez Ramirez | a****z@s****v | 4 |
| Olis | w****s@s****v | 4 |
| wilchesf | 3****f | 3 |
| Olis | w****s@s****v | 3 |
| Wilches Bernal | f****e@s****v | 2 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 12
- Total pull requests: 4
- Average time to close issues: 5 days
- Average time to close pull requests: 1 minute
- Total issue authors: 9
- Total pull request authors: 4
- Average comments per issue: 0.42
- Average comments per pull request: 0.25
- Merged pull requests: 2
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 8
- Pull requests: 1
- Average time to close issues: 5 days
- Average time to close pull requests: 2 minutes
- Issue authors: 6
- Pull request authors: 1
- Average comments per issue: 0.38
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- ermoog (3)
- atribera (2)
- tdb1003 (1)
- brtietz (1)
- sfk1107 (1)
- ArafathUzzamanMD (1)
- ylpomer (1)
- QuantBender (1)
- rdtrevi (1)
Pull Request Authors
- cancom84 (2)
- Alope489 (2)
- mdmla (2)
- dependabot[bot] (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 18 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 4
- Total maintainers: 3
pypi.org: quest-snl
Sandia National Laboratories Energy Storage Application Platform
- Homepage: https://github.com/sandialabs/snl-quest.git
- Documentation: https://quest-snl.readthedocs.io/
- License: other
-
Latest release: 2.0.0rc4
published 8 months ago
Rankings
Dependencies
- PySide6 ==6.6.2
- configparser ==6.0.1
- geopandas ==0.14.3
- matplotlib ==3.8.3
- openai ==0.28
- pandas ==2.2.1
- streamlit ==1.32.0
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.0.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.0.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.1.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.1.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.1.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.1.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.0.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.0.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.0.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- bs4 ==0.0.2
- eppy ==0.5.63
- holidays ==0.43
- jinja2 ==3.1.3
- kivy ==2.0.0
- kivy-garden ==0.1.5
- matplotlib ==3.7.4
- openpyxl ==3.1.2
- pandas ==2.2.1
- pyomo ==6.7.1
- pyutilib ==6.0.0
- requests ==2.31.0
- scikit-glpk ==0.5.0
- scipy ==1.12.0
- seaborn ==0.13.2
- six ==1.16.0
- urllib3 ==2.2.1
- xlrd ==2.0.1
- GitPython ==3.1.43
- PySide6 ==6.5.2
- configparser ==6.0.1
- geopandas ==0.14.3
- matplotlib ==3.8.3
- openai ==1.86.0
- pandas ==2.2.1
- psutil ==5.9.0
- streamlit ==1.32.0
- GitPython ==3.1.43
- NodeGraphQt *
- PySide6 ==6.5.2
- configparser ==6.0.1
- geopandas ==0.14.3
- matplotlib ==3.8.3
- openai ==1.86.0
- pandas ==2.2.1
- psutil ==5.9.0
- streamlit ==1.32.0
- holidays
- jinja2
- kivy
- matplotlib
- numpy
- pandas
- requests
- scipy
- six
- urllib3
- xlrd