{"id":20131,"name":"Gym Electric Motor","description":"An OpenAI Gym Environment for Electric Motors.","url":"https://github.com/upb-lea/gym-electric-motor","last_synced_at":"2026-04-12T17:03:24.799Z","repository":{"id":37868016,"uuid":"216583232","full_name":"upb-lea/gym-electric-motor","owner":"upb-lea","description":"Gym Electric Motor (GEM): An OpenAI Gym Environment for Electric Motors","archived":false,"fork":false,"pushed_at":"2025-12-19T16:02:26.000Z","size":41065,"stargazers_count":398,"open_issues_count":34,"forks_count":81,"subscribers_count":18,"default_branch":"master","last_synced_at":"2026-04-05T08:09:32.076Z","etag":null,"topics":["benchmark","converters","electric-drive","electrical-engineering","gym-environment","machinelearning","motor-models","openai","openai-gym","openai-gym-environments","pmsm","reinforcement-learning"],"latest_commit_sha":null,"homepage":"https://upb-lea.github.io/gym-electric-motor/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/upb-lea.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":null,"governance":null,"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":"2019-10-21T14:04:01.000Z","updated_at":"2026-04-02T04:38:29.000Z","dependencies_parsed_at":"2023-09-21T19:22:54.682Z","dependency_job_id":"514aef19-b212-4be0-aeb6-91b1d84e45f0","html_url":"https://github.com/upb-lea/gym-electric-motor","commit_stats":{"total_commits":890,"total_committers":21,"mean_commits":42.38095238095238,"dds":0.7067415730337079,"last_synced_commit":"55551964c82dac2de96d9d23f31def3c4827e316"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/upb-lea/gym-electric-motor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/sbom","scorecard":{"id":910612,"data":{"date":"2025-08-11","repo":{"name":"github.com/upb-lea/gym-electric-motor","commit":"55551964c82dac2de96d9d23f31def3c4827e316"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":6,"reason":"Found 5/8 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build_and_test.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi-publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_test.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/build_and_test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/build_and_test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_test.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/build_and_test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_and_test.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/build_and_test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_and_test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/build_and_test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/pypi-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/upb-lea/gym-electric-motor/pypi-publish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build_and_test.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/build_and_test.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/build_and_test.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:30","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   6 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T18:59:28.010Z","repository_id":37868016,"created_at":"2025-08-24T18:59:28.010Z","updated_at":"2025-08-24T18:59:28.010Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31475202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"upb-lea","name":"Paderborn University - LEA","uuid":"55782224","kind":"organization","description":"Department of power electronics and electrical drives","email":null,"website":"https://ei.uni-paderborn.de/en/lea/","location":"Paderborn, Germany","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55782224?v=4","repositories_count":29,"last_synced_at":"2024-05-11T05:41:49.412Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/upb-lea","funding_links":[],"total_stars":2078,"followers":115,"following":0,"created_at":"2022-11-15T04:32:46.282Z","updated_at":"2024-05-11T05:42:03.945Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea/repositories"},"packages":[{"id":2754851,"name":"gym-electric-motor","ecosystem":"pypi","description":"A Farama Gymnasium environment for electric motor control.","homepage":"https://github.com/upb-lea/gym-electric-motor","licenses":"MIT License","normalized_licenses":["MIT"],"repository_url":"https://github.com/upb-lea/gym-electric-motor","keywords_array":[],"namespace":null,"versions_count":15,"first_release_published_at":"2019-10-21T14:18:48.000Z","latest_release_published_at":"2024-11-19T17:19:52.000Z","latest_release_number":"3.0.2","last_synced_at":"2025-10-31T03:51:49.523Z","created_at":"2022-04-10T11:12:39.594Z","updated_at":"2025-10-31T03:51:49.523Z","registry_url":"https://pypi.org/project/gym-electric-motor/","install_command":"pip install gym-electric-motor --index-url https://pypi.org/simple","documentation_url":"https://gym-electric-motor.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: MIT License","Operating System :: OS Independent","Programming Language :: Python :: 3"],"normalized_name":"gym-electric-motor","project_status":null},"repo_metadata":{"id":37868016,"uuid":"216583232","full_name":"upb-lea/gym-electric-motor","owner":"upb-lea","description":"Gym Electric Motor (GEM): An OpenAI Gym Environment for Electric Motors","archived":false,"fork":false,"pushed_at":"2024-09-26T13:18:52.000Z","size":32719,"stargazers_count":296,"open_issues_count":24,"forks_count":66,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-10-29T20:37:14.999Z","etag":null,"topics":["benchmark","converters","electric-drive","electrical-engineering","gym-environment","machinelearning","motor-models","openai","openai-gym","openai-gym-environments","pmsm","reinforcement-learning"],"latest_commit_sha":null,"homepage":"https://upb-lea.github.io/gym-electric-motor/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/upb-lea.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-21T14:04:01.000Z","updated_at":"2024-10-26T11:54:42.000Z","dependencies_parsed_at":"2023-09-21T19:22:54.682Z","dependency_job_id":"514aef19-b212-4be0-aeb6-91b1d84e45f0","html_url":"https://github.com/upb-lea/gym-electric-motor","commit_stats":{"total_commits":809,"total_committers":18,"mean_commits":44.94444444444444,"dds":0.6773794808405439,"last_synced_commit":"5443a5157f1320a9d3f8852efc37ae9e77bc619c"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222131010,"owners_count":16936304,"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","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":"upb-lea","name":"Paderborn University - LEA","uuid":"55782224","kind":"organization","description":"Department of power electronics and electrical drives","email":null,"website":"https://ei.uni-paderborn.de/en/lea/","location":"Paderborn, Germany","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55782224?v=4","repositories_count":29,"last_synced_at":"2024-05-11T05:41:49.412Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/upb-lea","funding_links":[],"total_stars":2078,"followers":115,"following":0,"created_at":"2022-11-15T04:32:46.282Z","updated_at":"2024-05-11T05:42:03.945Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea/repositories"},"tags":[{"name":"v2.0.0","sha":"5443a5157f1320a9d3f8852efc37ae9e77bc619c","kind":"commit","published_at":"2023-08-15T08:17:37.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v2.0.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v2.0.0/manifests"},{"name":"v1.1.0","sha":"f08d629d53d18154ca1d87198e0a0a3b9d2531b2","kind":"commit","published_at":"2022-06-15T07:09:01.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v1.1.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"cea19d37ef9f43df61f41275a065dde609ea4f29","kind":"commit","published_at":"2021-12-20T15:49:38.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v1.0.1","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"f091d6b4a754d4fa2439fea64e2c89b9e86d683a","kind":"commit","published_at":"2021-08-23T14:15:55.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v1.0.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v1.0.0/manifests"},{"name":"1.0.0","sha":"f091d6b4a754d4fa2439fea64e2c89b9e86d683a","kind":"commit","published_at":"2021-08-23T14:15:55.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/1.0.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/1.0.0/manifests"},{"name":"v0.3.1","sha":"4af23188ed465a7ead5ac73131567fe6640a2b0e","kind":"commit","published_at":"2020-12-18T15:27:38.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v0.3.1","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"bccb23628055830ac52286211860d8431de78862","kind":"commit","published_at":"2020-10-22T20:36:19.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v0.3.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"793233ebeaea6951646f518c0cbd3b3a2e5c7955","kind":"commit","published_at":"2020-04-30T14:31:53.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v0.2.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.2.0/manifests"},{"name":"v0.1.1","sha":"3da3ca0ffa6f5781b3746825da7f8f1949fb6577","kind":"commit","published_at":"2020-04-29T09:31:38.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v0.1.1","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"2bcdb5a3171b36668d9b3f613bd384be502ae236","kind":"commit","published_at":"2020-04-24T07:44:14.000Z","download_url":"https://codeload.github.com/upb-lea/gym-electric-motor/tar.gz/v0.1.0","html_url":"https://github.com/upb-lea/gym-electric-motor/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2024-10-29T23:14:16.413Z","dependent_packages_count":0,"downloads":291,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":21.722234186260497,"dependent_repos_count":22.087784936889527,"dependent_packages_count":7.31012528119255,"stargazers_count":4.19170584850039,"forks_count":5.452769354551381,"docker_downloads_count":null,"average":12.15292392147887},"purl":"pkg:pypi/gym-electric-motor","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/gym-electric-motor","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/gym-electric-motor","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/gym-electric-motor/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T19:32:57.119Z","issues_count":131,"pull_requests_count":116,"avg_time_to_close_issue":7401200.675925926,"avg_time_to_close_pull_request":822411.9035087719,"issues_closed_count":108,"pull_requests_closed_count":114,"pull_request_authors_count":16,"issue_authors_count":30,"avg_comments_per_issue":2.5114503816793894,"avg_comments_per_pull_request":1.146551724137931,"merged_pull_requests_count":90,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":15,"past_year_pull_requests_count":13,"past_year_avg_time_to_close_issue":4682885.0,"past_year_avg_time_to_close_pull_request":1493843.2727272727,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":11,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":0.8,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/issues","maintainers":[{"login":"atra94","count":59,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/atra94"},{"login":"max-schenke","count":30,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/max-schenke"},{"login":"XyDrKRulof","count":30,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/XyDrKRulof"},{"login":"wkirgsn","count":26,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wkirgsn"},{"login":"wallscheid","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wallscheid"},{"login":"fbook98","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fbook98"},{"login":"GitPascalP","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/GitPascalP"},{"login":"devandt","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/devandt"},{"login":"bhk11","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bhk11"},{"login":"KoehlerM173","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/KoehlerM173"},{"login":"MarvinMeyer","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MarvinMeyer"},{"login":"praneeth-b","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/praneeth-b"}],"active_maintainers":[{"login":"XyDrKRulof","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/XyDrKRulof"},{"login":"max-schenke","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/max-schenke"},{"login":"devandt","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/devandt"},{"login":"bhk11","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bhk11"},{"login":"KoehlerM173","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/KoehlerM173"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gym-electric-motor/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gym-electric-motor/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gym-electric-motor/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gym-electric-motor/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/gym-electric-motor/codemeta","maintainers":[{"uuid":"wkirgsn","login":"wkirgsn","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/wkirgsn/","role":null,"created_at":"2023-02-24T09:12:27.431Z","updated_at":"2023-02-24T09:12:27.431Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/wkirgsn/packages"},{"uuid":"bhk","login":"bhk","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/bhk/","role":"Owner","created_at":"2023-08-17T09:39:21.587Z","updated_at":"2023-08-17T09:39:21.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/bhk/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":745943,"maintainers_count":316622,"namespaces_count":0,"keywords_count":245871,"github":"pypi","metadata":{"funded_packages_count":52290},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-10-29T05:45:24.783Z","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":590691,"full_name":"upb-lea/gym-electric-motor","default_branch":"master","total_commits":890,"total_committers":21,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":42.38095238095238,"dds":0.7067415730337079,"past_year_total_commits":15,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.0,"past_year_dds":0.19999999999999996,"last_synced_at":"2025-10-30T21:06:27.976Z","last_synced_commit":"55551964c82dac2de96d9d23f31def3c4827e316","created_at":"2023-03-09T06:19:42.003Z","updated_at":"2025-10-30T21:05:47.279Z","committers":[{"name":"Arne","email":"arnetraue@gmx.de","login":"atra94","count":261},{"name":"wkirgsn","email":"wilkir@gmx.de","login":"wkirgsn","count":109},{"name":"Felix Book","email":"64723297+fbook98","login":"fbook98","count":96},{"name":"Maximilian Schenke","email":"mschenke@mail.uni-paderborn.de","login":"max-schenke","count":75},{"name":"GitPascalP","email":"pascalpeters1096@gmail.com","login":"GitPascalP","count":74},{"name":"Darius","email":"dariusjakobeit@web.de","login":"XyDrKRulof","count":65},{"name":"Stefan Arndt","email":"sarndt@mail.uni-paderborn.de","login":"devarndt","count":38},{"name":"wallscheid","email":"56304296+wallscheid","login":"wallscheid","count":34},{"name":"S.A","email":"8891249+devandt","login":"devandt","count":34},{"name":"RohithCharanD","email":"rohith44550@outlook.com","login":"RohithCharanD","count":28},{"name":"Praneeth Balakrishna","email":"balakrishna.praneeth@gmail.com","login":"praneeth-b","count":24},{"name":"KoehlerM173","email":"koehler.marius@outlook.de","login":"KoehlerM173","count":22},{"name":"HauckeBa","email":"barnabas.haucke-korber@ieee.org","login":"bhk11","count":15},{"name":"Maximilian Schenke","email":"mschenke","login":null,"count":6},{"name":"Marvin Meyer","email":"25954606+MarvinMeyer","login":"MarvinMeyer","count":2},{"name":"Stefan Heid","email":"stefan-heid@web.de","login":null,"count":2},{"name":"Deployment Bot (from Travis CI)","email":"deploy@travis-ci.org","login":"traviscibot","count":1},{"name":"Joni Airaksinen","email":"airakjo@gmail.com","login":"Otteri","count":1},{"name":"Pramod_Mahajan","email":"pramodcm@mail.uni-paderborn.de","login":"pramodcm95","count":1},{"name":"Gerrit Book","email":"gbook@mail.upb.de","login":null,"count":1},{"name":"unknown","email":"ranil9345@gmail.com","login":"ranil345","count":1}],"past_year_committers":[{"name":"HauckeBa","email":"barnabas.haucke-korber@ieee.org","login":"bhk11","count":12},{"name":"XyDrKRulof","email":"dariusjakobeit@web.de","login":"XyDrKRulof","count":2},{"name":"unknown","email":"ranil9345@gmail.com","login":"ranil345","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-30T00:00:25.810Z","repositories_count":6090197,"commits_count":922432647,"contributors_count":35979055,"owners_count":1109823,"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":"upb-lea/gym-electric-motor","html_url":"https://github.com/upb-lea/gym-electric-motor","last_synced_at":"2025-10-30T13:20:07.825Z","status":"active","issues_count":146,"pull_requests_count":152,"avg_time_to_close_issue":7879133.840707964,"avg_time_to_close_pull_request":868106.6518518518,"issues_closed_count":113,"pull_requests_closed_count":135,"pull_request_authors_count":21,"issue_authors_count":33,"avg_comments_per_issue":2.23972602739726,"avg_comments_per_pull_request":0.9671052631578947,"merged_pull_requests_count":107,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":16,"past_year_pull_requests_count":30,"past_year_avg_time_to_close_issue":13290878.0,"past_year_avg_time_to_close_pull_request":956802.6875,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":16,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.0625,"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":13,"created_at":"2023-05-09T10:44:03.268Z","updated_at":"2025-10-30T13:20:07.825Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Fgym-electric-motor/issues","issue_labels_count":{"enhancement":28,"bug":13,"documentation":3,"agenda/meeting":3},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":72,"MEMBER":47,"NONE":27},"pull_request_author_associations_count":{"COLLABORATOR":105,"MEMBER":38,"NONE":5,"CONTRIBUTOR":4},"issue_authors":{"wallscheid":21,"wkirgsn":18,"atra94":17,"bhk11":17,"XyDrKRulof":16,"max-schenke":13,"GitPascalP":10,"stheid":3,"vapemaster-kz":2,"jmailloux":2,"soumava11":2,"Priyadharshan2001":2,"fbook98":2,"KoehlerM173":2,"jose-otero-rodriguez":1,"elliottower":1,"ranil345":1,"mamoodoo":1,"Hritikbansal":1,"frostyduck":1,"berkhizarci":1,"TalhaAmjad199":1,"dineshresearch":1,"mgdearaujo":1,"tmoroder":1,"praneeth-b":1,"ultrai":1,"MarvinMeyer":1,"Avv22":1,"BucurCosmin":1,"danielkho":1,"r-bendahan":1,"araffin":1},"pull_request_authors":{"atra94":42,"max-schenke":19,"XyDrKRulof":16,"fbook98":13,"bhk11":11,"devandt":9,"wkirgsn":8,"ranil345":6,"annava1":6,"manjeetjha070":4,"RohithCharanD":3,"praneeth-b":2,"MarvinMeyer":2,"stheid":2,"wallscheid":2,"GitPascalP":2,"maxpape":1,"CharlesCNorton":1,"Otteri":1,"KoehlerM173":1,"RaviPandey33":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-31T00:00:39.152Z","repositories_count":11267478,"issues_count":35012465,"pull_requests_count":113629785,"authors_count":11042209,"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":{"enhancement":5},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"MEMBER":13,"NONE":2,"COLLABORATOR":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":18,"MEMBER":11,"NONE":1},"past_year_issue_authors":{"bhk11":13,"mamoodoo":1,"ranil345":1,"tmoroder":1},"past_year_pull_request_authors":{"bhk11":11,"ranil345":6,"annava1":6,"manjeetjha070":4,"XyDrKRulof":2,"CharlesCNorton":1},"maintainers":[{"login":"atra94","count":59,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/atra94"},{"login":"max-schenke","count":32,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/max-schenke"},{"login":"XyDrKRulof","count":32,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/XyDrKRulof"},{"login":"bhk11","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bhk11"},{"login":"wkirgsn","count":26,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wkirgsn"},{"login":"wallscheid","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wallscheid"},{"login":"fbook98","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fbook98"},{"login":"GitPascalP","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/GitPascalP"},{"login":"devandt","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/devandt"},{"login":"ranil345","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ranil345"},{"login":"annava1","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/annava1"},{"login":"manjeetjha070","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/manjeetjha070"},{"login":"MarvinMeyer","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MarvinMeyer"},{"login":"KoehlerM173","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/KoehlerM173"},{"login":"praneeth-b","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/praneeth-b"}],"active_maintainers":[{"login":"bhk11","count":24,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bhk11"},{"login":"ranil345","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ranil345"},{"login":"annava1","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/annava1"},{"login":"manjeetjha070","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/manjeetjha070"},{"login":"XyDrKRulof","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/XyDrKRulof"}]},"events":{"total":{"CreateEvent":17,"ReleaseEvent":1,"IssuesEvent":22,"WatchEvent":62,"DeleteEvent":6,"MemberEvent":3,"IssueCommentEvent":11,"PushEvent":157,"PullRequestReviewCommentEvent":22,"PullRequestReviewEvent":24,"PullRequestEvent":27,"ForkEvent":13},"last_year":{"CreateEvent":17,"ReleaseEvent":1,"IssuesEvent":21,"WatchEvent":61,"DeleteEvent":6,"MemberEvent":3,"IssueCommentEvent":11,"PushEvent":157,"PullRequestReviewCommentEvent":22,"PullRequestReviewEvent":24,"PullRequestEvent":27,"ForkEvent":12}},"keywords":["benchmark","converters","electric-drive","electrical-engineering","gym-environment","machinelearning","motor-models","openai","openai-gym","openai-gym-environments","pmsm","reinforcement-learning"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/build_and_test.yml","sha":null,"kind":"manifest","created_at":"2023-01-30T00:46:07.015Z","updated_at":"2023-01-30T00:46:07.015Z","repository_link":"https://github.com/upb-lea/gym-electric-motor/blob/master/.github/workflows/build_and_test.yml","dependencies":[{"id":7235895811,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7235895812,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":7235895813,"package_name":"ammaraskar/sphinx-action","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false},{"id":7235895814,"package_name":"ad-m/github-push-action","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pypi-publish.yml","sha":null,"kind":"manifest","created_at":"2023-01-30T00:46:07.021Z","updated_at":"2023-01-30T00:46:07.021Z","repository_link":"https://github.com/upb-lea/gym-electric-motor/blob/master/.github/workflows/pypi-publish.yml","dependencies":[{"id":7235895815,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7235895816,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7235895817,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"27b31702a0e7fc50959f5ad993c78deac1bdfc29","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-01-30T00:46:07.026Z","updated_at":"2023-01-30T00:46:07.026Z","repository_link":"https://github.com/upb-lea/gym-electric-motor/blob/master/requirements.txt","dependencies":[{"id":7235895822,"package_name":"pytest","ecosystem":"pypi","requirements":"\u003e=5.2.2","direct":true,"kind":"runtime","optional":false},{"id":7235895818,"package_name":"matplotlib","ecosystem":"pypi","requirements":"\u003e=3.1.2","direct":true,"kind":"runtime","optional":false},{"id":7235895819,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.16.4","direct":true,"kind":"runtime","optional":false},{"id":7235895820,"package_name":"scipy","ecosystem":"pypi","requirements":"\u003e=1.4.1","direct":true,"kind":"runtime","optional":false},{"id":7235895821,"package_name":"gym","ecosystem":"pypi","requirements":"\u003c0.24.0,\u003e=0.15.4","direct":true,"kind":"runtime","optional":false},{"id":7235895823,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:22:54.146Z","updated_at":"2023-09-21T19:22:54.146Z","repository_link":"https://github.com/upb-lea/gym-electric-motor/blob/master/setup.py","dependencies":[]}],"score":14.796527793306215,"created_at":"2023-09-11T14:52:10.003Z","updated_at":"2026-04-12T17:03:24.801Z","avatar_url":"https://github.com/upb-lea.png","language":"Python","category":"Consumption","sub_category":"Mobility and Transportation","monthly_downloads":291,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# Gym Electric Motor\n![](docs/plots/Motor_Logo.png)\n\n\n[**Overview paper**](https://joss.theoj.org/papers/10.21105/joss.02498)\n| [**Reinforcement learning paper**](https://arxiv.org/abs/1910.09434)\n| [**GEM control paper**](https://ieeexplore.ieee.org/document/10239044)\n| [**Quickstart**](#getting-started)\n| [**Install guide**](#installation)\n| [**Reference docs**](https://upb-lea.github.io/gym-electric-motor/)\n| [**Release notes**](https://github.com/upb-lea/gym-electric-motor/releases)\n\n[![Build Status](https://github.com/upb-lea/gym-electric-motor/actions/workflows/build_and_test.yml/badge.svg)](https://github.com/upb-lea/gym-electric-motor/actions/workflows/build_and_test.yml)\n[![codecov](https://codecov.io/gh/upb-lea/gym-electric-motor/branch/master/graph/badge.svg)](https://codecov.io/gh/upb-lea/gym-electric-motor)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/gym-electric-motor.svg)](https://pypi.python.org/pypi/gym-electric-motor/)\n[![License](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000)](https://github.com/upb-lea/gym-electric-motor/blob/master/LICENSE)\n[![DOI Zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.4355691.svg)](https://doi.org/10.5281/zenodo.4355691)\n[![DOI JOSS](https://joss.theoj.org/papers/10.21105/joss.02498/status.svg)](https://doi.org/10.21105/joss.02498)\n\n## Overview\nThe gym-electric-motor (GEM) package is a Python toolbox for the simulation and control of various electric motors.\nIt is built upon [Faram Gymnasium Environments](https://gymnasium.farama.org/), and, therefore, can be used for both, classical control simulation and [reinforcement learning](https://github.com/upb-lea/reinforcement_learning_course_materials) experiments. It allows you to construct a typical drive train with the usual building blocks, i.e., supply voltages, converters, electric motors and load models, and obtain not only a closed-loop simulation of this physical structure, but also a rich interface for plugging in any decision making algorithm, from linear feedback control to [Deep Deterministic Policy Gradient](https://spinningup.openai.com/en/latest/algorithms/ddpg.html) agents.\nIn addition, an automated framework for classical control structures based on PI controllers is provided.\n\n## Getting Started\nAn easy way to get started with GEM is by playing around with the following interactive notebooks in Google Colaboratory. Most important features of GEM as well as application demonstrations are showcased, and give a kickstart for engineers in industry and academia.\n\n* [GEM cookbook](https://colab.research.google.com/github/upb-lea/gym-electric-motor/blob/master//examples/environment_features/GEM_cookbook.ipynb)\n* [Stable-baselines3 DDPG example](https://colab.research.google.com/github/upb-lea/gym-electric-motor/blob/master/examples/reinforcement_learning_controllers/stable_baselines3_ddpg_pmsm_dq_current_control.ipynb)\n* [Stable-baselines3 DQN example](https://colab.research.google.com/github/upb-lea/gym-electric-motor/blob/master/examples/reinforcement_learning_controllers/stable_baselines3_dqn_disc_pmsm_example.ipynb)\n* [MPC  example](https://colab.research.google.com/github/upb-lea/gym-electric-motor/blob/master/examples/model_predictive_controllers/pmsm_mpc_dq_current_control.ipynb)\n\nThere is a list of [standalone example scripts](examples/) as well for minimalistic demonstrations.\n\nA basic routine is as simple as:\n```py\nimport gym_electric_motor as gem\n\nif __name__ == '__main__':\n    env = gem.make(\"Finite-CC-PMSM-v0\")  # instantiate a discretely controlled PMSM\n    env.reset()\n    for _ in range(10000):\n        (states, references), rewards, done, _ =\\ \n        \tenv.step(env.action_space.sample())  # pick random control actions\n        if done:\n            (states, references), _ = env.reset()\n    env.close()\n```\n\n\n\n## Installation\n- Install gym-electric-motor from PyPI (recommended):\n\n```\npip install gym-electric-motor\n```\n\n- Install from Github source:\n\n```\ngit clone git@github.com:upb-lea/gym-electric-motor.git \ncd gym-electric-motor\n# Then either\npython setup.py install\n# or alternatively\npip install -e .\n```\n\n## Building Blocks\nA GEM environment consists of following building blocks:\n- Physical structure:\n   - Voltage supply\n   - Converter\n   - Electric motor\n   - Load model\n- Utility functions for reference generation, reward calculation and visualization\n \n### Information Flow in a GEM Environment\n![](docs/plots/SCML_Overview.png)\n\nAmong various DC-motor models, the following AC motors - together with their power electronic counterparts - are available:\n- Permanent magnet synchronous motor (PMSM) \n- Synchronous reluctance motor (SynRM)\n- Externally exited synchronous motor (EESM)\n- Squirrel cage induction motor (SCIM)\n- Doubly-fed induction motor (DFIM)\n\nThe converters can be driven by means of a duty cycle (continuous control set) or switching commands (finite control set). \n\n### Citation\nA white paper for the general toolbox in the context of drive simulation and control prototyping can be found in the [Journal of Open Sorce Software (JOSS)](https://joss.theoj.org/papers/10.21105/joss.02498). Please use the following BibTeX entry for citing it:\n```\n@article{Balakrishna2021,\n    doi = {10.21105/joss.02498},\n    url = {https://doi.org/10.21105/joss.02498},\n    year = {2021},\n    publisher = {The Open Journal},\n    volume = {6},\n    number = {58},\n    pages = {2498},\n    author = {Praneeth {Balakrishna} and Gerrit {Book} and Wilhelm {Kirchgässner} and Maximilian {Schenke} and Arne {Traue} and Oliver {Wallscheid}},\n    title = {gym-electric-motor (GEM): A Python toolbox for the simulation of electric drive systems},\n    journal = {Journal of Open Source Software}\n}\n\n```\n\nA white paper for the utilization of this framework within reinforcement learning is available at [IEEE-Xplore](https://ieeexplore.ieee.org/document/9241851) (preprint: [arxiv.org/abs/1910.09434](https://arxiv.org/abs/1910.09434)). Please use the following BibTeX entry for citing it:\n```\n@article{9241851,  \n  author={Traue, Arne and Book, Gerrit and Kirchgässner, Wilhelm and Wallscheid, Oliver},\n  journal={IEEE Transactions on Neural Networks and Learning Systems}, \n  title={Toward a Reinforcement Learning Environment Toolbox for Intelligent Electric Motor Control}, \n  year={2022},\n  volume={33},\n  number={3},\n  pages={919-928},\n  doi={10.1109/TNNLS.2020.3029573}}\n```\n\nA white paper for the classical control approaches of gym-electric-motor control is available at [IEEE-Xplore](https://ieeexplore.ieee.org/document/10239044). Please use the following BibTeX entry for citing it:\n```\n@INPROCEEDINGS{10239044,\n  author={Book, Felix and Traue, Arne and Schenke, Maximilian and Haucke-Korber, Barnabas and Wallscheid, Oliver},\n  booktitle={2023 IEEE International Electric Machines \u0026 Drives Conference (IEMDC)}, \n  title={Gym-Electric-Motor (GEM) Control: An Automated Open-Source Controller Design Suite for Drives}, \n  year={2023},\n  volume={},\n  number={},\n  pages={1-7},\n  doi={10.1109/IEMDC55163.2023.10239044}}\n```\n\n### Running Unit Tests with Pytest\nTo run the unit tests ''pytest'' is required.\nAll tests can be found in the ''tests'' folder.\nExecute pytest in the project's root folder:\n```\n\u003e\u003e\u003e pytest\n```\nor with test coverage:\n```\n\u003e\u003e\u003e pytest --cov=./\n```\nAll tests shall pass.\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.4355691","https://doi.org/10.21105/joss.02498"],"works":{"https://doi.org/10.5281/zenodo.4355691":null,"https://doi.org/10.21105/joss.02498":{"id":"https://openalex.org/W3127288315","doi":"https://doi.org/10.21105/joss.02498","title":"gym-electric-motor (GEM): A Python toolbox for the simulation of electric drive systems","display_name":"gym-electric-motor (GEM): A Python toolbox for the simulation of electric drive systems","publication_year":2021,"publication_date":"2021-02-07","ids":{"openalex":"https://openalex.org/W3127288315","doi":"https://doi.org/10.21105/joss.02498","mag":"3127288315"},"language":"en","primary_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.21105/joss.02498","pdf_url":"https://joss.theoj.org/papers/10.21105/joss.02498.pdf","source":{"id":"https://openalex.org/S4210214273","display_name":"Journal of open source software","issn_l":"2475-9066","issn":["2475-9066"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310315853","host_organization_name":"Open Journals","host_organization_lineage":["https://openalex.org/P4310315853"],"host_organization_lineage_names":["Open Journals"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://joss.theoj.org/papers/10.21105/joss.02498.pdf","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5077246497","display_name":"Praneeth Balakrishna","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Praneeth Balakrishna","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5010001068","display_name":"Gerrit Book","orcid":"https://orcid.org/0000-0003-2339-8712"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Gerrit Book","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5002755034","display_name":"Wilhelm Kirchgässner","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Wilhelm Kirchgässner","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5031722078","display_name":"Maximilian Schenke","orcid":"https://orcid.org/0000-0001-5427-9527"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Maximilian Schenke","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5007670827","display_name":"Arne Traue","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Arne Traue","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"last","author":{"id":"https://openalex.org/A5007561110","display_name":"Oliver Wallscheid","orcid":"https://orcid.org/0000-0001-9362-8777"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Oliver Wallscheid","raw_affiliation_string":"","raw_affiliation_strings":[]}],"countries_distinct_count":0,"institutions_distinct_count":0,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":{"value":0,"currency":"USD","value_usd":0,"provenance":"doaj"},"apc_paid":{"value":0,"currency":"USD","value_usd":0,"provenance":"doaj"},"has_fulltext":true,"fulltext_origin":"pdf","cited_by_count":9,"cited_by_percentile_year":{"min":92,"max":93},"biblio":{"volume":"6","issue":"58","first_page":"2498","last_page":"2498"},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"gym-electric-motor gym-electric-motor","score":0.5092},{"keyword":"simulation","score":0.3895},{"keyword":"python toolbox","score":0.317}],"concepts":[{"id":"https://openalex.org/C2777655017","wikidata":"https://www.wikidata.org/wiki/Q1501161","display_name":"Toolbox","level":2,"score":0.9329461},{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.8790112},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.52403146},{"id":"https://openalex.org/C176871988","wikidata":"https://www.wikidata.org/wiki/Q72313","display_name":"Electric motor","level":2,"score":0.47937897},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.2664067},{"id":"https://openalex.org/C119599485","wikidata":"https://www.wikidata.org/wiki/Q43035","display_name":"Electrical engineering","level":1,"score":0.23516002},{"id":"https://openalex.org/C127413603","wikidata":"https://www.wikidata.org/wiki/Q11023","display_name":"Engineering","level":0,"score":0.18602172}],"mesh":[],"locations_count":1,"locations":[{"is_oa":true,"landing_page_url":"https://doi.org/10.21105/joss.02498","pdf_url":"https://joss.theoj.org/papers/10.21105/joss.02498.pdf","source":{"id":"https://openalex.org/S4210214273","display_name":"Journal of open source software","issn_l":"2475-9066","issn":["2475-9066"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310315853","host_organization_name":"Open Journals","host_organization_lineage":["https://openalex.org/P4310315853"],"host_organization_lineage_names":["Open Journals"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true}],"best_oa_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.21105/joss.02498","pdf_url":"https://joss.theoj.org/papers/10.21105/joss.02498.pdf","source":{"id":"https://openalex.org/S4210214273","display_name":"Journal of open source software","issn_l":"2475-9066","issn":["2475-9066"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310315853","host_organization_name":"Open Journals","host_organization_lineage":["https://openalex.org/P4310315853"],"host_organization_lineage_names":["Open Journals"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/7","display_name":"Affordable and clean energy","score":0.72}],"grants":[],"referenced_works_count":0,"referenced_works":[],"related_works":["https://openalex.org/W3127288315","https://openalex.org/W235620669","https://openalex.org/W2964721899","https://openalex.org/W2123495936","https://openalex.org/W2324336873","https://openalex.org/W2797837731","https://openalex.org/W4210570868","https://openalex.org/W4381516792","https://openalex.org/W2549786917","https://openalex.org/W2996080391"],"ngrams_url":"https://api.openalex.org/works/W3127288315/ngrams","abstract_inverted_index":null,"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W3127288315","counts_by_year":[{"year":2023,"cited_by_count":5},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":3}],"updated_date":"2023-12-16T23:27:45.515471","created_date":"2021-02-15"}},"citation_counts":{"https://doi.org/10.21105/joss.02498":9},"total_citations":9,"keywords_from_contributors":["control","latex","course-materials","lecture","lecture-notes","online-learning","online-videos","open-education","open-education-resources","open-educational-resources"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20131","html_url":"https://ost.ecosyste.ms/projects/20131"}