{"id":349151,"name":"PyPAM","description":"Allow easy reading and processing of acoustic underwater data.","url":"https://github.com/lifewatch/pypam","last_synced_at":"2026-04-28T09:00:46.131Z","repository":{"id":40945280,"uuid":"346720256","full_name":"lifewatch/pypam","owner":"lifewatch","description":"Python Passive Acoustic Analysis tool for Passive Acoustic Monitoring (PAM)","archived":false,"fork":false,"pushed_at":"2026-03-30T18:48:20.000Z","size":82764,"stargazers_count":50,"open_issues_count":22,"forks_count":8,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-04-12T01:02:08.393Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lifewatch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2021-03-11T13:59:03.000Z","updated_at":"2026-03-30T18:48:18.000Z","dependencies_parsed_at":"2024-05-03T22:30:53.792Z","dependency_job_id":"a90faf5e-a82e-499f-bf24-9f0f9b61dc9b","html_url":"https://github.com/lifewatch/pypam","commit_stats":{"total_commits":258,"total_committers":7,"mean_commits":"36.857142857142854","dds":0.4728682170542635,"last_synced_commit":"9aa3c196b94472b04cf35e821396ab20cb513893"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/lifewatch/pypam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifewatch","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/sbom","scorecard":{"id":588929,"data":{"date":"2025-08-11","repo":{"name":"github.com/lifewatch/pypam","commit":"37b5d58a9c22e4fed474186d371ea742aba18250"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/8 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":6,"reason":"6 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/dependabot-auto-merge.yml:6","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":3,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'main'","Warn: could not determine whether codeowners review is allowed","Warn: no status checks found to merge onto branch 'main'","Warn: PRs are not required to make changes on branch 'main'; or we don't have data to detect it.If you think it might be the latter, make sure to run Scorecard with a PAT or use Repo Rules (that are always public) instead of Branch Protection settings"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot-auto-merge.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/dependabot-auto-merge.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/lifewatch/pypam/publish.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-33p9-3p43-82vq"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T21:20:05.351Z","repository_id":40945280,"created_at":"2025-08-20T21:20:05.351Z","updated_at":"2025-08-20T21:20:05.351Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31778580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T00:11:49.126Z","status":"online","status_checked_at":"2026-04-14T02:00:06.344Z","response_time":153,"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":"lifewatch","name":"LifeWatch.be","uuid":"15125074","kind":"organization","description":"","email":"info@lifewatch.be","website":"https://www.lifewatch.be","location":"Belgium","twitter":"LifeWatchVLIZ","company":null,"icon_url":"https://avatars.githubusercontent.com/u/15125074?v=4","repositories_count":14,"last_synced_at":"2023-03-05T02:04:11.392Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/lifewatch","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-15T04:10:21.626Z","updated_at":"2023-03-05T02:04:11.395Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifewatch","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifewatch/repositories"},"packages":[{"id":2787452,"name":"lifewatch-pypam","ecosystem":"pypi","description":"Facilitate acoustic processing from underwater acoustic recorders","homepage":"https://github.com/lifewatch/pypam.git","licenses":"GPL-3.0-or-later","normalized_licenses":["GPL-3.0-or-later"],"repository_url":"https://github.com/lifewatch/pypam","keywords_array":[],"namespace":null,"versions_count":11,"first_release_published_at":"2021-10-27T10:18:05.000Z","latest_release_published_at":"2025-05-13T11:24:45.000Z","latest_release_number":"0.4.0","last_synced_at":"2026-04-26T10:31:46.458Z","created_at":"2022-04-10T11:28:58.471Z","updated_at":"2026-04-26T10:31:46.458Z","registry_url":"https://pypi.org/project/lifewatch-pypam/","install_command":"pip install lifewatch-pypam --index-url https://pypi.org/simple","documentation_url":"https://lifewatch-pypam.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)","License :: OSI Approved :: MIT License","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.9"],"normalized_name":"lifewatch-pypam","project_status":null},"repo_metadata":{"id":40945280,"uuid":"346720256","full_name":"lifewatch/pypam","owner":"lifewatch","description":"Python Passive Acoustic Analysis tool for Passive Acoustic Monitoring (PAM)","archived":false,"fork":false,"pushed_at":"2024-09-05T12:55:19.000Z","size":71962,"stargazers_count":28,"open_issues_count":18,"forks_count":8,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-09-05T22:36:28.583Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lifewatch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2021-03-11T13:59:03.000Z","updated_at":"2024-09-04T16:10:12.000Z","dependencies_parsed_at":"2024-05-03T22:30:53.792Z","dependency_job_id":"1e2d499f-b8e3-4fff-aa55-d44a62435811","html_url":"https://github.com/lifewatch/pypam","commit_stats":{"total_commits":258,"total_committers":7,"mean_commits":"36.857142857142854","dds":0.4728682170542635,"last_synced_commit":"9aa3c196b94472b04cf35e821396ab20cb513893"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifewatch","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217679593,"owners_count":16214677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"lifewatch","name":"LifeWatch.be","uuid":"15125074","kind":"organization","description":"","email":"info@lifewatch.be","website":"https://www.lifewatch.be","location":"Belgium","twitter":"LifeWatchVLIZ","company":null,"icon_url":"https://avatars.githubusercontent.com/u/15125074?v=4","repositories_count":14,"last_synced_at":"2023-03-05T02:04:11.392Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/lifewatch","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-15T04:10:21.626Z","updated_at":"2023-03-05T02:04:11.395Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifewatch","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifewatch/repositories"},"tags":[{"name":"0.3.0","sha":"1e3a71c0fd090d4bb7cb91cf689868caa049a5e1","kind":"commit","published_at":"2023-10-24T16:08:15.000Z","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/0.3.0","html_url":"https://github.com/lifewatch/pypam/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/0.3.0/manifests"},{"name":"0.2.1","sha":"439ffa33dc7c8b17aed8d6b3cc1d05ee7200d40d","kind":"commit","published_at":"2023-08-31T09:35:55.000Z","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/0.2.1","html_url":"https://github.com/lifewatch/pypam/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/0.2.1/manifests"},{"name":"t0.2.0","sha":"692f89bbe87d4e19d64886c4b7781a48edba8f94","kind":"commit","published_at":"2023-07-07T16:38:19.000Z","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/t0.2.0","html_url":"https://github.com/lifewatch/pypam/releases/tag/t0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/t0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/t0.2.0/manifests"},{"name":"v0.1.9","sha":"3b06a448493f7dbec385f8b8c8a720e93ce9254f","kind":"commit","published_at":"2023-01-30T12:28:00.000Z","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/v0.1.9","html_url":"https://github.com/lifewatch/pypam/releases/tag/v0.1.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/v0.1.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/v0.1.9/manifests"},{"name":"v0.1.6","sha":"b9050077fc5b11e4874d5bc130b8e01b811cf843","kind":"commit","published_at":"2022-02-11T11:07:51.000Z","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/v0.1.6","html_url":"https://github.com/lifewatch/pypam/releases/tag/v0.1.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/v0.1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/v0.1.6/manifests"},{"name":"v0.0.1","sha":"ee759f35b43e6375c9417514425f7e24e002e1ec","kind":"commit","published_at":"2021-06-25T10:32:25.000Z","download_url":"https://codeload.github.com/lifewatch/pypam/tar.gz/v0.0.1","html_url":"https://github.com/lifewatch/pypam/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-05T23:58:10.879Z","dependent_packages_count":1,"downloads":279,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":34.911121601244545,"dependent_repos_count":21.64168977689945,"dependent_packages_count":10.051680376746889,"stargazers_count":13.333549924607127,"forks_count":14.193952806588042,"docker_downloads_count":null,"average":18.82639889721721},"purl":"pkg:pypi/lifewatch-pypam","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/lifewatch-pypam","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/lifewatch-pypam","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/lifewatch-pypam/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-03-18T22:47:41.195Z","issues_count":50,"pull_requests_count":67,"avg_time_to_close_issue":3864703.787878788,"avg_time_to_close_pull_request":187095.0447761194,"issues_closed_count":33,"pull_requests_closed_count":67,"pull_request_authors_count":5,"issue_authors_count":5,"avg_comments_per_issue":1.02,"avg_comments_per_pull_request":0.417910447761194,"merged_pull_requests_count":65,"bot_issues_count":0,"bot_pull_requests_count":16,"past_year_issues_count":32,"past_year_pull_requests_count":58,"past_year_avg_time_to_close_issue":802957.5789473684,"past_year_avg_time_to_close_pull_request":131154.7068965517,"past_year_issues_closed_count":19,"past_year_pull_requests_closed_count":58,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":0.71875,"past_year_avg_comments_per_pull_request":0.15517241379310345,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":12,"past_year_merged_pull_requests_count":56,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/issues","maintainers":[{"login":"cparcerisas","count":49,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cparcerisas"},{"login":"carueda","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carueda"},{"login":"LennertSchepers","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LennertSchepers"}],"active_maintainers":[{"login":"cparcerisas","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cparcerisas"},{"login":"carueda","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carueda"},{"login":"LennertSchepers","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LennertSchepers"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/lifewatch-pypam/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/lifewatch-pypam/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/lifewatch-pypam/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/lifewatch-pypam/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/lifewatch-pypam/codemeta","maintainers":[{"uuid":"cparcerisas","login":"cparcerisas","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://pypi.org/user/cparcerisas/","role":null,"created_at":"2022-12-12T06:12:16.059Z","updated_at":"2022-12-12T06:12:16.059Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/cparcerisas/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":850904,"maintainers_count":363635,"namespaces_count":0,"keywords_count":271316,"github":"pypi","metadata":{"funded_packages_count":53172},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-09T05:08:03.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":604465,"full_name":"lifewatch/pypam","default_branch":"master","total_commits":591,"total_committers":10,"total_bot_commits":42,"total_bot_committers":1,"mean_commits":59.1,"dds":0.5313028764805414,"past_year_total_commits":15,"past_year_total_committers":3,"past_year_total_bot_commits":12,"past_year_total_bot_committers":1,"past_year_mean_commits":5.0,"past_year_dds":0.19999999999999996,"last_synced_at":"2026-04-26T08:01:45.556Z","last_synced_commit":"a169de4353605f346d7f7e71416fead5291b129a","created_at":"2023-03-09T07:00:01.567Z","updated_at":"2026-04-26T08:01:41.934Z","committers":[{"name":"Clea Parcerisas","email":"cleaparcerisas@gmail.com","login":"cparcerisas","count":277},{"name":"Clea Parcerisas","email":"cleap@vliz.be","login":null,"count":136},{"name":"Simon Laurent","email":"simon.laurent@vliz.be","login":"SimLrt32","count":64},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":42},{"name":"Carlos Rueda","email":"carueda@mbari.org","login":"carueda","count":33},{"name":"caplinje-NOAA","email":"james.caplinger@NOAA.gov","login":"caplinje-NOAA","count":16},{"name":"JotaFan","email":"jotaflame@gmail.com","login":"JotaFan","count":15},{"name":"Paul Focke","email":"paul.focke@vliz.be","login":"paulfvliz","count":5},{"name":"Bart Vanhoorne","email":"bart.vanhoorne@vliz.be","login":null,"count":2},{"name":"bart-v","email":"bartv@vliz.be","login":"bart-v","count":1}],"past_year_committers":[{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":12},{"name":"Clea Parcerisas","email":"clea.parcerisas@vliz.be","login":"cparcerisas","count":2},{"name":"bart-v","email":"bartv@vliz.be","login":"bart-v","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-28T00:00:07.369Z","repositories_count":6220993,"commits_count":900033296,"contributors_count":34885669,"owners_count":1146665,"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":"lifewatch/pypam","html_url":"https://github.com/lifewatch/pypam","last_synced_at":"2026-04-12T01:00:47.591Z","status":"active","issues_count":58,"pull_requests_count":122,"avg_time_to_close_issue":9293861.72972973,"avg_time_to_close_pull_request":186934.1754385965,"issues_closed_count":37,"pull_requests_closed_count":114,"pull_request_authors_count":6,"issue_authors_count":11,"avg_comments_per_issue":0.9310344827586207,"avg_comments_per_pull_request":0.23770491803278687,"merged_pull_requests_count":110,"bot_issues_count":1,"bot_pull_requests_count":53,"past_year_issues_count":3,"past_year_pull_requests_count":11,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":835.2222222222222,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":8,"past_year_merged_pull_requests_count":8,"created_at":"2023-05-14T17:01:00.736Z","updated_at":"2026-04-12T01:00:47.591Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifewatch%2Fpypam/issues","issue_labels_count":{"enhancement":16,"bug":9,"dependencies":5,"documentation":2,"question":1},"pull_request_labels_count":{"dependencies":53,"python":8,"documentation":2},"issue_author_associations_count":{"COLLABORATOR":41,"NONE":9,"CONTRIBUTOR":7,"MEMBER":1},"pull_request_author_associations_count":{"CONTRIBUTOR":71,"COLLABORATOR":49,"NONE":2},"issue_authors":{"cparcerisas":28,"carueda":13,"SimLrt32":6,"ryjombari":3,"JeroHub":2,"LennertSchepers":1,"JPalmerK":1,"bramcuyx":1,"silviaurraa":1,"dependabot[bot]":1,"caplinje-NOAA":1},"pull_request_authors":{"dependabot[bot]":53,"cparcerisas":35,"carueda":14,"SimLrt32":12,"JotaFan":5,"caplinje-NOAA":3},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-24T00:00:07.455Z","repositories_count":14381483,"issues_count":34454124,"pull_requests_count":112790889,"authors_count":11244005,"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":1},"past_year_pull_request_labels_count":{"dependencies":8,"python":8},"past_year_issue_author_associations_count":{"NONE":2,"COLLABORATOR":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":8,"COLLABORATOR":2},"past_year_issue_authors":{"cparcerisas":1,"JPalmerK":1,"silviaurraa":1},"past_year_pull_request_authors":{"dependabot[bot]":8,"cparcerisas":2},"maintainers":[{"login":"cparcerisas","count":63,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cparcerisas"},{"login":"carueda","count":27,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carueda"},{"login":"LennertSchepers","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LennertSchepers"}],"active_maintainers":[{"login":"cparcerisas","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cparcerisas"}]},"events":{"total":{"ReleaseEvent":1,"DeleteEvent":14,"PullRequestEvent":31,"IssuesEvent":13,"WatchEvent":13,"IssueCommentEvent":26,"PushEvent":36,"PullRequestReviewEvent":1,"CreateEvent":9},"last_year":{"ReleaseEvent":1,"DeleteEvent":7,"PullRequestEvent":17,"IssuesEvent":4,"WatchEvent":4,"IssueCommentEvent":14,"PushEvent":9,"CreateEvent":5}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-10-03T13:17:37.330Z","updated_at":"2023-10-03T13:17:37.330Z","repository_link":"https://github.com/lifewatch/pypam/blob/main/.github/workflows/ci.yml","dependencies":[{"id":14081599233,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14081599234,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish.yml","sha":null,"kind":"manifest","created_at":"2023-10-03T13:17:37.452Z","updated_at":"2023-10-03T13:17:37.452Z","repository_link":"https://github.com/lifewatch/pypam/blob/main/.github/workflows/publish.yml","dependencies":[{"id":14081599242,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3.5.2","direct":true,"kind":"composite","optional":false},{"id":14081599243,"package_name":"JRubics/poetry-publish","ecosystem":"actions","requirements":"v1.17","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"poetry.lock","sha":null,"kind":"lockfile","created_at":"2023-10-03T13:17:37.570Z","updated_at":"2023-10-03T13:17:37.570Z","repository_link":"https://github.com/lifewatch/pypam/blob/main/poetry.lock","dependencies":[{"id":14081599533,"package_name":"alabaster","ecosystem":"pypi","requirements":"0.7.13","direct":false,"kind":null,"optional":false},{"id":14081599538,"package_name":"appdirs","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":null,"optional":false},{"id":14081599541,"package_name":"attrs","ecosystem":"pypi","requirements":"23.1.0","direct":false,"kind":null,"optional":false},{"id":14081599544,"package_name":"audioread","ecosystem":"pypi","requirements":"3.0.0","direct":false,"kind":null,"optional":false},{"id":14081599546,"package_name":"babel","ecosystem":"pypi","requirements":"2.12.1","direct":false,"kind":null,"optional":false},{"id":14081599549,"package_name":"black","ecosystem":"pypi","requirements":"23.3.0","direct":false,"kind":null,"optional":false},{"id":14081599552,"package_name":"build","ecosystem":"pypi","requirements":"0.10.0","direct":false,"kind":null,"optional":false},{"id":14081599554,"package_name":"cachecontrol","ecosystem":"pypi","requirements":"0.12.14","direct":false,"kind":null,"optional":false},{"id":14081599557,"package_name":"certifi","ecosystem":"pypi","requirements":"2023.7.22","direct":false,"kind":null,"optional":false},{"id":14081599559,"package_name":"cffi","ecosystem":"pypi","requirements":"1.15.1","direct":false,"kind":null,"optional":false},{"id":14081599562,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.3.1","direct":false,"kind":null,"optional":false},{"id":14081599564,"package_name":"cftime","ecosystem":"pypi","requirements":"1.6.2","direct":false,"kind":null,"optional":false},{"id":14081599566,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.1.0","direct":false,"kind":null,"optional":false},{"id":14081599570,"package_name":"cleo","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":null,"optional":false},{"id":14081599573,"package_name":"click","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":null,"optional":false},{"id":14081599575,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":null,"optional":false},{"id":14081599577,"package_name":"colored","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":null,"optional":false},{"id":14081599580,"package_name":"contourpy","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":null,"optional":false},{"id":14081599583,"package_name":"coverage","ecosystem":"pypi","requirements":"7.2.7","direct":false,"kind":null,"optional":false},{"id":14081599586,"package_name":"crashtest","ecosystem":"pypi","requirements":"0.4.1","direct":false,"kind":null,"optional":false},{"id":14081599587,"package_name":"cryptography","ecosystem":"pypi","requirements":"41.0.4","direct":false,"kind":null,"optional":false},{"id":14081599590,"package_name":"cycler","ecosystem":"pypi","requirements":"0.11.0","direct":false,"kind":null,"optional":false},{"id":14081599593,"package_name":"decorator","ecosystem":"pypi","requirements":"5.1.1","direct":false,"kind":null,"optional":false},{"id":14081599595,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.6","direct":false,"kind":null,"optional":false},{"id":14081599597,"package_name":"docutils","ecosystem":"pypi","requirements":"0.18.1","direct":false,"kind":null,"optional":false},{"id":14081599600,"package_name":"dulwich","ecosystem":"pypi","requirements":"0.21.5","direct":false,"kind":null,"optional":false},{"id":14081599603,"package_name":"et-xmlfile","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":null,"optional":false},{"id":14081599608,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":null,"optional":false},{"id":14081599612,"package_name":"filelock","ecosystem":"pypi","requirements":"3.12.2","direct":false,"kind":null,"optional":false},{"id":14081599616,"package_name":"fonttools","ecosystem":"pypi","requirements":"4.40.0","direct":false,"kind":null,"optional":false},{"id":14081599620,"package_name":"html5lib","ecosystem":"pypi","requirements":"1.1","direct":false,"kind":null,"optional":false},{"id":14081599624,"package_name":"identify","ecosystem":"pypi","requirements":"2.5.24","direct":false,"kind":null,"optional":false},{"id":14081599628,"package_name":"idna","ecosystem":"pypi","requirements":"3.4","direct":false,"kind":null,"optional":false},{"id":14081599631,"package_name":"imageio","ecosystem":"pypi","requirements":"2.31.1","direct":false,"kind":null,"optional":false},{"id":14081599635,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":null,"optional":false},{"id":14081599639,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"6.6.0","direct":false,"kind":null,"optional":false},{"id":14081599644,"package_name":"importlib-resources","ecosystem":"pypi","requirements":"5.12.0","direct":false,"kind":null,"optional":false},{"id":14081599649,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":null,"optional":false},{"id":14081599652,"package_name":"installer","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":null,"optional":false},{"id":14081599657,"package_name":"isort","ecosystem":"pypi","requirements":"5.12.0","direct":false,"kind":null,"optional":false},{"id":14081599660,"package_name":"jaraco-classes","ecosystem":"pypi","requirements":"3.2.3","direct":false,"kind":null,"optional":false},{"id":14081599663,"package_name":"jeepney","ecosystem":"pypi","requirements":"0.8.0","direct":false,"kind":null,"optional":false},{"id":14081599666,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":null,"optional":false},{"id":14081599669,"package_name":"joblib","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":null,"optional":false},{"id":14081599672,"package_name":"jsonschema","ecosystem":"pypi","requirements":"4.17.3","direct":false,"kind":null,"optional":false},{"id":14081599674,"package_name":"keyring","ecosystem":"pypi","requirements":"23.13.1","direct":false,"kind":null,"optional":false},{"id":14081599677,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"1.4.4","direct":false,"kind":null,"optional":false},{"id":14081599679,"package_name":"lazy-loader","ecosystem":"pypi","requirements":"0.2","direct":false,"kind":null,"optional":false},{"id":14081599681,"package_name":"librosa","ecosystem":"pypi","requirements":"0.10.0.post2","direct":false,"kind":null,"optional":false},{"id":14081599683,"package_name":"llvmlite","ecosystem":"pypi","requirements":"0.40.0","direct":false,"kind":null,"optional":false},{"id":14081599684,"package_name":"lockfile","ecosystem":"pypi","requirements":"0.12.2","direct":false,"kind":null,"optional":false},{"id":14081599687,"package_name":"markupsafe","ecosystem":"pypi","requirements":"2.1.3","direct":false,"kind":null,"optional":false},{"id":14081599689,"package_name":"matplotlib","ecosystem":"pypi","requirements":"3.7.1","direct":false,"kind":null,"optional":false},{"id":14081599691,"package_name":"more-itertools","ecosystem":"pypi","requirements":"9.1.0","direct":false,"kind":null,"optional":false},{"id":14081599693,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.0.5","direct":false,"kind":null,"optional":false},{"id":14081599695,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":null,"optional":false},{"id":14081599698,"package_name":"netcdf4","ecosystem":"pypi","requirements":"1.6.4","direct":false,"kind":null,"optional":false},{"id":14081599700,"package_name":"networkx","ecosystem":"pypi","requirements":"3.1","direct":false,"kind":null,"optional":false},{"id":14081599703,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.8.0","direct":false,"kind":null,"optional":false},{"id":14081599705,"package_name":"noisereduce","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":null,"optional":false},{"id":14081599708,"package_name":"numba","ecosystem":"pypi","requirements":"0.57.0","direct":false,"kind":null,"optional":false},{"id":14081599710,"package_name":"numpy","ecosystem":"pypi","requirements":"1.24.3","direct":false,"kind":null,"optional":false},{"id":14081599712,"package_name":"numpydoc","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":null,"optional":false},{"id":14081599715,"package_name":"openpyxl","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":null,"optional":false},{"id":14081599716,"package_name":"packaging","ecosystem":"pypi","requirements":"23.1","direct":false,"kind":null,"optional":false},{"id":14081599718,"package_name":"pandas","ecosystem":"pypi","requirements":"2.0.2","direct":false,"kind":null,"optional":false},{"id":14081599720,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.11.1","direct":false,"kind":null,"optional":false},{"id":14081599722,"package_name":"pexpect","ecosystem":"pypi","requirements":"4.8.0","direct":false,"kind":null,"optional":false},{"id":14081599724,"package_name":"pillow","ecosystem":"pypi","requirements":"9.5.0","direct":false,"kind":null,"optional":false},{"id":14081599726,"package_name":"pkginfo","ecosystem":"pypi","requirements":"1.9.6","direct":false,"kind":null,"optional":false},{"id":14081599729,"package_name":"pkgutil-resolve-name","ecosystem":"pypi","requirements":"1.3.10","direct":false,"kind":null,"optional":false},{"id":14081599732,"package_name":"platformdirs","ecosystem":"pypi","requirements":"3.5.3","direct":false,"kind":null,"optional":false},{"id":14081599734,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":null,"optional":false},{"id":14081599736,"package_name":"poetry","ecosystem":"pypi","requirements":"1.5.1","direct":false,"kind":null,"optional":false},{"id":14081599739,"package_name":"poetry-core","ecosystem":"pypi","requirements":"1.6.1","direct":false,"kind":null,"optional":false},{"id":14081599741,"package_name":"poetry-plugin-export","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":null,"optional":false},{"id":14081599743,"package_name":"pooch","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":null,"optional":false},{"id":14081599745,"package_name":"pre-commit","ecosystem":"pypi","requirements":"3.3.3","direct":false,"kind":null,"optional":false},{"id":14081599747,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":null,"optional":false},{"id":14081599749,"package_name":"pycparser","ecosystem":"pypi","requirements":"2.21","direct":false,"kind":null,"optional":false},{"id":14081599751,"package_name":"pygments","ecosystem":"pypi","requirements":"2.15.1","direct":false,"kind":null,"optional":false},{"id":14081599754,"package_name":"pyhydrophone","ecosystem":"pypi","requirements":"0.1.7","direct":false,"kind":null,"optional":false},{"id":14081600317,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.0.9","direct":false,"kind":null,"optional":false},{"id":14081600318,"package_name":"pyproject-hooks","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":null,"optional":false},{"id":14081600319,"package_name":"pyrsistent","ecosystem":"pypi","requirements":"0.19.3","direct":false,"kind":null,"optional":false},{"id":14081600320,"package_name":"pytest","ecosystem":"pypi","requirements":"7.3.2","direct":false,"kind":null,"optional":false},{"id":14081600321,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":null,"optional":false},{"id":14081600322,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.8.2","direct":false,"kind":null,"optional":false},{"id":14081600323,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":null,"optional":false},{"id":14081600324,"package_name":"pytz","ecosystem":"pypi","requirements":"2023.3","direct":false,"kind":null,"optional":false},{"id":14081600325,"package_name":"pywavelets","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":null,"optional":false},{"id":14081600326,"package_name":"pywin32-ctypes","ecosystem":"pypi","requirements":"0.2.0","direct":false,"kind":null,"optional":false},{"id":14081600327,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0","direct":false,"kind":null,"optional":false},{"id":14081600328,"package_name":"rapidfuzz","ecosystem":"pypi","requirements":"2.15.1","direct":false,"kind":null,"optional":false},{"id":14081600329,"package_name":"requests","ecosystem":"pypi","requirements":"2.31.0","direct":false,"kind":null,"optional":false},{"id":14081600330,"package_name":"requests-toolbelt","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":null,"optional":false},{"id":14081600331,"package_name":"resampy","ecosystem":"pypi","requirements":"0.4.2","direct":false,"kind":null,"optional":false},{"id":14081600332,"package_name":"scikit-image","ecosystem":"pypi","requirements":"0.21.0","direct":false,"kind":null,"optional":false},{"id":14081600333,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":null,"optional":false},{"id":14081600334,"package_name":"scikit-maad","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":null,"optional":false},{"id":14081600507,"package_name":"scipy","ecosystem":"pypi","requirements":"1.10.0","direct":false,"kind":null,"optional":false},{"id":14081600508,"package_name":"seaborn","ecosystem":"pypi","requirements":"0.12.2","direct":false,"kind":null,"optional":false},{"id":14081600509,"package_name":"secretstorage","ecosystem":"pypi","requirements":"3.3.3","direct":false,"kind":null,"optional":false},{"id":14081600510,"package_name":"setuptools","ecosystem":"pypi","requirements":"68.1.0","direct":false,"kind":null,"optional":false},{"id":14081600511,"package_name":"shellingham","ecosystem":"pypi","requirements":"1.5.0.post1","direct":false,"kind":null,"optional":false},{"id":14081600512,"package_name":"six","ecosystem":"pypi","requirements":"1.16.0","direct":false,"kind":null,"optional":false},{"id":14081600513,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":null,"optional":false},{"id":14081600514,"package_name":"soundfile","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":null,"optional":false},{"id":14081600515,"package_name":"soxr","ecosystem":"pypi","requirements":"0.3.5","direct":false,"kind":null,"optional":false},{"id":14081600516,"package_name":"sphinx","ecosystem":"pypi","requirements":"6.1.2","direct":false,"kind":null,"optional":false},{"id":14081600517,"package_name":"sphinx-gallery","ecosystem":"pypi","requirements":"0.13.0","direct":false,"kind":null,"optional":false},{"id":14081600518,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":null,"optional":false},{"id":14081600519,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":null,"optional":false},{"id":14081600520,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"1.0.2","direct":false,"kind":null,"optional":false},{"id":14081600521,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":null,"optional":false},{"id":14081600522,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":null,"optional":false},{"id":14081600523,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":null,"optional":false},{"id":14081600524,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"1.0.3","direct":false,"kind":null,"optional":false},{"id":14081600525,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"1.1.5","direct":false,"kind":null,"optional":false},{"id":14081600526,"package_name":"syrupy","ecosystem":"pypi","requirements":"4.0.4","direct":false,"kind":null,"optional":false},{"id":14081600527,"package_name":"threadpoolctl","ecosystem":"pypi","requirements":"3.1.0","direct":false,"kind":null,"optional":false},{"id":14081600528,"package_name":"tifffile","ecosystem":"pypi","requirements":"2023.7.10","direct":false,"kind":null,"optional":false},{"id":14081600529,"package_name":"tomli","ecosystem":"pypi","requirements":"2.0.1","direct":false,"kind":null,"optional":false},{"id":14081600530,"package_name":"tomlkit","ecosystem":"pypi","requirements":"0.11.8","direct":false,"kind":null,"optional":false},{"id":14081600531,"package_name":"tqdm","ecosystem":"pypi","requirements":"4.65.0","direct":false,"kind":null,"optional":false},{"id":14081600532,"package_name":"trove-classifiers","ecosystem":"pypi","requirements":"2023.5.24","direct":false,"kind":null,"optional":false},{"id":14081600533,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.6.3","direct":false,"kind":null,"optional":false},{"id":14081600534,"package_name":"tzdata","ecosystem":"pypi","requirements":"2023.3","direct":false,"kind":null,"optional":false},{"id":14081600535,"package_name":"urllib3","ecosystem":"pypi","requirements":"1.26.17","direct":false,"kind":null,"optional":false},{"id":14081600536,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.23.0","direct":false,"kind":null,"optional":false},{"id":14081600537,"package_name":"webencodings","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":null,"optional":false},{"id":14081600538,"package_name":"xarray","ecosystem":"pypi","requirements":"2023.1.0","direct":false,"kind":null,"optional":false},{"id":14081600539,"package_name":"xattr","ecosystem":"pypi","requirements":"0.10.1","direct":false,"kind":null,"optional":false},{"id":14081600540,"package_name":"zipp","ecosystem":"pypi","requirements":"3.15.0","direct":false,"kind":null,"optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-10-03T13:17:38.356Z","updated_at":"2023-10-03T13:17:38.356Z","repository_link":"https://github.com/lifewatch/pypam/blob/main/pyproject.toml","dependencies":[{"id":14081600541,"package_name":"python","ecosystem":"pypi","requirements":"\u003e=3.8.1, \u003c3.12.0","direct":true,"kind":"runtime","optional":false},{"id":14081600542,"package_name":"matplotlib","ecosystem":"pypi","requirements":"^3.7.1","direct":true,"kind":"runtime","optional":false},{"id":14081600543,"package_name":"numpy","ecosystem":"pypi","requirements":"^1.24.3","direct":true,"kind":"runtime","optional":false},{"id":14081600544,"package_name":"pandas","ecosystem":"pypi","requirements":"^2.0.2","direct":true,"kind":"runtime","optional":false},{"id":14081600545,"package_name":"seaborn","ecosystem":"pypi","requirements":"^0.12.2","direct":true,"kind":"runtime","optional":false},{"id":14081600546,"package_name":"soundfile","ecosystem":"pypi","requirements":"^0.12.1","direct":true,"kind":"runtime","optional":false},{"id":14081600547,"package_name":"tqdm","ecosystem":"pypi","requirements":"^4.65.0","direct":true,"kind":"runtime","optional":false},{"id":14081600548,"package_name":"numba","ecosystem":"pypi","requirements":"^0.57.0","direct":true,"kind":"runtime","optional":false},{"id":14081600549,"package_name":"noisereduce","ecosystem":"pypi","requirements":"^2.0.1","direct":true,"kind":"runtime","optional":false},{"id":14081600550,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"^1.2.2","direct":true,"kind":"runtime","optional":false},{"id":14081600551,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"^2.8.2","direct":true,"kind":"runtime","optional":false},{"id":14081600552,"package_name":"poetry","ecosystem":"pypi","requirements":"^1.5.0","direct":true,"kind":"runtime","optional":false},{"id":14081600553,"package_name":"xarray","ecosystem":"pypi","requirements":"2023.01.0","direct":true,"kind":"runtime","optional":false},{"id":14081600554,"package_name":"pyhydrophone","ecosystem":"pypi","requirements":"^0.1.7","direct":true,"kind":"runtime","optional":false},{"id":14081600555,"package_name":"pre-commit","ecosystem":"pypi","requirements":"^3.3.1","direct":true,"kind":"runtime","optional":false},{"id":14081600556,"package_name":"isort","ecosystem":"pypi","requirements":"^5.12.0","direct":true,"kind":"runtime","optional":false},{"id":14081600557,"package_name":"black","ecosystem":"pypi","requirements":"^23.3.0","direct":true,"kind":"runtime","optional":false},{"id":14081600558,"package_name":"pyyaml","ecosystem":"pypi","requirements":"^6.0","direct":true,"kind":"runtime","optional":false},{"id":14081600559,"package_name":"pytest","ecosystem":"pypi","requirements":"^7.3.1","direct":true,"kind":"runtime","optional":false},{"id":14081600560,"package_name":"coverage","ecosystem":"pypi","requirements":"^7.2.5","direct":true,"kind":"runtime","optional":false},{"id":14081600561,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"^1.0.0","direct":true,"kind":"runtime","optional":false},{"id":14081600562,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"^4.1.0","direct":true,"kind":"runtime","optional":false},{"id":14081600563,"package_name":"netcdf4","ecosystem":"pypi","requirements":"^1.6.4","direct":true,"kind":"runtime","optional":false},{"id":14081600564,"package_name":"syrupy","ecosystem":"pypi","requirements":"^4.0.4","direct":true,"kind":"runtime","optional":false},{"id":14081600565,"package_name":"openpyxl","ecosystem":"pypi","requirements":"^3.1.2","direct":true,"kind":"runtime","optional":false},{"id":14081600566,"package_name":"scikit-maad","ecosystem":"pypi","requirements":"^1.4.0","direct":true,"kind":"runtime","optional":false},{"id":14081600567,"package_name":"setuptools","ecosystem":"pypi","requirements":"^68.1.0","direct":true,"kind":"runtime","optional":false},{"id":14081600568,"package_name":"certifi","ecosystem":"pypi","requirements":"^2023.7.22","direct":true,"kind":"runtime","optional":false},{"id":14081600569,"package_name":"cryptography","ecosystem":"pypi","requirements":"^41.0.2","direct":true,"kind":"runtime","optional":false}]}],"score":12.221158282948215,"created_at":"2026-03-21T19:39:23.235Z","updated_at":"2026-04-28T09:00:46.145Z","avatar_url":"https://github.com/lifewatch.png","language":"Python","category":"Biosphere","sub_category":"Bioacoustics and Acoustic Data Analysis","monthly_downloads":279,"total_dependent_repos":1,"total_dependent_packages":1,"readme":"\u003ch1 align=\"center\"\u003e\n\u003cimg src=\"./docs/source/_static/PyPAM_colour_white_bg.png\" width=\"300\"\u003e\n\u003c/h1\u003e\u003cbr\u003e\n\n[![main](https://github.com/lifewatch/pypam/actions/workflows/ci.yml/badge.svg)](https://github.com/lifewatch/pypam/actions/workflows/ci.yml)\n[![PyPI Downloads](https://img.shields.io/pypi/dd/lifewatch-pypam)](\nhttps://pypi.org/project/lifewatch-pypam/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6044593.svg)](https://doi.org/10.5281/zenodo.6044593)\n\n\n\n`pypam` is a python package to analyze underwater sound. \nIt is made to make easier the processing of underwater data stored in audio files in chunks. \nThe main classes are AcousticFile, AcousticSurvey and DataSet. The first one is a representation of an audio file \ntogether with all the metadata needed to process the data (such as hydrophone used). \nThe second one is the representation of a folder where all the files are stored for one deployment. \nHere we consider a deployment as a measurement interval corresponding to the time when a hydrophone was in the water, \nwithout changing any recording parameters.\nThe Dataset is a combination of different AcousticSurveys in one dataset. This is to be used if the user has made \nseveral deployments and wants to process them with the same parameters.\n\nThen `pypam` allows to go through all the audio files from the deployments only with one line of code and store \nthe output in netCDF files, including metadata. The package can be used to analyze a single file, \na folder with files or a group of different deployments. \n`pypam` deals with the calibration directly, so the output obtained is already in uPa or dB! \n\n\nAll the documentation can be found on [readthedocs](https://lifewatch-pypam.readthedocs.io)\n\n\u003e **Warning**\n\u003e This package is under active development, use with caution.\n\n\n## Installation\n### Using pip distribution \n```bash\npip install lifewatch-pypam\n```\n\n### Using git clone\n\n1. Clone the package\n    ```bash\n    git clone https://github.com/lifewatch/pypam.git\n    ```\n2. Use poetry to install the project dependencies\n    ```bash\n    poetry install\n    ```\n3. Build the project\n    ```bash\n    poetry build\n    ```\n\n## News from version 0.3.0\nIn version 0.2.0 we removed the detectors, because there are better maintained packages for these purposes. \nIn version 0.2.1 we added the frequency-dependent calibration! \nIn version 0.3.0 we changed quite some plot function to make them more flexible with other data products. \nWe also changed the mean functions to median, so the output in db is the same than the output in uPa\n\n## Quickstart\nThe package is imported as `pypam`. The audio file names must comply with the needs of \n[pyhydrophone](https://github.com/lifewatch/pyhydrophone) to be able to read the datetime information. \n\nThe user can choose a window chunk size (parameter binsize, in seconds), so all the features / methods \nare applied to that window. If set to None, the operations are performed along an entire file.\n\nThe available methods and features are: \n- Acoustic Indices: \n  - ACI \n  - BI \n  - SH \n  - TH \n  - NDSI\n  - AEI \n  - ADI \n  - Zero crossing (average)\n  - BN peaks \n- time-domain features: \n  - rms \n  - dynamic_range\n  - sel\n  - peak \n  - rms_envelope\n  - spectrum_slope\n  - correlation coefficient\n- frequency-domain \n  - spectrogram (also octave bands spectrogram)\n  - spectrum (density or power)\n  - 1/n-octave bands\n  - hybrid millidecade bands\n  - long-term spectrogram\n- time and frequency \n  - SPD\n\n\nFuthermore, there are several plotting functions\n- SPD\n- spectrum with standard deviation \n- boxplots of time series aggregated data \n- daily patterns \n- LTSA\n\n\nand some signal-based operations:\n- Signal operations\n   - Noise reduction \n   - Downsample \n   - Band filter \n   - Envelope\n   - DC noise removal\n\n## PyPAM wrappers \nPBP (_PyPAM Based Processing_) is a wrapper for PyPAM to make its use\nto compute hybrid millidecade bands more effective.\nPBP allows for local or cloud computing.\nFor more information, you can find it in this [repository](https://github.com/mbari-org/pbp). \n\n\n## Examples and documentation\nSee the documentation in [readthedocs](https://lifewatch-pypam.readthedocs.io) for a complete reference manual and \nexample gallery. \n\nIn this [collection of notebooks](https://github.com/ioos/soundcoop), some extra examples can be found of how \nto use pypam (under development).\n\n## Under development \nPlanned:\n- Add function to generate files per included folder (too big deployments)\n- Add options for the user to choose what to do when the blocksize is not multiple of the frames, \nand to deal with time keeping\n- Add a logger that logs the code that was run and the warnings together with the output\n- Add deep learning feature extraction (vggish and compatibility with koogu and AVES)\n- Add parallel processing options \n- Add support for frequency calibration\n- Support for reading detections \n\n\n## Cite\n\u003e Parcerisas, C. (2023). PyPAM: a package to process long-term underwater acoustics data in chunks (0.3.0). Zenodo. https://doi.org/10.5281/zenodo.10037826\n\n\n## Acknowledgements \nWe want to thank [Stan Panier](https://www.vliz.be/en/imis?module=person\u0026persid=37468) for the beautiful logo.\nThis project was possible due to the funding on [LifeWatch Belgium](https://www.lifewatch.be/)\n\u003ch1 align=\"center\"\u003e\n\u003cimg src=\"./docs/source/_static/lw_logo.png\" width=\"150\"\u003e\n\u003c/h1\u003e\u003cbr\u003e","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.6044593","https://doi.org/10.5281/zenodo.10037826"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/349151","html_url":"https://ost.ecosyste.ms/projects/349151"}