constrain
Control Strainer (ConStrain) is a data-driven knowledge-integrated framework that automatically verifies that building system controls function as intended.
Science Score: 62.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
5 of 9 committers (55.6%) from academic institutions -
✓Institutional organization owner
Organization pnnl has institutional domain (www.pnnl.gov) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.0%) to scientific vocabulary
Keywords
Repository
Control Strainer (ConStrain) is a data-driven knowledge-integrated framework that automatically verifies that building system controls function as intended.
Basic Info
- Host: GitHub
- Owner: pnnl
- License: other
- Language: Jupyter Notebook
- Default Branch: develop
- Homepage: https://pnnl.github.io/ConStrain/index.html
- Size: 56.6 MB
Statistics
- Stars: 9
- Watchers: 8
- Forks: 2
- Open Issues: 28
- Releases: 6
Topics
Metadata Files
README.md
Control Strainer (ConStrain): A Data-driven Control Verification Framework (formally known as ANIMATE)
Unit tests status:
Background and Motivation
Advances in building control have shown significant potential for improving building energy performance and decarbonization. Studies show that designs utilizing optimized controls that are properly tuned could cut commercial building energy consumption by approximately 29% - equivalent to 4-5 Quads, or 4-5% of the energy consumed in the United States. Driven by the significant control-related energy-saving potential, commercial building energy codes (such as ASHRAE 90.1) have progressed with many control-related addenda. For example, from the publication of 90.1-2004 to 90.1-2016 (four code cycles), 30% of the new requirements are related to building control (with most of them focused on HVAC system control).
However, one of the challenges to realizing those savings is the correct implementation of such advanced control strategies and regularly verifying their actual operational performance. A field study found that only 50% of systems observed have their control system correctly configured to meet the energy codes requirement, and control-related compliance verification is typically not included in the commissioning (Cx) scope. The current control verification is often manually conducted, which is time-consuming, ad-hoc, incomplete, and error-prone.
What is ConStrain?
ConStrain is a data-driven knowledge-integrated framework that automatically verifies that controls function as intended. The figure below shows an overview of ConStrain and how it can be used. ConStrain was born out of the need of automating the verification of time-series data describing the behavior of building components, especially the control functions.
ConStrain is designed around three key features: building control knowledge integration, analytics, and automation. The framework includes three major components: a control verification algorithm library (rule-based, procedure-based, and AI-based), an automated preparation process and verification case generation, a standardized performance evaluation and reporting process.
While the development of ConStrain was motivated by use cases with building energy modeling (BEM), it is now evolved for more application scenarios towards real building control verification.

