earth2mip

Earth-2 Model Intercomparison Project (MIP) is a python framework that enables climate researchers and scientists to inter-compare AI models for weather and climate.

https://github.com/NVIDIA/earth2mip

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 13 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, science.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (19.9%) to scientific vocabulary

Keywords

climate deep-learning weather

Keywords from Contributors

nvidia-gpu physics climate-modeling
Last synced: 6 months ago · JSON representation

Repository

Earth-2 Model Intercomparison Project (MIP) is a python framework that enables climate researchers and scientists to inter-compare AI models for weather and climate.

Basic Info
Statistics
  • Stars: 239
  • Watchers: 4
  • Forks: 51
  • Open Issues: 28
  • Releases: 1
Topics
climate deep-learning weather
Created over 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog Contributing License

README.md

Earth-2 MIP (Beta)

Project Status: Active - The project has reached a stable, usable state and is being actively developed. GitHub Documentstion codecov Python versionm: 3.10, 3.11, 3.12 Code style: black <!-- markdownlint-enable -->

Earth-2 Model Intercomparison Project (MIP) is a Python based AI framework that enables climate researchers and scientists to explore and experiment with the use of AI models for weather and climate. It provides reference workflows for understanding how AI models capture the physics of the Earth's atmosphere and how they can work with traditional numerical weather forecasting models. For instance, the repo provides a uniform interface for running inference using pre-trained model checkpoints and scoring the skill of such models using certain standard metrics. This repository is meant to facilitate the weather and climate community to come up with good reference baseline of events to test the models against and to use with a variety of data sources.

Installation

Earth-2 MIP will be installable on PyPi upon general release. In the mean time, one can install from source:

```bash git clone git@github.com:NVIDIA/earth2mip.git

cd earth2mip && pip install . ```

See installation documentation for more details and other options.

Getting Started

Earth-2 MIP provides a set of examples which can be viewed on the examples documentation page which can be used to get started with various workflows. These examples can be downloaded both as Jupyer Notebooks and Python scripts. The source Python scripts can be found in the examples folders.

Basic Inference

Earth-2 MIP provides high-level APIs for running inference with AI models. For example, the following can be used to run Pangu weather using an initial state from the climate data store (CDS):

```bash python

import datetime from earth2mip.networks import getmodel from earth2mip.initialconditions import cds from earth2mip.inferenceensemble import runbasicinference timeloop = getmodel("e2mip://dlwp", device="cuda:0") datasource = cds.DataSource(timeloop.inchannelnames) ds = runbasicinference(timeloop, n=10, datasource=datasource, time=datetime.datetime(2018, 1, 1)) ds.chunk() dask.array, shape=(11, 1, 69, 721, 1440), dtype=float32, chunksize=(11, 1, 69, 721, 1440), chunktype=numpy.ndarray> Coordinates: * lon (lon) float32 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8 * lat (lat) float32 90.0 89.75 89.5 89.25 ... -89.25 -89.5 -89.75 -90.0 * time (time) datetime64[ns] 2018-01-01 ... 2018-01-03T12:00:00 * channel (channel) <U5 'z1000' 'z925' 'z850' 'z700' ... 'u10m' 'v10m' 't2m' Dimensions without coordinates: history ```

And you can get ACC/RMSE like this: ```

from earth2mip.inferencemediumrange import scoredeterministic import numpy as np scores = scoredeterministic(timeloop, datasource=datasource, n=10, initialtimes=[datetime.datetime(2018, 1, 1)], # fill in zeros for time-mean, will typically be grabbed from data. timemean=np.zeros((7, 721, 1440)) ) scores Dimensions: (leadtime: 11, channel: 7, initialtime: 1) Coordinates: * leadtime (leadtime) timedelta64[ns] 0 days 00:00:00 ... 5 days 00:... * channel (channel) <U5 't850' 'z1000' 'z700' ... 'z300' 'tcwv' 't2m' Dimensions without coordinates: initialtime Data variables: acc (leadtime, channel) float64 1.0 1.0 1.0 ... 0.9686 0.9999 rmse (leadtime, channel) float64 0.0 2.469e-05 0.0 ... 7.07 2.998 initialtimes (initialtime) datetime64[ns] 2018-01-01 scores.rmse.sel(channel='z500') array([ 0. , 150.83014446, 212.07880612, 304.98592282, 381.36510987, 453.31516952, 506.01464974, 537.11092269, 564.79603347, 557.22871627, 586.44691243]) Coordinates: * leadtime (leadtime) timedelta64[ns] 0 days 00:00:00 ... 5 days 00:00:00 channel <U5 'z500' ```

