{"id":324897,"name":"GridFM","description":"Train, finetune and interact with a foundation model for the electric power grid.","url":"https://github.com/gridfm/gridfm-graphkit","last_synced_at":"2026-04-21T09:31:10.775Z","repository":{"id":300833485,"uuid":"1007159095","full_name":"gridfm/gridfm-graphkit","owner":"gridfm","description":"Train, finetune and interact with a foundation model for the electric power grid.","archived":false,"fork":false,"pushed_at":"2026-04-08T21:02:42.000Z","size":150843,"stargazers_count":73,"open_issues_count":13,"forks_count":18,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-08T23:05:47.662Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gridfm.github.io/gridfm-graphkit/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gridfm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-23T14:51:29.000Z","updated_at":"2026-04-06T11:14:05.000Z","dependencies_parsed_at":"2025-09-05T17:35:52.896Z","dependency_job_id":"f6c49597-f8c3-47ec-8bb7-badec80e647a","html_url":"https://github.com/gridfm/gridfm-graphkit","commit_stats":null,"previous_names":["gridfm/gridfm-graphkit"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/gridfm/gridfm-graphkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridfm","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"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":"gridfm","name":"gridfm","uuid":"12138362","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/12138362?v=4","repositories_count":1,"last_synced_at":"2023-03-01T14:30:36.533Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/gridfm","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-12T11:38:04.530Z","updated_at":"2023-03-01T14:30:36.556Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridfm","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridfm/repositories"},"packages":[{"id":11833386,"name":"gridfm-graphkit","ecosystem":"pypi","description":"Grid Foundation Model","homepage":null,"licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/gridfm/gridfm-graphkit","keywords_array":["electric power grid","foundational model","graph neural networks"],"namespace":null,"versions_count":7,"first_release_published_at":"2025-06-24T12:09:24.000Z","latest_release_published_at":"2025-09-03T11:36:07.000Z","latest_release_number":"0.0.6","last_synced_at":"2026-04-13T06:15:31.095Z","created_at":"2025-06-24T12:16:06.786Z","updated_at":"2026-04-13T11:34:01.516Z","registry_url":"https://pypi.org/project/gridfm-graphkit/","install_command":"pip install gridfm-graphkit --index-url https://pypi.org/simple","documentation_url":"https://gridfm-graphkit.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 2 - Pre-Alpha","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Topic :: Scientific/Engineering :: Artificial Intelligence"],"normalized_name":"gridfm-graphkit","project_status":null},"repo_metadata":{"id":300833485,"uuid":"1007159095","full_name":"gridfm/gridfm-graphkit","owner":"gridfm","description":"Train, finetune and interact with a foundation model for the electric power grid.","archived":false,"fork":false,"pushed_at":"2026-04-08T21:02:42.000Z","size":150843,"stargazers_count":73,"open_issues_count":13,"forks_count":18,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-08T23:05:47.662Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gridfm.github.io/gridfm-graphkit/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gridfm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-23T14:51:29.000Z","updated_at":"2026-04-06T11:14:05.000Z","dependencies_parsed_at":"2025-09-05T17:35:52.896Z","dependency_job_id":"f6c49597-f8c3-47ec-8bb7-badec80e647a","html_url":"https://github.com/gridfm/gridfm-graphkit","commit_stats":null,"previous_names":["gridfm/gridfm-graphkit"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/gridfm/gridfm-graphkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridfm","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"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_record":{"login":"gridfm","name":"gridfm","uuid":"12138362","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/12138362?v=4","repositories_count":1,"last_synced_at":"2023-03-01T14:30:36.533Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/gridfm","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-12T11:38:04.530Z","updated_at":"2023-03-01T14:30:36.556Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridfm","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridfm/repositories"},"tags":[{"name":"v0.0.6","sha":"e1a6b765af37bcafce6f0fb3e68a99972b3f1737","kind":"commit","published_at":"2025-09-03T11:28:22.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.6","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.6/manifests"},{"name":"v0.0.5","sha":"386c94f9dd8d77b970901fdb9d5536545b23e0ab","kind":"commit","published_at":"2025-09-01T07:15:39.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.5","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.5/manifests"},{"name":"v0.0.4","sha":"7e83e22bb426691972ba7c00c6489ec9b977e091","kind":"commit","published_at":"2025-08-22T11:14:25.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.4","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"18b20896c663576d0731eadd5039f522f6ae3de1","kind":"commit","published_at":"2025-08-05T07:50:10.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.3","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.3/manifests"},{"name":"v0.0.2a","sha":"1fb7720523581478a4c2092b922bf77764b17295","kind":"commit","published_at":"2025-06-24T14:26:30.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.2a","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.2a","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.2a","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.2a","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.2a/manifests"},{"name":"v0.0.2","sha":"1bb5117e82e59559fae21e7dcab3e22b4184866c","kind":"commit","published_at":"2025-06-24T13:51:32.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.2","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.2/manifests"},{"name":"v0.0.1b","sha":"1bb5117e82e59559fae21e7dcab3e22b4184866c","kind":"commit","published_at":"2025-06-24T13:51:32.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.1b","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.1b","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.1b","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.1b","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.1b/manifests"},{"name":"v0.0.1a1","sha":"1bb5117e82e59559fae21e7dcab3e22b4184866c","kind":"commit","published_at":"2025-06-24T13:51:32.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.1a1","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.1a1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.1a1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.1a1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.1a1/manifests"},{"name":"v0.0.1","sha":"e0a1689014eaabcd798aaf43a62a9250f36a9f3e","kind":"commit","published_at":"2025-06-24T11:51:21.000Z","download_url":"https://codeload.github.com/gridfm/gridfm-graphkit/tar.gz/v0.0.1","html_url":"https://github.com/gridfm/gridfm-graphkit/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/gridfm/gridfm-graphkit@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-13T11:34:01.488Z","dependent_packages_count":0,"downloads":122,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":50.39929142460118,"dependent_packages_count":8.944185332087297,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":29.671738378344237},"purl":"pkg:pypi/gridfm-graphkit","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/gridfm-graphkit","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/gridfm-graphkit","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/gridfm-graphkit/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-09T04:01:14.473Z","issues_count":3,"pull_requests_count":29,"avg_time_to_close_issue":4411506.5,"avg_time_to_close_pull_request":977348.8125,"issues_closed_count":2,"pull_requests_closed_count":16,"pull_request_authors_count":10,"issue_authors_count":3,"avg_comments_per_issue":0.3333333333333333,"avg_comments_per_pull_request":0.20689655172413793,"merged_pull_requests_count":14,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":29,"past_year_avg_time_to_close_issue":4411506.5,"past_year_avg_time_to_close_pull_request":977348.8125,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":16,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":0.20689655172413793,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":14,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/issues","maintainers":[{"login":"MatteoMazzonelli","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MatteoMazzonelli"},{"login":"albanpuech","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/albanpuech"},{"login":"romeokienzler","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/romeokienzler"},{"login":"Mangaliso-M","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mangaliso-M"},{"login":"ttolhurst","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ttolhurst"},{"login":"naomi-simumba","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/naomi-simumba"}],"active_maintainers":[{"login":"MatteoMazzonelli","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MatteoMazzonelli"},{"login":"albanpuech","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/albanpuech"},{"login":"romeokienzler","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/romeokienzler"},{"login":"Mangaliso-M","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mangaliso-M"},{"login":"ttolhurst","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ttolhurst"},{"login":"naomi-simumba","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/naomi-simumba"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gridfm-graphkit/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gridfm-graphkit/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gridfm-graphkit/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gridfm-graphkit/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gridfm-graphkit/codemeta","maintainers":[{"uuid":"ccintas","login":"ccintas","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/ccintas/","role":"Owner","created_at":"2025-06-24T13:02:54.452Z","updated_at":"2025-06-24T13:02:54.452Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ccintas/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":841573,"maintainers_count":359517,"namespaces_count":0,"keywords_count":271316,"github":"pypi","metadata":{"funded_packages_count":53172},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-09T05:08:03.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":10886130,"full_name":"gridfm/gridfm-graphkit","default_branch":"master","total_commits":259,"total_committers":15,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":17.266666666666666,"dds":0.5868725868725868,"past_year_total_commits":239,"past_year_total_committers":11,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":21.727272727272727,"past_year_dds":0.5523012552301255,"last_synced_at":"2026-04-13T06:02:16.864Z","last_synced_commit":"5745a113ffe3c2c6ed4ec58eadc2de05c29b7583","created_at":"2025-09-03T21:14:55.385Z","updated_at":"2026-04-13T06:02:06.006Z","committers":[{"name":"Romeo Kienzler","email":"romeo.kienzler1@ibm.com","login":"romeokienzler","count":107},{"name":"MatteoMazzonelli","email":"matteo.mazzonelli1@ibm.com","login":"MatteoMazzonelli","count":53},{"name":"Alban Puech","email":"nabla.hceup@gmail.com","login":"albanpuech","count":21},{"name":"Mangaliso Mngomomezulu","email":"65779966+Mangaliso-M","login":"Mangaliso-M","count":20},{"name":"Matteo Mazzonelli","email":"Matteo.Mazzonelli@ibm.com","login":null,"count":12},{"name":"Mangaliso Mngomezulu","email":"mangalisomngomezulu@Mangalisos-MacBook-Pro.local","login":null,"count":10},{"name":"Celia Cintas","email":"celia.cintas@ibm.com","login":"celiacintas","count":9},{"name":"Mangaliso Mngomezulu","email":"mangalisomngomezulu@macbookpro.witsjuta.za.ibm.com","login":null,"count":6},{"name":"Hector Maeso Garcia","email":"hector.maeso.garcia@ibm.com","login":null,"count":6},{"name":"Alban Puech","email":"Alban.Puech1@ibm.com","login":null,"count":6},{"name":"“Mangaliso-M”","email":"“mangalisommngomezulu@gmail.com”","login":null,"count":4},{"name":"Francois Miralles","email":"4765639+frmir","login":"frmir","count":2},{"name":"Jonas Weiss","email":"JWE@zurich.ibm.com","login":"jonasweiss","count":1},{"name":"Etienne Eben Vos","email":"Etienne.Vos@ibm.com","login":"etienne-v","count":1},{"name":"Hector Maeso Garcia","email":"Hector.Maeso.Garcia@ibm.com","login":null,"count":1}],"past_year_committers":[{"name":"Romeo Kienzler","email":"romeo.kienzler1@ibm.com","login":"romeokienzler","count":107},{"name":"MatteoMazzonelli","email":"matteo.mazzonelli1@ibm.com","login":"MatteoMazzonelli","count":53},{"name":"Alban Puech","email":"nabla.hceup@gmail.com","login":"albanpuech","count":21},{"name":"Mangaliso Mngomomezulu","email":"65779966+Mangaliso-M","login":"Mangaliso-M","count":20},{"name":"Mangaliso Mngomezulu","email":"mangalisomngomezulu@Mangalisos-MacBook-Pro.local","login":null,"count":10},{"name":"Celia Cintas","email":"celia.cintas@ibm.com","login":"celiacintas","count":9},{"name":"Mangaliso Mngomezulu","email":"mangalisomngomezulu@macbookpro.witsjuta.za.ibm.com","login":null,"count":6},{"name":"Hector Maeso Garcia","email":"hector.maeso.garcia@ibm.com","login":null,"count":6},{"name":"“Mangaliso-M”","email":"“mangalisommngomezulu@gmail.com”","login":null,"count":4},{"name":"Francois Miralles","email":"4765639+frmir","login":"frmir","count":2},{"name":"Hector Maeso Garcia","email":"Hector.Maeso.Garcia@ibm.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-15T00:00:09.512Z","repositories_count":6213593,"commits_count":903370819,"contributors_count":34924210,"owners_count":1144562,"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":"gridfm/gridfm-graphkit","html_url":"https://github.com/gridfm/gridfm-graphkit","last_synced_at":"2026-04-13T13:07:25.689Z","status":null,"issues_count":3,"pull_requests_count":30,"avg_time_to_close_issue":4411506.5,"avg_time_to_close_pull_request":935411.8823529412,"issues_closed_count":2,"pull_requests_closed_count":17,"pull_request_authors_count":10,"issue_authors_count":3,"avg_comments_per_issue":0.3333333333333333,"avg_comments_per_pull_request":0.2,"merged_pull_requests_count":15,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":30,"past_year_avg_time_to_close_issue":4411506.5,"past_year_avg_time_to_close_pull_request":935411.8823529412,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":17,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":0.2,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":15,"created_at":"2025-07-16T12:24:34.309Z","updated_at":"2026-04-13T13:07:25.690Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridfm%2Fgridfm-graphkit/issues","issue_labels_count":{"bug":1},"pull_request_labels_count":{"enhancement":4,"documentation":2},"issue_author_associations_count":{"NONE":3},"pull_request_author_associations_count":{"COLLABORATOR":20,"MEMBER":5,"NONE":3,"CONTRIBUTOR":2},"issue_authors":{"TavoIREQ":1,"janu000":1,"mellson":1},"pull_request_authors":{"MatteoMazzonelli":9,"albanpuech":4,"romeokienzler":4,"Mangaliso-M":3,"ttolhurst":3,"mkisuule":2,"naomi-simumba":2,"celiacintas":1,"Tamaragov":1,"emmanuelbadmus":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-15T00:00:09.535Z","repositories_count":14269060,"issues_count":34630327,"pull_requests_count":113269358,"authors_count":11234946,"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":1},"past_year_pull_request_labels_count":{"enhancement":4,"documentation":2},"past_year_issue_author_associations_count":{"NONE":3},"past_year_pull_request_author_associations_count":{"COLLABORATOR":20,"MEMBER":5,"NONE":3,"CONTRIBUTOR":2},"past_year_issue_authors":{"janu000":1,"mellson":1,"TavoIREQ":1},"past_year_pull_request_authors":{"MatteoMazzonelli":9,"albanpuech":4,"romeokienzler":4,"Mangaliso-M":3,"ttolhurst":3,"mkisuule":2,"naomi-simumba":2,"celiacintas":1,"emmanuelbadmus":1,"Tamaragov":1},"maintainers":[{"login":"MatteoMazzonelli","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MatteoMazzonelli"},{"login":"albanpuech","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/albanpuech"},{"login":"romeokienzler","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/romeokienzler"},{"login":"Mangaliso-M","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mangaliso-M"},{"login":"ttolhurst","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ttolhurst"},{"login":"naomi-simumba","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/naomi-simumba"}],"active_maintainers":[{"login":"MatteoMazzonelli","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MatteoMazzonelli"},{"login":"albanpuech","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/albanpuech"},{"login":"romeokienzler","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/romeokienzler"},{"login":"Mangaliso-M","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mangaliso-M"},{"login":"ttolhurst","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ttolhurst"},{"login":"naomi-simumba","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/naomi-simumba"}]},"events":{"total":{"ReleaseEvent":4,"DeleteEvent":11,"MemberEvent":3,"PullRequestEvent":24,"ForkEvent":4,"IssuesEvent":5,"WatchEvent":26,"IssueCommentEvent":1,"PushEvent":99,"PullRequestReviewCommentEvent":12,"PullRequestReviewEvent":11,"CreateEvent":29},"last_year":{"ReleaseEvent":4,"DeleteEvent":11,"MemberEvent":3,"PullRequestEvent":24,"ForkEvent":4,"IssuesEvent":5,"WatchEvent":26,"IssueCommentEvent":1,"PushEvent":99,"PullRequestReviewCommentEvent":12,"PullRequestReviewEvent":11,"CreateEvent":29}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/ci-build.yaml","sha":null,"kind":"manifest","created_at":"2025-06-23T21:44:20.693Z","updated_at":"2025-06-23T21:44:20.693Z","repository_link":"https://github.com/gridfm/gridfm-graphkit/blob/main/.github/workflows/ci-build.yaml","dependencies":[{"id":23780851846,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":23780851847,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/deploy_docs.yaml","sha":null,"kind":"manifest","created_at":"2025-06-23T21:44:20.766Z","updated_at":"2025-06-23T21:44:20.766Z","repository_link":"https://github.com/gridfm/gridfm-graphkit/blob/main/.github/workflows/deploy_docs.yaml","dependencies":[{"id":23780852014,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":23780852015,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":23780852016,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-06-23T21:44:20.861Z","updated_at":"2025-06-23T21:44:20.861Z","repository_link":"https://github.com/gridfm/gridfm-graphkit/blob/main/pyproject.toml","dependencies":[{"id":23780852017,"package_name":"mlflow","ecosystem":"pypi","requirements":"\u003e=3.1.0","direct":true,"kind":"runtime","optional":false},{"id":23780852018,"package_name":"nbformat","ecosystem":"pypi","requirements":"\u003e=5.10.4","direct":true,"kind":"runtime","optional":false},{"id":23780852019,"package_name":"networkx","ecosystem":"pypi","requirements":"\u003e=3.4.2","direct":true,"kind":"runtime","optional":false},{"id":23780852020,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=2.2.6","direct":true,"kind":"runtime","optional":false},{"id":23780852021,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=2.3.0","direct":true,"kind":"runtime","optional":false},{"id":23780852022,"package_name":"plotly","ecosystem":"pypi","requirements":"\u003e=6.1.2","direct":true,"kind":"runtime","optional":false},{"id":23780852023,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=6.0.2","direct":true,"kind":"runtime","optional":false},{"id":23780852024,"package_name":"torch","ecosystem":"pypi","requirements":"\u003e=2.7.1","direct":true,"kind":"runtime","optional":false},{"id":23780852025,"package_name":"torch-geometric","ecosystem":"pypi","requirements":"\u003e=2.6.1","direct":true,"kind":"runtime","optional":false},{"id":23780852026,"package_name":"torchaudio","ecosystem":"pypi","requirements":"\u003e=2.7.1","direct":true,"kind":"runtime","optional":false},{"id":23780852027,"package_name":"torchvision","ecosystem":"pypi","requirements":"\u003e=0.22.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release.yaml","sha":null,"kind":"manifest","created_at":"2025-07-29T14:42:16.864Z","updated_at":"2025-07-29T14:42:16.864Z","repository_link":"https://github.com/gridfm/gridfm-graphkit/blob/main/.github/workflows/release.yaml","dependencies":[{"id":24398986602,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24398986603,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24398986604,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false}]}],"score":11.974581852728134,"created_at":"2025-09-19T00:06:02.092Z","updated_at":"2026-04-21T09:31:10.778Z","avatar_url":"https://github.com/gridfm.png","language":"Python","category":"Energy Systems","sub_category":"Grid Analysis and Planning","monthly_downloads":122,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/gridfm/gridfm-graphkit/refs/heads/main/docs/figs/KIT.png\" alt=\"GridFM logo\" style=\"width: 40%; height: auto;\"/\u003e\n  \u003cbr/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"font-size: 25px;\"\u003e\n    \u003cb\u003egridfm-graphkit\u003c/b\u003e\n\u003c/p\u003e\n\n\n[![DOI](https://zenodo.org/badge/1007159095.svg)](https://doi.org/10.5281/zenodo.17016737)\n[![Docs](https://img.shields.io/badge/docs-available-brightgreen)](https://gridfm.github.io/gridfm-graphkit/)\n![Coverage](https://img.shields.io/badge/coverage-83%25-yellowgreen)\n![Python](https://img.shields.io/badge/python-3.10%20%E2%80%93%203.12-blue)\n![License](https://img.shields.io/badge/license-Apache%202.0-blue)\n\nThis library is brought to you by the GridFM team to train, finetune and interact with a foundation model for the electric power grid.\n\n---\n\n# Installation\n\nCreate and activate a virtual environment (make sure you use the right python version = 3.10, 3.11 or 3.12. I highly recommend 3.12)\n```bash\npython -m venv venv\nsource venv/bin/activate\n```\n\nInstall gridfm-graphkit in editable mode\n```bash\npip install -e .\n```\n\nGet PyTorch + CUDA version for torch-scatter\n```bash\nTORCH_CUDA_VERSION=$(python -c \"import torch; print(torch.__version__ + ('+cpu' if torch.version.cuda is None else ''))\")\n```\n\nInstall the correct torch-scatter wheel\n```bash\npip install torch-scatter -f https://data.pyg.org/whl/torch-${TORCH_CUDA_VERSION}.html\n```\n\n\nFor documentation generation and unit testing, install with the optional `dev` and `test` extras:\n\n```bash\npip install -e .[dev,test]\n```\n\n\n# CLI commands\n\nInterface to train, fine-tune, evaluate, and run inference on GridFM models using YAML configs and MLflow tracking.\n\n```bash\ngridfm_graphkit \u003ccommand\u003e [OPTIONS]\n```\n\nAvailable commands:\n\n* `train` - Train a new model from scratch\n* `finetune` – Fine-tune an existing pre-trained model\n* `evaluate` – Evaluate model performance on a dataset\n* `predict` – Run inference and save predictions\n\n---\n\n## Training Models\n\n```bash\ngridfm_graphkit train --config path/to/config.yaml\n```\n\n### Arguments\n\n| Argument         | Type   | Description                                                      | Default |\n| ---------------- | ------ | ---------------------------------------------------------------- | ------- |\n| `--config`       | `str`  | **Required**. Path to the training configuration YAML file.      | `None`       |\n| `--exp_name`     | `str`  | MLflow experiment name.                                           | `timestamp`  |\n| `--run_name`     | `str`  | MLflow run name.                                                  | `run`        |\n| `--log_dir`      | `str`  | MLflow tracking/logging directory.                                | `mlruns`     |\n| `--data_path`    | `str`  | Root dataset directory.                                           | `data`       |\n\n### Examples\n\n**Standard Training:**\n\n```bash\ngridfm_graphkit train --config examples/config/case30_ieee_base.yaml --data_path examples/data\n```\n\n---\n\n## Fine-Tuning Models\n\n```bash\ngridfm_graphkit finetune --config path/to/config.yaml --model_path path/to/model.pt\n```\n\n### Arguments\n\n| Argument       | Type  | Description                                     | Default   |\n| -------------- | ----- | ----------------------------------------------- | --------- |\n| `--config`     | `str` | **Required**. Fine-tuning configuration file.   | `None`    |\n| `--model_path` | `str` | **Required**. Path to a pre-trained model state dict. | `None`    |\n| `--exp_name`   | `str` | MLflow experiment name.                         | timestamp |\n| `--run_name`   | `str` | MLflow run name.                                | `run`     |\n| `--log_dir`    | `str` | MLflow logging directory.                       | `mlruns`  |\n| `--data_path`  | `str` | Root dataset directory.                         | `data`    |\n\n\n---\n\n## Evaluating Models\n\n```bash\ngridfm_graphkit evaluate --config path/to/eval.yaml --model_path path/to/model.pt\n```\n\n### Arguments\n\n| Argument              | Type  | Description                                                                                                   | Default   |\n| --------------------- | ----- | ------------------------------------------------------------------------------------------------------------- | --------- |\n| `--config`            | `str` | **Required**. Path to evaluation config.                                                                      | `None`    |\n| `--model_path`        | `str` | Path to the trained model state dict.                                                                         | `None`    |\n| `--normalizer_stats`  | `str` | Path to `normalizer_stats.pt` from a training run. Restores `fit_on_train` normalizers from saved statistics instead of re-fitting on the current data split. | `None`    |\n| `--exp_name`          | `str` | MLflow experiment name.                                                                                       | timestamp |\n| `--run_name`          | `str` | MLflow run name.                                                                                              | `run`     |\n| `--log_dir`           | `str` | MLflow logging directory.                                                                                     | `mlruns`  |\n| `--data_path`         | `str` | Dataset directory.                                                                                            | `data`    |\n| `--compute_dc_ac_metrics` | `flag` | Compute ground-truth AC/DC power balance metrics on the test split.                                      | `False`   |\n| `--save_output`       | `flag` | Save predictions as `\u003cgrid_name\u003e_predictions.parquet` under MLflow artifacts (`.../artifacts/test`).       | `False`   |\n\n### Example with saved normalizer stats\n\nWhen evaluating a model on a dataset, you can pass the normalizer statistics from the original training run to ensure the same normalization parameters are used:\n\n```bash\ngridfm_graphkit evaluate \\\n  --config examples/config/HGNS_PF_datakit_case118.yaml \\\n  --model_path mlruns/\u003cexperiment_id\u003e/\u003crun_id\u003e/artifacts/model/best_model_state_dict.pt \\\n  --normalizer_stats mlruns/\u003cexperiment_id\u003e/\u003crun_id\u003e/artifacts/stats/normalizer_stats.pt \\\n  --data_path data\n```\n\n\u003e **Note:** The `--normalizer_stats` flag only affects normalizers with `fit_strategy = \"fit_on_train\"` (e.g. `HeteroDataMVANormalizer`). Per-sample normalizers (`HeteroDataPerSampleMVANormalizer`) always recompute their statistics from the current dataset regardless of this flag.\n\n---\n\n## Running Predictions\n\n```bash\ngridfm_graphkit predict --config path/to/config.yaml --model_path path/to/model.pt\n```\n\n### Arguments\n\n| Argument              | Type  | Description                                                                                                   | Default   |\n| --------------------- | ----- | ------------------------------------------------------------------------------------------------------------- | --------- |\n| `--config`            | `str` | **Required**. Path to prediction config file.                                                                 | `None`    |\n| `--model_path`        | `str` | Path to the trained model state dict.                                                                         | `None`    |\n| `--normalizer_stats`  | `str` | Path to `normalizer_stats.pt` from a training run. Restores `fit_on_train` normalizers from saved statistics. | `None`    |\n| `--exp_name`          | `str` | MLflow experiment name.                                                                                       | timestamp |\n| `--run_name`          | `str` | MLflow run name.                                                                                              | `run`     |\n| `--log_dir`           | `str` | MLflow logging directory.                                                                                     | `mlruns`  |\n| `--data_path`         | `str` | Dataset directory.                                                                                            | `data`    |\n| `--output_path`       | `str` | Directory where predictions are saved as `\u003cgrid_name\u003e_predictions.parquet`.                                  | `data`    |\n\nUse built-in help for full command details:\n\n```bash\ngridfm_graphkit --help\ngridfm_graphkit \u003ccommand\u003e --help\n```\n\n---\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.17016737"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/324897","html_url":"https://ost.ecosyste.ms/projects/324897"}