{"id":337467,"name":"Skyborn","description":"A comprehensive Python package for climate data analysis, featuring advanced statistical methods, emergent constraint techniques, and data conversion utilities.","url":"https://github.com/qianyesu/skyborn","last_synced_at":"2026-05-12T01:01:40.193Z","repository":{"id":251389916,"uuid":"837275868","full_name":"QianyeSu/Skyborn","owner":"QianyeSu","description":"Climate \u0026 Atmospheric Science Python Toolkit","archived":false,"fork":false,"pushed_at":"2026-05-04T20:33:39.000Z","size":79534,"stargazers_count":52,"open_issues_count":5,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-04T22:26:00.446Z","etag":null,"topics":["atmospheric-science","climate","climate-change","meteorology","meteorology-library","physics","python","statistical-analysis"],"latest_commit_sha":null,"homepage":"https://skyborn.readthedocs.io/en/latest/","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QianyeSu.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":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-02T15:34:16.000Z","updated_at":"2026-05-04T20:33:45.000Z","dependencies_parsed_at":"2024-08-02T17:28:52.557Z","dependency_job_id":"bc8b6259-db4a-40af-9f09-2be5466ebe13","html_url":"https://github.com/QianyeSu/Skyborn","commit_stats":null,"previous_names":["sqyqianye/skyborn","qianyesu/skyborn"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/QianyeSu/Skyborn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QianyeSu","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32919142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"ssl_error","status_checked_at":"2026-05-11T17:08:45.420Z","response_time":120,"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":"QianyeSu","name":"Qianye Su","uuid":"112712604","kind":"user","description":"After three days without programming, life becomes meaningless\r\n","email":"","website":null,"location":"Zhanjiang, China","twitter":null,"company":"Guangdong Ocean University","icon_url":"https://avatars.githubusercontent.com/u/112712604?u=313e58adce093f7592ba2dd1bb1da58439fc6c87\u0026v=4","repositories_count":1,"last_synced_at":"2026-01-29T05:30:56.843Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/QianyeSu","funding_links":[],"total_stars":null,"followers":45,"following":153,"created_at":"2023-09-04T22:13:20.588Z","updated_at":"2026-01-29T05:30:56.843Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QianyeSu","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QianyeSu/repositories"},"packages":[{"id":11437985,"name":"skyborn","ecosystem":"pypi","description":"Atmospheric science research utilities","homepage":"https://github.com/QianyeSu/Skyborn","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/QianyeSu/Skyborn","keywords_array":["atmospheric-science","meteorology","climate","data-analysis","grib","netcdf"],"namespace":null,"versions_count":26,"first_release_published_at":"2025-03-16T11:40:05.000Z","latest_release_published_at":"2026-05-05T07:58:48.000Z","latest_release_number":"0.3.22","last_synced_at":"2026-05-07T23:03:46.276Z","created_at":"2025-03-16T12:00:38.494Z","updated_at":"2026-05-07T23:03:46.276Z","registry_url":"https://pypi.org/project/skyborn/","install_command":"pip install skyborn --index-url https://pypi.org/simple","documentation_url":"https://skyborn.readthedocs.io/","metadata":{"funding":null,"documentation":"https://skyborn.readthedocs.io/","classifiers":["Development Status :: 4 - Beta","Intended Audience :: Science/Research","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.13","Programming Language :: Python :: 3.14","Programming Language :: Python :: 3.9","Topic :: Scientific/Engineering :: Atmospheric Science","Topic :: Scientific/Engineering :: Physics"],"normalized_name":"skyborn","project_status":null},"repo_metadata":{"id":251389916,"uuid":"837275868","full_name":"QianyeSu/Skyborn","owner":"QianyeSu","description":"Climate \u0026 Atmospheric Science Python Toolkit","archived":false,"fork":false,"pushed_at":"2026-05-04T20:33:39.000Z","size":79534,"stargazers_count":52,"open_issues_count":5,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-04T22:26:00.446Z","etag":null,"topics":["atmospheric-science","climate","climate-change","meteorology","meteorology-library","physics","python","statistical-analysis"],"latest_commit_sha":null,"homepage":"https://skyborn.readthedocs.io/en/latest/","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QianyeSu.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":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-02T15:34:16.000Z","updated_at":"2026-05-04T20:33:45.000Z","dependencies_parsed_at":"2024-08-02T17:28:52.557Z","dependency_job_id":"bc8b6259-db4a-40af-9f09-2be5466ebe13","html_url":"https://github.com/QianyeSu/Skyborn","commit_stats":null,"previous_names":["sqyqianye/skyborn","qianyesu/skyborn"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/QianyeSu/Skyborn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QianyeSu","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32669433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"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_record":{"login":"QianyeSu","name":"Qianye Su","uuid":"112712604","kind":"user","description":"After three days without programming, life becomes meaningless\r\n","email":"","website":null,"location":"Zhanjiang, China","twitter":null,"company":"Guangdong Ocean University","icon_url":"https://avatars.githubusercontent.com/u/112712604?u=313e58adce093f7592ba2dd1bb1da58439fc6c87\u0026v=4","repositories_count":1,"last_synced_at":"2026-01-29T05:30:56.843Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/QianyeSu","funding_links":[],"total_stars":null,"followers":45,"following":153,"created_at":"2023-09-04T22:13:20.588Z","updated_at":"2026-01-29T05:30:56.843Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QianyeSu","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QianyeSu/repositories"},"tags":[{"name":"v0.3.21","sha":"d2fba450bbeb50b1dee968c55d00e32c2bc5499a","kind":"tag","published_at":"2026-04-30T13:59:41.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.21","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.21","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.21","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.21/manifests"},{"name":"v0.3.20","sha":"cdb2fee6993eca8c96b0072fa2cd45927f949290","kind":"tag","published_at":"2026-04-20T08:05:25.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.20","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.20","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.20","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.20/manifests"},{"name":"v0.3.19","sha":"0c017a5441a29dc48eccddba9a2b87a417b91f1a","kind":"tag","published_at":"2026-04-07T12:26:12.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.19","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.19","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.19","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.19/manifests"},{"name":"v0.3.18","sha":"44a9bd63e374bd844b75aba189dfd2e3b1e0543a","kind":"tag","published_at":"2026-04-02T12:17:44.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.18","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.18","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.18","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.18/manifests"},{"name":"v0.3.17","sha":"73014664b9b0c24d1d70556edad2fbd3f4f196bf","kind":"tag","published_at":"2026-03-30T13:41:59.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.17","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.17","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.17","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.17/manifests"},{"name":"v0.3.16","sha":"f523871a3c13bb0e66907e0aba38ee8eb1b775ac","kind":"commit","published_at":"2025-12-28T11:00:55.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.16","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.16","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.16","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.16/manifests"},{"name":"v0.3.15","sha":"f7c270215720e5e68c9e5f8a25a6edb00e9f0f77","kind":"commit","published_at":"2025-10-29T14:28:31.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.15","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.15","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.15","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.15/manifests"},{"name":"v0.3.14","sha":"17165daf35c1294e6bdb35cc8cd024ac7c87420e","kind":"commit","published_at":"2025-09-08T18:05:26.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.14","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.14","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.14","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.14/manifests"},{"name":"v0.3.13","sha":"d581734cd4a6241350410fdff8adf5c7ff66c139","kind":"commit","published_at":"2025-08-31T04:04:14.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.13","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.13","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.13","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.13/manifests"},{"name":"v0.3.12.post1","sha":"b4d288d4be4b0ca794cbdae6697b7b57c42df361","kind":"commit","published_at":"2025-08-21T09:27:09.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.12.post1","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.12.post1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.12.post1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.12.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.12.post1/manifests"},{"name":"v0.3.12","sha":"0b37cb9bd542ef61bdc21968987aa45b40a75a4a","kind":"commit","published_at":"2025-08-19T11:50:21.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.12","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.12","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.12","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.12/manifests"},{"name":"v0.3.11","sha":"eaeb71ae8970886528d668eabe7a923cf26a2c51","kind":"commit","published_at":"2025-08-08T18:33:56.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.11","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.11","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.11","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.11/manifests"},{"name":"v0.3.10","sha":"a9c01758dfa0936161d7d1fb5b5cf195cff5fe45","kind":"commit","published_at":"2025-08-07T17:13:43.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.10","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.10/manifests"},{"name":"v0.3.9","sha":"13230d68fe4ff82f91786da4712956f90a53f9d4","kind":"tag","published_at":"2025-08-05T11:44:21.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.9","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.9/manifests"},{"name":"v0.3.8","sha":"ce297bb7cca090190cceda1499d69bba71c17e48","kind":"commit","published_at":"2025-07-18T19:21:28.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.8","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.8/manifests"},{"name":"v0.3.7","sha":"2d627c09f24cc3d5000bec7dd52d4833c797252d","kind":"tag","published_at":"2025-07-09T17:54:15.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.7","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.7/manifests"},{"name":"v0.3.6","sha":"ce190bc4180de10568128ea500b8cde9d1865efe","kind":"commit","published_at":"2025-07-08T12:12:13.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.6","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.6/manifests"},{"name":"v0.3.5","sha":"697ddaec5bf740a090eb22174418e3aa5651fee0","kind":"commit","published_at":"2025-06-12T14:13:08.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.5","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.5/manifests"},{"name":"v0.3.4","sha":"af06afb710260b6c15540427ce0afb9eff382254","kind":"commit","published_at":"2025-06-11T09:22:11.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.4","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.4/manifests"},{"name":"v0.3.3","sha":"87204eba7d12630add7e67a8049d407accbe9cd7","kind":"commit","published_at":"2025-06-10T17:18:01.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.3","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.3/manifests"},{"name":"v0.3.2","sha":"eecbb2e648b548bb476dce375085caf2fdfdff74","kind":"commit","published_at":"2025-06-08T10:40:55.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.2","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.2/manifests"},{"name":"v0.3.1","sha":"68debf3db018279fa4a440fe12a03370fbecb06b","kind":"commit","published_at":"2025-06-04T13:44:36.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/v0.3.1","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/v0.3.1/manifests"},{"name":"0.1.0","sha":"d0134fc48a05bc577d213ee738ec617fd45d5e08","kind":"commit","published_at":"2025-03-16T09:16:10.000Z","download_url":"https://codeload.github.com/QianyeSu/Skyborn/tar.gz/0.1.0","html_url":"https://github.com/QianyeSu/Skyborn/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/QianyeSu/Skyborn@0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/tags/0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-05-05T22:07:32.877Z","dependent_packages_count":0,"downloads":3531,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":53.36212608428718,"dependent_packages_count":9.475317459835024,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":31.418721772061105},"purl":"pkg:pypi/skyborn","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/skyborn","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/skyborn","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/skyborn/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-05T22:01:22.873Z","issues_count":3,"pull_requests_count":25,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":2693816.5555555555,"issues_closed_count":0,"pull_requests_closed_count":18,"pull_request_authors_count":5,"issue_authors_count":2,"avg_comments_per_issue":1.0,"avg_comments_per_pull_request":0.48,"merged_pull_requests_count":14,"bot_issues_count":0,"bot_pull_requests_count":16,"past_year_issues_count":3,"past_year_pull_requests_count":25,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2693816.5555555555,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":18,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":0.48,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":16,"past_year_merged_pull_requests_count":14,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/issues","maintainers":[{"login":"suqianye","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/suqianye"},{"login":"QianyeSu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/QianyeSu"}],"active_maintainers":[{"login":"suqianye","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/suqianye"},{"login":"QianyeSu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/QianyeSu"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyborn/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyborn/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyborn/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyborn/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyborn/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyborn/codemeta","maintainers":[{"uuid":"qianyesu","login":"qianyesu","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/qianyesu/","role":"Owner","created_at":"2025-03-16T12:00:43.228Z","updated_at":"2025-03-16T12:00:43.228Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/qianyesu/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":859986,"maintainers_count":367300,"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":10978695,"full_name":"QianyeSu/Skyborn","default_branch":"master","total_commits":1659,"total_committers":6,"total_bot_commits":23,"total_bot_committers":1,"mean_commits":276.5,"dds":0.02893309222423146,"past_year_total_commits":1629,"past_year_total_committers":6,"past_year_total_bot_commits":23,"past_year_total_bot_committers":1,"past_year_mean_commits":271.5,"past_year_dds":0.02025782688766109,"last_synced_at":"2026-05-07T23:02:44.108Z","last_synced_commit":"b3a0491fe50f9ca831e7b0293c180dcf35abb988","created_at":"2025-09-07T03:37:31.673Z","updated_at":"2026-05-07T23:02:18.508Z","committers":[{"name":"Qianye Su","email":"976113615@qq.com","login":"QianyeSu","count":1611},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":23},{"name":"Qianye Su","email":"112712604+SQYQianYe","login":"SQYQianYe","count":19},{"name":"Skyborn","email":"1989299097@qq.com","login":"sqyyqssqyyqs","count":3},{"name":"decadeneo","email":"148452637+decadeneo","login":"decadeneo","count":2},{"name":"Skyborn","email":"128050803+suqianye","login":"suqianye","count":1}],"past_year_committers":[{"name":"Qianye Su","email":"976113615@qq.com","login":"QianyeSu","count":1596},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":23},{"name":"Qianye Su","email":"112712604+SQYQianYe","login":"SQYQianYe","count":4},{"name":"Skyborn","email":"1989299097@qq.com","login":"sqyyqssqyyqs","count":3},{"name":"decadeneo","email":"148452637+decadeneo","login":"decadeneo","count":2},{"name":"Skyborn","email":"128050803+suqianye","login":"suqianye","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-10T00:00:08.421Z","repositories_count":6232731,"commits_count":895735630,"contributors_count":34902798,"owners_count":1151564,"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":"QianyeSu/Skyborn","html_url":"https://github.com/QianyeSu/Skyborn","last_synced_at":"2026-05-05T22:01:22.873Z","status":"active","issues_count":3,"pull_requests_count":25,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":2693816.5555555555,"issues_closed_count":0,"pull_requests_closed_count":18,"pull_request_authors_count":5,"issue_authors_count":2,"avg_comments_per_issue":1.0,"avg_comments_per_pull_request":0.48,"merged_pull_requests_count":14,"bot_issues_count":0,"bot_pull_requests_count":16,"past_year_issues_count":3,"past_year_pull_requests_count":25,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2693816.5555555555,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":18,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":0.48,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":16,"past_year_merged_pull_requests_count":14,"created_at":"2025-08-29T13:23:01.502Z","updated_at":"2026-05-05T22:01:22.874Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/QianyeSu%2FSkyborn/issues","issue_labels_count":{"enhancement":1,"bug":1},"pull_request_labels_count":{"github_actions":16,"dependencies":16},"issue_author_associations_count":{"COLLABORATOR":2,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":17,"NONE":7,"OWNER":1},"issue_authors":{"suqianye":2,"sqyyqssqyyqs":1},"pull_request_authors":{"dependabot[bot]":16,"sqyyqssqyyqs":3,"decadeneo":3,"Copilot":2,"QianyeSu":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-10T00:00:08.095Z","repositories_count":14549535,"issues_count":34225455,"pull_requests_count":112150247,"authors_count":11258384,"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":{"bug":1,"enhancement":1},"past_year_pull_request_labels_count":{"dependencies":16,"github_actions":16},"past_year_issue_author_associations_count":{"COLLABORATOR":2,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":17,"NONE":7,"OWNER":1},"past_year_issue_authors":{"suqianye":2,"sqyyqssqyyqs":1},"past_year_pull_request_authors":{"dependabot[bot]":16,"decadeneo":3,"sqyyqssqyyqs":3,"Copilot":2,"QianyeSu":1},"maintainers":[{"login":"suqianye","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/suqianye"},{"login":"QianyeSu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/QianyeSu"}],"active_maintainers":[{"login":"suqianye","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/suqianye"},{"login":"QianyeSu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/QianyeSu"}]},"events":{"total":{"ReleaseEvent":5,"DeleteEvent":10,"PullRequestEvent":37,"ForkEvent":2,"IssuesEvent":2,"WatchEvent":22,"IssueCommentEvent":6,"PushEvent":347,"PullRequestReviewEvent":2,"CreateEvent":14},"last_year":{"ReleaseEvent":5,"DeleteEvent":10,"PullRequestEvent":37,"ForkEvent":2,"IssuesEvent":2,"WatchEvent":22,"IssueCommentEvent":6,"PushEvent":347,"PullRequestReviewEvent":2,"CreateEvent":14}},"keywords":["atmospheric-science","climate","climate-change","meteorology","meteorology-library","physics","python","statistical-analysis"],"dependencies":[],"score":14.004430298786456,"created_at":"2025-12-10T00:22:32.778Z","updated_at":"2026-05-12T01:01:40.195Z","avatar_url":"https://github.com/QianyeSu.png","language":"Fortran","category":"Climate Change","sub_category":"Climate Data Processing and Analysis","monthly_downloads":3531,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/QianyeSu/Skyborn\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/_static/SkyBornLogo.svg\" alt=\"Skyborn Logo\" width=\"400\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[![PyPI version](https://badge.fury.io/py/skyborn.svg)](https://badge.fury.io/py/skyborn)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/skyborn)](https://pypi.org/project/skyborn/)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/skyborn)](https://pypi.org/project/skyborn/)\n[![codecov](https://codecov.io/gh/QianyeSu/Skyborn/graph/badge.svg?token=YOUR_TOKEN_HERE)](https://codecov.io/gh/QianyeSu/Skyborn)\n[![License](https://img.shields.io/github/license/QianyeSu/Skyborn)](https://github.com/QianyeSu/Skyborn/blob/main/LICENSE)\n[![Tests](https://github.com/QianyeSu/Skyborn/actions/workflows/stable-ci.yml/badge.svg)](https://github.com/QianyeSu/Skyborn/actions/workflows/stable-ci.yml)\n[![Platform](https://img.shields.io/badge/platform-Windows-blue)](https://github.com/QianyeSu/Skyborn)\n[![Code style](https://img.shields.io/badge/code%20style-black-blue.svg)](https://github.com/psf/black)\n[![Build Status](https://github.com/QianyeSu/Skyborn/actions/workflows/test-coverage.yml/badge.svg?branch=main)](https://github.com/QianyeSu/Skyborn/actions/workflows/test-coverage.yml?query=branch%3Amain)\n[![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-brightgreen)](https://skyborn.readthedocs.io/en/latest/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18075252.svg)](https://doi.org/10.5281/zenodo.18075252)\n\n## System Requirements\n\n**Operating System:** 🖥️ **Cross-Platform**\n\nThis package supports Windows, Linux, and macOS. However, it has been primarily developed and tested on Windows.\n\n**Note:** While the package can be installed on different platforms, some Windows-specific features may not work on other operating systems.\n\n## Installation\n\nTo install the Skyborn package, you can use pip:\n\n```bash\npip install skyborn\n```\nor\n\n```bash\npip install -U --index-url https://pypi.org/simple/ skyborn\n```\n\n## 📚 Documentation\n\n**Full documentation is available at: [Documentation ](https://skyborn.readthedocs.io/en/latest/)**\n\n\n\n## 🎯 Key Features \u0026 Submodules\n\n### 📊 Spatial Trend Analysis \u0026 Climate Index Regression\n\nSkyborn provides ultra-fast spatial trend calculation and climate index regression analysis for atmospheric data:\n\n![Precipitation Trends Comparison](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/precipitation_trends_comparison_1979_2014.png)\n\n**Key Capabilities:**\n- **High-Speed Spatial Trends**: Calculate long-term climate trends across global grids\n  - Linear trend analysis for temperature, precipitation, and other variables\n  - Statistical significance testing\n  - Vectorized operations for massive datasets\n- **Mann-Kendall Trend Analysis**: Robust non-parametric trend testing for both\n  single time series and multidimensional climate fields\n  - Supports multiple Mann-Kendall test families including original,\n    Yue-Wang, Hamed-Rao, seasonal, correlated seasonal, grouped multivariate,\n    regional, correlated multivariate, and partial Mann-Kendall workflows\n  - Direct multidimensional support for arrays such as ``(time, lat, lon)``,\n    ``(time, level, lat, lon)``, and xarray-based labeled data\n  - Batch-oriented compiled kernels make gridded workloads much faster than\n    looping over one series at a time in pure Python\n\n- **Climate Index Regression**: Rapid correlation and regression analysis with climate indices\n  - NINO 3.4, PDO, NAO, AMO index integration\n  - Pattern correlation analysis\n  - Teleconnection mapping\n\n**Other Applications:**\n- Climate change signal detection\n- Decadal variability analysis\n- Teleconnection pattern identification\n- Regional climate impact assessment\n\nSkyborn extends Mann-Kendall analysis from one-dimensional time series to\nmultidimensional NumPy and xarray workflows, making it suitable for large\ngridded climate-analysis tasks as well as standard single-series trend tests.\n\n### 🌍 Skyborn Windspharm Submodule - Atmospheric Analysis\n\nThe Skyborn `windspharm` submodule provides powerful tools for analyzing global wind patterns through **streamfunction** and **velocity potential** calculations:\n\n![Streamfunction and Velocity Potential](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/windspharm_sfvp_analysis.png)\n\n**Key Capabilities:**\n- **Streamfunction Analysis**: Identifies rotational (non-divergent) wind components\n  - Visualizes atmospheric circulation patterns\n  - Reveals jet streams and vortices\n  - Essential for understanding weather systems\n\n- **Velocity Potential Analysis**: Captures divergent wind components\n  - Shows areas of convergence and divergence\n  - Critical for tropical meteorology\n  - Identifies monsoon circulation patterns\n\n**Applications:**\n- Climate dynamics research\n- Weather pattern analysis\n- Atmospheric wave propagation studies\n- Tropical cyclone formation analysis\n\n### 🔧 Skyborn Gridfill Submodule - Data Interpolation\n\nThe Skyborn `gridfill` submodule provides advanced interpolation techniques for filling missing data in atmospheric and climate datasets:\n\n![Gridfill Missing Data Interpolation](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/gridfill_demo_result_readme.png)\n\n**Key Features:**\n- **Poisson-based Interpolation**: Physically consistent gap filling\n- **Preserves Data Patterns**: Maintains spatial correlations and gradients\n- **Multiple Methods Available**:\n  - Basic Poisson solver\n  - High-precision iterative refinement\n  - Zonal initialization options\n  - Relaxation parameter tuning\n\n**Applications:**\n- Satellite data gap filling\n- Model output post-processing\n- Climate data reanalysis\n- Quality control for observational datasets\n\nThe example above demonstrates filling gaps in global precipitation data, where the algorithm successfully reconstructs missing values while preserving the underlying meteorological patterns.\n\n### Curly Vector Plotting\n\nSkyborn provides an NCL-like `curly_vector` renderer for atmospheric wind fields while keeping a Matplotlib and Cartopy compatible API.\n\n![Curly Vector WRF Example](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/wrf_curly_vector_integration_direction_density08_ref10.png)\n\n**Key Capabilities:**\n- **NCL-like Curved Vectors**: Curved tails and lighter arrow heads for cleaner large-scale flow visualization\n- **Matplotlib-Compatible API**: Works with standard axes and Cartopy projections without switching to a separate plotting stack\n- **Flexible Inputs**: Supports regular lat-lon grids, xarray datasets, and curvilinear grids such as WRF mass-grid wind fields\n- **Vertical Cross-Section Support**: Supports latitude-pressure and similar vertical profile plots through the same `curly_vector` API\n- **Projection-Aware Rendering**: Supports global rendering with different `central_longitude` settings and Cartopy projections\n\nSkyborn `curly_vector` also supports vertical cross-section rendering, for example latitude-pressure plots using meridional wind and scaled omega:\n\n![Curly Vector Vertical Profile Example](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/hadley_msf_v_omega_ncl_curly.png)\n\n**Minimal Example:**\n```python\nimport cartopy.crs as ccrs\nimport matplotlib.pyplot as plt\nfrom skyborn.plot import curly_vector\n\nfig = plt.figure(figsize=(12, 6))\nax = plt.axes(projection=ccrs.Robinson(central_longitude=180))\n\ncurly_vector(\n    ds,\n    x=\"longitude\",\n    y=\"latitude\",\n    u=\"u\",\n    v=\"v\",\n    ax=ax,\n    transform=ccrs.PlateCarree(),\n    density=0.9,\n    color=\"black\",\n    arrowstyle=\"-\u003e\",\n    linewidth=1.2,\n    arrowsize=1.2,\n    zorder=3,\n    integration_direction='both',\n    ref_magnitude=30.0,\n    ref_length=0.1,\n)\nax.coastlines()\nax.set_global()\n```\n\n## Performance Benchmarks\n\n### 🚀 Windspharm Performance\n\nThe Skyborn `windspharm` submodule delivers **~25% performance improvement** over standard implementations through modernized Fortran code and optimized algorithms:\n\n![Windspharm Performance Comparison](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/windspharm_performance_comparison.png)\n\n**Key Performance Metrics:**\n- **Vorticity Calculation**: ~25% faster\n- **Divergence Calculation**: ~25% faster\n- **Helmholtz Decomposition**: ~25% faster\n- **Streamfunction/Velocity Potential**: ~25% faster\n\n### ⚡ GPI Module Performance\n\nThe Genesis Potential Index (GPI) module achieves **dramatic speedups** through vectorized Fortran implementation and native 3D processing:\n\n![GPI Speed Comparison](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/gpi_speed_comparison.png)\n\n**Performance Highlights:**\n- **About 25x faster** than point-by-point implementations\n- Processes entire atmospheric grids in seconds\n- Native multi-dimensional support (3D/4D data)\n\n![GPI Global Distribution](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/gpi_global_distribution.png)\n\n**Accuracy Validation:**\n- Correlation is effectively 1.0 against the reference implementation\n- RMSE is now on the order of **1e-4** for the core PI outputs, with very small overall error\n- Log-decomposition diagnostics also remain tightly matched to the updated `tcpyPI` results\n\n![GPI Scatter Comparison](https://raw.githubusercontent.com/QianyeSu/Skyborn/main/docs/source/images/gpi_scatter_comparison.png)\n\n## 📖 Citation\n\nIf you use Skyborn in your research, please cite it using the following format:\n\n```bibtex\n@software{su2025skyborn,\n  author = {Su, Qianye},\n  title = {Skyborn: Climate Data Analysis Toolkit},\n  year = {2025},\n  doi = {10.5281/zenodo.18075252},\n  url = {https://doi.org/10.5281/zenodo.18075252}\n}\n```\n\nOr in text:\n\u003e Su, Q. (2025). Skyborn: Climate Data Analysis Toolkit. Zenodo. https://doi.org/10.5281/zenodo.18075252\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.18075252"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/337467","html_url":"https://ost.ecosyste.ms/projects/337467"}