ANEMOI

An open-source, Python-based framework developed collaboratively by ECMWF and several European national meteorological services. It is designed to facilitate the development, training, and deployment of machine learning (ML) models for weather forecasting. As an 'end to end' framework, it provides a comprehensive toolkit that spans data preparation, model training, and inference, enabling meteorological organizations to leverage their own data for ML-based weather prediction.
https://github.com/ecmwf/anemoi

Category: Atmosphere
Sub Category: Atmospheric Composition and Dynamics

Keywords

anemoi

Last synced: about 9 hours ago
JSON representation

Repository metadata

README.md

Anemoi Framework

Static Badge

[!IMPORTANT]
This software is Incubating and subject to ECMWF's guidelines on Software Maturity.

Overview | Features | Installation | Contributing | Roadmap | Community | License | Other resources & References

Anemoi is an open-source, Python-based framework developed collaboratively by ECMWF and several European national meteorological services. It is designed to facilitate the development, training, and deployment of machine learning (ML) models for weather forecasting. As an 'end to end' framework, it provides a comprehensive toolkit that spans data preparation, model training, and inference, enabling meteorological organizations to leverage their own data for ML-based weather prediction.

Anemoi Logo

Overview

The anemoi repository aims, for now, to provide a centralized overview of the entire framework.
Additionally, it contains the Anemoi Documentation and system-level tests that assess the interfaces and ensure all components work well with each other.

Anemoi offers a modular architecture composed of several packages, each targeting different components necessary for constructing data-driven weather models:

  • anemoi-datasets: Tools for handling and preprocessing meteorological datasets.
  • anemoi-graphs: Utilities for constructing graph representations of meteorological data.
  • anemoi-models: Core components for defining and training ML models, including graph neural networks (GNNs) and graph transformers.
  • anemoi-training: Framework for training ML models, including support for distributed training.
  • anemoi-inference: Tools for deploying trained models and performing inference.
  • anemoi-transform: Utilities for data transformation and augmentation.
  • anemoi-utils: Miscellaneous utility functions.
  • anemoi-registry: Centralized registry for storing and accessing model configurations and metadata.

Each package collects metadata that can be used by subsequent packages, facilitating a seamless workflow from data ingestion to operational model deployment.

The diagram below shows the relationship of these packages in terms of dependencies.
Anemoi Dependencies

The diagram below represents the main packages in the Anemoi framework and the general workflow for using them:

Anemoi Workflow

Summary of workflow:

  • Start by building a dataset with anemoi-datasets.
  • Train a model using anemoi-core (central yellow boxes inside a black rectangle): This repository groups three distinct but related packages to support model development:
    • anemoi-models: Contains definitions for different machine learning models.
    • anemoi-training: Provides the training framework and utilities for fitting models on prepared datasets.
    • anemoi-graphs: Supports graph-based representations for modeling meteorological data.
      These three packages are separated to make development easier, but they all live under the anemoi-core GitHub repository.
  • Perform predictions with anemoi-inference.
  • Any domain-specific transformations and code that can be shared across datasets, training, and inference is handled by anemoi-transform
  • Helper functions and domain-agnostic general purpose utilities are included in anemoi-utils.

This structure separates concerns clearly, promotes reusability, and makes development modular while keeping core components organized under anemoi-core.

Each package collects metadata that can be used by subsequent packages, facilitating a seamless workflow from data ingestion to operational model deployment.

Features

  • Modular Design: Easily extendable components for various stages of the ML pipeline.
  • Customizable Configurations: Flexible configuration system using Hydra for model and training parameters.
  • Distributed Training Support: Leverage PyTorch Lightning for scalable and efficient training.
  • Interoperability: Built on top of established Python tools including PyTorch, Lightning, Hydra, Zarr, Xarray, and Earthkit.
  • Open-Source Collaboration: Developed in collaboration with multiple European meteorological services.

Installation

To install the Anemoi framework, clone the repository and install the required dependencies (e.g. for anemoi-transform) :

$ git clone https://github.com/ecmwf/anemoi-transform.git
$ cd anemoi-transform
$ pip install -e

Or one can also install each of the packages directly from PyPI

$ pip install anemoi-transform

For detailed installation instructions and environment setup, refer to the Installation Guide.

Contributing

We welcome contributions to the Anemoi framework! If you’d like to get involved, please follow the Contributing Guide, which outlines the full development workflow — from setting up your environment, to branching and committing, to opening pull requests and going through review. We encourage opening issues as way to discuss any ideas or new features as a first-step!

