Metadata-Version: 2.5
Name: earth2studio
Version: 0.18.0
Summary: Open-source deep-learning framework for exploring, building and deploying AI weather/climate workflows.
Project-URL: Homepage, https://github.com/NVIDIA/earth2studio
Project-URL: Documentation, https://nvidia.github.io/earth2studio
Project-URL: Issues, https://github.com/NVIDIA/earth2studio/issues
Project-URL: Changelog, https://github.com/NVIDIA/earth2studio/blob/main/CHANGELOG.md
Author: NVIDIA PhysicsNeMo Team
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Environment :: GPU
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Typing :: Typed
Requires-Python: <3.15,>=3.11
Requires-Dist: cftime
Requires-Dist: fsspec>=2024.2.0
Requires-Dist: gcsfs
Requires-Dist: h5netcdf>=1.0.0
Requires-Dist: h5py>=3.2.0
Requires-Dist: huggingface-hub>=0.27.0
Requires-Dist: loguru
Requires-Dist: netcdf4<1.7.3,>=1.6.4
Requires-Dist: obspec>=0.1
Requires-Dist: obstore>=0.8
Requires-Dist: pandas
Requires-Dist: pyarrow>=14.0.0
Requires-Dist: pygrib
Requires-Dist: python-dotenv
Requires-Dist: rich
Requires-Dist: s3fs>=2023.5.0
Requires-Dist: torch>=2.5.0
Requires-Dist: tqdm>=4.65.0
Requires-Dist: xarray[parallel]>=2023.1.0
Requires-Dist: zarr>=3.1.3
Provides-Extra: ace2
Requires-Dist: fme; extra == 'ace2'
Requires-Dist: pandas>=2.3.2; extra == 'ace2'
Requires-Dist: scipy>=1.15.2; extra == 'ace2'
Provides-Extra: aifs
Requires-Dist: anemoi-models==0.5.1; extra == 'aifs'
Requires-Dist: earthkit-regrid==0.4.0; extra == 'aifs'
Requires-Dist: ecmwf-opendata>=0.3.29; extra == 'aifs'
Requires-Dist: flash-attn; extra == 'aifs'
Provides-Extra: aifs2
Requires-Dist: anemoi-models<0.9.5,>=0.9.3; extra == 'aifs2'
Requires-Dist: earthkit-regrid>=0.5.1; extra == 'aifs2'
Requires-Dist: ecmwf-opendata>=0.3.29; extra == 'aifs2'
Requires-Dist: flash-attn; extra == 'aifs2'
Requires-Dist: torch-geometric>=2.6.0; extra == 'aifs2'
Provides-Extra: aifs2ens
Requires-Dist: anemoi-models==0.11.2; extra == 'aifs2ens'
Requires-Dist: earthkit-regrid>=0.5.1; extra == 'aifs2ens'
Requires-Dist: ecmwf-opendata>=0.3.29; extra == 'aifs2ens'
Requires-Dist: flash-attn; extra == 'aifs2ens'
Requires-Dist: torch-geometric>=2.6.0; extra == 'aifs2ens'
Provides-Extra: aifsens
Requires-Dist: anemoi-models==0.5.1; extra == 'aifsens'
Requires-Dist: earthkit-regrid==0.4.0; extra == 'aifsens'
Requires-Dist: ecmwf-opendata>=0.3.29; extra == 'aifsens'
Requires-Dist: flash-attn; extra == 'aifsens'
Provides-Extra: all
Requires-Dist: aiofiles>=23.0.0; extra == 'all'
Requires-Dist: aiohttp-retry>=2.8.3; extra == 'all'
Requires-Dist: aiohttp>=3.9.0; extra == 'all'
Requires-Dist: arraylake>=1.0.0; (python_version >= '3.12') and extra == 'all'
Requires-Dist: azure-identity>=1.15.0; extra == 'all'
Requires-Dist: azure-storage-blob>=12.19.0; extra == 'all'
Requires-Dist: cbottle; (python_full_version >= '3.12') and extra == 'all'
Requires-Dist: cdsapi>=0.7.5; extra == 'all'
Requires-Dist: cfgrib>=0.9.10.3; extra == 'all'
Requires-Dist: climate-learn; extra == 'all'
Requires-Dist: cryptography>=41.0.0; extra == 'all'
Requires-Dist: cucim-cu13>=25.4.0; extra == 'all'
Requires-Dist: cudf-cu13>=26.2.0; extra == 'all'
Requires-Dist: cupy-cuda13x; extra == 'all'
Requires-Dist: dm-haiku>=0.0.14; extra == 'all'
Requires-Dist: dm-tree>=0.1.9; extra == 'all'
Requires-Dist: earth2grid; extra == 'all'
Requires-Dist: eccodes>=2.39.2; extra == 'all'
Requires-Dist: eccodeslib>=2.39.2; extra == 'all'
Requires-Dist: ecmwf-opendata>=0.3.29; extra == 'all'
Requires-Dist: einops; extra == 'all'
Requires-Dist: einops>=0.8.1; extra == 'all'
Requires-Dist: eumdac>=3.1.0; extra == 'all'
Requires-Dist: fastapi>=0.104.0; extra == 'all'
Requires-Dist: flax>=0.10.6; extra == 'all'
Requires-Dist: gribberish>=1.5.0; (python_version >= '3.12') and extra == 'all'
Requires-Dist: hiredis>=2.0.0; extra == 'all'
Requires-Dist: httpx>=0.25.0; extra == 'all'
Requires-Dist: hydra-core>=1.3.0; extra == 'all'
Requires-Dist: hydra-core>=1.3.2; extra == 'all'
Requires-Dist: icechunk>=2.0.0; (python_version >= '3.12') and extra == 'all'
Requires-Dist: importlib-metadata; extra == 'all'
Requires-Dist: intake-esgf>=2026.1.26; (python_version >= '3.12') and extra == 'all'
Requires-Dist: jax[cuda13]>=0.4.26; extra == 'all'
Requires-Dist: makani; extra == 'all'
Requires-Dist: microsoft-aurora>=2.0.0; extra == 'all'
Requires-Dist: moviepy; extra == 'all'
Requires-Dist: multi-storage-client>=0.44.0; extra == 'all'
Requires-Dist: natten; (python_version < '3.14') and extra == 'all'
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'all'
Requires-Dist: nvidia-physicsnemo>=1.3.0; extra == 'all'
Requires-Dist: nvidia-physicsnemo>=2.0; extra == 'all'
Requires-Dist: nvidia-physicsnemo>=2.0; (python_version < '3.14') and extra == 'all'
Requires-Dist: nvidia-physicsnemo>=2.1.0; extra == 'all'
Requires-Dist: nvidia-physicsnemo>=2.2.0a0; extra == 'all'
Requires-Dist: nvtx>=0.2.11; extra == 'all'
Requires-Dist: omegaconf>=2.3.0; extra == 'all'
Requires-Dist: onnx; extra == 'all'
Requires-Dist: onnxruntime-gpu>=1.21.0; extra == 'all'
Requires-Dist: onnxscript; extra == 'all'
Requires-Dist: pcodec>=1.0.2; (python_version >= '3.12') and extra == 'all'
Requires-Dist: prometheus-client>=0.17.0; extra == 'all'
Requires-Dist: pybufrkit>=0.2.22; extra == 'all'
Requires-Dist: pydantic>=2.0.0; extra == 'all'
Requires-Dist: pynvml>=12.0.0; extra == 'all'
Requires-Dist: pyproj>=3.7.1; extra == 'all'
Requires-Dist: pystac-client>=0.9.0; extra == 'all'
Requires-Dist: python-dotenv>=1.0.0; extra == 'all'
Requires-Dist: python-multipart>=0.0.6; extra == 'all'
Requires-Dist: rasterio>=1.3.9; extra == 'all'
Requires-Dist: redis>=5.0.0; extra == 'all'
Requires-Dist: requests>=2.25.0; extra == 'all'
Requires-Dist: rioxarray>=0.15.5; extra == 'all'
Requires-Dist: rq>=1.15.0; extra == 'all'
Requires-Dist: ruamel-yaml>=0.18.10; extra == 'all'
Requires-Dist: ruamel-yaml>=0.18.14; extra == 'all'
Requires-Dist: scikit-image>=0.25.2; extra == 'all'
Requires-Dist: scipy>=1.10.0; extra == 'all'
Requires-Dist: scipy>=1.15.2; extra == 'all'
Requires-Dist: timm; extra == 'all'
Requires-Dist: torch-harmonics; extra == 'all'
Requires-Dist: torch-harmonics>=0.7.4; extra == 'all'
Requires-Dist: torch-harmonics>=0.8.0; extra == 'all'
Requires-Dist: types-redis; extra == 'all'
Requires-Dist: urllib3>=1.26.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.24.0; extra == 'all'
Requires-Dist: weathernext; (python_version >= '3.12') and extra == 'all'
Provides-Extra: atlas
Requires-Dist: einops; extra == 'atlas'
Requires-Dist: natten; (python_version < '3.14') and extra == 'atlas'
Requires-Dist: nvidia-physicsnemo>=1.3.0; extra == 'atlas'
Requires-Dist: timm; extra == 'atlas'
Requires-Dist: torch-harmonics; extra == 'atlas'
Provides-Extra: aurora
Requires-Dist: microsoft-aurora>=2.0.0; extra == 'aurora'
Provides-Extra: cbottle
Requires-Dist: cbottle; (python_full_version >= '3.12') and extra == 'cbottle'
Requires-Dist: earth2grid; extra == 'cbottle'
Provides-Extra: climatenet
Provides-Extra: corrdiff
Requires-Dist: einops>=0.8.1; extra == 'corrdiff'
Requires-Dist: nvidia-physicsnemo>=2.0; extra == 'corrdiff'
Requires-Dist: nvtx>=0.2.11; extra == 'corrdiff'
Requires-Dist: scipy>=1.15.2; extra == 'corrdiff'
Provides-Extra: cosmo
Requires-Dist: einops>=0.8.1; extra == 'cosmo'
Requires-Dist: natten; (python_version < '3.14') and extra == 'cosmo'
Requires-Dist: nvidia-physicsnemo>=2.2.0a0; extra == 'cosmo'
Requires-Dist: nvtx>=0.2.11; extra == 'cosmo'
Requires-Dist: scipy>=1.15.2; extra == 'cosmo'
Provides-Extra: cyclone
Requires-Dist: cucim-cu13>=25.4.0; extra == 'cyclone'
Requires-Dist: cupy-cuda13x; extra == 'cyclone'
Requires-Dist: scikit-image>=0.25.2; extra == 'cyclone'
Provides-Extra: da-cosmo
Requires-Dist: cupy-cuda13x; extra == 'da-cosmo'
Requires-Dist: einops>=0.8.1; extra == 'da-cosmo'
Requires-Dist: natten; (python_version < '3.14') and extra == 'da-cosmo'
Requires-Dist: nvidia-physicsnemo>=2.2.0a0; extra == 'da-cosmo'
Requires-Dist: nvtx>=0.2.11; extra == 'da-cosmo'
Requires-Dist: scipy>=1.15.2; extra == 'da-cosmo'
Provides-Extra: da-healda
Requires-Dist: cudf-cu13>=26.2.0; extra == 'da-healda'
Requires-Dist: cupy-cuda13x; extra == 'da-healda'
Requires-Dist: earth2grid; extra == 'da-healda'
Requires-Dist: nvidia-physicsnemo>=2.0; (python_version < '3.14') and extra == 'da-healda'
Provides-Extra: da-interp
Requires-Dist: cudf-cu13>=26.2.0; extra == 'da-interp'
Requires-Dist: cupy-cuda13x; extra == 'da-interp'
Provides-Extra: da-stormcast
Requires-Dist: cudf-cu13>=26.2.0; extra == 'da-stormcast'
Requires-Dist: cupy-cuda13x; extra == 'da-stormcast'
Requires-Dist: einops>=0.8.1; extra == 'da-stormcast'
Requires-Dist: nvidia-physicsnemo>=2.0; extra == 'da-stormcast'
Requires-Dist: nvtx>=0.2.11; extra == 'da-stormcast'
Requires-Dist: omegaconf>=2.3.0; extra == 'da-stormcast'
Requires-Dist: pyproj>=3.7.1; extra == 'da-stormcast'
Requires-Dist: scipy>=1.15.2; extra == 'da-stormcast'
Provides-Extra: data
Requires-Dist: aiohttp-retry>=2.8.3; extra == 'data'
Requires-Dist: aiohttp>=3.9.0; extra == 'data'
Requires-Dist: arraylake>=1.0.0; (python_version >= '3.12') and extra == 'data'
Requires-Dist: cdsapi>=0.7.5; extra == 'data'
Requires-Dist: cfgrib>=0.9.10.3; extra == 'data'
Requires-Dist: eccodes>=2.39.2; extra == 'data'
Requires-Dist: eccodeslib>=2.39.2; extra == 'data'
Requires-Dist: ecmwf-opendata>=0.3.29; extra == 'data'
Requires-Dist: eumdac>=3.1.0; extra == 'data'
Requires-Dist: gribberish>=1.5.0; (python_version >= '3.12') and extra == 'data'
Requires-Dist: icechunk>=2.0.0; (python_version >= '3.12') and extra == 'data'
Requires-Dist: intake-esgf>=2026.1.26; (python_version >= '3.12') and extra == 'data'
Requires-Dist: pcodec>=1.0.2; (python_version >= '3.12') and extra == 'data'
Requires-Dist: pybufrkit>=0.2.22; extra == 'data'
Requires-Dist: pyproj>=3.7.1; extra == 'data'
Requires-Dist: pystac-client>=0.9.0; extra == 'data'
Requires-Dist: rasterio>=1.3.9; extra == 'data'
Requires-Dist: rioxarray>=0.15.5; extra == 'data'
Requires-Dist: scipy>=1.15.2; extra == 'data'
Provides-Extra: derived
Provides-Extra: dlesym
Requires-Dist: earth2grid; extra == 'dlesym'
Requires-Dist: hydra-core>=1.3.2; extra == 'dlesym'
Requires-Dist: nvidia-physicsnemo>=2.2.0a0; extra == 'dlesym'
Requires-Dist: omegaconf>=2.3.0; extra == 'dlesym'
Provides-Extra: dlwp
Requires-Dist: importlib-metadata; extra == 'dlwp'
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'dlwp'
Provides-Extra: fcn
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'fcn'
Provides-Extra: fcn3
Requires-Dist: makani; extra == 'fcn3'
Requires-Dist: moviepy; extra == 'fcn3'
Requires-Dist: ruamel-yaml>=0.18.14; extra == 'fcn3'
Requires-Dist: scipy>=1.10.0; extra == 'fcn3'
Requires-Dist: torch-harmonics>=0.8.0; extra == 'fcn3'
Provides-Extra: fengwu
Requires-Dist: onnx; extra == 'fengwu'
Requires-Dist: onnxruntime-gpu>=1.21.0; extra == 'fengwu'
Requires-Dist: onnxscript; extra == 'fengwu'
Provides-Extra: fuxi
Requires-Dist: onnx; extra == 'fuxi'
Requires-Dist: onnxruntime-gpu>=1.21.0; extra == 'fuxi'
Requires-Dist: onnxscript; extra == 'fuxi'
Provides-Extra: gencast
Requires-Dist: dm-haiku>=0.0.14; extra == 'gencast'
Requires-Dist: dm-tree>=0.1.9; extra == 'gencast'
Requires-Dist: flax>=0.10.6; extra == 'gencast'
Requires-Dist: jax[cuda13]>=0.4.26; extra == 'gencast'
Requires-Dist: weathernext; (python_version >= '3.12') and extra == 'gencast'
Provides-Extra: graphcast
Requires-Dist: dm-haiku>=0.0.14; extra == 'graphcast'
Requires-Dist: dm-tree>=0.1.9; extra == 'graphcast'
Requires-Dist: flax>=0.10.6; extra == 'graphcast'
Requires-Dist: jax[cuda13]>=0.4.26; extra == 'graphcast'
Requires-Dist: weathernext; (python_version >= '3.12') and extra == 'graphcast'
Provides-Extra: interp-modafno
Requires-Dist: nvidia-physicsnemo>=2.0; extra == 'interp-modafno'
Provides-Extra: orbit
Requires-Dist: climate-learn; extra == 'orbit'
Provides-Extra: pangu
Requires-Dist: onnx; extra == 'pangu'
Requires-Dist: onnxruntime-gpu>=1.21.0; extra == 'pangu'
Requires-Dist: onnxscript; extra == 'pangu'
Provides-Extra: perturbation
Requires-Dist: scipy>=1.15.2; extra == 'perturbation'
Requires-Dist: torch-harmonics>=0.7.4; extra == 'perturbation'
Provides-Extra: precip-afno
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'precip-afno'
Provides-Extra: precip-afno-v2
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'precip-afno-v2'
Provides-Extra: samudrace
Requires-Dist: fme==2026.4.0; extra == 'samudrace'
Requires-Dist: pandas>=2.3.2; extra == 'samudrace'
Requires-Dist: scipy>=1.15.2; extra == 'samudrace'
Requires-Dist: xarray>=2025.1.0; extra == 'samudrace'
Provides-Extra: serve
Requires-Dist: aiofiles>=23.0.0; extra == 'serve'
Requires-Dist: azure-identity>=1.15.0; extra == 'serve'
Requires-Dist: azure-storage-blob>=12.19.0; extra == 'serve'
Requires-Dist: cryptography>=41.0.0; extra == 'serve'
Requires-Dist: fastapi>=0.104.0; extra == 'serve'
Requires-Dist: hiredis>=2.0.0; extra == 'serve'
Requires-Dist: httpx>=0.25.0; extra == 'serve'
Requires-Dist: hydra-core>=1.3.0; extra == 'serve'
Requires-Dist: multi-storage-client>=0.44.0; extra == 'serve'
Requires-Dist: prometheus-client>=0.17.0; extra == 'serve'
Requires-Dist: pydantic>=2.0.0; extra == 'serve'
Requires-Dist: python-dotenv>=1.0.0; extra == 'serve'
Requires-Dist: python-multipart>=0.0.6; extra == 'serve'
Requires-Dist: redis>=5.0.0; extra == 'serve'
Requires-Dist: requests>=2.25.0; extra == 'serve'
Requires-Dist: rq>=1.15.0; extra == 'serve'
Requires-Dist: types-redis; extra == 'serve'
Requires-Dist: urllib3>=1.26.0; extra == 'serve'
Requires-Dist: uvicorn[standard]>=0.24.0; extra == 'serve'
Provides-Extra: sfno
Requires-Dist: makani; extra == 'sfno'
Requires-Dist: moviepy; extra == 'sfno'
Requires-Dist: pynvml>=12.0.0; extra == 'sfno'
Requires-Dist: ruamel-yaml>=0.18.10; extra == 'sfno'
Requires-Dist: scipy>=1.10.0; extra == 'sfno'
Requires-Dist: torch-harmonics>=0.8.0; extra == 'sfno'
Provides-Extra: solarradiation-afno
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'solarradiation-afno'
Provides-Extra: statistics
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'statistics'
Provides-Extra: stormcast
Requires-Dist: einops>=0.8.1; extra == 'stormcast'
Requires-Dist: nvidia-physicsnemo>=2.0; extra == 'stormcast'
Requires-Dist: nvtx>=0.2.11; extra == 'stormcast'
Requires-Dist: omegaconf>=2.3.0; extra == 'stormcast'
Requires-Dist: pyproj>=3.7.1; extra == 'stormcast'
Requires-Dist: scipy>=1.15.2; extra == 'stormcast'
Provides-Extra: stormcast-conus
Requires-Dist: natten; (python_version < '3.14') and extra == 'stormcast-conus'
Requires-Dist: nvidia-physicsnemo>=2.2.0a0; extra == 'stormcast-conus'
Requires-Dist: nvtx>=0.2.11; extra == 'stormcast-conus'
Requires-Dist: omegaconf>=2.3.0; extra == 'stormcast-conus'
Requires-Dist: scipy>=1.15.2; extra == 'stormcast-conus'
Provides-Extra: stormscope
Requires-Dist: earth2grid; extra == 'stormscope'
Requires-Dist: natten; (python_version < '3.14') and extra == 'stormscope'
Requires-Dist: nvidia-physicsnemo>=2.1.0; extra == 'stormscope'
Requires-Dist: nvtx>=0.2.11; extra == 'stormscope'
Requires-Dist: omegaconf>=2.3.0; extra == 'stormscope'
Requires-Dist: scipy>=1.15.2; extra == 'stormscope'
Provides-Extra: ucast
Provides-Extra: utils
Requires-Dist: earth2grid; extra == 'utils'
Requires-Dist: scipy>=1.15.2; extra == 'utils'
Provides-Extra: windgust-afno
Requires-Dist: nvidia-physicsnemo>=1.0.1; extra == 'windgust-afno'
Description-Content-Type: text/markdown