Supported Models

These notebooks illustrate how-to-use with a few models and this can serve as reference to bring in your own checkpoint as long as it's compatible. There may be additional work to make it compatible with Earth-2 MIP. Earth-2 MIP leverages the model zoo in Modulus to provide a reference set of base-line models. The goal is to enable to community to grow this collection of models as shown in the table below.

| ID | Model | Architecture | Type | Reference | Source | Size | |:-----:|:-----:|:-------------------------------------------:|:--------------:|:---------:|:-------:|:---:| | fcn | FourCastNet | Adaptive Fourier Neural Operator | global weather | Arxiv | modulus | 300Mb | | dlwp | Deep Learning Weather Prediction | Convolutional Encoder-Decoder | global weather | AGU | modulus | 50Mb | | pangu | Pangu Weather (Hierarchical 6 + 24 hr) | Vision Transformer | global weather | Nature | onnx | 2Gb | | pangu6 | Pangu Weather 6hr Model | Vision Transformer | global weather | Nature | onnx | 1Gb | | pangu24 | Pangu Weather 24hr Model | Vision Transformer | global weather | Nature | onnx | 1Gb | | fcnv2sm | FourCastNet v2 | Spherical Harmonics Fourier Neural Operator | global weather | Arxiv | modulus | 3.5Gb | | graphcast | Graphcast, 37 levels, 0.25 deg | Graph neural network | global weather | Science | github | 145MB | | graphcastsmall | Graphcast, 13 levels, 1 deg | Graph neural network | global weather | Science | github | 144MB | | graphcastoperational | Graphcast, 13 levels, 0.25 deg| Graph neural network | global weather | Science | github | 144MB | | precipitationafno | FourCastNet Precipitation | Adaptive Fourier Neural Operator | diagnostic | Arxiv | modulus | 300Mb | | climatenet | ClimateNet Segmentation Model | Convolutional Neural Network | diagnostic | GMD | modulus | 2Mb | <!-- markdownlint-enable -->

* = coming soon

Some models require additional dependencies not installed by default. Refer to the installation instructions for details.

Note : Each model checkpoint may have its own unique license. We encourage users to familiarize themselves with each to understand implications for their particular use case.

We want to integrate your model into the scoreboard to show the community! The best way to do this is via NVIDIA Modulus. You can contribute your model (both the training code as well as model checkpoint) and we can ensure that it is maintained as part of the reference set.

Contributing

Earth-2 MIP is an open source collaboration and its success is rooted in community contribution to further the field. Thank you for contributing to the project so others can build on your contribution. For guidance on making a contribution to Earth-2 MIP, please refer to the contributing guidelines.

More About Earth-2 MIP

This work is inspired to facilitate similar engagements between teams here at NVIDIA - the ML experts developing new models and the domain experts in Climate science evaluating the skill of such models. For instance, often necessary input data such as normalization constants and hyperparameter values are not packaged alongside the model weights. Every model typically implements a slightly different interface. Scoring routines are specific to the model being scored and may not be consistent across groups.

Earth-2 MIP addresses these challenges and bridges the gap between the domain experts who most often are assessing ML models, and the ML experts producing them. Compared to other projects in this space, Earth-2 MIP focuses on scoring models on-the-fly. It has python APIs suitable for rapid iteration in a jupyter book, CLIs for scoring models distributed over many GPUs, and a flexible plugin framework that allows anyone to use their own ML models. More importantly Earth-2 MIP aspires to facilitate exploration and collaboration within the climate research community to evaluate the potential of AI models in climate and weather simulations.

Please see the documentation page for in depth information about Earth-2 MIP, functionality, APIs, etc.