If you’re new to Anemoi, we recommend starting with the Getting Started Tour for a quick overview of the framework before diving into development.

Roadmap

The development of the Anemoi framework follows a structured roadmap to ensure continuous improvement and feature development.
For a detailed view of planned milestones, priorities, and upcoming features, see the Development Roadmap.

Community

The Anemoi framework fosters an open and collaborative community. Governance is guided by clear principles to ensure transparency and inclusiveness, described in the Governance Documentation.

Community members are encouraged to participate in regular interactions such as the Anemoi Community Meetings, where updates, discussions take place.

License

Anemoi is licensed under the Apache License 2.0.
See the LICENSE file for more details.

For more information, visit the Anemoi Documentation.

Other resources & References

Additional resources for using and understanding Anemoi:


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 3 days ago

Total Commits: 98
Total Committers: 15
Avg Commits per committer: 6.533
Development Distribution Score (DDS): 0.561

Commits in past year: 45
Committers in past year: 13
Avg Commits per committer in past year: 3.462
Development Distribution Score (DDS) in past year: 0.8

Name Email Commits
Baudouin Raoult b****t@e****t 43
pre-commit-ci[bot] 6****] 16
Vera 1****a 8
Ana Prieto Nemesio 9****m 7
DeployDuck 1****k 6
Gert Mertes h****y@g****e 4
Matthew Chantry m****y@e****t 3
Aaron Hopkinson a****n@e****t 3
Florian Pinault F****t@e****t 2
chebertpinard C****d@e****a 1
Marek Jacob M****X 1
Leo 9****o 1
Julien Lefaucheur j****k 1
Jesper Dramsch j****r@d****t 1
Daniele Nerini d****i@g****m 1

Committer domains:


Issue and Pull Request metadata

Last synced: 3 days ago

Total issues: 1
Total pull requests: 7
Average time to close issues: N/A
Average time to close pull requests: about 1 hour
Total issue authors: 1
Total pull request authors: 3
Average comments per issue: 1.0
Average comments per pull request: 0.0
Merged pull request: 2
Bot issues: 0
Bot pull requests: 2

Past year issues: 1
Past year pull requests: 7
Past year average time to close issues: N/A
Past year average time to close pull requests: about 1 hour
Past year issue authors: 1
Past year pull request authors: 3
Past year average comments per issue: 1.0
Past year average comments per pull request: 0.0
Past year merged pull request: 2
Past year bot issues: 0
Past year bot pull requests: 2

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/ecmwf/anemoi

Top Issue Authors

  • cerodell (1)

Top Pull Request Authors

  • DeployDuck (3)
  • VeraChristina (2)
  • pre-commit-ci[bot] (2)

Top Issue Labels

  • bug (1)

Top Pull Request Labels

  • sync (3)
  • CI/CD (1)
  • ATS Approval Not Needed (1)

Dependencies

.github/workflows/qa.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pre-commit/action v3.0.1 composite
.github/workflows/nightly_ci_hpc.yaml actions
.github/workflows/pr-label-public.yml actions
.github/workflows/on_demand_ci_hpc.yaml actions
.github/actions/deploy/action.yaml actions
  • ecmwf-actions/reusable-workflows/ci-hpc-generic v2 composite
.github/workflows/pr-label-ats.yml actions
  • actions/github-script v7 composite
.github/workflows/pr-label-file-based.yml actions
  • actions/labeler v5 composite
.github/workflows/readthedocs-pr-update.yml actions
  • readthedocs/actions/preview v1 composite
.github/workflows/system_level_test.yaml actions
  • ./.github/actions/deploy * composite
  • actions/checkout v4 composite
  • ecmwf/reusable-workflows/ci-hpc-generic v2 composite
  • ecmwf/reusable-workflows/hpc/ecflow/remove-suite v2 composite
  • ecmwf/reusable-workflows/hpc/ecflow/wait-for-ecflow-suite-to-complete v2 composite
.github/workflows/pr-conventional-commit.yml actions
  • amannn/action-semantic-pull-request v5 composite
tools/requirements.txt pypi
  • python-dotenv *
  • requests *
.github/workflows/pr-label-conventional-commits.yml actions
  • actions/checkout v3 composite
  • mauroalderete/action-assign-labels v1 composite
pyproject.toml pypi
  • nbsphinx *
  • pandoc *
  • pre-commit *
  • requests *
  • sphinx *
  • sphinx-argparse <0.5
  • sphinx-rtd-theme *

Score: 6.421622267806518