Who shall be interested in this framework?
- Cx agent – reduce effort and cost, while increasing rigor.
- Building operator – implement Continuous Commissioning (CCx) to avoid performance drift.
- Authority having jurisdiction (AHJ) – achieve better compliance rates for control provisions in code.
- Mechanical engineer/energy modeler – ensure that chosen systems and their controls will comply with code.
- Energy code/control guideline developer – identify ambiguity in code languages.
- BEM software developer – identify control related issues in simulation engine.
Current Version of ConStrain?
The current version of ConStrain includes the framework implementation, a preliminary development and implementation of the verification library (based on ASHRAE 90.1-2016 control related requirement), and the test cases of verification algorithms using prototype building models. The current list of implemented verification algorithms includes supply air temperature control, economizer high limit, integrated economizer control, zone temperature control (dead band), zone temperature control (setback), hot water temperature reset, chilled water temperature reset, etc.
A newly released API helps users to use ConStrain more easily. An API workflow demo is provided at demo/api_demo and test/api/test_workflow.py
See the Publications section for more information and example of uses of the framework.
Get Started
- Demos are located in
demo/ - Visit API documentation page to learn about how to use the ConStrain API.
- Visit Guideline 36 Verification Items List to learn more about the ASHRAE Guideline 36 related verification in ConStrain verification library.
- Visit Local Loop Verification Items List to learn more about local loop performance verification library.
- Visit Brick Integration Doc to learn more about the beta version of brick schema integration API.
Publications
- Chen Y., M. Wetter, X. Lei, J. Lerond, P.K. Anand, Y. Jung, P. Ehrlich, and D.L. Vrabie. 2023. "Control Performance Verification – The Hidden Opportunity of Ensuring High Performance of Building Control System." In Building Simulation 2023 Conference
- Lei X., J. Lerond, Y. Jung, and Y. Chen. 2023. "Development of an Application Programming Interface for a Building Systems Control Performance Verification Framework." In 2023 ASHRAE Annual Conference
- Chen Y., J. Lerond, X. Lei, and M.I. Rosenberg. 2021. "A Knowledge-based Framework for Building Energy Model Performance Verification." In Building Simulation 2021 Conference
Referencing
If you wish to cite ConStrain in academic work please use: Lei, X., Lerond, J., Jung, Y. J., & Chen, Y. (2025). ConStrain (Version 0.6.0) [Computer software]. https://github.com/pnnl/ConStrain
Owner
- Name: Pacific Northwest National Laboratory (Public)
- Login: pnnl
- Kind: organization
- Email: dev-central@pnnl.gov
- Location: United States of America
- Website: http://www.pnnl.gov/
- Repositories: 351
- Profile: https://github.com/pnnl
This Org is intended for the hosting of approved released PNNL software repositories for public use and collaboration.
Citation (CITATION.cff)
cff-version: 1.2.0
title: ConStrain
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Xuechen
family-names: Lei
email: xuechen.lei@pnnl.gov
affiliation: Pacific Northwest National Laboratory
orcid: 'https://orcid.org/0000-0003-3310-9750'
- given-names: Jeremy
family-names: Lerond
email: jeremy.lerond@pnnl.gov
affiliation: Pacific Northwest National Laboratory
orcid: 'https://orcid.org/0000-0002-1630-6886'
- given-names: Yun Joon
family-names: Jung
orcid: 'https://orcid.org/0000-0003-1311-8932'
affiliation: Pacific Northwest National Laboratory
email: yunjoon.jung@pnnl.gov
- given-names: Yan
family-names: Chen
email: yan.chen@pnnl.gov
affiliation: Pacific Northwest National Laboratory
orcid: 'https://orcid.org/0000-0002-2988-9136'
identifiers:
- type: url
value: 'https://github.com/github/ConStrain'
repository-code: 'https://github.com/github/ConStrain'
url: 'https://pnnl.github.io/ConStrain/'
abstract: >-
Control Strainer (ConStrain): A Data-driven Control
Performance Verification Framework (formally known as
ANIMATE)
license: BSD-2-Clause
commit: 7f1798889b07e02cd126549e1c8ae5b1c89f24cd
version: 0.6.0
date-released: '2024-09-30'
GitHub Events
Total
- Create event: 36
- Release event: 1
- Issues event: 10
- Watch event: 4
- Delete event: 1
- Issue comment event: 15
- Push event: 262
- Pull request review event: 159
- Pull request review comment event: 146
- Pull request event: 57
- Fork event: 2
Last Year
- Create event: 36
- Release event: 1
- Issues event: 10
- Watch event: 4
- Delete event: 1
- Issue comment event: 15
- Push event: 262
- Pull request review event: 159
- Pull request review comment event: 146
- Pull request event: 57
- Fork event: 2
Committers
Last synced: 6 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Xuechen (Jerry) Lei | x****i@p****v | 241 |
| Lerond, Jeremy | j****d@p****v | 229 |
| yunjoonjung | y****g@p****v | 226 |
| FanFeng | f****6@g****m | 44 |
| Julian Slane | j****y@p****v | 22 |
| Jeremy Lerond | l****3@c****l | 5 |
| Jeremy Lerond | l****3@c****v | 5 |
| Yan Chen | y****n@p****v | 3 |
| Jeremy Lerond | l****3@c****v | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 20
- Total pull requests: 91
- Average time to close issues: 24 days
- Average time to close pull requests: about 1 month
- Total issue authors: 7
- Total pull request authors: 5
- Average comments per issue: 0.05
- Average comments per pull request: 0.45
- Merged pull requests: 75
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 13
- Pull requests: 51
- Average time to close issues: 9 days
- Average time to close pull requests: 19 days
- Issue authors: 7
- Pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.2
- Merged pull requests: 40
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- lymereJ (10)
- leijerry888 (3)
- yunjoonjung-PNNL (3)
- FWuellhorst (1)
- lazlop (1)
- wehuang16 (1)
- jslane-h (1)
Pull Request Authors
- lymereJ (50)
- yunjoonjung-PNNL (24)
- leijerry888 (23)
- jslane-h (21)
- Fan-Feng (3)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- actions/setup-python v4 composite
- peaceiris/actions-gh-pages v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite
- eppy *
- fuzzywuzzy *
- matplotlib *
- pandas *
- scikit-learn *
- scipy *
- seaborn *
- tqdm *
- uuid *
- eppy *
- fuzzywuzzy *
- matplotlib *
- numpy *
- pandas *
- scikit-learn *
- scipy *
- seaborn *
- tqdm *