{"id":80720,"name":"experiment-impact-tracker","description":"Meant to be a simple drop-in method to track energy usage, carbon emissions, and compute utilization of your system.","url":"https://github.com/breakend/experiment-impact-tracker","last_synced_at":"2026-04-12T00:30:20.651Z","repository":{"id":36930954,"uuid":"219920822","full_name":"Breakend/experiment-impact-tracker","owner":"Breakend","description":null,"archived":true,"fork":false,"pushed_at":"2024-01-30T04:19:25.000Z","size":17930,"stargazers_count":291,"open_issues_count":35,"forks_count":35,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-03-28T18:24:00.273Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Breakend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing_carbon_region.html","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-11-06T05:44:17.000Z","updated_at":"2026-03-09T15:39:18.000Z","dependencies_parsed_at":"2023-09-21T19:33:16.970Z","dependency_job_id":"9d45afbf-2b70-47c2-906c-4ac7fe2b1780","html_url":"https://github.com/Breakend/experiment-impact-tracker","commit_stats":{"total_commits":74,"total_committers":6,"mean_commits":"12.333333333333334","dds":0.2567567567567568,"last_synced_commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Breakend/experiment-impact-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/sbom","scorecard":{"id":24285,"data":{"date":"2025-08-11","repo":{"name":"github.com/Breakend/experiment-impact-tracker","commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"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":"Maintained","score":0,"reason":"0 commit(s) and 0 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":"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":"Code-Review","score":2,"reason":"Found 5/22 approved changesets -- score normalized to 2","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.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":"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":"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":"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":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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/tests.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/Breakend/experiment-impact-tracker/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Breakend/experiment-impact-tracker/tests.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:26","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 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-14T17:29:48.824Z","repository_id":36930954,"created_at":"2025-08-14T17:29:48.824Z","updated_at":"2025-08-14T17:29:48.824Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31491097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","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":"Breakend","name":"Peter Henderson","uuid":"1609857","kind":"user","description":"Currently at Stanford University.","email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1609857?u=1540a4ca778d527efa9d71f65d1d7ebe3de624d6\u0026v=4","repositories_count":112,"last_synced_at":"2024-04-14T09:01:53.683Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Breakend","funding_links":[],"total_stars":1083,"followers":202,"following":1,"created_at":"2022-11-04T07:57:49.583Z","updated_at":"2024-04-14T09:02:17.470Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend/repositories"},"packages":[{"id":2727888,"name":"experiment-impact-tracker","ecosystem":"pypi","description":"A toolkit for tracking energy, carbon, and compute metrics for machine learning (or any other) experiments.","homepage":"https://github.com/Breakend/experiment-impact-tracker","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/Breakend/experiment-impact-tracker","keywords_array":["machine learning","carbon","energy","compute"],"namespace":null,"versions_count":6,"first_release_published_at":"2019-12-31T20:53:16.000Z","latest_release_published_at":"2020-01-31T05:14:05.000Z","latest_release_number":"0.1.8","last_synced_at":"2026-04-08T23:01:23.113Z","created_at":"2022-04-10T10:56:15.752Z","updated_at":"2026-04-08T23:01:23.113Z","registry_url":"https://pypi.org/project/experiment-impact-tracker/","install_command":"pip install experiment-impact-tracker --index-url https://pypi.org/simple","documentation_url":"https://experiment-impact-tracker.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Programming Language :: Python :: 3.5","Programming Language :: Python :: 3.6","Programming Language :: Python :: 3.7","Topic :: Software Development :: Build Tools"],"normalized_name":"experiment-impact-tracker","project_status":null},"repo_metadata":{"id":36930954,"uuid":"219920822","full_name":"Breakend/experiment-impact-tracker","owner":"Breakend","description":null,"archived":false,"fork":false,"pushed_at":"2024-01-30T04:19:25.000Z","size":17930,"stargazers_count":273,"open_issues_count":35,"forks_count":31,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-10-29T22:31:23.679Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Breakend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing_carbon_region.html","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-11-06T05:44:17.000Z","updated_at":"2024-10-16T04:51:45.000Z","dependencies_parsed_at":"2023-09-21T19:33:16.970Z","dependency_job_id":"7d7c1cb7-a435-4f08-8ea6-4474ad361d34","html_url":"https://github.com/Breakend/experiment-impact-tracker","commit_stats":{"total_commits":74,"total_committers":6,"mean_commits":"12.333333333333334","dds":0.2567567567567568,"last_synced_commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222155737,"owners_count":16940398,"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":"Breakend","name":"Peter Henderson","uuid":"1609857","kind":"user","description":"Currently at Stanford University.","email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1609857?u=1540a4ca778d527efa9d71f65d1d7ebe3de624d6\u0026v=4","repositories_count":112,"last_synced_at":"2024-04-14T09:01:53.683Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Breakend","funding_links":[],"total_stars":1083,"followers":202,"following":1,"created_at":"2022-11-04T07:57:49.583Z","updated_at":"2024-04-14T09:02:17.470Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend/repositories"},"tags":[{"name":"v0.1.4","sha":"ca89b7c058538ac090d489add238938d89eed4a5","kind":"tag","published_at":"2020-01-14T20:33:53.000Z","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/v0.1.4","html_url":"https://github.com/Breakend/experiment-impact-tracker/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/v0.1.4/manifests"},{"name":"0.1.3","sha":"54ac389839db65aa5b5db8593cb80d2f0feb2f21","kind":"commit","published_at":"2019-12-31T20:46:17.000Z","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/0.1.3","html_url":"https://github.com/Breakend/experiment-impact-tracker/releases/tag/0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/0.1.3/manifests"}]},"repo_metadata_updated_at":"2024-10-30T02:59:05.123Z","dependent_packages_count":0,"downloads":2459,"downloads_period":"last-month","dependent_repos_count":5,"rankings":{"downloads":9.7612617901452,"dependent_repos_count":6.738910511166292,"dependent_packages_count":7.306363177401113,"stargazers_count":4.094572347493477,"forks_count":7.219996908259447,"docker_downloads_count":3.396639168479877,"average":6.419623983824234},"purl":"pkg:pypi/experiment-impact-tracker","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/experiment-impact-tracker","docker_dependents_count":1,"docker_downloads_count":11,"usage_url":"https://repos.ecosyste.ms/usage/pypi/experiment-impact-tracker","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/experiment-impact-tracker/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T21:02:55.454Z","issues_count":54,"pull_requests_count":28,"avg_time_to_close_issue":2579150.346153846,"avg_time_to_close_pull_request":5148345.714285715,"issues_closed_count":26,"pull_requests_closed_count":21,"pull_request_authors_count":13,"issue_authors_count":27,"avg_comments_per_issue":1.9444444444444444,"avg_comments_per_pull_request":0.32142857142857145,"merged_pull_requests_count":19,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.5,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/issues","maintainers":[{"login":"Breakend","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Breakend"},{"login":"jieru-hu","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jieru-hu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/experiment-impact-tracker/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/experiment-impact-tracker/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/experiment-impact-tracker/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/experiment-impact-tracker/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/experiment-impact-tracker/codemeta","maintainers":[{"uuid":"breakend","login":"breakend","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/breakend/","role":null,"created_at":"2023-02-24T04:44:01.553Z","updated_at":"2023-02-24T04:44:01.553Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/breakend/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":837462,"maintainers_count":357672,"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"}},{"id":4123478,"name":"github.com/breakend/experiment-impact-tracker","ecosystem":"go","description":"","homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/breakend/experiment-impact-tracker","keywords_array":[],"namespace":"github.com/breakend","versions_count":1,"first_release_published_at":"2020-01-14T20:32:58.000Z","latest_release_published_at":"2020-01-14T20:32:58.000Z","latest_release_number":"v0.1.4","last_synced_at":"2026-04-08T23:01:24.790Z","created_at":"2022-04-12T15:07:04.788Z","updated_at":"2026-04-08T23:01:24.790Z","registry_url":"https://pkg.go.dev/github.com/breakend/experiment-impact-tracker","install_command":"go get github.com/breakend/experiment-impact-tracker","documentation_url":"https://pkg.go.dev/github.com/breakend/experiment-impact-tracker#section-documentation","metadata":{},"repo_metadata":{"id":36930954,"uuid":"219920822","full_name":"Breakend/experiment-impact-tracker","owner":"Breakend","description":null,"archived":true,"fork":false,"pushed_at":"2024-01-30T04:19:25.000Z","size":17930,"stargazers_count":285,"open_issues_count":36,"forks_count":33,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-10-26T15:40:00.418Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Breakend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing_carbon_region.html","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-11-06T05:44:17.000Z","updated_at":"2025-10-22T20:54:50.000Z","dependencies_parsed_at":"2023-09-21T19:33:16.970Z","dependency_job_id":"7d7c1cb7-a435-4f08-8ea6-4474ad361d34","html_url":"https://github.com/Breakend/experiment-impact-tracker","commit_stats":{"total_commits":74,"total_committers":6,"mean_commits":"12.333333333333334","dds":0.2567567567567568,"last_synced_commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Breakend/experiment-impact-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/sbom","scorecard":{"id":24285,"data":{"date":"2025-08-11","repo":{"name":"github.com/Breakend/experiment-impact-tracker","commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"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":"Maintained","score":0,"reason":"0 commit(s) and 0 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":"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":"Code-Review","score":2,"reason":"Found 5/22 approved changesets -- score normalized to 2","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.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":"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":"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":"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":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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/tests.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/Breakend/experiment-impact-tracker/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Breakend/experiment-impact-tracker/tests.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:26","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 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-14T17:29:48.824Z","repository_id":36930954,"created_at":"2025-08-14T17:29:48.824Z","updated_at":"2025-08-14T17:29:48.824Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281467364,"owners_count":26506477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"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":"Breakend","name":"Peter Henderson","uuid":"1609857","kind":"user","description":"Currently at Stanford University.","email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1609857?u=1540a4ca778d527efa9d71f65d1d7ebe3de624d6\u0026v=4","repositories_count":112,"last_synced_at":"2024-04-14T09:01:53.683Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Breakend","funding_links":[],"total_stars":1083,"followers":202,"following":1,"created_at":"2022-11-04T07:57:49.583Z","updated_at":"2024-04-14T09:02:17.470Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend/repositories"},"tags":[{"name":"v0.1.4","sha":"ca89b7c058538ac090d489add238938d89eed4a5","kind":"tag","published_at":"2020-01-14T20:33:53.000Z","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/v0.1.4","html_url":"https://github.com/Breakend/experiment-impact-tracker/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Breakend/experiment-impact-tracker@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/v0.1.4/manifests"},{"name":"0.1.3","sha":"54ac389839db65aa5b5db8593cb80d2f0feb2f21","kind":"commit","published_at":"2019-12-31T20:46:17.000Z","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/0.1.3","html_url":"https://github.com/Breakend/experiment-impact-tracker/releases/tag/0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Breakend/experiment-impact-tracker@0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/0.1.3/manifests"}]},"repo_metadata_updated_at":"2025-11-03T19:09:11.444Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":null,"forks_count":null,"average":8.172500131868823},"purl":"pkg:golang/github.com/breakend/experiment-impact-tracker","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/breakend/experiment-impact-tracker","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/breakend/experiment-impact-tracker","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/breakend/experiment-impact-tracker/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-10T22:17:06.466Z","issues_count":55,"pull_requests_count":28,"avg_time_to_close_issue":2579150.346153846,"avg_time_to_close_pull_request":5148345.714285715,"issues_closed_count":26,"pull_requests_closed_count":21,"pull_request_authors_count":13,"issue_authors_count":28,"avg_comments_per_issue":1.9090909090909092,"avg_comments_per_pull_request":0.32142857142857145,"merged_pull_requests_count":19,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/issues","maintainers":[{"login":"Breakend","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Breakend"},{"login":"jieru-hu","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jieru-hu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbreakend%2Fexperiment-impact-tracker/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbreakend%2Fexperiment-impact-tracker/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbreakend%2Fexperiment-impact-tracker/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbreakend%2Fexperiment-impact-tracker/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fbreakend%2Fexperiment-impact-tracker/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2093869,"maintainers_count":0,"namespaces_count":780333,"keywords_count":112764,"github":"golang","metadata":{"funded_packages_count":53458},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-09T05:03:48.640Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":4120699,"name":"github.com/Breakend/experiment-impact-tracker","ecosystem":"go","description":"","homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/Breakend/experiment-impact-tracker","keywords_array":[],"namespace":"github.com/Breakend","versions_count":1,"first_release_published_at":"2020-01-14T20:32:58.000Z","latest_release_published_at":"2020-01-14T20:32:58.000Z","latest_release_number":"v0.1.4","last_synced_at":"2026-04-08T23:01:25.930Z","created_at":"2022-04-12T14:54:59.446Z","updated_at":"2026-04-08T23:01:25.930Z","registry_url":"https://pkg.go.dev/github.com/Breakend/experiment-impact-tracker","install_command":"go get github.com/Breakend/experiment-impact-tracker","documentation_url":"https://pkg.go.dev/github.com/Breakend/experiment-impact-tracker#section-documentation","metadata":{},"repo_metadata":{"id":36930954,"uuid":"219920822","full_name":"Breakend/experiment-impact-tracker","owner":"Breakend","description":null,"archived":true,"fork":false,"pushed_at":"2024-01-30T04:19:25.000Z","size":17930,"stargazers_count":285,"open_issues_count":36,"forks_count":33,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-10-26T15:40:00.418Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Breakend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing_carbon_region.html","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-11-06T05:44:17.000Z","updated_at":"2025-10-22T20:54:50.000Z","dependencies_parsed_at":"2023-09-21T19:33:16.970Z","dependency_job_id":"7d7c1cb7-a435-4f08-8ea6-4474ad361d34","html_url":"https://github.com/Breakend/experiment-impact-tracker","commit_stats":{"total_commits":74,"total_committers":6,"mean_commits":"12.333333333333334","dds":0.2567567567567568,"last_synced_commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Breakend/experiment-impact-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/sbom","scorecard":{"id":24285,"data":{"date":"2025-08-11","repo":{"name":"github.com/Breakend/experiment-impact-tracker","commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"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":"Maintained","score":0,"reason":"0 commit(s) and 0 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":"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":"Code-Review","score":2,"reason":"Found 5/22 approved changesets -- score normalized to 2","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.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":"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":"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":"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":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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/tests.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/Breakend/experiment-impact-tracker/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Breakend/experiment-impact-tracker/tests.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:26","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 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-14T17:29:48.824Z","repository_id":36930954,"created_at":"2025-08-14T17:29:48.824Z","updated_at":"2025-08-14T17:29:48.824Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281218091,"owners_count":26463378,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"Breakend","name":"Peter Henderson","uuid":"1609857","kind":"user","description":"Currently at Stanford University.","email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1609857?u=1540a4ca778d527efa9d71f65d1d7ebe3de624d6\u0026v=4","repositories_count":112,"last_synced_at":"2024-04-14T09:01:53.683Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Breakend","funding_links":[],"total_stars":1083,"followers":202,"following":1,"created_at":"2022-11-04T07:57:49.583Z","updated_at":"2024-04-14T09:02:17.470Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breakend/repositories"},"tags":[{"name":"v0.1.4","sha":"ca89b7c058538ac090d489add238938d89eed4a5","kind":"tag","published_at":"2020-01-14T20:33:53.000Z","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/v0.1.4","html_url":"https://github.com/Breakend/experiment-impact-tracker/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Breakend/experiment-impact-tracker@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/v0.1.4/manifests"},{"name":"0.1.3","sha":"54ac389839db65aa5b5db8593cb80d2f0feb2f21","kind":"commit","published_at":"2019-12-31T20:46:17.000Z","download_url":"https://codeload.github.com/Breakend/experiment-impact-tracker/tar.gz/0.1.3","html_url":"https://github.com/Breakend/experiment-impact-tracker/releases/tag/0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Breakend/experiment-impact-tracker@0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/tags/0.1.3/manifests"}]},"repo_metadata_updated_at":"2025-11-03T19:09:11.453Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":null,"forks_count":null,"average":8.172500131868823},"purl":"pkg:golang/github.com/%21breakend/experiment-impact-tracker","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/Breakend/experiment-impact-tracker","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/Breakend/experiment-impact-tracker","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/Breakend/experiment-impact-tracker/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-10T22:17:06.466Z","issues_count":55,"pull_requests_count":28,"avg_time_to_close_issue":2579150.346153846,"avg_time_to_close_pull_request":5148345.714285715,"issues_closed_count":26,"pull_requests_closed_count":21,"pull_request_authors_count":13,"issue_authors_count":28,"avg_comments_per_issue":1.9090909090909092,"avg_comments_per_pull_request":0.32142857142857145,"merged_pull_requests_count":19,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/issues","maintainers":[{"login":"Breakend","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Breakend"},{"login":"jieru-hu","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jieru-hu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FBreakend%2Fexperiment-impact-tracker/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FBreakend%2Fexperiment-impact-tracker/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FBreakend%2Fexperiment-impact-tracker/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FBreakend%2Fexperiment-impact-tracker/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FBreakend%2Fexperiment-impact-tracker/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2093869,"maintainers_count":0,"namespaces_count":780333,"keywords_count":112764,"github":"golang","metadata":{"funded_packages_count":53458},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-09T05:03:48.640Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":576139,"full_name":"Breakend/experiment-impact-tracker","default_branch":"master","total_commits":74,"total_committers":6,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":12.333333333333334,"dds":0.2567567567567568,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-08T23:21:20.136Z","last_synced_commit":"c1b0fcb4e75f04511805a1e57b2d8a97266d2977","created_at":"2023-03-09T05:38:26.741Z","updated_at":"2026-04-08T23:20:46.419Z","committers":[{"name":"Peter Henderson","email":"peter.henderson@mail.mcgill.ca","login":"Breakend","count":55},{"name":"Jieru Hu","email":"jieru.hu@gmail.com","login":"jieru-hu","count":10},{"name":"Leon Derczynski","email":"leonderczynski@gmail.com","login":"leondz","count":6},{"name":"nikhil153","email":"nikhil153","login":"nikhil153","count":1},{"name":"Ross Teixeira","email":"rapt@cs.princeton.edu","login":"rosstex","count":1},{"name":"w4ngatang","email":"wang.alex.c@gmail.com","login":null,"count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212712,"commits_count":906247759,"contributors_count":34967369,"owners_count":1143524,"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":"Breakend/experiment-impact-tracker","html_url":"https://github.com/Breakend/experiment-impact-tracker","last_synced_at":"2026-02-22T01:00:54.709Z","status":"error","issues_count":54,"pull_requests_count":28,"avg_time_to_close_issue":2579150.346153846,"avg_time_to_close_pull_request":14423508.47826087,"issues_closed_count":26,"pull_requests_closed_count":23,"pull_request_authors_count":12,"issue_authors_count":27,"avg_comments_per_issue":1.9074074074074074,"avg_comments_per_pull_request":0.32142857142857145,"merged_pull_requests_count":19,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:35:46.501Z","updated_at":"2026-02-22T01:00:54.709Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breakend%2Fexperiment-impact-tracker/issues","issue_labels_count":{"enhancement":10,"documentation":3,"bug":2,"blocked":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":31,"OWNER":14,"CONTRIBUTOR":7,"COLLABORATOR":2},"pull_request_author_associations_count":{"COLLABORATOR":9,"NONE":8,"OWNER":6,"CONTRIBUTOR":5},"issue_authors":{"Breakend":14,"leondz":5,"pnovoa":3,"guillaumeramey":3,"jieru-hu":2,"r-remus":2,"cifkao":2,"mvesin":2,"nikhil153":2,"pierresegonne":2,"Hasseneby":1,"fingoldo":1,"Omerkvc":1,"Pzoom522":1,"gaceladri":1,"roshnaeem":1,"forresti":1,"dimitarsh1":1,"wolf019":1,"rems75":1,"aukarande":1,"mjay42":1,"assuntaDC":1,"otnemrasordep":1,"paulgay":1,"virithareddy":1,"giorgiacantisani":1},"pull_request_authors":{"jieru-hu":9,"Breakend":6,"nikhil153":2,"vafaei-ar":2,"leondz":2,"ANarayan":1,"abidwael":1,"jeffkinnison":1,"rosstex":1,"W4ngatang":1,"amorisot":1,"csarron":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-24T00:00:10.525Z","repositories_count":13902749,"issues_count":34714588,"pull_requests_count":113414827,"authors_count":11208958,"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":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"Breakend","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Breakend"},{"login":"jieru-hu","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jieru-hu"}],"active_maintainers":[]},"events":{"total":{"ForkEvent":3,"IssuesEvent":1,"WatchEvent":14},"last_year":{"ForkEvent":3,"WatchEvent":5}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-09-09T04:00:51.239Z","updated_at":"2022-09-09T04:00:51.239Z","repository_link":"https://github.com/Breakend/experiment-impact-tracker/blob/master/setup.py","dependencies":[{"id":4256038116,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038117,"package_name":"bs4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038118,"package_name":"shapely","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038119,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038120,"package_name":"joblib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038121,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038122,"package_name":"country_converter","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038123,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e0.25.0","direct":true,"kind":"runtime","optional":false},{"id":4256038124,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038125,"package_name":"py-cpuinfo","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038126,"package_name":"pylatex","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038127,"package_name":"ujson","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038128,"package_name":"geocoder","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038129,"package_name":"deepdiff","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038130,"package_name":"arrow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038131,"package_name":"bootstrapped","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038132,"package_name":"jinja2","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038133,"package_name":"geopy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038134,"package_name":"progiter","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038135,"package_name":"and","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038136,"package_name":"so","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038137,"package_name":"psutil","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038138,"package_name":"seaborn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4256038139,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/tests.yml","sha":null,"kind":"manifest","created_at":"2023-01-17T07:30:51.961Z","updated_at":"2023-01-17T07:30:51.961Z","repository_link":"https://github.com/Breakend/experiment-impact-tracker/blob/master/.github/workflows/tests.yml","dependencies":[{"id":6968289423,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6968289424,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":15.393460280084122,"created_at":"2023-09-19T00:11:22.320Z","updated_at":"2026-04-12T00:30:20.664Z","avatar_url":"https://github.com/Breakend.png","language":"Python","category":"Consumption","sub_category":"Computation and Communication","monthly_downloads":2459,"total_dependent_repos":5,"total_dependent_packages":0,"readme":"# experiment-impact-tracker\n\nThe experiment-impact-tracker is meant to be a simple drop-in method to track energy usage, carbon emissions, and compute utilization of your system. Currently, on Linux systems with Intel chips (that support the RAPL or powergadget interfaces) and NVIDIA GPUs, we record: power draw from CPU and GPU, hardware information, python package versions, estimated carbon emissions information, etc. In California we even support realtime carbon emission information by querying caiso.com!\n\nOnce all this information is logged, you can generate an online appendix which shows off this information like seen here:\n\nhttps://breakend.github.io/RL-Energy-Leaderboard/reinforcement_learning_energy_leaderboard/pongnoframeskip-v4_experiments/ppo2_stable_baselines,_default_settings/0.html\n\n## Installation\n\nTo install:\n\n```bash\npip install experiment-impact-tracker\n```\n\n## Usage\n\nPlease go to the docs page for detailed info on the design, usage, and contributing: https://breakend.github.io/experiment-impact-tracker/ \n\nIf you think the docs aren't helpful or need more expansion, let us know with a Github Issue!\n\nBelow we will walk through an example together.\n\n### Add Tracking\nWe included a simple example in the project which can be found in ``examples/my_experiment.py``\n\nAs show in ``my_experiment.py``, you just need to add a few lines of code!\n\n```python\nfrom experiment_impact_tracker.compute_tracker import ImpactTracker\ntracker = ImpactTracker(\u003cyour log directory here\u003e)\ntracker.launch_impact_monitor()\n```\n\nThis will launch a separate python process that will gather compute/energy/carbon information in the background.\n\n**NOTE: Because of the way python multiprocessing works, this process will not interrupt the main one even if the monitoring process errors out. To address this, you can add the following to periodically \n read the latest info from the log file and check for any errors that might've occurred in the tracking process. \n If you have a better idea on how to handle exceptions in the tracking thread please open an issue or submit a pull request!**\n\n```python\ninfo = tracker.get_latest_info_and_check_for_errors()\n```\n\nAlternatively, you can use context management!\n\n```python\nexperiment1 = tempfile.mkdtemp()\nexperiment2 = tempfile.mkdtemp()\n\nwith ImpactTracker(experiment1):\n    do_something()\n\nwith ImpactTracker(experiment2):\n    do_something_else()\n```\n\nTo kick off our simple experiment, run ``python my_experiment.py``. You will see our \ntraining starts and in the end the script will output something like ``Please find your experiment logs in: /var/folders/n_/9qzct77j68j6n9lh0lw3vjqcn96zxl/T/tmpcp7sfese`` \n\nNow let's go over to the temp dir, we can see our logging there!\n```bash\n$ log_path=/var/folders/n_/9qzct77j68j6n9lh0lw3vjqcn96zxl/T/tmpcp7sfese\n$ cd $log_path\n$ tree \n.\n└── impacttracker\n    ├── data.json\n    ├── impact_tracker_log.log\n    └── info.pkl\n```\n\nYou can then access the information via the DataInterface:\n\n```python\nfrom experiment_impact_tracker.data_interface import DataInterface\n\ndata_interface1 = DataInterface([experiment1_logdir])\ndata_interface2 = DataInterface([experiment2_logdir])\n\ndata_interface_both = DataInterface([experiment1_logdir, experiment2_logdir])\n\nassert data_interface1.kg_carbon + data_interface2.kg_carbon == data_interface_both.kg_carbon\nassert data_interface1.total_power + data_interface2.total_power == data_interface_both.total_power\n```\n\n### Creating a carbon impact statement\n\nWe can also use a script to automatically generate a carbon impact statement for your paper! Just call this, we'll find all the logfiles generated by the tool and calculate emissions information! Specify your ISO3 country code as well to get a dollar amount based on the per-country cost of carbon.\n\n```bash\ngenerate-carbon-impact-statement my_directories that_contain all_my_experiments \"USA\"\n```\n\n#### Custom PUE\n\nSome people may know the PUE of their data center, while we use a PUE of 1.58 in our calculations. To set a\n different PUE, do:\n \n```bash\nOVERRIDE_PUE=1.1 generate-carbon-impact-statement my_directories that_contain all_my_experiments \"USA\"\n```\n\n\n### Generating an HTML appendix\n\nAfter logging all your experiments into a dir, we can automatically search for the impact tracker's \nlogs and generate an HTML appendix.\n\nFirst, create a json file with the structure of the website you'd like to see \n(this lets you create hierarchies of experiment as web pages).\n\nFor an example of all the capabilities of the tool you can see the json structure \nhere: https://github.com/Breakend/RL-Energy-Leaderboard/blob/master/leaderboard_generation_format.json\n\n\nBasically, you can group several runs together and specify variables to summarize. You should probably just copypaste the example above and remove what you don't need, but here are some descriptions of what is being specified:\n\n```javascript\n\"Comparing Translation Methods\" : {\n  # FILTER: this regex we use to look through the directory \n  # you specify and find experiments with this in the directory structure,\n  \"filter\" : \"(translation)\", \n \n  # Use this to talk about your experiment\n  \"description\" : \"An experiment on translation.\", \n  \n  # executive_summary_variables: this will aggregate the sums and averages across these metrics.\n  # you can see available metrics to summarize here: \n  # https://github.com/Breakend/experiment-impact-tracker/blob/master/experiment_impact_tracker/data_info_and_router.py\n  \"executive_summary_variables\" : [\"total_power\", \"exp_len_hours\", \"cpu_hours\", \"gpu_hours\", \"estimated_carbon_impact_kg\"],   \n  \n  # The child experiments to group together\n  \"child_experiments\" : \n        {\n            \"Transformer Network\" : {\n                                \"filter\" : \"(transformer)\",\n                                \"description\" : \"A subset of experiments for transformer experiments\"\n                            },\n            \"Conv Network\" : {\n                                \"filter\" : \"(conv)\",\n                                \"description\" : \"A subset of experiments for conv experiments\"\n                            }\n                   \n        }\n}\n```\n\nThen you just run this script, pointing to your data, the json file and an output directory. \n\n```bash\ncreate-compute-appendix ./data/ --site_spec leaderboard_generation_format.json --output_dir ./site/\n```\n\nTo see this in action, take a look at our RL Energy Leaderboard. \n\nThe specs are here: https://github.com/Breakend/RL-Energy-Leaderboard\n\nAnd the output looks like this: https://breakend.github.io/RL-Energy-Leaderboard/reinforcement_learning_energy_leaderboard/\n\n\n### Looking up cloud provider emission info\n\nBased on energy grid locations, we can estimate emission from cloud providers using our tools. A script to do that is here:\n\n```bash\nlookup-cloud-region-info aws\n```\n\n### Or you can look up emissions information for your own address!\n\n```bash\n\n% get-region-emissions-info address --address \"Stanford, California\"\n\n({'geometry': \u003cshapely.geometry.multipolygon.MultiPolygon object at 0x1194c3b38\u003e,\n  'id': 'US-CA',\n  'properties': {'zoneName': 'US-CA'},\n  'type': 'Feature'},\n {'_source': 'https://github.com/tmrowco/electricitymap-contrib/blob/master/config/co2eq_parameters.json '\n             '(ElectricityMap Average, 2019)',\n  'carbonIntensity': 250.73337617853463,\n  'fossilFuelRatio': 0.48888711737336304,\n  'renewableRatio': 0.428373256377554})\n  \n  ```\n\n### Asserting certain hardware\n\nIt may be the case that you're trying to run two sets of experiments and compare emissions/energy/etc. In this case, you generally want to ensure that there's parity between the two sets of experiments. If you're running on a cluster you might not want to accidentally use a different GPU/CPU pair. To get around this we provided an assertion check that you can add to your code that will kill a job if it's running on a wrong hardware combo. For example:\n\n```python\nfrom experiment_impact_tracker.gpu.nvidia import assert_gpus_by_attributes\nfrom experiment_impact_tracker.cpu.common import assert_cpus_by_attributes\n\nassert_gpus_by_attributes({ \"name\" : \"GeForce GTX TITAN X\"})\nassert_cpus_by_attributes({ \"brand\": \"Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz\" })\n```\n\n## Building docs\n\n```bash\nsphinx-build -b html docsrc docs\n```\n\n## Compatible Systems\n\nRight now, we're only compatible with Linux and Mac OS X systems running NVIDIA GPU's and Intel processors (which\n support RAPL or PowerGadget). \n\nIf you'd like support for your use-case or encounter missing/broken functionality on your system specs, please open an issue or better yet submit a pull request! It's almost impossible to cover every combination on our own!\n\n### Mac OS X Suppport\n\nCurrently, we support only CPU and memory-related metrics on Mac OS X for Intel-based CPUs. However, these require the\n Intel PowerGadget driver and the Intel PowerGadget tool. The easiest way to install this is:\n \n```bash\n$ brew cask install intel-power-gadget\n$ which \"/Applications/Intel Power Gadget/PowerLog\"\n```\n\nor for newer versions of OS X\n\n```bash\n$ brew install intel-power-gadget\n$ which \"/Applications/Intel Power Gadget/PowerLog\"\n```\n\nYou can also see here: https://software.intel.com/content/www/us/en/develop/articles/intel-power-gadget.html\n\nThis will install a tool called PowerLog that we rely on to get power measurements on Mac OS X systems.\n\n### Tested Successfully On\n\nGPUs:\n+ NVIDIA Titan X\n+ NVIDIA Titan V\n\nCPUs:\n+ Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz\n+ Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz\n+ 2.7 GHz Quad-Core Intel Core i7\n\nOS:\n+ Ubuntu 16.04.5 LTS\n+ Mac OS X 10.15.6 \n\n## Testing\n\nTo test, run:\n\n```bash\npytest \n```\n\n## Citation\n\nIf you use this work, please cite our paper:\n\n```\n@misc{henderson2020systematic,\n    title={Towards the Systematic Reporting of the Energy and Carbon Footprints of Machine Learning},\n    author={Peter Henderson and Jieru Hu and Joshua Romoff and Emma Brunskill and Dan Jurafsky and Joelle Pineau},\n    year={2020},\n    eprint={2002.05651},\n    archivePrefix={arXiv},\n    primaryClass={cs.CY}\n}\n```\n\nAlso, we rely on a number of downstream packages and work to make this work possible. For carbon accounting, we relied on open source code from https://www.electricitymap.org/ as an initial base. psutil provides many of the compute metrics we use. nvidia-smi and Intel RAPL provide energy metrics. \n\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/80720","html_url":"https://ost.ecosyste.ms/projects/80720"}