{"id":296664,"name":"Skyrim","description":"Allows you to run any large weather model with a consumer grade GPU.","url":"https://github.com/secondlaw-ai/skyrim","last_synced_at":"2026-07-22T06:03:37.420Z","repository":{"id":234968961,"uuid":"782569389","full_name":"secondlaw-ai/skyrim","owner":"secondlaw-ai","description":"🌎 🤝 AI weather models united","archived":false,"fork":false,"pushed_at":"2025-04-05T21:01:16.000Z","size":29847,"stargazers_count":251,"open_issues_count":7,"forks_count":11,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-06-25T17:03:42.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/secondlaw-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2024-04-05T15:04:52.000Z","updated_at":"2026-06-12T21:52:31.000Z","dependencies_parsed_at":"2024-05-11T08:48:04.143Z","dependency_job_id":"3e59b821-1d11-4b24-a024-8018d4b75bd9","html_url":"https://github.com/secondlaw-ai/skyrim","commit_stats":{"total_commits":151,"total_committers":8,"mean_commits":18.875,"dds":0.3112582781456954,"last_synced_commit":"143b0e80b2615d9d7fba2ddfa38eb5195e62e3aa"},"previous_names":["secondlaw-ai/skyrim"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/secondlaw-ai/skyrim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlaw-ai","download_url":"https://codeload.github.com/secondlaw-ai/skyrim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35020872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"secondlaw-ai","name":"Second Law","uuid":"167584047","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/167584047?v=4","repositories_count":1,"last_synced_at":"2024-04-21T22:39:22.487Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/secondlaw-ai","funding_links":[],"total_stars":17,"followers":1,"following":0,"created_at":"2024-04-21T22:39:22.493Z","updated_at":"2024-04-21T22:39:22.493Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlaw-ai","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlaw-ai/repositories"},"packages":[{"id":9891972,"name":"skyrim","ecosystem":"pypi","description":"AI weather models united.","homepage":"https://github.com/secondlaw-ai/skyrim","licenses":"MIT License","normalized_licenses":["MIT"],"repository_url":"https://github.com/secondlaw-ai/skyrim","keywords_array":["pytorch","weather","forecasting","ai","ml","xarray","dl"],"namespace":null,"versions_count":3,"first_release_published_at":"2024-05-06T21:14:58.000Z","latest_release_published_at":"2024-05-06T23:07:20.000Z","latest_release_number":"0.0.2","last_synced_at":"2026-07-07T23:01:08.970Z","created_at":"2024-05-06T21:16:19.627Z","updated_at":"2026-07-07T23:03:40.305Z","registry_url":"https://pypi.org/project/skyrim/","install_command":"pip install skyrim --index-url https://pypi.org/simple","documentation_url":"https://skyrim.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: MIT License","Programming Language :: Python","Programming Language :: Python :: 3"],"normalized_name":"skyrim","project_status":null},"repo_metadata":{"id":234968961,"uuid":"782569389","full_name":"secondlaw-ai/skyrim","owner":"secondlaw-ai","description":"🌎 🤝 AI weather models united","archived":false,"fork":false,"pushed_at":"2025-04-05T21:01:16.000Z","size":29847,"stargazers_count":251,"open_issues_count":7,"forks_count":11,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-06-25T17:03:42.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/secondlaw-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2024-04-05T15:04:52.000Z","updated_at":"2026-06-12T21:52:31.000Z","dependencies_parsed_at":"2024-05-11T08:48:04.143Z","dependency_job_id":"3e59b821-1d11-4b24-a024-8018d4b75bd9","html_url":"https://github.com/secondlaw-ai/skyrim","commit_stats":{"total_commits":151,"total_committers":8,"mean_commits":18.875,"dds":0.3112582781456954,"last_synced_commit":"143b0e80b2615d9d7fba2ddfa38eb5195e62e3aa"},"previous_names":["secondlaw-ai/skyrim"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/secondlaw-ai/skyrim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlaw-ai","download_url":"https://codeload.github.com/secondlaw-ai/skyrim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35020872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"secondlaw-ai","name":"Second Law","uuid":"167584047","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/167584047?v=4","repositories_count":1,"last_synced_at":"2024-04-21T22:39:22.487Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/secondlaw-ai","funding_links":[],"total_stars":17,"followers":1,"following":0,"created_at":"2024-04-21T22:39:22.493Z","updated_at":"2024-04-21T22:39:22.493Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlaw-ai","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secondlaw-ai/repositories"},"tags":[{"name":"0.0.2","sha":"1fb501cba0969451eb80442a9846e3be4fe0a51f","kind":"tag","published_at":"2024-05-06T23:06:41.000Z","download_url":"https://codeload.github.com/secondlaw-ai/skyrim/tar.gz/0.0.2","html_url":"https://github.com/secondlaw-ai/skyrim/releases/tag/0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/secondlaw-ai/skyrim@0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/tags/0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/tags/0.0.2/manifests"},{"name":"0.0.1","sha":"2f5cc817de23213a976dfc402323a1e259f9fe4a","kind":"tag","published_at":"2024-05-06T21:29:02.000Z","download_url":"https://codeload.github.com/secondlaw-ai/skyrim/tar.gz/0.0.1","html_url":"https://github.com/secondlaw-ai/skyrim/releases/tag/0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/secondlaw-ai/skyrim@0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/tags/0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/tags/0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-07-07T23:03:40.305Z","dependent_packages_count":0,"downloads":50,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":62.25435754506098,"dependent_packages_count":9.436985371098725,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":35.84567145807985},"purl":"pkg:pypi/skyrim","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/skyrim","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/skyrim","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/skyrim/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-01-23T14:01:31.477Z","issues_count":17,"pull_requests_count":45,"avg_time_to_close_issue":2280797.4,"avg_time_to_close_pull_request":292062.53658536583,"issues_closed_count":10,"pull_requests_closed_count":41,"pull_request_authors_count":3,"issue_authors_count":7,"avg_comments_per_issue":0.5882352941176471,"avg_comments_per_pull_request":0.28888888888888886,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":33171.0,"past_year_avg_time_to_close_pull_request":20.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/issues","maintainers":[{"login":"m13uz","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/m13uz"},{"login":"efesurekli","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/efesurekli"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyrim/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyrim/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyrim/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyrim/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyrim/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/skyrim/codemeta","maintainers":[{"uuid":"efe2lw","login":"efe2lw","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/efe2lw/","role":null,"created_at":"2024-05-06T21:16:21.172Z","updated_at":"2024-05-06T21:16:21.172Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/efe2lw/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":911327,"maintainers_count":391013,"namespaces_count":0,"keywords_count":289179,"github":"pypi","metadata":{"funded_packages_count":54301},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-06-10T05:13:28.296Z","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":1638542,"full_name":"secondlaw-ai/skyrim","default_branch":"master","total_commits":158,"total_committers":6,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":26.333333333333332,"dds":0.31645569620253167,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-07-10T00:07:07.160Z","last_synced_commit":"c2ed4fd69f5c3ed3062731047c1c6cf0b6cf4d05","created_at":"2024-07-23T03:30:16.885Z","updated_at":"2026-07-10T00:06:25.164Z","committers":[{"name":"m13uz","email":"mur4t.uzun@gmail.com","login":"m13uz","count":108},{"name":"efesurekli","email":"e.surekli@gmail.com","login":"efesurekli","count":40},{"name":"Ubuntu","email":"ubuntu@ip-172-31-33-152.eu-west-1.compute.internal","login":null,"count":7},{"name":"Rasit Mete Esrefoglu","email":"rasitmete@gmail.com","login":"rasitmete","count":1},{"name":"efx","email":"efe@2lw.ai","login":null,"count":1},{"name":"Rasit Mete Esrefoglu","email":"rasitmete@Rasits-MacBook-Pro-14.local","login":null,"count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-20T00:00:13.349Z","repositories_count":6384736,"commits_count":867576412,"contributors_count":35879821,"owners_count":1227248,"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":"secondlaw-ai/skyrim","html_url":"https://github.com/secondlaw-ai/skyrim","last_synced_at":"2026-01-23T14:01:31.477Z","status":"error","issues_count":17,"pull_requests_count":45,"avg_time_to_close_issue":2280797.4,"avg_time_to_close_pull_request":292062.53658536583,"issues_closed_count":10,"pull_requests_closed_count":41,"pull_request_authors_count":3,"issue_authors_count":7,"avg_comments_per_issue":0.5882352941176471,"avg_comments_per_pull_request":0.28888888888888886,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":33171.0,"past_year_avg_time_to_close_pull_request":20.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2024-07-16T00:12:52.203Z","updated_at":"2026-01-23T14:01:31.477Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/secondlaw-ai%2Fskyrim/issues","issue_labels_count":{"good first issue":2,"enhancement":2,"documentation":1,"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":10,"NONE":7},"pull_request_author_associations_count":{"COLLABORATOR":38,"CONTRIBUTOR":4,"NONE":3},"issue_authors":{"m13uz":6,"efesurekli":4,"sunfanglin":2,"christegho":2,"NickGeneva":1,"nishadhka":1,"dmvinson":1},"pull_request_authors":{"m13uz":23,"efesurekli":15,"rasitmete":7},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-20T00:00:19.754Z","repositories_count":14860158,"issues_count":32109622,"pull_requests_count":105667211,"authors_count":11351296,"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":{},"past_year_issue_authors":{"sunfanglin":2},"past_year_pull_request_authors":{},"maintainers":[{"login":"m13uz","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/m13uz"},{"login":"efesurekli","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/efesurekli"}],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":4,"ForkEvent":3,"IssuesEvent":2,"WatchEvent":62,"IssueCommentEvent":1,"PushEvent":6,"CreateEvent":2},"last_year":{"WatchEvent":13}},"keywords":[],"dependencies":[{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2024-04-27T00:38:00.808Z","updated_at":"2024-04-27T00:38:00.808Z","repository_link":"https://github.com/secondlaw-ai/skyrim/blob/master/Dockerfile","dependencies":[{"id":17742294453,"package_name":"pytorch/pytorch","ecosystem":"docker","requirements":"2.2.2-cuda11.8-cudnn8-devel","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2024-04-27T00:38:00.943Z","updated_at":"2024-04-27T00:38:00.943Z","repository_link":"https://github.com/secondlaw-ai/skyrim/blob/master/requirements.txt","dependencies":[{"id":17742294466,"package_name":"jax","ecosystem":"pypi","requirements":"==0.4.16","direct":true,"kind":"runtime","optional":false},{"id":17742294467,"package_name":"pytest-regtest","ecosystem":"pypi","requirements":"==1.5.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-04-29T18:48:38.195Z","updated_at":"2024-04-29T18:48:38.195Z","repository_link":"https://github.com/secondlaw-ai/skyrim/blob/master/pyproject.toml","dependencies":[]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2024-04-29T18:48:38.377Z","updated_at":"2024-04-29T18:48:38.377Z","repository_link":"https://github.com/secondlaw-ai/skyrim/blob/master/setup.py","dependencies":[]}],"score":11.276544686873997,"created_at":"2024-07-16T00:12:42.232Z","updated_at":"2026-07-22T06:03:37.421Z","avatar_url":"https://github.com/secondlaw-ai.png","language":"Jupyter Notebook","category":"Atmosphere","sub_category":"Meteorological Observation and Forecast","monthly_downloads":50,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./assets/skyrim_banner_1.png\"/\u003e\n    \u003cimg height=\"auto\" width=\"90%\" src=\"./assets/skyrim_banner_1.png\"/\u003e\n  \u003c/picture\u003e\n \u003cbr\u003e\u003c/br\u003e\n\n\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n\n🔥 Run state-of-the-art large weather models in less than 2 minutes.\n\n🌪️ Ensemble and fine-tune (soon) to push the limits on forecasting.\n\n🌎 Simulate extreme weather events!\n\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Static Badge](https://img.shields.io/badge/Run-On_Modal-green)](https://github.com/secondlaw-ai/skyrim?tab=readme-ov-file#forecasting-using-modal-recommended)\n[![PyPI - Version](https://img.shields.io/pypi/v/skyrim)](https://pypi.org/project/Skyrim/)\n[![Twitter Follow](https://img.shields.io/twitter/follow/secondlaw_ai)](https://twitter.com/secondlaw_ai)\n![GitHub Repo stars](https://img.shields.io/github/stars/secondlaw-ai/skyrim)\n[![GitHub License](https://img.shields.io/github/license/secondlaw-ai/skyrim)](https://github.com/secondlaw-ai/skyrim/blob/master/LICENSE)\n\n\u003c/div\u003e\n\u003c/div\u003e\n\n# Getting Started\n\nSkyrim allows you to run any large weather model with a consumer grade GPU.\n\nUntil very recently, weather forecasts were run in 100K+ CPU HPC clusters, solving massive numerical weather models (NWP). Within last 3 years, open-source foundation models trained on weather simulation datasets surpassed the skill level of these numerical models.\n\nOur goal is to make these models accessible by providing a well maintained infrastructure.\n\n## Installation\n\nClone the repo, set an env (either conda or venv) and then run\n\n```bash\ngit clone https://github.com/secondlaw-ai/skyrim.git\ncd skyrim\npip install .\n```\n\nDepending on your use-case (i.e. AWS storage needs or CDS initial conditions), you may need to fill in a `.env` by `cp .env.example .env`.\n\n## Running Your First Forecast\n\nSkyrim currently supports either running on on [modal](#forecasting-using-modal), on a container –for instance [vast.ai](#vastai-setup) or [bare metal](#bare-metal)(you will need an NVIDIA GPU with at least 24GB and installation can be long).\n\nModal is the fastest option, it will run forecasts \"serverless\" so you don't have to worry about the infrastructure.\n\n### Forecasting using Modal (Recommended):\n\nYou will need a [modal](https://modal.com/) key. Run `modal setup` and set it up (\u003c1 min).\n\nModal comes with $30 free credits and a single forecast costs about 2 cents as of May 2024.\n\nOnce you are all good to go, then run:\n\n```bash\nmodal run skyrim/modal/forecast.py\n```\n\nThis by default uses `pangu` model to forecast for the next 6 hours, starting from yesterday. It gets initial conditions from [NOAA GFS](https://en.wikipedia.org/wiki/Global_Forecast_System) and writes the forecast to a modal volume. You can choose different dates and weather models as shown in [here](#run-forecasts-with-different-models-initial-conditions-dates).\n\nAfter you have your forecast, you can explore it by running a notebook (without GPU, so cheap) in modal:\n\n```bash\nmodal run skyrim/modal/forecast.py::run_analysis\n```\n\nThis will output a jupyter notebook link that has access to the full forecast. In the notebook, to read the forecast you can run the following:\n```\nimport xarray as xr\n# by default all forecasts are saved under /skyrim/outputs in the modal store\nforecast = xr.open_zarr('/skyrim/outputs/[forecast_id]')\n# to visualize\nforecast.sel(channel='t2m').isel(time=0).plot()\n```\n\nOnce you are done, best is to delete the volume as a daily forecast is about 2GB:\n\n```bash\nmodal volume rm forecasts /[forecast_id] -r\n```\n\nIf you don't want to use modal volume, and want to aggregate results in a bucket (currently only s3), you just have to run:\n\n```bash\nmodal run skyrim/modal/forecast.py --output_dir s3://skyrim-dev\n```\n\nwhere `skyrim-dev` is the bucket that you want to aggregate the forecasts. By default, `zarr` format is used to store in AWS/GCP so you can read and move only the parts of the forecasts that you need.\n\nSee [examples](#examples) section for more.✌️\n\n### Forecasting with your own GPUs:\n\nIf you are running on your own GPUs, installed either via [bare metal](#bare-metal) or via containers such as [vast.ai](#vast-ai-setup) then you can directly get forecasts as such:\n\n```python\nfrom skyrim.core import Skyrim\n\nmodel = Skyrim(\"pangu\")\nfinal_pred, pred_paths = model.predict(\n    date=\"20240507\", # format: YYYYMMDD, start date of the forecast\n    time=\"0000\",  # format: HHMM, start time of the forecast\n    lead_time=24 * 7, # in hours, next week\n    save=True,\n)\n```\n\nTo visualise the forecast:\n\n```python\nfrom skyrim.libs.plotting import visualize_rollout\nvisualize_rollout(output_paths=pred_paths, channels=[\"u10m\", \"v10m\"], output_dir=\".\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./notebooks/pangu_20240507_00:00_to_20240514_00:00_u10m.gif\" width=\"30%\" /\u003e\n  \u003cimg src=\"./notebooks/pangu_20240507_00:00_to_20240514_00:00_v10m.gif\" width=\"30%\" /\u003e \n\u003c/p\u003e\n\nor you can still use the command line:\n\n```bash\nforecast -m graphcast --lead_time 24 --initial_conditions cds --date 20240330`\n```\n\nSee [examples](#examples) section for more.✌️\n\n#### vast.ai setup\n\n1. Find a machine you like RTX3090 or above with at least 24GB memory. Make sure you have good bandwith (+500MB/s).\n2. Select the instance template from [here](https://cloud.vast.ai/?ref_id=128656\u0026template_id=1883215a8487ec6ea9ad68a7cdb38c5e).\n3. Then clone the repo and `pip install . \u0026\u0026 pip install -r requirements.txt`\n\n#### Bare metal\n\n1. You will need a NVIDIA GPU with at least 24GB. We are working on quantization as well so that in the future it would be possible to run simulations with much less compute. Have an environment set with Python == 3.10, Pytorch =\u003e 2.2.2 and CUDA +12.x. Or if easier start with the docker image: `nvcr.io/nvidia/pytorch:24.01-py3`.\n2. Install conda ([miniconda](https://docs.anaconda.com/free/miniconda/miniconda-install/) for instance). Then run in that environment:\n\n```bash\nconda create -y -n skyenv python=3.10\nconda activate skyenv\nconda install eccodes python-eccodes -c conda-forge\npip install . \u0026\u0026 pip install -r requirements.txt\n```\n\n## Examples\n\nFor each run, you will first pull the initial conditions of your interest (most recent one by default), then the model will run for the desired time step. Initial conditions are pulled from GFS, ECMWF IFS (Operational) or CDS (ERA5 Reanalysis Dataset).\n\nIf you are using CDS initial conditions, then you will need a [CDS](https://cds.climate.copernicus.eu/user/login?destination=%2Fcdsapp%23!%2Fdataset%2Freanalysis-era5-single-levels) API key in your `.env` –`cp .env.example` and paste.\n\nAll examples can be run using `forecast` or `modal run skyrim/modal/forecast.py`. You just have to make snake case options kebab-case -i.e. `model_name` to `model-name`.\n\n### Example 1: Pick models, initial conditions, lead times\n\nForecast using `graphcast` model, with ECMWF IFS initial conditions, starting from 2024-04-30T00:00:00 and with a lead time of a week (forecast for the next week, i.e. 168 hours):\n\n```bash\nforecast --model_name graphcast --initial_conditions ifs --date 20240403 -output_dir s3://skyrim-dev --lead_time 168\n```\n\nor in modal:\n\n```bash\nmodal run skyrim/modal/forecast.py --model-name graphcast --initial-conditions ifs --date 20240403 --output-dir s3://skyrim-dev --lead-time 168\n```\n\n### Example 2: Store in AWS and then read only what you need\n\nSay you re interested in wind at 37.0344° N, 27.4305 E to see if we can kite tomorrow. If we need wind speed, we need to pull wind vectors at about surface level, these are u10m and v10m [components](http://colaweb.gmu.edu/dev/clim301/lectures/wind/wind-uv) of wind. Here is how you go about it:\n\n```bash\nmodal run skyrim/modal/forecast.py --output-dir s3://[your_bucket]/[optional_path]  --lead-time 24\n```\n\nThen you can read the forecast as below:\n\n```python\nimport xarray as xr\nimport pandas as pd\nzarr_store_path = \"s3://[your_bucket]/[forecast_id]\"\nforecast = xr.open_dataset(zarr_store_path, engine='zarr') # reads the metadata\ndf = forecast.sel(lat=37.0344, lon=27.4305, channel=['u10m', 'v10m']).to_pandas()\n```\n\nNormally each day is about 2GB but using zarr_store you will only fetch what you need.✌️\n\n### Example 3: Get predictions in Python\n\nAssuming you have a local gpu set up ready to roll:\n\n```python\nfrom skyrim.core import Skyrim\n\nmodel = Skyrim(\"pangu\")\nfinal_pred, pred_paths = model.predict(\n    date=\"20240501\", # format: YYYYMMDD, start date of the forecast\n    time=\"0000\",  # format: HHMM, start time of the forecast\n    lead_time=12, # in hours\n    save=True,\n)\nakyaka_coords = {\"lat\": 37.0557, \"lon\": 28.3242}\nwind_speed = final_pred.wind_speed(**akyaka_coords) * 1.94384 # m/s to knots\nprint(f\"Wind speed at Akyaka: {wind_speed:.2f} knots\")\n\n```\n\n## Supported initial conditions and caveats\n\n1. NOAA GFS\n2. ECMWF IFS\n3. ERA5 Re-analysis\n\n## Large weather models supported\n\nCurrently supported models are:\n\n- [x] [Graphcast](https://arxiv.org/abs/2212.12794)\n- [x] [Pangu](https://arxiv.org/abs/2211.02556)\n- [x] [Fourcastnet](https://arxiv.org/abs/2202.11214) (v1 \u0026 v2)\n- [x] [DLWP](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2020MS002109)\n- [x] [(NWP) ECMWF IFS (HRES)](https://www.ecmwf.int/en/forecasts/documentation-and-support/changes-ecmwf-model) -- [notebook](https://github.com/secondlaw-ai/skyrim/blob/master/notebooks/02_ifs_model.ipynb)\n- [x] [(NWP) NOAA GFS](https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast) -- [notebook](https://github.com/secondlaw-ai/skyrim/blob/master/notebooks/03_gfs_model.ipynb)\n- [x] [(NWP) ECMWF ENS](https://confluence.ecmwf.int/display/FUG/Section+2.1.2.1+ENS+-+Ensemble+Forecasts)\n- [ ] [(NWP) ICON](https://www.dwd.de/EN/ourservices/nwp_forecast_data/nwp_forecast_data.html)\n- [ ] [(NWP) GEFS](https://www.ncei.noaa.gov/products/weather-climate-models/global-ensemble-forecast)\n- [ ] [ECMWF AIFS](https://arxiv.org/pdf/2406.01465)\n- [ ] [Aurora](https://github.com/microsoft/aurora)\n- [X] [FuXi](https://www.nature.com/articles/s41612-023-00512-1)\n- [X] [FengWu](https://arxiv.org/pdf/2304.02948)\n\n### License\n\nFor detailed information regarding licensing, please refer to the license details provided on each model's main homepage, which we link to from each of the corresponding components within our repository.\n\n- **Pangu Weather** : [Original](https://github.com/198808xc/Pangu-Weather), [ECMWF](https://github.com/ecmwf-lab/ai-models-panguweather), [NVIDIA](https://github.com/NVIDIA/earth2mip)\n- **FourcastNet** : [Original](https://github.com/NVlabs/FourCastNet), [ECMWF](https://github.com/ecmwf-lab/ai-models-fourcastnetv2),[NVIDIA](https://github.com/NVIDIA/earth2mip)\n- **Graphcast** : [Original](https://github.com/google-deepmind/graphcast), [ECMWF](https://github.com/ecmwf-lab/ai-models-graphcast), [NVIDIA](https://github.com/NVIDIA/earth2mip)\n- **Fuxi**: [Original](https://github.com/tpys/FuXi)\n- **FengWu** [Original](https://github.com/OpenEarthLab/FengWu)\n\n## Roadmap\n\n- [x] ensemble prediction\n- [x] interface to fetch real-time NWP-based predictions, e.g. via ECMWF API.\n- [ ] global model performance comparison across various regions and parameters.\n- [ ] finetuning api that trains a downstream model on top of features coming from a global/foundation model, that is optimized wrt to a specific criteria and region\n- [ ] model quantization and its effect on model efficiency and accuracy.\n\nThis README will be updated regularly to reflect the progress and integration of new models or features into the library. It serves as a guide for internal development efforts and aids in prioritizing tasks and milestones.\n\n## Development\n\nAll in [here](./CONTRIBUTING.md) ✌️\n\n## Acknowledgements\n\nSkyrim is built on top of NVIDIA's [earth2mip](https://github.com/NVIDIA/earth2mip), [earth2studio](https://github.com/NVIDIA/earth2studio), and ECMWF's [ai-models](https://github.com/ecmwf-lab/ai-models). Definitely check them out!\n\n## Other Useful Resources\n\n- [🌍 Awesome Large Weather Models (LWMs) | AI for Earth (AI4Earth) | AI for Science (AI4Science)](http://github.com/jaychempan/Awesome-LWMs)\n- [Climate Data Store](https://cds.climate.copernicus.eu/)\n- [Open Climate Fix](https://github.com/openclimatefix)\n- [Herbie](https://github.com/blaylockbk/Herbie)\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/296664","html_url":"https://ost.ecosyste.ms/projects/296664"}