{"id":80237,"name":"tcpyPI","description":"A set of scripts and notebooks that compute and validate tropical cyclone (TC) potential intensity (PI) calculations in Python.","url":"https://github.com/dgilford/tcpypi","last_synced_at":"2026-04-04T21:30:25.451Z","repository":{"id":39751913,"uuid":"247725622","full_name":"dgilford/tcpyPI","owner":"dgilford","description":"tcpyPI, aka \"pyPI\": Tropical Cyclone Potential Intensity Calculations in Python","archived":false,"fork":false,"pushed_at":"2026-01-14T16:35:53.000Z","size":59335,"stargazers_count":88,"open_issues_count":6,"forks_count":35,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-03-21T04:40:52.998Z","etag":null,"topics":["climate","climate-data","hurricane-calculations","hurricanes","potential-intensity","tropical-cyclone","tropical-cyclone-variability","weather-conditions"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dgilford.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-16T14:37:05.000Z","updated_at":"2026-03-17T23:35:50.000Z","dependencies_parsed_at":"2025-04-17T10:40:48.794Z","dependency_job_id":null,"html_url":"https://github.com/dgilford/tcpyPI","commit_stats":{"total_commits":145,"total_committers":5,"mean_commits":29.0,"dds":0.2551724137931034,"last_synced_commit":"ba97934cabfdb4dd5333e9450f0c1407340ec5dc"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/dgilford/tcpyPI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgilford","download_url":"https://codeload.github.com/dgilford/tcpyPI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/sbom","scorecard":{"id":339442,"data":{"date":"2025-08-11","repo":{"name":"github.com/dgilford/tcpyPI","commit":"3c1d4eff8bd2f6d68e5bef45cf445a0641de7823"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":6,"reason":"Found 5/8 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/pytest.yaml:1","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"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":"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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yaml:29"],"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"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":"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/pytest.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/dgilford/tcpyPI/pytest.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pytest.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/dgilford/tcpyPI/pytest.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/dgilford/tcpyPI/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/dgilford/tcpyPI/release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/dgilford/tcpyPI/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/dgilford/tcpyPI/release.yaml/master?enable=pin","Info:   0 out of   3 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"}}]},"last_synced_at":"2025-08-18T05:26:47.691Z","repository_id":39751913,"created_at":"2025-08-18T05:26:47.691Z","updated_at":"2025-08-18T05:26:47.691Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31205534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-30T15:24:02.938Z","status":"ssl_error","status_checked_at":"2026-03-30T15:23:44.804Z","response_time":138,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"dgilford","name":"Daniel Gilford","uuid":"8387331","kind":"user","description":"Climate Scientist at Climate Central studying climate attribution, sea-level rise, and tropical cyclones. I'm also interested in open science and communication!","email":"","website":"http://www.danielgilford.com","location":"Orlando, FL","twitter":"danielgilford","company":"Climate Central","icon_url":"https://avatars.githubusercontent.com/u/8387331?u=2fff5a51ab1c89b2ee49b61e8b2ff5b8bd558a60\u0026v=4","repositories_count":2,"last_synced_at":"2023-03-08T23:47:04.801Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dgilford","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T13:25:59.827Z","updated_at":"2023-03-08T23:47:04.819Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgilford","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgilford/repositories"},"packages":[{"id":2940625,"name":"tcpypi","ecosystem":"pypi","description":"tcpyPI: Tropical cyclone potential intensity calculations in Python","homepage":"https://github.com/dgilford/tcpyPI","licenses":"MIT License\n        \n        Copyright (c) 2020 Daniel Gilford\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.","normalized_licenses":["Other"],"repository_url":"https://github.com/dgilford/tcpyPI","keywords_array":[],"namespace":null,"versions_count":7,"first_release_published_at":"2020-08-14T16:24:34.000Z","latest_release_published_at":"2022-10-31T21:01:59.000Z","latest_release_number":"1.3.5","last_synced_at":"2026-03-20T14:04:22.479Z","created_at":"2022-04-10T12:47:16.055Z","updated_at":"2026-03-20T14:04:22.479Z","registry_url":"https://pypi.org/project/tcpypi/","install_command":"pip install tcpypi --index-url https://pypi.org/simple","documentation_url":"https://tcpypi.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: MIT License","Operating System :: OS Independent","Programming Language :: Python :: 3"],"normalized_name":"tcpypi","project_status":null},"repo_metadata":{"id":39751913,"uuid":"247725622","full_name":"dgilford/tcpyPI","owner":"dgilford","description":"tcpyPI, aka \"pyPI\": Tropical Cyclone Potential Intensity Calculations in Python","archived":false,"fork":false,"pushed_at":"2023-02-06T10:02:43.000Z","size":89501,"stargazers_count":77,"open_issues_count":12,"forks_count":31,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-29T22:31:36.811Z","etag":null,"topics":["climate","climate-data","hurricane-calculations","hurricanes","potential-intensity","tropical-cyclone","tropical-cyclone-variability","weather-conditions"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dgilford.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-03-16T14:37:05.000Z","updated_at":"2024-10-29T01:31:49.000Z","dependencies_parsed_at":"2023-09-21T19:59:13.941Z","dependency_job_id":null,"html_url":"https://github.com/dgilford/tcpyPI","commit_stats":{"total_commits":145,"total_committers":5,"mean_commits":29.0,"dds":0.2551724137931034,"last_synced_commit":"ba97934cabfdb4dd5333e9450f0c1407340ec5dc"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgilford","download_url":"https://codeload.github.com/dgilford/tcpyPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222155735,"owners_count":16940398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"dgilford","name":"Daniel Gilford","uuid":"8387331","kind":"user","description":"Climate Scientist at Climate Central studying climate attribution, sea-level rise, and tropical cyclones. I'm also interested in open science and communication!","email":"","website":"http://www.danielgilford.com","location":"Orlando, FL","twitter":"danielgilford","company":"Climate Central","icon_url":"https://avatars.githubusercontent.com/u/8387331?u=2fff5a51ab1c89b2ee49b61e8b2ff5b8bd558a60\u0026v=4","repositories_count":2,"last_synced_at":"2023-03-08T23:47:04.801Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dgilford","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T13:25:59.827Z","updated_at":"2023-03-08T23:47:04.819Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgilford","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgilford/repositories"},"tags":[{"name":"v1.3","sha":"3a1f6bb271c3f19fc19ba741e14aa41e7d12a490","kind":"commit","published_at":"2020-08-14T18:25:56.000Z","download_url":"https://codeload.github.com/dgilford/tcpyPI/tar.gz/v1.3","html_url":"https://github.com/dgilford/tcpyPI/releases/tag/v1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.3/manifests"},{"name":"v1.2","sha":"5f0d3f93fa98e48bda757a10613af4c92e219f25","kind":"commit","published_at":"2020-06-18T20:19:32.000Z","download_url":"https://codeload.github.com/dgilford/tcpyPI/tar.gz/v1.2","html_url":"https://github.com/dgilford/tcpyPI/releases/tag/v1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.2/manifests"},{"name":"v1.1","sha":"4d2d2e3924e7f7c1505924e1fbdf0ee4c9cc86e7","kind":"commit","published_at":"2020-04-30T16:18:20.000Z","download_url":"https://codeload.github.com/dgilford/tcpyPI/tar.gz/v1.1","html_url":"https://github.com/dgilford/tcpyPI/releases/tag/v1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.1/manifests"},{"name":"v1.0","sha":"2539221eb08ce4b44687884724c56b348c91fb47","kind":"commit","published_at":"2020-04-17T19:05:54.000Z","download_url":"https://codeload.github.com/dgilford/tcpyPI/tar.gz/v1.0","html_url":"https://github.com/dgilford/tcpyPI/releases/tag/v1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/tags/v1.0/manifests"}]},"repo_metadata_updated_at":"2024-10-30T02:59:03.025Z","dependent_packages_count":0,"downloads":676,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":30.757348536166113,"dependent_repos_count":22.087784936889527,"dependent_packages_count":7.31012528119255,"stargazers_count":8.752324830165039,"forks_count":7.394819788954365,"docker_downloads_count":null,"average":15.26048067467352},"purl":"pkg:pypi/tcpypi","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/tcpypi","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/tcpypi","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/tcpypi/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T21:03:06.053Z","issues_count":14,"pull_requests_count":56,"avg_time_to_close_issue":5448999.428571428,"avg_time_to_close_pull_request":903048.725490196,"issues_closed_count":7,"pull_requests_closed_count":51,"pull_request_authors_count":4,"issue_authors_count":11,"avg_comments_per_issue":1.7857142857142858,"avg_comments_per_pull_request":0.35714285714285715,"merged_pull_requests_count":36,"bot_issues_count":0,"bot_pull_requests_count":51,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/issues","maintainers":[{"login":"dgilford","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dgilford"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/tcpypi/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/tcpypi/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/tcpypi/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/tcpypi/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/tcpypi/codemeta","maintainers":[{"uuid":"dgilford","login":"dgilford","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/dgilford/","role":null,"created_at":"2023-02-25T14:45:04.511Z","updated_at":"2023-02-25T14:45:04.511Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/dgilford/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":827811,"maintainers_count":353255,"namespaces_count":0,"keywords_count":0,"github":"pypi","metadata":{"funded_packages_count":52845},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-03-27T08:55:06.126Z","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":669249,"full_name":"dgilford/tcpyPI","default_branch":"master","total_commits":191,"total_committers":6,"total_bot_commits":33,"total_bot_committers":2,"mean_commits":31.833333333333332,"dds":0.38743455497382195,"past_year_total_commits":10,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.0,"past_year_dds":0.30000000000000004,"last_synced_at":"2026-03-26T17:04:49.018Z","last_synced_commit":"872dcf42667818fe889bd3fb5a7952076be666e5","created_at":"2023-03-09T10:24:22.977Z","updated_at":"2026-03-26T17:04:22.409Z","committers":[{"name":"Daniel Gilford","email":"dgilford","login":"dgilford","count":117},{"name":"Ben Mares","email":"services-git-throwaway1@tensorial.com","login":"maresb","count":37},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":29},{"name":"dependabot-preview[bot]","email":"27856297+dependabot-preview[bot]","login":"dependabot-preview[bot]","count":4},{"name":"Daniel Gilford","email":"dgilford@dgilford-mac.local","login":null,"count":2},{"name":"Daniel Gilford","email":"dgilford@dgilford-mac.climate.local","login":null,"count":2}],"past_year_committers":[{"name":"dgilford","email":"dgilford@climatecentral.org","login":"dgilford","count":7},{"name":"Ben Mares","email":"services-git-throwaway2@tensorial.com","login":"maresb","count":3}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-30T00:00:08.107Z","repositories_count":6205677,"commits_count":927837007,"contributors_count":35818966,"owners_count":1143329,"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":"dgilford/tcpyPI","html_url":"https://github.com/dgilford/tcpyPI","last_synced_at":"2026-03-20T14:05:01.675Z","status":"active","issues_count":18,"pull_requests_count":70,"avg_time_to_close_issue":32607076.53846154,"avg_time_to_close_pull_request":7200780.348484849,"issues_closed_count":13,"pull_requests_closed_count":66,"pull_request_authors_count":5,"issue_authors_count":14,"avg_comments_per_issue":2.6666666666666665,"avg_comments_per_pull_request":0.44285714285714284,"merged_pull_requests_count":46,"bot_issues_count":0,"bot_pull_requests_count":51,"past_year_issues_count":2,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":2246770.0,"past_year_avg_time_to_close_pull_request":7664.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":8.5,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-15T01:09:47.170Z","updated_at":"2026-03-20T14:05:01.675Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgilford%2FtcpyPI/issues","issue_labels_count":{"bug":3,"documentation":3,"enhancement":2,"not critical":2,"duplicate":1,"help wanted":1},"pull_request_labels_count":{"dependencies":50},"issue_author_associations_count":{"NONE":16,"COLLABORATOR":2},"pull_request_author_associations_count":{"CONTRIBUTOR":51,"COLLABORATOR":12,"OWNER":5,"NONE":2},"issue_authors":{"aramirezreyes":3,"maresb":2,"msnaidu7":2,"jbednar":1,"codesssss":1,"CongGao-CG":1,"laurrrel":1,"Wamashudu":1,"HenryRWinterbottom":1,"pauladigun":1,"alansammarone":1,"rabernat":1,"burlen":1,"ktyle":1},"pull_request_authors":{"dependabot[bot]":47,"maresb":13,"dgilford":5,"dependabot-preview[bot]":4,"aramirezreyes":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-30T00:00:07.548Z","repositories_count":14004480,"issues_count":34537702,"pull_requests_count":112931302,"authors_count":11212420,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":2},"past_year_pull_request_author_associations_count":{"COLLABORATOR":1,"OWNER":1},"past_year_issue_authors":{"alansammarone":1,"HenryRWinterbottom":1},"past_year_pull_request_authors":{"dgilford":1,"maresb":1},"maintainers":[{"login":"maresb","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/maresb"},{"login":"dgilford","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dgilford"}],"active_maintainers":[{"login":"dgilford","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dgilford"},{"login":"maresb","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/maresb"}]},"events":{"total":{"ReleaseEvent":1,"DeleteEvent":3,"MemberEvent":1,"PullRequestEvent":22,"ForkEvent":4,"IssuesEvent":9,"WatchEvent":14,"IssueCommentEvent":25,"PushEvent":13,"CreateEvent":3},"last_year":{"DeleteEvent":1,"PullRequestEvent":7,"ForkEvent":2,"IssuesEvent":2,"WatchEvent":1,"IssueCommentEvent":9,"PushEvent":6,"CreateEvent":2}},"keywords":["climate","climate-data","hurricane-calculations","hurricanes","potential-intensity","tropical-cyclone","tropical-cyclone-variability","weather-conditions"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/pytest.yaml","sha":null,"kind":"manifest","created_at":"2025-04-17T10:40:47.550Z","updated_at":"2025-04-17T10:40:47.550Z","repository_link":"https://github.com/dgilford/tcpyPI/blob/master/.github/workflows/pytest.yaml","dependencies":[{"id":22723195502,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":22723195503,"package_name":"prefix-dev/setup-pixi","ecosystem":"actions","requirements":"v0.8.3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release.yaml","sha":null,"kind":"manifest","created_at":"2025-04-17T10:40:47.603Z","updated_at":"2025-04-17T10:40:47.603Z","repository_link":"https://github.com/dgilford/tcpyPI/blob/master/.github/workflows/release.yaml","dependencies":[{"id":22723195510,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":22723195511,"package_name":"hynek/build-and-inspect-python-package","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":22723195623,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":22723195634,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-04-17T10:40:48.258Z","updated_at":"2025-04-17T10:40:48.258Z","repository_link":"https://github.com/dgilford/tcpyPI/blob/master/pyproject.toml","dependencies":[{"id":22723195637,"package_name":"numba","ecosystem":"pypi","requirements":"\u003e=0.51.2","direct":true,"kind":"runtime","optional":false},{"id":22723195638,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.19.5","direct":true,"kind":"runtime","optional":false}]}],"score":12.854201539438455,"created_at":"2023-09-19T00:09:34.714Z","updated_at":"2026-04-04T21:30:25.582Z","avatar_url":"https://github.com/dgilford.png","language":"Jupyter Notebook","category":"Climate Change","sub_category":"Natural Hazard and Storms","monthly_downloads":676,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# tcpyPI: Potential Intensity Calculations in Python\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./figures/readme_image.png\" alt=\"\" width=\"720\" height=\"480\"\u003e\n\u003c/p\u003e\n\ntcpyPI, 'pyPI' for short, is a set of scripts and notebooks that compute and validate tropical cyclone (TC) potential intensity (PI) calculations in Python.\nIt is a fully documented and improved port of the [Bister and Emanuel 2002](https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2001JD000776) algorithm (hereafter BE02) which was originally written in FORTRAN---and then MATLAB---by Prof. Kerry Emanuel (MIT).\nKerry's original MATLAB code (**pcmin.m**) is found at:\n\n* [http://texmex.mit.edu/pub/emanuel/TCMAX](http://texmex.mit.edu/pub/emanuel/TCMAX)\n\nThe goals in developing and maintaining pyPI are to:\n* supply a freely available validated Python potential intensity calculator,\n* carefully document the BE02 algorithm and its Python implementation, and to\n* demonstrate and encourage the use of potential intensity theory in tropical cyclone climatology analysis.\n\nIf you have any questions, comments, or feedback, please [contact the developer](mailto:dgilford@climatecentral.org) or open an [Issue](https://github.com/dgilford/pyPI/issues) in the repository. A paper detailing pyPI is published [at Geoscientific Model Development](https://gmd.copernicus.org/articles/14/2351/2021/gmd-14-2351-2021.pdf).\n\n## Citation\npyPI was developed by [Daniel Gilford](https://github.com/dgilford) and has been archived on Zenodo:\n\n[![DOI](https://zenodo.org/badge/247725622.svg)](https://zenodo.org/badge/latestdoi/247725622)\n\nIf you use pyPI in your work, please include the citations:\n\n\u003e Gilford, D. M.: pyPI (v1.3): Tropical Cyclone Potential Intensity Calculations in Python, Geosci. Model Dev., 14, 2351–2369, https://doi.org/10.5194/gmd-14-2351-2021, 2021.\n\nand\n\n\u003e Gilford, D. M. 2020: pyPI: Potential Intensity Calculations in Python, pyPI v1.3. Zenodo. http://doi.org/10.5281/zenodo.3985975\n\n\n## Full pyPI Description\n\nPlease read [pyPI_Users_Guide_v1.3.pdf](pyPI_Users_Guide_v1.3.pdf) for a full overview and details on pyPI.\nThe description includes the pyPI background, a PI computation derivation, validation against the commonly-used MATLAB algorithm (pcmin), and a set of sample analyses.\n\n## Getting Started\n\npyPI requires **Python version 3.7+** to run.\nTo get pyPI up and running on your system, clone the repository and ensure that you have the required dependencies.\n\n### Installation\n\npyPI is packaged using the python package manager [pip](https://pip.pypa.io/en/stable/).\n\n[![PyPI version](https://badge.fury.io/py/tcpypi.svg)](https://badge.fury.io/py/tcpypi)\n\nTo install tcpypi from the command line:\n\n```bash\npip install tcpypi\n```\n\n### tcpyPI Dependencies\n\n* NumPy\n* [Numba](http://numba.pydata.org/)\n\nNot required by tcpyPI---but highly recommended!---is the versatility in calculating PI over large datasets provided by [xarray](http://xarray.pydata.org/en/stable/).\nDependency versions were originally handled by [Dependabot](https://dependabot.com/), but the code was not resilient to these changes so they are currently defunct (as of 10 August 2022). Please [notify me](mailto:dgilford@climatecentral.org) immediately if installation problems persist.\n\n### Python Implementation of \"pc_min\" (BE02 PI Calculator)\n\n[pi.py](src/tcpyPI/pi.py) is the Python function which directly computes PI given atmospheric and ocean state variables (akin to the BE02 algorithm MATLAB implementation [pc_min.m](matlab_scripts/pc_min.m)). Given input vector columns of environmental atmospheric temperatures (T) and mixing ratios (R) on a pressure grid (P), sea surface temperatures (SST), and mean sea-level pressures (MSL), the algorithm outputs potential intensity, the outflow level, the outflow temperature, and the minimum central pressure, and a flag that shows the status of the completed PI calculation. pyPI is an improvement on pcmin in that it handles missing values depending on user input flags.\n\nUsers who want to apply the PI calculation to a set of local environmental conditions need only to download [pi.py](./src/tcpyPI/pi.py), organize their data appropriately, and call the function to return outputs, e.g.:\n```\n(VMAX,PMIN,IFL,TO,LNB)=pi(SST,MSL,P,T,R)\n```\n\n### Sensitivity \u0026 Configuration Options\n\n`tcpyPI.pi()` exposes a few key “sensitivity knobs” that can materially change results. The most commonly explored options are:\n\n- `CKCD` (default `0.9`): exchange coefficient ratio (`Ck/Cd`).\n- `diss_flag` (default `1`): include (`1`) or exclude (`0`) dissipative heating.\n- `ascent_flag` (default `0`): reversible (`0`) vs pseudo-adiabatic (`1`) ascent assumption.\n- `V_reduc` (default `0.8`): reduction from gradient wind to 10 m wind speed.\n- `ptop` (default `50` hPa): top pressure bound; setting too high can bias outflow level/temperature.\n- `miss_handle` (default `1`): missing-profile handling; `1` returns missing on any NaNs.\n- `outflow_source` (default `\"cape_star\"`): how outflow level/temperature are defined:\n  - `\"cape_star\"`: outflow is the LNB (`OTL`) and temperature (`T0`) from the saturated CAPE* calculation (default; BE02/pcmin behavior).\n  - `\"cape_env\"`: outflow is the LNB and temperature from the environmental CAPE (CAPEenv) on the final convergence iteration (see Gilford et al. 2021 discussion).\n\nExample:\n\n```python\nfrom tcpyPI import pi\n\nvmax, pmin, ifl, t0, otl = pi(SSTC, MSL, P, TC, R, CKCD=0.9, diss_flag=1, outflow_source=\"cape_env\")\n```\n\n### Log Decomposition (Wing et al. 2015)\n\ntcpyPI provides a simple API for log-decomposing PI into efficiency, disequilibrium, and `Ck/Cd` terms (where `lnpi = ln(V^2)`):\n\n```python\nfrom tcpyPI import log_decompose_pi, pi_log_decomposition\n\nout = pi_log_decomposition(SSTC, MSL, P, TC, R, CKCD=0.9)  # SSTC/TC in Celsius\nlnpi, lneff, lndiseq, lnCKCD = log_decompose_pi(out[\"vmax\"], SSTC, out[\"t0\"], CKCD=0.9, sst_units=\"C\")\n```\n\n### Running a pyPI Sample\n\nIncluded in the pyPI release is a sample script [run_sample.py](run_sample.py) which runs global sample data from MERRA2 (in 2004) through pi.py, vectorizes the output, and performs several simple analyses. To run, simply:\n```\npython run_sample.py\n```\nand examine the outputs locally produced in [full_sample_output.nc](./data/full_sample_output.nc).\n\n## File Descriptions\n\n#### Key files\n* **[pi.py](./src/tcpyPI/pi.py)** - The primary function of pyPI, that computes and outputs PI (and associated variables) given atmospheric and ocean state variables.\n* **[run_sample.py](run_sample.py)** - Example script that computes PI and accompanying analyses over the entire sample dataset\n\n#### Data\n* [sample_data.nc](./data/sample_data.nc) - Sample atmospheric and ocean state variable data and BE02 MATLAB output data; values are monthly averages over the globe from MERRA2 in 2004.\n* [mdr.json](./data/mdr.json) - Main Development Region definitions from [Gilford et al. (2017)](https://journals.ametsoc.org/doi/abs/10.1175/JCLI-D-16-0827.1)\n* [raw_sample_output.nc](./data/raw_sample_output.nc) - Sample outputs from pi.py *only* created by run_sample.py\n* [full_sample_output.nc](./data/full_sample_output.nc) - Full set of sample outputs from pi.py as well as sample analyses such as PI decomposition\n\n#### Validation and Testing Notebooks\n* **[test_pi_calc.ipynb](./notebooks/test_pi_calc.ipynb)** - Simple code showing a single call of pi.py and testing the speed of the algorithm\n* **[verify_pi.ipynb](./notebooks/verify_pi.ipynb)** - Notebook validating/verifying pyPI outputs against BE02 MATLAB output data\n* **[sample_output_analyses.ipynb](./notebooks/sample_output_analyses.ipynb)** - Notebook showing examples of pyPI outputs and simple PI analyses\n\n#### Misc.\n* **[utilities.py](./src/tcpyPI/utilities.py)** - Set of functions used in the pyPI codebase\n* **[constants.py](./src/tcpyPI/constants.py)** - Set of meteorological constants used in the pyPI codebase\n* **[reference_calculations.m](./matlab_scripts/reference_calculations.m)** - Script used to generate sample BE02 MATLAB output data from original MERRA2 files monthly mean; included for posterity and transparency\n* **[pc_min.m](./matlab_scripts/pc_min.m)** - Original BE02 algorithm from MATLAB, adapted and used to produce analyses of Gilford et al. ([2017](https://journals.ametsoc.org/doi/abs/10.1175/JCLI-D-16-0827.1); [2019](https://journals.ametsoc.org/doi/10.1175/MWR-D-19-0021.1))\n* **[clock_pypi.ipynb](./notebooks/clock_pypi.ipynb)** - Notebook estimating the time it takes to run pyPI on a laptop\n\n## Author\n\n* **Daniel M. Gilford, PhD** - *Creation, Development, \u0026 Maintenance* - [GitHub](https://github.com/dgilford)\n\n### Contributor(s)\n* **Ben Mares** - *Modernization* - [GitHub](https://github.com/maresb)\n* **Daniel Rothenberg, PhD** - *Numba Optimization \u0026 Sample Code* - [GitHub](https://github.com/darothen)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n* Kerry Emanuel (MIT) - Development of potential intensity theory; encouragement and permission to pursue Python implementation\n* Susan Solomon (MIT), Paul O'Gorman (MIT), Allison Wing (FSU) - Helpful conversations, advice, and suggestions on TC PI research\n* Dan Chavas (Purdue), Jonathan Lin (MIT), Raphael Rousseau-Rizzi (MIT) - Feedback on pyPI code and documentation\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5194/gmd-14-2351-2021","http://doi.org/10.5281/zenodo.3985975"],"works":{"https://doi.org/10.5194/gmd-14-2351-2021":{"id":"https://openalex.org/W3094171776","doi":"https://doi.org/10.5194/gmd-14-2351-2021","title":"pyPI (v1.3): Tropical Cyclone Potential Intensity Calculations in Python","display_name":"pyPI (v1.3): Tropical Cyclone Potential Intensity Calculations in Python","publication_year":2021,"publication_date":"2021-05-03","ids":{"openalex":"https://openalex.org/W3094171776","doi":"https://doi.org/10.5194/gmd-14-2351-2021","mag":"3094171776"},"language":"en","primary_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.5194/gmd-14-2351-2021","pdf_url":"https://gmd.copernicus.org/articles/14/2351/2021/gmd-14-2351-2021.pdf","source":{"id":"https://openalex.org/S60406085","display_name":"Geoscientific Model Development","issn_l":"1991-959X","issn":["1991-9603","1991-959X"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310313756","host_organization_name":"Copernicus Publications","host_organization_lineage":["https://openalex.org/P4310313756"],"host_organization_lineage_names":["Copernicus Publications"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://gmd.copernicus.org/articles/14/2351/2021/gmd-14-2351-2021.pdf","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5064025602","display_name":"Daniel Gilford","orcid":"https://orcid.org/0000-0003-2422-0887"},"institutions":[{"id":"https://openalex.org/I1302918504","display_name":"Planetary Science Institute","ror":"https://ror.org/05vvg9554","country_code":"US","type":"nonprofit","lineage":["https://openalex.org/I1302918504"]},{"id":"https://openalex.org/I102322142","display_name":"Rutgers, The State University of New Jersey","ror":"https://ror.org/05vt9qd57","country_code":"US","type":"education","lineage":["https://openalex.org/I102322142"]},{"id":"https://openalex.org/I1340121542","display_name":"Climate Central","ror":"https://ror.org/01ge84v72","country_code":"US","type":"nonprofit","lineage":["https://openalex.org/I1340121542"]}],"countries":["US"],"is_corresponding":true,"raw_author_name":"Daniel M. Gilford","raw_affiliation_string":"Climate Central, Princeton, NJ, USA; Institute of Earth, Ocean, and Atmospheric Sciences and Department of Earth and Planetary Sciences, Rutgers University, 71 Dudley Road, Suite 205, New Brunswick, NJ 08901, USA","raw_affiliation_strings":["Climate Central, Princeton, NJ, USA","Institute of Earth, Ocean, and Atmospheric Sciences and Department of Earth and Planetary Sciences, Rutgers University, 71 Dudley Road, Suite 205, New Brunswick, NJ 08901, USA"]}],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5064025602"],"corresponding_institution_ids":["https://openalex.org/I1302918504","https://openalex.org/I102322142","https://openalex.org/I1340121542"],"apc_list":{"value":1600,"currency":"EUR","value_usd":1725,"provenance":"doaj"},"apc_paid":{"value":1600,"currency":"EUR","value_usd":1725,"provenance":"doaj"},"has_fulltext":true,"fulltext_origin":"pdf","cited_by_count":18,"cited_by_percentile_year":{"min":96,"max":97},"biblio":{"volume":"14","issue":"5","first_page":"2351","last_page":"2369"},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"python","score":0.355},{"keyword":"intensity","score":0.2563}],"concepts":[{"id":"https://openalex.org/C29141058","wikidata":"https://www.wikidata.org/wiki/Q8092","display_name":"Tropical cyclone","level":2,"score":0.9153584},{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.79165894},{"id":"https://openalex.org/C45374587","wikidata":"https://www.wikidata.org/wiki/Q12525525","display_name":"Computation","level":2,"score":0.5148217},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.50960183},{"id":"https://openalex.org/C153294291","wikidata":"https://www.wikidata.org/wiki/Q25261","display_name":"Meteorology","level":1,"score":0.48115408},{"id":"https://openalex.org/C39432304","wikidata":"https://www.wikidata.org/wiki/Q188847","display_name":"Environmental science","level":0,"score":0.46460432},{"id":"https://openalex.org/C93038891","wikidata":"https://www.wikidata.org/wiki/Q1061524","display_name":"Intensity (physics)","level":2,"score":0.44071278},{"id":"https://openalex.org/C105306849","wikidata":"https://www.wikidata.org/wiki/Q81054","display_name":"Storm","level":2,"score":0.41835088},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.3962856},{"id":"https://openalex.org/C121332964","wikidata":"https://www.wikidata.org/wiki/Q413","display_name":"Physics","level":0,"score":0.28763005},{"id":"https://openalex.org/C62520636","wikidata":"https://www.wikidata.org/wiki/Q944","display_name":"Quantum mechanics","level":1,"score":0.0},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"is_oa":true,"landing_page_url":"https://doi.org/10.5194/gmd-14-2351-2021","pdf_url":"https://gmd.copernicus.org/articles/14/2351/2021/gmd-14-2351-2021.pdf","source":{"id":"https://openalex.org/S60406085","display_name":"Geoscientific Model Development","issn_l":"1991-959X","issn":["1991-9603","1991-959X"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310313756","host_organization_name":"Copernicus Publications","host_organization_lineage":["https://openalex.org/P4310313756"],"host_organization_lineage_names":["Copernicus Publications"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},{"is_oa":true,"landing_page_url":"https://doi.org/10.5194/gmd-2020-279","pdf_url":"https://doi.org/10.5194/gmd-2020-279","source":null,"license":null,"version":"submittedVersion","is_accepted":false,"is_published":false}],"best_oa_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.5194/gmd-14-2351-2021","pdf_url":"https://gmd.copernicus.org/articles/14/2351/2021/gmd-14-2351-2021.pdf","source":{"id":"https://openalex.org/S60406085","display_name":"Geoscientific Model Development","issn_l":"1991-959X","issn":["1991-9603","1991-959X"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310313756","host_organization_name":"Copernicus Publications","host_organization_lineage":["https://openalex.org/P4310313756"],"host_organization_lineage_names":["Copernicus Publications"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/13","display_name":"Climate action","score":0.71},{"id":"https://metadata.un.org/sdg/14","display_name":"Life below water","score":0.18}],"grants":[{"funder":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation","award_id":"ICER-1663807"},{"funder":"https://openalex.org/F4320306101","funder_display_name":"National Aeronautics and Space Administration","award_id":"80NSSC17K0698"}],"referenced_works_count":63,"referenced_works":["https://openalex.org/W1608919459","https://openalex.org/W1955180176","https://openalex.org/W1966567108","https://openalex.org/W1969274771","https://openalex.org/W1974642911","https://openalex.org/W1981585006","https://openalex.org/W1987398183","https://openalex.org/W1988054515","https://openalex.org/W1995618165","https://openalex.org/W1999442462","https://openalex.org/W2007086089","https://openalex.org/W2010794048","https://openalex.org/W2033300187","https://openalex.org/W2037277120","https://openalex.org/W2040570083","https://openalex.org/W2059257855","https://openalex.org/W2059647365","https://openalex.org/W2060357729","https://openalex.org/W2061877440","https://openalex.org/W2062818114","https://openalex.org/W2069201694","https://openalex.org/W2075862367","https://openalex.org/W2076977109","https://openalex.org/W2078719258","https://openalex.org/W2088055301","https://openalex.org/W2093684690","https://openalex.org/W2099083749","https://openalex.org/W2100377772","https://openalex.org/W2102908541","https://openalex.org/W2103011744","https://openalex.org/W2109846926","https://openalex.org/W2120568583","https://openalex.org/W2121745948","https://openalex.org/W2130282405","https://openalex.org/W2132131046","https://openalex.org/W2153643878","https://openalex.org/W2162662079","https://openalex.org/W2165621928","https://openalex.org/W2171078015","https://openalex.org/W2237541553","https://openalex.org/W2245493112","https://openalex.org/W2254381574","https://openalex.org/W2402709873","https://openalex.org/W2473388235","https://openalex.org/W2566517883","https://openalex.org/W2580528732","https://openalex.org/W2611000333","https://openalex.org/W2611772571","https://openalex.org/W2743547272","https://openalex.org/W2755373499","https://openalex.org/W2767394970","https://openalex.org/W2806732289","https://openalex.org/W2895402411","https://openalex.org/W2931096512","https://openalex.org/W2943998512","https://openalex.org/W2946803900","https://openalex.org/W2954808037","https://openalex.org/W3000264083","https://openalex.org/W3025838273","https://openalex.org/W3084949378","https://openalex.org/W3123289652","https://openalex.org/W4213327538","https://openalex.org/W4251839054"],"related_works":["https://openalex.org/W2374824227","https://openalex.org/W2341492732","https://openalex.org/W3187193180","https://openalex.org/W106542691","https://openalex.org/W4287027380","https://openalex.org/W1699080303","https://openalex.org/W4297799326","https://openalex.org/W3116064965","https://openalex.org/W3193760048","https://openalex.org/W4285822516"],"ngrams_url":"https://api.openalex.org/works/W3094171776/ngrams","abstract_inverted_index":{"Abstract.":[0],"Potential":[1,85],"intensity":[2,46,119,171],"(PI)":[3],"is":[4,36,75,164,174],"the":[5,16,94,101,105,139,151,168,178],"maximum":[6],"speed":[7],"limit":[8],"of":[9,58,153,183,210],"a":[10,19,37,56,65,128],"tropical":[11,44,116,157,213],"cyclone":[12,45,117,158,214],"found":[13],"by":[14,71,111,121],"modeling":[15],"storm":[17,32],"as":[18],"thermal":[20],"heat":[21],"engine.":[22],"Because":[23],"there":[24],"are":[25],"significant":[26],"correlations":[27],"between":[28],"PI":[29,35,54,66,95,134,140,154],"and":[30,48,60,99,108,142,146,149,181,196,208,212],"actual":[31],"wind":[33],"speeds,":[34],"useful":[38],"diagnostic":[39],"for":[40,100],"evaluating":[41],"or":[42],"predicting":[43],"climatology":[47],"variability.":[49],"Previous":[50],"studies":[51],"have":[52],"calculated":[53],"given":[55],"set":[57],"atmospheric":[59],"oceanographic":[61],"conditions,":[62],"but":[63,173],"although":[64],"algorithm":[67,96,109,141],"–":[68,74],"originally":[69],"developed":[70],"Kerry":[72],"Emanuel":[73],"in":[76,88,97,156,194],"widespread":[77],"use,":[78],"it":[79],"remains":[80],"under-documented.":[81],"The":[82,123],"Tropical":[83],"Cyclone":[84],"Intensity":[86],"Calculations":[87],"Python":[89,98,133,144],"(pyPI,":[90],"v1.3)":[91],"package":[92,125],"develops":[93],"first":[102],"time":[103],"details":[104],"full":[106],"background":[107],"(line":[110],"line)":[112],"used":[113],"to":[114,167],"compute":[115],"potential":[118,170],"constrained":[120],"thermodynamics.":[122],"pyPI":[124,162],"(1)":[126],"provides":[127],"freely":[129],"available,":[130],"flexible,":[131],"validated":[132],"algorithm,":[135],"(2)":[136],"carefully":[137],"documents":[138],"its":[143],"implementation,":[145],"(3)":[147],"demonstrates":[148],"encourages":[150],"use":[152],"theory":[155],"analyses.":[159],"Validation":[160],"shows":[161],"output":[163],"nearly":[165],"identical":[166],"previous":[169],"computation":[172],"an":[175],"improvement":[176],"on":[177,204],"algorithm's":[179],"consistency":[180],"handling":[182],"missing":[184],"data.":[185],"Example":[186],"calculations":[187],"with":[188],"reanalyses":[189],"data":[190],"demonstrate":[191],"pyPI's":[192,205],"usefulness":[193],"climatological":[195],"meteorological":[197],"research.":[198],"Planned":[199],"future":[200],"improvements":[201],"will":[202],"improve":[203],"assumptions,":[206],"flexibility,":[207],"range":[209],"applications":[211],"thermodynamic":[215],"calculations.":[216]},"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W3094171776","counts_by_year":[{"year":2023,"cited_by_count":8},{"year":2022,"cited_by_count":8},{"year":2021,"cited_by_count":2}],"updated_date":"2023-12-14T02:03:01.841502","created_date":"2020-10-29"},"http://doi.org/10.5281/zenodo.3985975":{"id":"https://openalex.org/W3210715058","doi":"https://doi.org/10.5281/zenodo.3985975","title":"dgilford/pyPI: pyPI v1.3 (initial package release)","display_name":"dgilford/pyPI: pyPI v1.3 (initial package release)","publication_year":2020,"publication_date":"2020-08-14","ids":{"openalex":"https://openalex.org/W3210715058","doi":"https://doi.org/10.5281/zenodo.3985975","mag":"3210715058"},"language":"en","primary_location":{"is_oa":false,"landing_page_url":"https://zenodo.org/record/3985975","pdf_url":null,"source":null,"license":null,"version":null,"is_accepted":false,"is_published":false},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5064025602","display_name":"Daniel Gilford","orcid":"https://orcid.org/0000-0003-2422-0887"},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Daniel Gilford","raw_affiliation_string":"","raw_affiliation_strings":[]}],"countries_distinct_count":0,"institutions_distinct_count":0,"corresponding_author_ids":["https://openalex.org/A5064025602"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"has_fulltext":false,"cited_by_count":2,"cited_by_percentile_year":{"min":75,"max":79},"biblio":{"volume":null,"issue":null,"first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"dgilford/pypi","score":0.5492},{"keyword":"dgilford/pypi","score":0.4375},{"keyword":"initial package release","score":0.4307}],"concepts":[{"id":"https://openalex.org/C192562407","wikidata":"https://www.wikidata.org/wiki/Q228736","display_name":"Materials science","level":0,"score":0.38202506}],"mesh":[],"locations_count":1,"locations":[{"is_oa":false,"landing_page_url":"https://zenodo.org/record/3985975","pdf_url":null,"source":null,"license":null,"version":null,"is_accepted":false,"is_published":false}],"best_oa_location":null,"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/17","display_name":"Partnerships for the goals","score":0.23},{"id":"https://metadata.un.org/sdg/8","display_name":"Decent work and economic growth","score":0.16},{"id":"https://metadata.un.org/sdg/13","display_name":"Climate action","score":0.15},{"id":"https://metadata.un.org/sdg/2","display_name":"Zero hunger","score":0.14},{"id":"https://metadata.un.org/sdg/10","display_name":"Reduced inequalities","score":0.13},{"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure","score":0.13}],"grants":[],"referenced_works_count":0,"referenced_works":[],"related_works":["https://openalex.org/W3208990502"],"ngrams_url":"https://api.openalex.org/works/W3210715058/ngrams","abstract_inverted_index":null,"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W3210715058","counts_by_year":[{"year":2023,"cited_by_count":1},{"year":2022,"cited_by_count":1}],"updated_date":"2023-12-10T00:07:06.815315","created_date":"2021-11-08"}},"citation_counts":{"https://doi.org/10.5194/gmd-14-2351-2021":18,"http://doi.org/10.5281/zenodo.3985975":2},"total_citations":20,"keywords_from_contributors":["measuring","transformations","compose","archives","reporter","observation","optimize","annotation","numeric","sharing"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/80237","html_url":"https://ost.ecosyste.ms/projects/80237"}