{"id":35806,"name":"constrain","description":"Control Strainer (ConStrain) is a data-driven knowledge-integrated framework that automatically verifies that building system controls function as intended.","url":"https://github.com/pnnl/constrain","last_synced_at":"2025-09-05T06:51:06.118Z","repository":{"id":162867500,"uuid":"626583761","full_name":"pnnl/ConStrain","owner":"pnnl","description":"Control Strainer (ConStrain) is a data-driven knowledge-integrated framework that automatically verifies that building system controls function as intended.","archived":false,"fork":false,"pushed_at":"2025-08-01T01:03:40.000Z","size":59300,"stargazers_count":9,"open_issues_count":28,"forks_count":2,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2025-08-28T19:58:31.127Z","etag":null,"topics":["bms","building","commissioning","data","hvac","simulation","verification"],"latest_commit_sha":null,"homepage":"https://pnnl.github.io/ConStrain/index.html","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pnnl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-11T19:00:17.000Z","updated_at":"2025-07-08T20:18:23.000Z","dependencies_parsed_at":"2023-09-27T04:17:26.798Z","dependency_job_id":"d6e4084a-3251-42fc-8c59-a1f6f204e5e1","html_url":"https://github.com/pnnl/ConStrain","commit_stats":{"total_commits":549,"total_committers":9,"mean_commits":61.0,"dds":0.5992714025500911,"last_synced_commit":"001a848c4aeae042e3b8582cc55f96bc9aa5472f"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/pnnl/ConStrain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2FConStrain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2FConStrain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2FConStrain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2FConStrain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnnl","download_url":"https://codeload.github.com/pnnl/ConStrain/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2FConStrain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273649429,"owners_count":25143633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"pnnl","name":"Pacific Northwest National Laboratory (Public)","uuid":"10872965","kind":"organization","description":"This Org is intended for the hosting of approved released PNNL software repositories for public use and collaboration.","email":"dev-central@pnnl.gov","website":"http://www.pnnl.gov/","location":"United States of America","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/10872965?v=4","repositories_count":351,"last_synced_at":"2024-10-29T10:16:17.647Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pnnl","funding_links":[],"total_stars":3780,"followers":298,"following":0,"created_at":"2022-11-09T10:22:26.506Z","updated_at":"2024-10-29T10:16:17.647Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnnl","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnnl/repositories"},"packages":[],"commits":{"id":1452635,"full_name":"pnnl/constrain","default_branch":"develop","committers":[{"name":"Xuechen (Jerry) Lei","email":"xuechen.lei@pnnl.gov","login":"leijerry888","count":241},{"name":"Lerond, Jeremy","email":"jeremy.lerond@pnnl.gov","login":"lymereJ","count":229},{"name":"yunjoonjung","email":"yunjoon.jung@pnnl.gov","login":"yunjoonjung-PNNL","count":226},{"name":"FanFeng","email":"fengfan6696@gmail.com","login":"Fan-Feng","count":44},{"name":"Julian Slane","email":"julian.slane-holloway@pnnl.gov","login":"jslane-h","count":22},{"name":"Jeremy Lerond","email":"lero023@constance7a.local","login":null,"count":5},{"name":"Jeremy Lerond","email":"lero023@constance01.pnl.gov","login":null,"count":5},{"name":"Yan Chen","email":"yan.chen@pnnl.gov","login":"yanchenpnnl","count":3},{"name":"Jeremy Lerond","email":"lero023@constance03.pnl.gov","login":null,"count":1}],"total_commits":776,"total_committers":9,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":86.22222222222223,"dds":0.6894329896907216,"past_year_committers":[{"name":"yunjoonjung","email":"yunjoon.jung@pnnl.gov","login":"yunjoonjung-PNNL","count":81},{"name":"Lerond","email":"jeremy.lerond@pnnl.gov","login":"lymereJ","count":80},{"name":"Xuechen (Jerry) Lei","email":"xuechen.lei@pnnl.gov","login":"leijerry888","count":27},{"name":"Julian Slane","email":"julian.slane-holloway@pnnl.gov","login":"jslane-h","count":5},{"name":"Yan Chen","email":"yan.chen@pnnl.gov","login":"yanchenpnnl","count":1},{"name":"FanFeng","email":"fengfan6696@gmail.com","login":"Fan-Feng","count":1}],"past_year_total_commits":195,"past_year_total_committers":6,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":32.5,"past_year_dds":0.5846153846153845,"last_synced_at":"2025-08-11T06:01:40.822Z","last_synced_commit":"85ba2d4f0acfdd2cd8d18ce67872c9847f63a617","created_at":"2023-12-06T00:09:31.779Z","updated_at":"2025-08-11T06:01:41.506Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fconstrain/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-08-23T00:00:23.482Z","repositories_count":5479765,"commits_count":853308191,"contributors_count":31095157,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"pnnl/constrain","html_url":"https://github.com/pnnl/constrain","last_synced_at":"2025-08-31T15:43:31.383Z","status":null,"issues_count":20,"pull_requests_count":91,"avg_time_to_close_issue":2099173.75,"avg_time_to_close_pull_request":2764129.7922077924,"issues_closed_count":4,"pull_requests_closed_count":77,"pull_request_authors_count":5,"issue_authors_count":7,"avg_comments_per_issue":0.05,"avg_comments_per_pull_request":0.45054945054945056,"merged_pull_requests_count":75,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":13,"past_year_pull_requests_count":51,"past_year_avg_time_to_close_issue":785692.5,"past_year_avg_time_to_close_pull_request":1634672.775,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":40,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.19607843137254902,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":40,"created_at":"2023-12-06T00:09:38.735Z","updated_at":"2025-09-03T06:48:52.212Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fconstrain","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fconstrain/issues","issue_labels_count":{"bug":2},"pull_request_labels_count":{"DO NOT MERGE":1,"enhancement":1},"issue_author_associations_count":{"COLLABORATOR":17,"NONE":3},"pull_request_author_associations_count":{"COLLABORATOR":121},"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},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-03T00:00:08.273Z","repositories_count":10057061,"issues_count":30965349,"pull_requests_count":93487251,"authors_count":10684480,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"bug":2},"past_year_pull_request_labels_count":{"enhancement":1},"past_year_issue_author_associations_count":{"COLLABORATOR":10,"NONE":3},"past_year_pull_request_author_associations_count":{"COLLABORATOR":64},"past_year_issue_authors":{"leijerry888":3,"lymereJ":3,"yunjoonjung-PNNL":3,"FWuellhorst":1,"jslane-h":1,"lazlop":1,"wehuang16":1},"past_year_pull_request_authors":{"lymereJ":22,"yunjoonjung-PNNL":20,"leijerry888":18,"jslane-h":4},"maintainers":[{"login":"lymereJ","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/lymereJ"},{"login":"yunjoonjung-PNNL","count":27,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/yunjoonjung-PNNL"},{"login":"leijerry888","count":26,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/leijerry888"},{"login":"jslane-h","count":22,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jslane-h"},{"login":"Fan-Feng","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Fan-Feng"}],"active_maintainers":[{"login":"lymereJ","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/lymereJ"},{"login":"yunjoonjung-PNNL","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/yunjoonjung-PNNL"},{"login":"leijerry888","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/leijerry888"},{"login":"jslane-h","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jslane-h"}]},"events":{"total":{"CreateEvent":36,"ReleaseEvent":1,"IssuesEvent":10,"WatchEvent":4,"DeleteEvent":1,"IssueCommentEvent":15,"PushEvent":262,"PullRequestReviewEvent":159,"PullRequestReviewCommentEvent":146,"PullRequestEvent":57,"ForkEvent":2},"last_year":{"CreateEvent":36,"ReleaseEvent":1,"IssuesEvent":10,"WatchEvent":4,"DeleteEvent":1,"IssueCommentEvent":15,"PushEvent":262,"PullRequestReviewEvent":159,"PullRequestReviewCommentEvent":146,"PullRequestEvent":57,"ForkEvent":2}},"keywords":["bms","building","commissioning","data","hvac","simulation","verification"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/docs.yml","sha":null,"kind":"manifest","created_at":"2023-09-27T04:17:26.441Z","updated_at":"2023-09-27T04:17:26.441Z","repository_link":"https://github.com/pnnl/ConStrain/blob/develop/.github/workflows/docs.yml","dependencies":[{"id":13966178657,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13966178658,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":13966178659,"package_name":"peaceiris/actions-gh-pages","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/unit_tests.yml","sha":null,"kind":"manifest","created_at":"2023-09-27T04:17:26.498Z","updated_at":"2023-09-27T04:17:26.498Z","repository_link":"https://github.com/pnnl/ConStrain/blob/develop/.github/workflows/unit_tests.yml","dependencies":[{"id":13966178660,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13966178661,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":13966178662,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-27T04:17:26.518Z","updated_at":"2023-09-27T04:17:26.518Z","repository_link":"https://github.com/pnnl/ConStrain/blob/develop/requirements.txt","dependencies":[{"id":13966178663,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966178664,"package_name":"seaborn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966178665,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966178666,"package_name":"eppy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179287,"package_name":"fuzzywuzzy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179288,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179289,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179290,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179291,"package_name":"uuid","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-09-27T04:17:26.693Z","updated_at":"2023-09-27T04:17:26.693Z","repository_link":"https://github.com/pnnl/ConStrain/blob/develop/setup.py","dependencies":[{"id":13966179304,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179305,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179306,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179307,"package_name":"seaborn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179308,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179309,"package_name":"eppy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179310,"package_name":"fuzzywuzzy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179311,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13966179312,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":5.808142489980444,"created_at":"2025-09-04T15:51:09.319Z","updated_at":"2025-10-07T08:14:51.460Z","avatar_url":"https://github.com/pnnl.png","language":"Jupyter Notebook","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/35806","html_url":"https://science.ecosyste.ms/projects/35806","bibtex_url":"https://science.ecosyste.ms/projects/35806/export.bibtex","apalike_url":"https://science.ecosyste.ms/projects/35806/export.apalike"}