<!-- markdownlint-disable MD002 MD033 MD041 MD053 -->
<div align="center">

# NVIDIA Earth2Studio

[![python version][e2studio_python_img]][e2studio_python_url]
[![license][e2studio_license_img]][e2studio_license_url]
[![coverage][e2studio_cov_img]][e2studio_cov_url]
[![mypy][e2studio_mypy_img]][e2studio_mypy_url]
[![format][e2studio_format_img]][e2studio_format_url]
[![ruff][e2studio_ruff_img]][e2studio_ruff_url]
[![uv][e2studio_uv_img]][e2studio_uv_url]

Earth2Studio is a Python-based package designed to get users up and running
with AI Earth system models *fast*.
Our mission is to enable everyone to build, research and explore AI driven weather and
climate science.

<!-- markdownlint-disable MD036 -->
**- Earth2Studio Documentation -**
<!-- markdownlint-enable MD036 -->

[Install][e2studio_install_url] | [User-Guide][e2studio_userguide_url] |
[Examples][e2studio_examples_url] | [API][e2studio_api_url]

![Earth2Studio README hero](https://huggingface.co/datasets/nvidia/earth2studio-assets/resolve/main/readme/v2/earth2studio-readme-hero.png?v2)

</div>

## Quick start

Running AI weather prediction can be done with just a few lines of code.

- For detailed installation steps, including model-specific installations, see the
    [install guide][e2studio_install_url].
- See the [examples][e2studio_examples_url] gallery providing different inference
    workflow samples.
- Swap out [data sources][e2studio_data_api] or [models][e2studio_px_api] depending on
    your use case!

### Tutorial

[![Earth2Studio Tutorial](https://huggingface.co/datasets/nvidia/earth2studio-assets/resolve/main/readme/v2/earth2studio-readme-quickstart-video.png?v1)](https://www.youtube.com/watch?v=Sog6aCapZeA)

### Agent-assisted setup

Automate setup with your preferred coding agent using NVIDIA Earth2Studio skills.
Install the Earth2Studio skill set, then ask your favorite agent (Claude, Codex, OpenCode, etc) to
recommend a model, configure an environment, or run a first deterministic forecast.
Find more Earth2Studio skills in the [NVIDIA Skills catalog](https://build.nvidia.com/skills?q=earth2studio).

![Earth2Studio agentic setup](https://huggingface.co/datasets/nvidia/earth2studio-assets/resolve/main/readme/v2/earth2studio-readme-agent-setup.png?v1)

```bash
npx skills add NVIDIA/skills --skill earth2studio-install
npx skills add NVIDIA/skills --skill earth2studio-discover
npx skills add NVIDIA/skills --skill earth2studio-data-fetch
npx skills add NVIDIA/skills --skill earth2studio-deterministic-forecast
```

Example agent prompts:

```text
Use the Earth2Studio discover skill to recommend a starter forecast workflow.
Use the Earth2Studio install skill to set up my environment for FourCastNet3 inference.
Create a script to fetch ERA5 surface winds data for March 2024.
Create a deterministic forecast workflow with GFS, FourCastNet3, and a Zarr output store.
```

### NVIDIA FourCastNet3

```python
from earth2studio.models.px import FCN3
from earth2studio.data import GFS
from earth2studio.io import ZarrBackend
from earth2studio.run import deterministic as run

model = FCN3.load_model(FCN3.load_default_package())
data = GFS()
io = ZarrBackend("outputs/fcn3_forecast.zarr")
run(["2025-01-01T00:00:00"], 10, model, data, io)
```

### ECMWF AIFS

```python
from earth2studio.models.px import AIFS
from earth2studio.data import IFS
from earth2studio.io import ZarrBackend
from earth2studio.run import deterministic as run

model = AIFS.load_model(AIFS.load_default_package())
data = IFS()
io = ZarrBackend("outputs/aifs_forecast.zarr")
run(["2025-01-01T00:00:00"], 10, model, data, io)
```

### Google Graphcast

```python
from earth2studio.models.px import GraphCastOperational
from earth2studio.data import GFS
from earth2studio.io import ZarrBackend
from earth2studio.run import deterministic as run

package = GraphCastOperational.load_default_package()
model = GraphCastOperational.load_model(package)
data = GFS()
io = ZarrBackend("outputs/graphcast_operational_forecast.zarr")
run(["2025-01-01T00:00:00"], 4, model, data, io)
```

> [!IMPORTANT]
> Earth2Studio is an interface to third‑party models, checkpoints, and datasets.
> Licenses for these assets are owned by their providers.
> Ensure you have the rights to download, use, and (if applicable) redistribute each
> model and dataset.
> Links to the original license and source are often provided in the API docs for each
> model/data source.

## Latest News

> [!NOTE]
> As of version `0.14.0`, Earth2Studio TOML default installs now target CUDA 13.

- [**Aurora v1.5**](https://nvidia.github.io/earth2studio/main/modules/generated/models/px/Aurora1p5/),
    Microsoft Aurora v1.5 deterministic and ensemble model wrapper for global
    weather forecasting.
- [**StormCast CONUS**](https://nvidia.github.io/earth2studio/main/modules/generated/models/px/StormCastCONUS/),
    StormCast CONUS prognostic model for convective-scale forecasting over the
    contiguous United States.
- [**Dynamical.org Sources**](https://nvidia.github.io/earth2studio/main/modules/generated/data/analysis/data_DynamicalGFS/),
    a comprehensive suite of analysis and forecast data sources reading from
    anonymous Icechunk repositories (AIFS, GFS, GEFS, HRRR, MRMS, ICON-EU, IFS-ENS).
- [**EarthMover Data Sources**](https://nvidia.github.io/earth2studio/main/modules/generated/data/analysis/data_EarthMoverERA5/),
    EarthMover ERA5 0.25-degree reanalysis and IFS 0.1-degree forecast sources
    hosted by BrightBand.
- [**StormScope NSRDB**](https://nvidia.github.io/earth2studio/main/modules/generated/models/dx/StormScopeDxNSRDB/),
    solar irradiance (GHI) estimation diagnostic model.

For a complete list of latest features and improvements see the [changelog](./CHANGELOG.md).

## Overview

Earth2Studio is an *AI inference pipeline toolkit* focused on weather and climate
applications that is designed to ride on top of different AI frameworks, model
architectures, data sources and SciML tooling while providing a unified API.

<div align="center">

![Earth2Studio model zoo](https://huggingface.co/datasets/nvidia/earth2studio-assets/resolve/main/readme/v2/earth2studio-readme-model-zoo.png?v3)
![Earth2Studio data sources](https://huggingface.co/datasets/nvidia/earth2studio-assets/resolve/main/readme/v2/earth2studio-readme-data-sources.png?v3)

</div>

The composability of the different core components in Earth2Studio easily allows the
development and deployment of increasingly complex pipelines that may chain multiple
data sources, AI models and other modules together.

<div align="center">

![Earth2Studio composable pipelines](https://huggingface.co/datasets/nvidia/earth2studio-assets/resolve/main/readme/v2/earth2studio-readme-composability.png?v2)

</div>

The unified ecosystem of Earth2Studio provides users the opportunity to rapidly
swap out components for alternatives.
In addition to the largest model zoo of weather/climate AI models, Earth2Studio is
packed with useful functionality such as optimized data access to cloud data stores,
statistical operations and more to accelerate your pipelines.

### Earth-2 Open Models

Access state of the art Nvidia open models for climate and weather: [Earth-2 Open Models](https://huggingface.co/collections/nvidia/earth-2).
For training recipes for these models, see the [PhysicsNeMo repository][physicsnemo_repo_url].

## Contributors

Check out the [contributing](CONTRIBUTING.md) document for details about the technical
requirements and the user guide for higher level philosophy, structure, and design.

## License

Earth2Studio is provided under the Apache License 2.0, refer to the
[LICENSE file][e2studio_license_url] for full license text.

<!-- Badge links -->

[e2studio_python_img]: https://img.shields.io/badge/Python-3.11%20|%203.12%20|%203.13%20|%203.14-blue?style=flat-square&logo=python
[e2studio_license_img]: https://img.shields.io/badge/License-Apache%202.0-green?style=flat-square
[e2studio_format_img]: https://img.shields.io/badge/Code%20Style-Black-black?style=flat-square
[e2studio_mypy_img]: https://img.shields.io/badge/mypy-Checked-blue?style=flat-square&labelColor=grey
[e2studio_cov_img]: https://img.shields.io/codecov/c/github/nvidia/earth2studio?style=flat-square&logo=codecov
[e2studio_ruff_img]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json&style=flat-square
[e2studio_uv_img]: https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fastral-sh%2Fuv%2Fmain%2Fassets%2Fbadge%2Fv0.json&style=flat-square

[e2studio_python_url]: https://www.python.org/downloads/
[e2studio_license_url]: ./LICENSE
[e2studio_format_url]: https://github.com/psf/black
[e2studio_cov_url]: ./test/
[e2studio_mypy_url]: https://mypy-lang.org/
[e2studio_ruff_url]: https://github.com/astral-sh/ruff
[e2studio_uv_url]: https://github.com/astral-sh/uv

<!-- Doc links -->
[e2studio_docs_url]: https://nvidia.github.io/earth2studio/
[e2studio_install_url]: https://nvidia.github.io/earth2studio/main/userguide/about/install/
[e2studio_userguide_url]: https://nvidia.github.io/earth2studio/main/userguide/
[e2studio_examples_url]: https://nvidia.github.io/earth2studio/main/examples/
[e2studio_api_url]: https://nvidia.github.io/earth2studio/main/modules/
[e2studio_customization_url]: https://nvidia.github.io/earth2studio/main/examples/08_extend/
[e2studio_px_url]: https://nvidia.github.io/earth2studio/main/userguide/components/prognostic/
[e2studio_px_api]: https://nvidia.github.io/earth2studio/main/modules/models_px/
[e2studio_dx_url]: https://nvidia.github.io/earth2studio/main/userguide/components/diagnostic/
[e2studio_dx_api]: https://nvidia.github.io/earth2studio/main/modules/models_dx/
[e2studio_data_url]: https://nvidia.github.io/earth2studio/main/userguide/components/datasources/
[e2studio_data_api]: https://nvidia.github.io/earth2studio/main/modules/datasources_analysis/
[e2studio_io_url]: https://nvidia.github.io/earth2studio/main/userguide/components/io/
[e2studio_io_api]: https://nvidia.github.io/earth2studio/main/modules/io/
[e2studio_pb_url]: https://nvidia.github.io/earth2studio/main/userguide/components/perturbation/
[e2studio_pb_api]: https://nvidia.github.io/earth2studio/main/modules/perturbation/
[e2studio_stat_url]: https://nvidia.github.io/earth2studio/main/userguide/components/statistics/
[e2studio_stat_api]: https://nvidia.github.io/earth2studio/main/modules/statistics/
[e2studio_lex_url]: https://nvidia.github.io/earth2studio/main/userguide/advanced/lexicon/

<!-- Misc links -->
[physicsnemo_repo_url]: https://github.com/NVIDIA/physicsnemo
