{"id":59716,"name":"topostats","description":"An AFM image analysis program to batch process data and obtain statistics from images","url":"https://github.com/afm-spm/topostats","last_synced_at":"2025-09-05T15:39:15.620Z","repository":{"id":37088519,"uuid":"168173540","full_name":"AFM-SPM/TopoStats","owner":"AFM-SPM","description":"An AFM image analysis program to batch process data and obtain statistics from images","archived":false,"fork":false,"pushed_at":"2025-09-01T10:46:37.000Z","size":1046439,"stargazers_count":75,"open_issues_count":144,"forks_count":19,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-09-01T12:43:32.179Z","etag":null,"topics":["afm","atomic-force-microscopy","hacktoberfest","image-processing","python","python3","spm"],"latest_commit_sha":null,"homepage":"https://afm-spm.github.io/TopoStats/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AFM-SPM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-29T15:00:56.000Z","updated_at":"2025-08-14T14:25:49.000Z","dependencies_parsed_at":"2025-08-13T17:35:17.399Z","dependency_job_id":null,"html_url":"https://github.com/AFM-SPM/TopoStats","commit_stats":{"total_commits":1921,"total_committers":20,"mean_commits":96.05,"dds":0.7079646017699115,"last_synced_commit":"19b2e0a1ab8cb80f1ece4c0e68fce10566085747"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/AFM-SPM/TopoStats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFM-SPM","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273779074,"owners_count":25166713,"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":{"login":"AFM-SPM","name":"Software for AFM \u0026 SPM data analysis ","uuid":"47154075","kind":"organization","description":"A community hub for Atomic Force Microscopy and Scanning Probe Microscopy analysis code","email":null,"website":"https://www.rms.org.uk/group/afm-spm.html","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/47154075?v=4","repositories_count":4,"last_synced_at":"2023-03-04T04:44:56.346Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/AFM-SPM","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T09:45:45.917Z","updated_at":"2023-03-04T04:44:56.348Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFM-SPM","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFM-SPM/repositories"},"packages":[{"id":5444282,"name":"topostats","ecosystem":"pypi","description":"Automated Analysis for Atomic Force Microscopy Images of Biomolecules","homepage":null,"licenses":"GNU Lesser GPLv3 only","normalized_licenses":["LGPL-2.1"],"repository_url":"https://github.com/AFM-SPM/TopoStats","keywords_array":["afm","image processing"],"namespace":null,"versions_count":8,"first_release_published_at":"2022-11-22T15:50:46.000Z","latest_release_published_at":"2025-01-15T16:33:37.000Z","latest_release_number":"2.3.1","last_synced_at":"2025-09-01T13:05:55.253Z","created_at":"2022-11-22T16:06:06.081Z","updated_at":"2025-09-01T14:22:00.022Z","registry_url":"https://pypi.org/project/topostats/","install_command":"pip install topostats --index-url https://pypi.org/simple","documentation_url":"https://AFM-SPM.github.io/TopoStats","metadata":{"funding":null,"documentation":"https://AFM-SPM.github.io/TopoStats","classifiers":["Intended Audience :: Science/Research","License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)","Natural Language :: English","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.9"],"normalized_name":"topostats","project_status":null},"repo_metadata":{"id":37088519,"uuid":"168173540","full_name":"AFM-SPM/TopoStats","owner":"AFM-SPM","description":"An AFM image analysis program to batch process data and obtain statistics from images","archived":false,"fork":false,"pushed_at":"2025-09-01T10:46:37.000Z","size":1046439,"stargazers_count":75,"open_issues_count":144,"forks_count":19,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-09-01T12:43:32.179Z","etag":null,"topics":["afm","atomic-force-microscopy","hacktoberfest","image-processing","python","python3","spm"],"latest_commit_sha":null,"homepage":"https://afm-spm.github.io/TopoStats/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AFM-SPM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-29T15:00:56.000Z","updated_at":"2025-08-14T14:25:49.000Z","dependencies_parsed_at":"2025-08-13T17:35:17.399Z","dependency_job_id":null,"html_url":"https://github.com/AFM-SPM/TopoStats","commit_stats":{"total_commits":1921,"total_committers":20,"mean_commits":96.05,"dds":0.7079646017699115,"last_synced_commit":"19b2e0a1ab8cb80f1ece4c0e68fce10566085747"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/AFM-SPM/TopoStats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFM-SPM","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273138078,"owners_count":25052152,"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-01T02:00:09.058Z","response_time":120,"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":"AFM-SPM","name":"Software for AFM \u0026 SPM data analysis ","uuid":"47154075","kind":"organization","description":"A community hub for Atomic Force Microscopy and Scanning Probe Microscopy analysis code","email":null,"website":"https://www.rms.org.uk/group/afm-spm.html","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/47154075?v=4","repositories_count":4,"last_synced_at":"2023-03-04T04:44:56.346Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/AFM-SPM","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T09:45:45.917Z","updated_at":"2023-03-04T04:44:56.348Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFM-SPM","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFM-SPM/repositories"},"tags":[{"name":"v2.3.0","sha":"90095f75476c57803274b9c5d40b401572873d0e","kind":"tag","published_at":"2025-05-01T12:00:08.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.3.0","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.3.0/manifests"},{"name":"v2.3.1","sha":"a480afe9d7e9c16501f5af5621ed86555db44708","kind":"commit","published_at":"2025-01-09T14:26:57.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.3.1","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.3.1/manifests"},{"name":"v2.2.1","sha":"b40239f7db9afd22e51abbdf7d92c6a163bfc415","kind":"commit","published_at":"2024-06-06T14:07:44.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.2.1","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.2.1/manifests"},{"name":"v2.2.post0","sha":"324938b86fda893792933445f0c559c9a16e4e5d","kind":"commit","published_at":"2024-01-29T14:50:00.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.2.post0","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.2.post0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.2.post0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.2.post0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.2.post0/manifests"},{"name":"v2.2.0","sha":"6900c06e371880579b1061e6d29fd6f9bac94e06","kind":"commit","published_at":"2024-01-25T16:04:48.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.2.0","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.2.0/manifests"},{"name":"v2.1.2","sha":"14cd56dd19eecc6af0ae105b076d51d3afe0bad3","kind":"commit","published_at":"2023-10-10T12:38:58.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.1.2","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"111dc5bf0d24da3249e4c840fc7b09fac6bac226","kind":"commit","published_at":"2023-08-01T12:21:56.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.1.1","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"cd0ec35a5071deb7f6f8ef6dce6598a542cb059b","kind":"commit","published_at":"2023-05-18T06:42:23.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.1.0","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"d819d1f3d0bed977cdfa926fb309a76a8e394462","kind":"commit","published_at":"2022-11-22T15:47:53.000Z","download_url":"https://codeload.github.com/AFM-SPM/TopoStats/tar.gz/v2.0.0","html_url":"https://github.com/AFM-SPM/TopoStats/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/AFM-SPM/TopoStats@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/tags/v2.0.0/manifests"}]},"repo_metadata_updated_at":"2025-09-01T14:22:00.022Z","dependent_packages_count":0,"downloads":165,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":21.015557155968708,"dependent_repos_count":21.525853977374208,"dependent_packages_count":10.141135697755281,"stargazers_count":9.60976072920623,"forks_count":10.892753678251536,"docker_downloads_count":null,"average":14.637012247711192},"purl":"pkg:pypi/topostats","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/topostats","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/topostats","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/topostats/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T08:20:58.286Z","issues_count":338,"pull_requests_count":383,"avg_time_to_close_issue":15735824.930555556,"avg_time_to_close_pull_request":1098297.5762711863,"issues_closed_count":215,"pull_requests_closed_count":354,"pull_request_authors_count":12,"issue_authors_count":19,"avg_comments_per_issue":1.334319526627219,"avg_comments_per_pull_request":1.5744125326370757,"merged_pull_requests_count":319,"bot_issues_count":0,"bot_pull_requests_count":46,"past_year_issues_count":99,"past_year_pull_requests_count":166,"past_year_avg_time_to_close_issue":1315672.6578947369,"past_year_avg_time_to_close_pull_request":431466.4142857143,"past_year_issues_closed_count":38,"past_year_pull_requests_closed_count":140,"past_year_pull_request_authors_count":9,"past_year_issue_authors_count":11,"past_year_avg_comments_per_issue":0.6666666666666666,"past_year_avg_comments_per_pull_request":1.4036144578313252,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":19,"past_year_merged_pull_requests_count":132,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/issues","maintainers":[{"login":"ns-rse","count":436,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ns-rse"},{"login":"SylviaWhittle","count":122,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SylviaWhittle"},{"login":"MaxGamill-Sheffield","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MaxGamill-Sheffield"},{"login":"derollins","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derollins"},{"login":"Jean-Du","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Jean-Du"},{"login":"llwiggins","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/llwiggins"},{"login":"bobturneruk","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bobturneruk"},{"login":"tcatley","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tcatley"},{"login":"EvaMartinC","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/EvaMartinC"},{"login":"LHolmes2","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LHolmes2"},{"login":"bdiggines","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bdiggines"},{"login":"tobyallwood","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tobyallwood"},{"login":"TFirth2","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/TFirth2"}],"active_maintainers":[{"login":"ns-rse","count":166,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ns-rse"},{"login":"SylviaWhittle","count":35,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SylviaWhittle"},{"login":"MaxGamill-Sheffield","count":22,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MaxGamill-Sheffield"},{"login":"llwiggins","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/llwiggins"},{"login":"tcatley","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tcatley"},{"login":"EvaMartinC","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/EvaMartinC"},{"login":"tobyallwood","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tobyallwood"},{"login":"derollins","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derollins"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/topostats/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/topostats/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/topostats/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/topostats/related_packages","maintainers":[{"uuid":"topostats","login":"topostats","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/topostats/","role":null,"created_at":"2022-12-20T19:12:10.432Z","updated_at":"2022-12-20T19:12:10.432Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/topostats/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":725194,"maintainers_count":308369,"namespaces_count":0,"keywords_count":238006,"github":"pypi","metadata":{"funded_packages_count":50519},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-05T05:40:58.860Z","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":694658,"full_name":"AFM-SPM/TopoStats","default_branch":"main","committers":[{"name":"SylviaWhittle","email":"sylviwhittle@gmail.com","login":"SylviaWhittle","count":1232},{"name":"Neil Shephard","email":"n.shephard@sheffield.ac.uk","login":"ns-rse","count":841},{"name":"Max Gamill","email":"mcgamill1@sheffield.ac.uk","login":"MaxGamill-Sheffield","count":801},{"name":"pre-commit-ci[bot]","email":"66853113+pre-commit-ci[bot]","login":"pre-commit-ci[bot]","count":159},{"name":"alicepyne","email":"alice.pyne@ucl.ac.uk","login":"alicepyne","count":131},{"name":"Robert (Bob) Turner","email":"r.d.turner@sheffield.ac.uk","login":null,"count":115},{"name":"JoeBeton","email":"joe_beton@hotmail.co.uk","login":"JoeBeton","count":84},{"name":"Jean-Du","email":"mdu12@sheffield.ac.uk","login":"Jean-Du","count":66},{"name":"Laura Wiggins","email":"l.wiggins@sheffield.ac.uk","login":"llwiggins","count":30},{"name":"derollins","email":"dan.rollins1@gmail.com","login":"derollins","count":13},{"name":"TomC","email":"t.catley@sheffield.ac.uk","login":"tcatley","count":12},{"name":"slackline","email":"nshephard@protonmail.com","login":"slackline","count":9},{"name":"bobturneruk","email":"34244196+bobturneruk","login":"bobturneruk","count":6},{"name":"Ben Thomas","email":"b.thomas@sheffield.ac.uk","login":"benthomasuos","count":3},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Test","email":"test@Lauras-MacBook-Pro.local","login":null,"count":1},{"name":"Daniel Eddie Rollins","email":"derollins1@sheffield.ac.uk","login":null,"count":1},{"name":"ucapkah","email":"47181180+ucapkah","login":"ucapkah","count":1}],"total_commits":3507,"total_committers":18,"total_bot_commits":161,"total_bot_committers":2,"mean_commits":194.83333333333334,"dds":0.6487025948103793,"past_year_committers":[{"name":"SylviaWhittle","email":"sylviwhittle@gmail.com","login":"SylviaWhittle","count":584},{"name":"Max Gamill","email":"mcgamill1@sheffield.ac.uk","login":"MaxGamill-Sheffield","count":360},{"name":"Neil Shephard","email":"n.shephard@sheffield.ac.uk","login":"ns-rse","count":193},{"name":"pre-commit-ci[bot]","email":"66853113+pre-commit-ci[bot]","login":"pre-commit-ci[bot]","count":89},{"name":"TomC","email":"t.catley@sheffield.ac.uk","login":"tcatley","count":12},{"name":"llwiggins","email":"l.wiggins@sheffield.ac.uk","login":"llwiggins","count":10},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Neil Shephard","email":"nshephard@protonmail.com","login":"slackline","count":2},{"name":"Test","email":"test@Lauras-MacBook-Pro.local","login":null,"count":1}],"past_year_total_commits":1253,"past_year_total_committers":9,"past_year_total_bot_commits":91,"past_year_total_bot_committers":2,"past_year_mean_commits":139.22222222222223,"past_year_dds":0.5339185953711094,"last_synced_at":"2025-04-08T04:59:26.672Z","last_synced_commit":"7f26cd607275978a0e3db5dc42d84afa2cd1cb80","created_at":"2023-03-09T11:36:20.518Z","updated_at":"2025-06-01T03:15:52.681Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-01T00:00:08.406Z","repositories_count":5479765,"commits_count":853310318,"contributors_count":31095240,"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":"AFM-SPM/TopoStats","html_url":"https://github.com/AFM-SPM/TopoStats","last_synced_at":"2025-09-02T19:43:39.315Z","status":null,"issues_count":352,"pull_requests_count":498,"avg_time_to_close_issue":15401115.07239819,"avg_time_to_close_pull_request":1205670.3821510298,"issues_closed_count":220,"pull_requests_closed_count":437,"pull_request_authors_count":13,"issue_authors_count":21,"avg_comments_per_issue":1.1988636363636365,"avg_comments_per_pull_request":1.572289156626506,"merged_pull_requests_count":388,"bot_issues_count":1,"bot_pull_requests_count":52,"past_year_issues_count":122,"past_year_pull_requests_count":224,"past_year_avg_time_to_close_issue":740209.2549019608,"past_year_avg_time_to_close_pull_request":378541.8659217877,"past_year_issues_closed_count":51,"past_year_pull_requests_closed_count":179,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":12,"past_year_avg_comments_per_issue":0.5,"past_year_avg_comments_per_pull_request":1.2901785714285714,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":22,"past_year_merged_pull_requests_count":167,"created_at":"2023-05-15T05:33:16.910Z","updated_at":"2025-09-03T04:29:46.342Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFM-SPM%2FTopoStats/issues","issue_labels_count":{"enhancement":78,"bug":61,"Low Priority":31,"documentation":26,"CI/CD":23,"IO":17,"tests":13,"Plotting":13,"testing":12,"v2.3.0":12,"DNATracing":11,"notebooks":11,"user experience":10,"Medium Priority":8,"ui":7,"v2.4.0":7,"admin":6,"good first issue":6,"Images":5,"linting":4,"refactor":4,"GrainStats":3,"configuration":3,"Epic":3,"Grains":3,"help wanted":2,"duplicate":2,"packaging":2,"v2.3.1":2,"blocked":2,"deprecations":2,"v2.3.2":1,"planning":1,"logging":1,"ordered tracing":1,"measure":1,"v2.2.2":1,"scars":1,"curvature":1,"wontfix":1},"pull_request_labels_count":{"IO":31,"CI/CD":30,"v2.3.0":30,"documentation":27,"tests":24,"enhancement":16,"linting":15,"Plotting":11,"Grains":10,"refactor":10,"configuration":8,"GrainStats":7,"ui":7,"dependencies":6,"DNATracing":5,"user experience":5,"packaging":4,"bug":4,"github_actions":2,"disordered tracing":2,"processing":2,"v2.4.0":2,"v2.3.1":2,"measure":2,"testing":2,"Low Priority":1,"Images":1,"Filters":1,"notebooks":1,"Medium Priority":1},"issue_author_associations_count":{"COLLABORATOR":335,"NONE":11,"MEMBER":3,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"COLLABORATOR":469,"CONTRIBUTOR":53,"NONE":7,"MEMBER":3},"issue_authors":{"ns-rse":205,"SylviaWhittle":58,"MaxGamill-Sheffield":29,"Jean-Du":17,"derollins":14,"llwiggins":4,"tcatley":4,"bobturneruk":3,"LunchBobs":2,"AdriSP2":2,"LHolmes2":2,"pre-commit-ci[bot]":1,"Malisa-Vittoria":1,"yetijbsmith":1,"stavrina":1,"TFirth2":1,"Marina1595":1,"tobyallwood":1,"neumagen":1,"sebastienjanel":1,"bdiggines":1},"pull_request_authors":{"ns-rse":311,"SylviaWhittle":80,"MaxGamill-Sheffield":58,"pre-commit-ci[bot]":49,"llwiggins":11,"dependabot[bot]":6,"derollins":4,"bobturneruk":3,"iobataya":3,"EvaMartinC":2,"AuroVarat":2,"tcatley":2,"tobyallwood":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.444Z","repositories_count":10086361,"issues_count":31286210,"pull_requests_count":96411606,"authors_count":10695498,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"enhancement":21,"bug":21,"tests":12,"v2.3.0":10,"documentation":7,"CI/CD":6,"Low Priority":5,"refactor":3,"IO":2,"packaging":2,"DNATracing":2,"v2.3.1":2,"linting":2,"user experience":2,"notebooks":1,"ui":1,"good first issue":1,"measure":1,"Epic":1,"ordered tracing":1,"GrainStats":1,"Grains":1,"logging":1,"Images":1,"Medium Priority":1,"v2.3.2":1},"past_year_pull_request_labels_count":{"v2.3.0":30,"IO":20,"CI/CD":17,"documentation":15,"tests":14,"enhancement":13,"refactor":10,"Grains":10,"dependencies":6,"ui":4,"packaging":4,"linting":4,"GrainStats":3,"user experience":3,"processing":2,"disordered tracing":2,"github_actions":2,"v2.4.0":2,"v2.3.1":2,"bug":2,"DNATracing":2,"Low Priority":1,"Filters":1,"Medium Priority":1},"past_year_issue_author_associations_count":{"COLLABORATOR":114,"NONE":7},"past_year_pull_request_author_associations_count":{"COLLABORATOR":231,"CONTRIBUTOR":21,"NONE":4},"past_year_issue_authors":{"ns-rse":79,"SylviaWhittle":18,"MaxGamill-Sheffield":10,"llwiggins":3,"tcatley":3,"AdriSP2":2,"derollins":1,"Malisa-Vittoria":1,"Marina1595":1,"sebastienjanel":1,"tobyallwood":1,"yetijbsmith":1},"past_year_pull_request_authors":{"ns-rse":166,"MaxGamill-Sheffield":29,"SylviaWhittle":26,"pre-commit-ci[bot]":17,"dependabot[bot]":6,"llwiggins":5,"EvaMartinC":2,"AuroVarat":2,"tcatley":2,"tobyallwood":1},"maintainers":[{"login":"ns-rse","count":516,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ns-rse"},{"login":"SylviaWhittle","count":138,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SylviaWhittle"},{"login":"MaxGamill-Sheffield","count":87,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MaxGamill-Sheffield"},{"login":"derollins","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derollins"},{"login":"Jean-Du","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Jean-Du"},{"login":"llwiggins","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/llwiggins"},{"login":"tcatley","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tcatley"},{"login":"bobturneruk","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bobturneruk"},{"login":"EvaMartinC","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/EvaMartinC"},{"login":"LHolmes2","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LHolmes2"},{"login":"bdiggines","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/bdiggines"},{"login":"tobyallwood","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tobyallwood"},{"login":"TFirth2","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/TFirth2"}],"active_maintainers":[{"login":"ns-rse","count":245,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ns-rse"},{"login":"SylviaWhittle","count":44,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SylviaWhittle"},{"login":"MaxGamill-Sheffield","count":39,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MaxGamill-Sheffield"},{"login":"llwiggins","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/llwiggins"},{"login":"tcatley","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tcatley"},{"login":"EvaMartinC","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/EvaMartinC"},{"login":"tobyallwood","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tobyallwood"},{"login":"derollins","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/derollins"}]},"events":null,"keywords":["afm","atomic-force-microscopy","hacktoberfest","image-processing","python","python3","spm"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/ORDA.yaml","sha":null,"kind":"manifest","created_at":"2023-09-23T04:29:02.952Z","updated_at":"2023-09-23T04:29:02.952Z","repository_link":"https://github.com/AFM-SPM/TopoStats/blob/main/.github/workflows/ORDA.yaml","dependencies":[{"id":13890250327,"package_name":"figshare/github-upload-action","ecosystem":"actions","requirements":"v1.1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/add-issue-to-project.yaml","sha":null,"kind":"manifest","created_at":"2023-09-23T04:29:03.282Z","updated_at":"2023-09-23T04:29:03.282Z","repository_link":"https://github.com/AFM-SPM/TopoStats/blob/main/.github/workflows/add-issue-to-project.yaml","dependencies":[{"id":13890250936,"package_name":"actions/add-to-project","ecosystem":"actions","requirements":"v0.4.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pypi.yaml","sha":null,"kind":"manifest","created_at":"2023-09-23T04:29:05.617Z","updated_at":"2023-09-23T04:29:05.617Z","repository_link":"https://github.com/AFM-SPM/TopoStats/blob/main/.github/workflows/pypi.yaml","dependencies":[{"id":13890251041,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13890251042,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4.3.0","direct":true,"kind":"composite","optional":false},{"id":13890251043,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/sphinx_docs_to_gh_pages.yaml","sha":null,"kind":"manifest","created_at":"2023-09-23T04:29:06.084Z","updated_at":"2023-09-23T04:29:06.084Z","repository_link":"https://github.com/AFM-SPM/TopoStats/blob/main/.github/workflows/sphinx_docs_to_gh_pages.yaml","dependencies":[{"id":13890251142,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13890251143,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4.3.0","direct":true,"kind":"composite","optional":false},{"id":13890251144,"package_name":"ns-rse/action-sphinx-docs-to-gh-pages","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/tests.yaml","sha":null,"kind":"manifest","created_at":"2023-09-23T04:29:06.491Z","updated_at":"2023-09-23T04:29:06.491Z","repository_link":"https://github.com/AFM-SPM/TopoStats/blob/main/.github/workflows/tests.yaml","dependencies":[{"id":13890251259,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13890251260,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4.3.0","direct":true,"kind":"composite","optional":false},{"id":13890251261,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v3.1.1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-09-23T04:29:06.721Z","updated_at":"2023-09-23T04:29:06.721Z","repository_link":"https://github.com/AFM-SPM/TopoStats/blob/main/pyproject.toml","dependencies":[{"id":13890251485,"package_name":"igor","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251492,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251493,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.23.4","direct":true,"kind":"runtime","optional":false},{"id":13890251494,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251495,"package_name":"pySPM","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251498,"package_name":"pyyaml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251499,"package_name":"ruamel.yaml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251500,"package_name":"schema","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251501,"package_name":"scikit-image","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251502,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251503,"package_name":"seaborn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251504,"package_name":"tifffile","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251505,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251506,"package_name":"pyfiglet","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13890251507,"package_name":"h5py","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":13.397437300129422,"created_at":"2025-09-04T15:51:36.394Z","updated_at":"2025-10-07T08:23:28.354Z","avatar_url":"https://github.com/AFM-SPM.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":165,"funding_links":[],"readme_doi_urls":["https://doi.org/10.15131/shef.data.22633528.v2","https://doi.org/10.1101/2024.06.28.601212"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["energy-system-model","mesh","particles","quantum-circuit","led","standards","yolov5s","climate-model","medical-imaging","optimizer"],"project_url":"https://science.ecosyste.ms/api/v1/projects/59716","html_url":"https://science.ecosyste.ms/projects/59716"}