{"id":69861,"name":"pulse2percept","description":"A Python-based simulation framework for bionic vision","url":"https://github.com/pulse2percept/pulse2percept","last_synced_at":"2025-09-08T14:57:45.925Z","repository":{"id":38051302,"uuid":"49095416","full_name":"pulse2percept/pulse2percept","owner":"pulse2percept","description":"A Python-based simulation framework for bionic vision","archived":false,"fork":false,"pushed_at":"2025-09-04T13:00:48.000Z","size":290300,"stargazers_count":86,"open_issues_count":57,"forks_count":57,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-09-04T13:35:20.664Z","etag":null,"topics":["bionic-vision","neural-engineering","neuroscience","python","retinal-implants","vision"],"latest_commit_sha":null,"homepage":"https://pulse2percept.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulse2percept.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-01-05T22:01:46.000Z","updated_at":"2025-09-04T12:00:23.000Z","dependencies_parsed_at":"2023-11-17T02:23:30.215Z","dependency_job_id":"90571fe3-b19d-4be8-9716-589a5a30ab43","html_url":"https://github.com/pulse2percept/pulse2percept","commit_stats":{"total_commits":711,"total_committers":30,"mean_commits":23.7,"dds":0.6765119549929677,"last_synced_commit":"cb5989d134c6a4fed4723d24e0f2872033d2f5d2"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pulse2percept/pulse2percept","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulse2percept","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/sbom","scorecard":{"id":749379,"data":{"date":"2025-08-19T07:27:30Z","repo":{"name":"github.com/pulse2percept/pulse2percept","commit":"dd498333856a8b680680672ae8268f97685d35d8"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":4.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/7 approved changesets -- score normalized to 0","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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Maintained","score":3,"reason":"4 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:31","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:32","Info: jobLevel 'checks' permission set to 'read': .github/workflows/scorecards.yml:35","Info: jobLevel 'contents' permission set to 'read': .github/workflows/scorecards.yml:29","Info: jobLevel 'actions' permission set to 'read': .github/workflows/scorecards.yml:30","Info: jobLevel 'issues' permission set to 'read': .github/workflows/scorecards.yml:32","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/scorecards.yml:33","Info: topLevel 'contents' permission set to 'read': .github/workflows/build.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:13","Info: topLevel permissions set to 'read-all': .github/workflows/scorecards.yml:18","Warn: no topLevel permission defined: .github/workflows/wheels.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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: pipCommand not pinned by hash: .github/workflows/build.yml:60","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:65","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:73","Info:  13 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   8 out of   8 third-party GitHubAction dependencies pinned","Info:   0 out of   3 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/ab2f6e92482462fe66246d9e32f642855a691dc1/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: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.9.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/200748159","Warn: release artifact v0.8.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/66171408","Warn: release artifact v0.7.1 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/44995289","Warn: release artifact v0.7.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/40929247","Warn: release artifact v0.6.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/26211881","Warn: release artifact v0.9.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/200748159","Warn: release artifact v0.8.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/66171408","Warn: release artifact v0.7.1 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/44995289","Warn: release artifact v0.7.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/40929247","Warn: release artifact v0.6.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/26211881"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47","Warn: Project is vulnerable to: PYSEC-2020-73"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (29) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"CI-Tests","score":10,"reason":"29 out of 29 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}},{"name":"Contributors","score":10,"reason":"project has 21 contributing companies or organizations","details":["Info: found contributions from: ReCVEB, UCI-CARL, VisCog, afqvault, bionicvisionlab, cni, neurohackademy, neurohackweek, neuroimaging-data-science, nipy, nrdg, popylar, pulse2percept, the university of washington escience institute, tractometry, ucsb, university of california santa barbara, university of washington, uw-edsi, uwescience, vistalab"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}}]},"last_synced_at":"2025-08-22T19:48:26.619Z","repository_id":38051302,"created_at":"2025-08-22T19:48:26.619Z","updated_at":"2025-08-22T19:48:26.619Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274202732,"owners_count":25240370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"pulse2percept","name":"pulse2percept","uuid":"55196688","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55196688?v=4","repositories_count":1,"last_synced_at":"2023-03-06T06:57:24.210Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pulse2percept","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-16T06:37:37.947Z","updated_at":"2023-03-06T06:57:24.217Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulse2percept","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulse2percept/repositories"},"packages":[{"id":2863051,"name":"pulse2percept","ecosystem":"pypi","description":"A Python-based simulation framework for bionic vision","homepage":null,"licenses":"Copyright (c) 2016-2020, the pulse2percept developers\n        All rights reserved.\n        \n        Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n        \n        1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n        \n        2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n        \n        3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n        \n        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n        ","normalized_licenses":["Other"],"repository_url":"https://github.com/pulse2percept/pulse2percept","keywords_array":["bionic vision","simulation","scientific computing"],"namespace":null,"versions_count":19,"first_release_published_at":"2017-02-20T20:10:22.000Z","latest_release_published_at":"2025-02-17T16:33:51.000Z","latest_release_number":"0.9.0","last_synced_at":"2025-09-04T13:51:01.514Z","created_at":"2022-04-10T12:08:34.695Z","updated_at":"2025-09-05T03:55:57.831Z","registry_url":"https://pypi.org/project/pulse2percept/","install_command":"pip install pulse2percept --index-url https://pypi.org/simple","documentation_url":"https://pulse2percept.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python :: 3"],"normalized_name":"pulse2percept","project_status":null},"repo_metadata":{"id":38051302,"uuid":"49095416","full_name":"pulse2percept/pulse2percept","owner":"pulse2percept","description":"A Python-based simulation framework for bionic vision","archived":false,"fork":false,"pushed_at":"2025-09-04T13:00:48.000Z","size":290300,"stargazers_count":86,"open_issues_count":57,"forks_count":57,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-09-04T13:35:20.664Z","etag":null,"topics":["bionic-vision","neural-engineering","neuroscience","python","retinal-implants","vision"],"latest_commit_sha":null,"homepage":"https://pulse2percept.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulse2percept.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-01-05T22:01:46.000Z","updated_at":"2025-09-04T12:00:23.000Z","dependencies_parsed_at":"2023-11-17T02:23:30.215Z","dependency_job_id":"90571fe3-b19d-4be8-9716-589a5a30ab43","html_url":"https://github.com/pulse2percept/pulse2percept","commit_stats":{"total_commits":711,"total_committers":30,"mean_commits":23.7,"dds":0.6765119549929677,"last_synced_commit":"cb5989d134c6a4fed4723d24e0f2872033d2f5d2"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/pulse2percept/pulse2percept","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulse2percept","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/sbom","scorecard":{"id":749379,"data":{"date":"2025-08-19T07:27:30Z","repo":{"name":"github.com/pulse2percept/pulse2percept","commit":"dd498333856a8b680680672ae8268f97685d35d8"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":4.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/7 approved changesets -- score normalized to 0","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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Maintained","score":3,"reason":"4 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:31","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:32","Info: jobLevel 'checks' permission set to 'read': .github/workflows/scorecards.yml:35","Info: jobLevel 'contents' permission set to 'read': .github/workflows/scorecards.yml:29","Info: jobLevel 'actions' permission set to 'read': .github/workflows/scorecards.yml:30","Info: jobLevel 'issues' permission set to 'read': .github/workflows/scorecards.yml:32","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/scorecards.yml:33","Info: topLevel 'contents' permission set to 'read': .github/workflows/build.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:13","Info: topLevel permissions set to 'read-all': .github/workflows/scorecards.yml:18","Warn: no topLevel permission defined: .github/workflows/wheels.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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: pipCommand not pinned by hash: .github/workflows/build.yml:60","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:65","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:73","Info:  13 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   8 out of   8 third-party GitHubAction dependencies pinned","Info:   0 out of   3 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/ab2f6e92482462fe66246d9e32f642855a691dc1/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: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"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/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.9.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/200748159","Warn: release artifact v0.8.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/66171408","Warn: release artifact v0.7.1 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/44995289","Warn: release artifact v0.7.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/40929247","Warn: release artifact v0.6.0 not signed: https://api.github.com/repos/pulse2percept/pulse2percept/releases/26211881","Warn: release artifact v0.9.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/200748159","Warn: release artifact v0.8.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/66171408","Warn: release artifact v0.7.1 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/44995289","Warn: release artifact v0.7.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/40929247","Warn: release artifact v0.6.0 does not have provenance: https://api.github.com/repos/pulse2percept/pulse2percept/releases/26211881"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47","Warn: Project is vulnerable to: PYSEC-2020-73"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (29) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"CI-Tests","score":10,"reason":"29 out of 29 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}},{"name":"Contributors","score":10,"reason":"project has 21 contributing companies or organizations","details":["Info: found contributions from: ReCVEB, UCI-CARL, VisCog, afqvault, bionicvisionlab, cni, neurohackademy, neurohackweek, neuroimaging-data-science, nipy, nrdg, popylar, pulse2percept, the university of washington escience institute, tractometry, ucsb, university of california santa barbara, university of washington, uw-edsi, uwescience, vistalab"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}}]},"last_synced_at":"2025-08-22T19:48:26.619Z","repository_id":38051302,"created_at":"2025-08-22T19:48:26.619Z","updated_at":"2025-08-22T19:48:26.619Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273709019,"owners_count":25153733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"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":"pulse2percept","name":"pulse2percept","uuid":"55196688","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55196688?v=4","repositories_count":1,"last_synced_at":"2023-03-06T06:57:24.210Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pulse2percept","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-16T06:37:37.947Z","updated_at":"2023-03-06T06:57:24.217Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulse2percept","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulse2percept/repositories"},"tags":[{"name":"v0.9.0","sha":"e62ada7723d3cd96c90c3a44d4cfa885de7d53be","kind":"commit","published_at":"2025-02-17T16:25:03.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.9.0","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.9.0/manifests"},{"name":"v0.8.0","sha":"21a86983704ef0bcf3be7bc9baa2af807d61eb40","kind":"commit","published_at":"2022-05-05T21:30:26.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.8.0","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.8.0/manifests"},{"name":"v0.7.1","sha":"436ea95a48a5794e9b0d3a4e9068fc3702000e52","kind":"commit","published_at":"2021-06-22T00:10:10.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.7.1","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.7.1/manifests"},{"name":"v0.7.0","sha":"8c2982dcd740cb8af9c0e6f2bf4fe22d8f417a4a","kind":"commit","published_at":"2021-04-05T04:42:37.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.7.0","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"561d9095d94c38bfe8f74fe55d0c9a966bcff081","kind":"commit","published_at":"2020-05-06T06:09:19.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.6.0","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.6.0/manifests"},{"name":"v0.5.2","sha":"e9c1879e22a3349db92b82f5446dae3af3795eaa","kind":"commit","published_at":"2020-02-25T20:29:05.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.5.2","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"9a6f35ba0fca5ee4b2ea4fb90f1e0597a28cbe92","kind":"commit","published_at":"2020-02-05T22:41:57.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.5.1","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"b374fb204a35448de4bc9f22e548d6dbc9c1af10","kind":"commit","published_at":"2019-11-29T18:44:30.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.5.0","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.5.0/manifests"},{"name":"v0.4.3","sha":"647779eab8d26e73b7bb3fb36c9ac2d0bbaffb77","kind":"commit","published_at":"2018-05-21T14:59:02.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.4.3","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.4.3/manifests"},{"name":"v0.4","sha":"aa4dd885be148b8651bdd99c42e5b600766b6925","kind":"commit","published_at":"2018-05-20T17:17:37.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.4","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.4/manifests"},{"name":"v0.3","sha":"e4ee1650dcbae1385e7fa64d5af872280e23445f","kind":"commit","published_at":"2018-02-20T23:22:04.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.3","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.3/manifests"},{"name":"v0.2","sha":"c089e174af25af9f66dec78d4e85940239034781","kind":"commit","published_at":"2017-07-10T18:33:38.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.2","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.2/manifests"},{"name":"v0.1.1","sha":"0f877caf075dd66679714610334d6476243d68ae","kind":"tag","published_at":"2017-02-20T20:24:55.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.1.1","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.1.1/manifests"},{"name":"v0.1","sha":"352c0d0a72aa678cd695b23d91048164843f6b39","kind":"tag","published_at":"2017-02-20T20:05:18.000Z","download_url":"https://codeload.github.com/pulse2percept/pulse2percept/tar.gz/v0.1","html_url":"https://github.com/pulse2percept/pulse2percept/releases/tag/v0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pulse2percept/pulse2percept@v0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/tags/v0.1/manifests"}]},"repo_metadata_updated_at":"2025-09-05T03:55:57.831Z","dependent_packages_count":0,"downloads":172,"downloads_period":"last-month","dependent_repos_count":4,"rankings":{"downloads":10.93047190668598,"dependent_repos_count":7.499289858028798,"dependent_packages_count":10.104988627979555,"stargazers_count":8.100869618260077,"forks_count":6.0917653652371335,"docker_downloads_count":null,"average":8.545477075238308},"purl":"pkg:pypi/pulse2percept","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pulse2percept","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pulse2percept","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pulse2percept/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T13:43:22.012Z","issues_count":92,"pull_requests_count":245,"avg_time_to_close_issue":18230440.759259257,"avg_time_to_close_pull_request":2311714.713636364,"issues_closed_count":54,"pull_requests_closed_count":220,"pull_request_authors_count":16,"issue_authors_count":9,"avg_comments_per_issue":0.532608695652174,"avg_comments_per_pull_request":0.8285714285714286,"merged_pull_requests_count":179,"bot_issues_count":0,"bot_pull_requests_count":70,"past_year_issues_count":17,"past_year_pull_requests_count":122,"past_year_avg_time_to_close_issue":1966169.0,"past_year_avg_time_to_close_pull_request":315191.8080808081,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":99,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.23529411764705882,"past_year_avg_comments_per_pull_request":0.6229508196721312,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":70,"past_year_merged_pull_requests_count":75,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/issues","maintainers":[{"login":"jgranley","count":133,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jgranley"},{"login":"mbeyeler","count":85,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbeyeler"},{"login":"tallyhawley","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tallyhawley"},{"login":"aiwenxu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aiwenxu"}],"active_maintainers":[{"login":"mbeyeler","count":53,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbeyeler"},{"login":"jgranley","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jgranley"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pulse2percept/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pulse2percept/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pulse2percept/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pulse2percept/related_packages","maintainers":[{"uuid":"mbeyeler","login":"mbeyeler","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/mbeyeler/","role":null,"created_at":"2023-02-25T02:23:11.073Z","updated_at":"2023-02-25T02:23:11.073Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mbeyeler/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":726167,"maintainers_count":308804,"namespaces_count":0,"keywords_count":238245,"github":"pypi","metadata":{"funded_packages_count":50579},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-08T05:32:36.857Z","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":634104,"full_name":"pulse2percept/pulse2percept","default_branch":"master","committers":[{"name":"Michael Beyeler","email":"mbeyeler@uw.edu","login":null,"count":230},{"name":"Michael Beyeler","email":"mbeyeler","login":"mbeyeler","count":185},{"name":"arokem","email":"arokem@gmail.com","login":"arokem","count":104},{"name":"Ione Fine","email":"ionefine@uw.edu","login":null,"count":45},{"name":"Michael Beyeler","email":"mbeyeler@ucsb.edu","login":null,"count":34},{"name":"Jacob Granley","email":"jgranley@ucsb.edu","login":null,"count":31},{"name":"Dylan Lin","email":"46723393+DylanLin29","login":"DylanLin29","count":11},{"name":"Geoff Boynton","email":"gboynton@uw.edu","login":null,"count":8},{"name":"Aiwen Xu","email":"aiwenxu@ucsb.edu","login":null,"count":7},{"name":"Wade Varesio","email":"wadevaresio@gmail.com","login":null,"count":7},{"name":"FrancieNagiki","email":"hwei@ucsb.edu","login":null,"count":6},{"name":"Jacob Granley","email":"jgranley@mymail.mines.edu","login":null,"count":6},{"name":"Ubuntu","email":"ubuntu@ip-172-30-0-22.us-west-2.compute.internal","login":null,"count":6},{"name":"nickarenberg","email":"nick.arenberg22@gmail.com","login":null,"count":3},{"name":"Ori Mizrahi","email":"52216399+omizrahi99","login":"omizrahi99","count":3},{"name":"ezgirmak","email":"32725132+ezgirmak","login":"ezgirmak","count":3},{"name":"Pulse2Percept","email":"Pulse2Percept","login":null,"count":3},{"name":"Ubuntu","email":"ubuntu@ip-10-106-9-155.us-west-2.compute.internal","login":null,"count":3},{"name":"Michael Beyeler","email":"mbeyeler@uci.edu","login":null,"count":2},{"name":"isaac hoffman","email":"ihoffman@ucsb.edu","login":null,"count":2},{"name":"Conrad Crowley","email":"conradcrowley@gmail.com","login":null,"count":2},{"name":"Jon Luntzel","email":"34121312+jonluntzel","login":"jonluntzel","count":2},{"name":"Ubuntu","email":"ubuntu@ip-10-106-9-31.us-west-2.compute.internal","login":null,"count":1},{"name":"emmagan","email":"47680984+emmagan","login":"emmagan","count":1},{"name":"NeuroscienceScripts","email":"52755909+NeuroscienceScripts","login":"NeuroscienceScripts","count":1},{"name":"Jacob Lavoie","email":"jacoblav2@gmail.com","login":null,"count":1},{"name":"Oliver Contier","email":"o.contier@gmail.com","login":null,"count":1},{"name":"Gareth","email":"garethgeorge97@gmail.com","login":null,"count":1},{"name":"isaac hoffman","email":"trsileneh@gmail.com","login":null,"count":1},{"name":"Ubuntu","email":"ubuntu@ip-10-105-197-13.us-west-2.compute.internal","login":null,"count":1}],"total_commits":711,"total_committers":30,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":23.7,"dds":0.6765119549929677,"past_year_committers":[{"name":"Jacob Granley","email":"jgranley@ucsb.edu","login":null,"count":8},{"name":"isaac hoffman","email":"ihoffman@ucsb.edu","login":null,"count":2},{"name":"isaac hoffman","email":"trsileneh@gmail.com","login":null,"count":1}],"past_year_total_commits":11,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":3.6666666666666665,"past_year_dds":0.2727272727272727,"last_synced_at":"2023-10-25T14:37:38.438Z","last_synced_commit":"cb5989d134c6a4fed4723d24e0f2872033d2f5d2","created_at":"2023-03-09T08:31:09.671Z","updated_at":"2023-10-25T14:37:38.439Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-04T00:00:25.936Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"pulse2percept/pulse2percept","html_url":"https://github.com/pulse2percept/pulse2percept","last_synced_at":"2025-09-06T23:59:19.446Z","status":null,"issues_count":92,"pull_requests_count":285,"avg_time_to_close_issue":17778463.019230768,"avg_time_to_close_pull_request":2213529.3515625,"issues_closed_count":52,"pull_requests_closed_count":256,"pull_request_authors_count":16,"issue_authors_count":9,"avg_comments_per_issue":0.4891304347826087,"avg_comments_per_pull_request":0.8315789473684211,"merged_pull_requests_count":211,"bot_issues_count":0,"bot_pull_requests_count":82,"past_year_issues_count":17,"past_year_pull_requests_count":137,"past_year_avg_time_to_close_issue":142174.66666666666,"past_year_avg_time_to_close_pull_request":539178.6521739131,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":115,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.23529411764705882,"past_year_avg_comments_per_pull_request":0.6934306569343066,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":82,"past_year_merged_pull_requests_count":89,"created_at":"2023-05-14T20:44:21.333Z","updated_at":"2025-09-06T23:59:19.448Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulse2percept%2Fpulse2percept/issues","issue_labels_count":{"bug":26,"Cortex":19,"enhancement":17,"maintenance":8,"installation":6,"good-first-issue":5,"doc":4,"performance":4,"usability":3,"wontfix":2,"question":2,"help-wanted":1,"duplicate":1},"pull_request_labels_count":{"dependencies":82,"github_actions":82,"maintenance":8,"Cortex":6,"enhancement":2,"usability":2,"high-prio":2,"bug":2,"performance":1,"wontfix":1},"issue_author_associations_count":{"MEMBER":83,"NONE":5,"CONTRIBUTOR":4},"pull_request_author_associations_count":{"MEMBER":145,"CONTRIBUTOR":116,"NONE":24},"issue_authors":{"jgranley":47,"mbeyeler":35,"ju-w":3,"tallyhawley":2,"apurvvarshney":1,"ascientist":1,"aiwenxu":1,"mai-amber":1,"Nykzom":1},"pull_request_authors":{"jgranley":86,"dependabot[bot]":82,"mbeyeler":53,"tallyhawley":23,"FrancieNagiki":7,"lukeyoffe":7,"HououinKyouma-2036":6,"narenberg":5,"WadeVaresio":4,"ju-w":2,"apurvvarshney":2,"yarikoptic":2,"whuang602":2,"step-security-bot":2,"ascientist":1,"subawocit":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-08T00:00:17.013Z","repositories_count":10165670,"issues_count":31989241,"pull_requests_count":100238337,"authors_count":10729070,"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":{"maintenance":5,"bug":5,"enhancement":3,"question":2,"good-first-issue":1,"usability":1,"duplicate":1},"past_year_pull_request_labels_count":{"dependencies":82,"github_actions":82,"maintenance":8,"usability":2,"high-prio":2,"bug":2},"past_year_issue_author_associations_count":{"MEMBER":17},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":81,"MEMBER":53,"NONE":3},"past_year_issue_authors":{"mbeyeler":14,"jgranley":3},"past_year_pull_request_authors":{"dependabot[bot]":82,"mbeyeler":42,"jgranley":11,"step-security-bot":2},"maintainers":[{"login":"jgranley","count":133,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jgranley"},{"login":"mbeyeler","count":88,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbeyeler"},{"login":"tallyhawley","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tallyhawley"},{"login":"aiwenxu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aiwenxu"}],"active_maintainers":[{"login":"mbeyeler","count":56,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbeyeler"},{"login":"jgranley","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jgranley"}]},"events":{"total":{"CreateEvent":66,"ReleaseEvent":1,"IssuesEvent":27,"WatchEvent":9,"DeleteEvent":61,"IssueCommentEvent":69,"PushEvent":205,"PullRequestReviewEvent":6,"PullRequestEvent":126,"ForkEvent":10},"last_year":{"CreateEvent":66,"ReleaseEvent":1,"IssuesEvent":27,"WatchEvent":9,"DeleteEvent":61,"IssueCommentEvent":69,"PushEvent":205,"PullRequestReviewEvent":6,"PullRequestEvent":126,"ForkEvent":10}},"keywords":["bionic-vision","neural-engineering","neuroscience","python","retinal-implants","vision"],"dependencies":[{"ecosystem":"pypi","filepath":"doc/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-27T21:41:27.028Z","updated_at":"2022-08-27T21:41:27.028Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/doc/requirements.txt","dependencies":[{"id":2965637126,"package_name":"setuptools","ecosystem":"pypi","requirements":"\u003e=42.0,\u003c50.0","direct":true,"kind":"runtime","optional":false},{"id":2965637127,"package_name":"sphinx","ecosystem":"pypi","requirements":"==1.8.5","direct":true,"kind":"runtime","optional":false},{"id":2965637128,"package_name":"sphinx_gallery","ecosystem":"pypi","requirements":"\u003e=0.7","direct":true,"kind":"runtime","optional":false},{"id":2965637129,"package_name":"sphinx_rtd_theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2965637130,"package_name":"ipython","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2965637131,"package_name":"sphinx_version_warning","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2965637132,"package_name":"joblib","ecosystem":"pypi","requirements":"\u003e=0.11","direct":true,"kind":"runtime","optional":false},{"id":2965637133,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2965637134,"package_name":"h5py","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":2965637135,"package_name":"docutils","ecosystem":"pypi","requirements":"\u003c0.18","direct":true,"kind":"runtime","optional":false},{"id":2965637136,"package_name":"jax","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements-dev.txt","sha":null,"kind":"manifest","created_at":"2022-08-27T21:41:27.224Z","updated_at":"2022-08-27T21:41:27.224Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/requirements-dev.txt","dependencies":[{"id":2965638693,"package_name":"joblib","ecosystem":"pypi","requirements":"\u003e=0.11","direct":true,"kind":"development","optional":false},{"id":2965638694,"package_name":"dask","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638695,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638696,"package_name":"h5py","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638697,"package_name":"pytest","ecosystem":"pypi","requirements":"\u003e=5","direct":true,"kind":"development","optional":false},{"id":2965638698,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638699,"package_name":"coveralls","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638700,"package_name":"flake8","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638701,"package_name":"mock","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638702,"package_name":"seaborn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638703,"package_name":"sklearn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":2965638704,"package_name":"pyswarm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-27T21:41:27.383Z","updated_at":"2022-08-27T21:41:27.383Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/requirements.txt","dependencies":[{"id":2965638980,"package_name":"cython","ecosystem":"pypi","requirements":"\u003e=0.28","direct":true,"kind":"runtime","optional":false},{"id":2965638981,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.11","direct":true,"kind":"runtime","optional":false},{"id":2965638982,"package_name":"setuptools","ecosystem":"pypi","requirements":"\u003c50.0","direct":true,"kind":"runtime","optional":false},{"id":2965638983,"package_name":"scipy","ecosystem":"pypi","requirements":"\u003c=1.7.1","direct":true,"kind":"runtime","optional":false},{"id":2965638984,"package_name":"scipy","ecosystem":"pypi","requirements":"\u003e=1.0.1","direct":true,"kind":"runtime","optional":false},{"id":2965638985,"package_name":"scikit_image","ecosystem":"pypi","requirements":"\u003e=0.14","direct":true,"kind":"runtime","optional":false},{"id":2965638986,"package_name":"matplotlib","ecosystem":"pypi","requirements":"\u003e=3.0.2","direct":true,"kind":"runtime","optional":false},{"id":2965638987,"package_name":"imageio_ffmpeg","ecosystem":"pypi","requirements":"\u003e=0.4","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-27T21:41:27.550Z","updated_at":"2022-08-27T21:41:27.550Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/setup.py","dependencies":[{"id":2965639022,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=","direct":true,"kind":"runtime","optional":false},{"id":2965639023,"package_name":"scipy","ecosystem":"pypi","requirements":"\u003e=","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2023-02-14T02:01:04.757Z","updated_at":"2023-02-14T02:01:04.757Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/.github/workflows/build.yml","dependencies":[{"id":7640452194,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7640452195,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7640452196,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/wheels.yml","sha":null,"kind":"manifest","created_at":"2023-02-14T02:01:04.801Z","updated_at":"2023-02-14T02:01:04.801Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/.github/workflows/wheels.yml","dependencies":[{"id":7640452231,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7640452232,"package_name":"pypa/cibuildwheel","ecosystem":"actions","requirements":"v2.1.3","direct":true,"kind":"composite","optional":false},{"id":7640452233,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pulse2percept/models/setup.py","sha":null,"kind":"manifest","created_at":"2023-10-20T22:41:02.434Z","updated_at":"2023-10-20T22:41:02.434Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/pulse2percept/models/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"pulse2percept/setup.py","sha":null,"kind":"manifest","created_at":"2023-10-20T22:41:02.466Z","updated_at":"2023-10-20T22:41:02.466Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/pulse2percept/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"pulse2percept/stimuli/setup.py","sha":null,"kind":"manifest","created_at":"2023-10-20T22:41:02.478Z","updated_at":"2023-10-20T22:41:02.478Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/pulse2percept/stimuli/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"pulse2percept/utils/setup.py","sha":null,"kind":"manifest","created_at":"2023-10-20T22:41:02.485Z","updated_at":"2023-10-20T22:41:02.485Z","repository_link":"https://github.com/pulse2percept/pulse2percept/blob/master/pulse2percept/utils/setup.py","dependencies":[]}],"score":13.54019174449589,"created_at":"2025-09-08T11:19:04.596Z","updated_at":"2025-10-07T08:25:50.077Z","avatar_url":"https://github.com/pulse2percept.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":172,"funding_links":[],"readme_doi_urls":["https://doi.org/10.25080/shinma-7f4c6e7-00c"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["lesson"],"project_url":"https://science.ecosyste.ms/api/v1/projects/69861","html_url":"https://science.ecosyste.ms/projects/69861"}