Communication

License

Earth-2 MIP is provided under the Apache License 2.0, please see LICENSE.txt for full license text.

Additional Resources

Owner

  • Name: NVIDIA Corporation
  • Login: NVIDIA
  • Kind: organization
  • Location: 2788 San Tomas Expressway, Santa Clara, CA, 95051

GitHub Events

Total
  • Issues event: 7
  • Watch event: 41
  • Issue comment event: 6
  • Push event: 3
  • Pull request review event: 4
  • Pull request review comment event: 5
  • Pull request event: 5
  • Fork event: 8
Last Year
  • Issues event: 7
  • Watch event: 41
  • Issue comment event: 6
  • Push event: 3
  • Pull request review event: 4
  • Pull request review comment event: 5
  • Pull request event: 5
  • Fork event: 8

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 225
  • Total Committers: 8
  • Avg Commits per committer: 28.125
  • Development Distribution Score (DDS): 0.516
Past Year
  • Commits: 39
  • Committers: 7
  • Avg Commits per committer: 5.571
  • Development Distribution Score (DDS): 0.385
Top Committers
Name Email Commits
Noah D. Brenowitz n****2@g****m 109
Nicholas Geneva 5****a 72
Yair Cohen y****n@n****m 35
Chenggong Wang c****0@g****m 3
ankurmahesh a****h 3
omahs 7****s 1
Alejandro Betancur Quiroz 5****2 1
sashaphmn s****n@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 109
  • Total pull requests: 92
  • Average time to close issues: 21 days
  • Average time to close pull requests: 4 days
  • Total issue authors: 20
  • Total pull request authors: 13
  • Average comments per issue: 0.91
  • Average comments per pull request: 2.93
  • Merged pull requests: 76
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 6
  • Pull requests: 5
  • Average time to close issues: 20 days
  • Average time to close pull requests: about 1 month
  • Issue authors: 6
  • Pull request authors: 3
  • Average comments per issue: 1.17
  • Average comments per pull request: 0.4
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • NickGeneva (49)
  • nbren12 (25)
  • yairchn (5)
  • david5010 (5)
  • ankurmahesh (2)
  • dallasfoster (2)
  • ChenggongWang (2)
  • manmeet3591 (2)
  • adamjstewart (2)
  • MarsuPila (1)
  • ktangsali (1)
  • ThomasMGeo (1)
  • Joshua-Elms (1)
  • YichengDWu (1)
  • melodicdeath (1)
Pull Request Authors
  • NickGeneva (43)
  • nbren12 (17)
  • yairchn (13)
  • ankurmahesh (6)
  • ChenggongWang (5)
  • sashaphmn (2)
  • albetancurqu42 (2)
  • yashdiggikar (2)
  • georg198 (2)
  • dallasfoster (1)
  • omahs (1)
  • ktangsali (1)
  • timkpaine (1)
  • pgarg7 (1)
Top Labels
Issue Labels
bug (48) enhancement (32) ? - Needs Triage (32) 2 - In Progress (20) 1 - On Deck (15) documentation (15) 0 - Backlog (10) 4 - In Review (2) 3 - Ready for Review (2) external (2) ci (1) question (1)
Pull Request Labels
2 - In Progress (7) 4 - In Review (5) 3 - Ready for Review (5) bug (4) documentation (4) enhancement (3) 5 - DO NOT MERGE (2) external (1) cleanup (1) ! - Release (1)

Packages

  • Total packages: 3
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 2
  • Total maintainers: 1
proxy.golang.org: github.com/NVIDIA/earth2mip
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
proxy.golang.org: github.com/nvidia/earth2mip
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 7.0%
Last synced: 6 months ago
spack.io: py-earth2mip

Earth-2 Model Intercomparison Project (MIP). A python framework that enables climate researchers and scientists to explore and experiment with AI models for weather and climate.

  • Versions: 0
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 27.8%
Dependent packages count: 55.6%
Maintainers (1)
Last synced: over 1 year ago

Dependencies

.github/workflows/blossom-ci.yml actions
  • NVIDIA/blossom-action main composite
  • actions/checkout v2 composite
setup.py pypi