Skip to content

Commit c94cd6d

Browse files
anaprietonemaaron-hopkinsonpre-commit-ci[bot]VeraChristina
authored
Centralised readme (#52)
Co-authored-by: Aaron Hopkinson <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Vera <[email protected]>
1 parent 7ea1183 commit c94cd6d

File tree

12 files changed

+138
-41
lines changed

12 files changed

+138
-41
lines changed

.github/actions/deploy/action.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ runs:
4343
module load wellies
4444
4545
# Clone the repository
46-
PACKAGE_NAME=anemoi-docs
46+
PACKAGE_NAME=anemoi
4747
PACKAGE_BRANCH=${{ github.head_ref || github.ref_name }}
4848
git clone -b $PACKAGE_BRANCH https://${{ inputs.github_token }}@github.com/ecmwf/${PACKAGE_NAME}.git
4949
cd $PACKAGE_NAME

.github/workflows/nightly_ci_hpc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: Check for recent commits on main in anemoi repos
2121
id: check-commits
2222
run: |
23-
REPOS=("anemoi-core" "anemoi-datasets" "anemoi-docs")
23+
REPOS=("anemoi-core" "anemoi-datasets" "anemoi")
2424
SHOULD_RUN=false
2525
2626
for REPO in "${REPOS[@]}"; do

.github/workflows/on_demand_ci_hpc.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ name: on-demand-system-level-test
33
on:
44
workflow_dispatch:
55
inputs:
6-
anemoi_docs_branch:
7-
description: Branch for anemoi-docs to be used to deploy the anemoi_tests suite.
6+
anemoi_branch:
7+
description: Branch for the anemoi repo to be used to deploy the anemoi_tests suite.
88
required: false
99
anemoi_datasets_branch:
1010
description: Branch for anemoi-datasets to be used to build the datasets environment for testing.
@@ -34,16 +34,16 @@ jobs:
3434
build_options=""
3535
3636
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
37-
docs_branch="${{ github.event.inputs.anemoi_docs_branch }}"
37+
anemoi_branch="${{ github.event.inputs.anemoi_branch }}"
3838
datasets_branch="${{ github.event.inputs.anemoi_datasets_branch }}"
3939
training_branch="${{ github.event.inputs.anemoi_training_branch }}"
4040
4141
# Default to ref name if docs branch not specified
4242
if [[ -z "$docs_branch" ]]; then
43-
docs_branch="${{ github.ref_name }}"
43+
anemoi_branch="${{ github.ref_name }}"
4444
fi
4545
46-
build_options="anemoi_docs_branch=$docs_branch anemoi_datasets_branch=$datasets_branch anemoi_training_branch=$training_branch"
46+
build_options="anemoi_branch=$anemoi_branch anemoi_datasets_branch=$datasets_branch anemoi_training_branch=$training_branch"
4747
fi
4848
4949
echo "build_options=$build_options" >> "$GITHUB_OUTPUT"

README.md

Lines changed: 112 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,117 @@
1-
# anemoi-docs
1+
Anemoi Framework
2+
================
23

3-
This repo builds the main [documentation](https://anemoi.readthedocs.io/) for the Anemoi project.
4+
[**Overview**](#overview) | [**Features**](#features) | [**Installation**](#installation) | [**Contributing**](#contributing) | [**Roadmap**](#roadmap) | [**Community**](#community) | [**License**](#license) | [**Other resources & References**](#other-resources--references)
45

5-
To build it yourself clone this repo and pip install:
66

7-
```bash
8-
git clone [email protected]:ecmwf/anemoi-docs.git
9-
cd anemoi-docs
10-
python -m venv .venv
11-
source .venv/bin/activate
12-
pip install -e .
13-
```
7+
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.
148

15-
Then, build the documentation:
9+
![Anemoi Logo](docs/_static/logo.png)
1610

17-
```bash
18-
cd docs
19-
make html
20-
```
11+
- [Anemoi - A new framework for Weather Forecasting based on Machine Learning](https://www.ecmwf.int/en/about/media-centre/news/2024/anemoi-new-framework-weather-forecasting-based-machine-learning)
12+
13+
14+
Overview
15+
--------
16+
The `anemoi` repository aims, for now, to provide a centralized overview of the entire framework.
17+
Additionally, it contains the [Anemoi Documentation](https://anemoi.readthedocs.io/en/latest/) and system-level tests that assess the interfaces and ensure all components work well with each other.
18+
19+
Anemoi offers a modular architecture composed of several packages, each targeting different components necessary for constructing data-driven weather models:
20+
21+
- **[anemoi-datasets](https://github.com/ecmwf/anemoi-datasets)**: Tools for handling and preprocessing meteorological datasets.
22+
- **[anemoi-graphs](https://github.com/ecmwf/anemoi-core/tree/main/graphs)**: Utilities for constructing graph representations of meteorological data.
23+
- **[anemoi-models](https://github.com/ecmwf/anemoi-core/tree/main/models)**: Core components for defining and training ML models, including graph neural networks (GNNs) and graph transformers.
24+
- **[anemoi-training](https://github.com/ecmwf/anemoi-core/tree/main/training)**: Framework for training ML models, including support for distributed training.
25+
- **[anemoi-inference](https://github.com/ecmwf/anemoi-inference)**: Tools for deploying trained models and performing inference.
26+
- **[anemoi-transform](https://github.com/ecmwf/anemoi-transform)**: Utilities for data transformation and augmentation.
27+
- **[anemoi-utils](https://github.com/ecmwf/anemoi-utils)**: Miscellaneous utility functions.
28+
- **[anemoi-registry](https://github.com/ecmwf/anemoi-registry)**: Centralized registry for storing and accessing model configurations and metadata.
29+
30+
Each package collects metadata that can be used by subsequent packages, facilitating a seamless workflow from data ingestion to operational model deployment.
31+
32+
The diagram below shows the relationship of these packages in terms of dependencies.\
33+
![Anemoi Dependencies](docs/_static/dependencies.png)
34+
35+
The diagram below represents the main packages in the Anemoi framework and the general workflow for using them:
36+
37+
![Anemoi Workflow](docs/_static/anemoi_packages_workflow.png)
38+
39+
Summary of workflow:
40+
- Start by building a dataset with `anemoi-datasets`.
41+
- 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:
42+
- `anemoi-modes`: Contains definitions for different machine learning models.
43+
- `anemoi-training`: Provides the training framework and utilities for fitting models on prepared datasets.
44+
- `anemoi-graphs`: Supports graph-based representations for modeling meteorological data.
45+
These three packages are separated to make development easier, but they all live under the [anemoi-core GitHub repository](https://github.com/ecmwf/anemoi-core).
46+
- Perform predictions with `anemoi-inference`.
47+
- Any domain-specific transformations and code that can be shared across datasets, training, and inference is handled by `anemoi-transform`
48+
- Helper functions and domain-agnostic general purpose utilities are included in `anemoi-utils`.
49+
50+
This structure separates concerns clearly, promotes reusability, and makes development modular while keeping core components organized under `anemoi-core`.
51+
52+
Each package collects metadata that can be used by subsequent packages, facilitating a seamless workflow from data ingestion to operational model deployment.
53+
54+
55+
Features
56+
--------
57+
58+
- **Modular Design**: Easily extendable components for various stages of the ML pipeline.
59+
- **Customizable Configurations**: Flexible configuration system using Hydra for model and training parameters.
60+
- **Distributed Training Support**: Leverage PyTorch Lightning for scalable and efficient training.
61+
- **Interoperability**: Built on top of established Python tools including PyTorch, Lightning, Hydra, Zarr, Xarray, and Earthkit.
62+
- **Open-Source Collaboration**: Developed in collaboration with multiple European meteorological services.
63+
64+
Installation
65+
------------
66+
67+
To install the Anemoi framework, clone the repository and install the required dependencies (e.g. for anemoi-transform) :
68+
69+
$ git clone https://github.com/ecmwf/anemoi-transform.git
70+
$ cd anemoi-transform
71+
$ pip install -e
72+
73+
Or one can also install each of the packages directly from PyPI
74+
75+
$ pip install anemoi-transform
76+
77+
78+
For detailed installation instructions and environment setup, refer to the [Installation Guide](https://anemoi.readthedocs.io/en/latest/installation/).
79+
80+
Contributing
81+
------------
82+
83+
## Contributing
84+
85+
We welcome contributions to the Anemoi framework! If you’d like to get involved, please follow the [Contributing Guide](https://anemoi.readthedocs.io/projects/training/en/stable/dev/contributing.html#), 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!
86+
87+
If you’re new to Anemoi, we recommend starting with the [Getting Started Tour](https://anemoi.readthedocs.io/en/latest/getting-started/tour.html) for a quick overview of the framework before diving into development.
88+
89+
90+
## Roadmap
91+
92+
The development of the Anemoi framework follows a structured roadmap to ensure continuous improvement and feature development.
93+
For a detailed view of planned milestones, priorities, and upcoming features, see the [Development Roadmap](https://anemoi.readthedocs.io/en/latest/contributing/roadmap.html#development-roadmap).
94+
95+
96+
## Community
97+
98+
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](https://anemoi.readthedocs.io/en/latest/contributing/governance.html).
99+
100+
101+
Community members are encouraged to participate in regular interactions such as the [Anemoi Community Meetings](https://anemoi.readthedocs.io/en/latest/contributing/roadmap.html#anemoi-community-meeting), where updates, discussions take place.
102+
103+
## License
104+
105+
Anemoi is licensed under the Apache License 2.0.
106+
See the [LICENSE](https://github.com/ecmwf/anemoi-core/blob/main/LICENSE) file for more details.
107+
108+
For more information, visit the [Anemoi Documentation](https://anemoi.readthedocs.io/en/latest/).
109+
110+
## Other resources & References
111+
112+
Additional resources for using and understanding Anemoi:
113+
114+
- Documentation for each package within the framework: [Anemoi Packages Docs](https://anemoi.readthedocs.io/en/latest/)
115+
- Anemoi webinars: [Anemoi Webinars](https://events.ecmwf.int/event/446/)
116+
- `anemoi-configs` package for example configurations: [Anemoi Configs](https://github.com/ecmwf/anemoi-configs)
117+
- Citation information: [How to Cite Anemoi](https://anemoi.readthedocs.io/en/latest/index.html#how-to-cite-anemoi)
54.8 KB
Loading

docs/contributing/documentation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Steps for contributing documentation:
2424
creating an issue and submitting a Pull Request.
2525

2626
- Identify the most appropriate place for your addition (e.g., overall
27-
`Anemoi documentation <https://github.com/ecmwf/anemoi-docs>`_,
27+
`Anemoi documentation <https://github.com/ecmwf/anemoi>`_,
2828
package-level documentation), and the relevant section (e.g., user
2929
guide, getting started, or developer guide).
3030

docs/contributing/governance.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ Anemoi is an open-source machine learning framework co-developed by a
4040
number of national meteorological institutions in collaboration with
4141
ECMWF. Details about individual contributors can be found in the
4242
`CONTRIBUTORS.md
43-
<https://github.com/ecmwf/anemoi-docs/blob/main/CONTRIBUTORS.md>`_ file
44-
in each package. Inspired by the governance structures of other
45-
open-source projects such as PyTorch and TensorFlow, **Anemoi is guided
46-
by the Anemoi Technical Subgroup (ATS)**, a committee composed of
43+
<https://github.com/ecmwf/anemoi/blob/main/CONTRIBUTORS.md>`_ file in
44+
each package. Inspired by the governance structures of other open-source
45+
projects such as PyTorch and TensorFlow, **Anemoi is guided by the
46+
Anemoi Technical Subgroup (ATS)**, a committee composed of
4747
representatives from each contributing institution. The ATS meets weekly
4848
in what is known as the ATS meeting, which serves as a forum to
4949
coordinate the project's technical direction. During these meetings, we

docs/contributing/testing.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ System-level Tests
3838
- Test the anemoi packages as a whole, including end-to-end workflows,
3939
from dataset creation to model training and inference.
4040
- These tests ensure that the packages work together as expected.
41-
- The system-level test suite is located in the `anemoi-docs`
42-
repository in the `tests/system-level` directory.
41+
- The system-level test suite is located in the `anemoi` repository in
42+
the `tests/system-level` directory.
4343

4444
***************
4545
Running Tests
@@ -100,8 +100,8 @@ docs for more information.
100100

101101
<br><br>
102102

103-
To run **system-level tests**, navigate to the `anemoi-docs` repository
104-
on github and trigger the workflow `on-demand-system-level-test` via the
103+
To run **system-level tests**, navigate to the `anemoi` repository on
104+
github and trigger the workflow `on-demand-system-level-test` via the
105105
GitHub Actions tab.
106106

107107
.. note::
@@ -272,8 +272,8 @@ package-level documentation.
272272
***************************************************
273273

274274
To add a test case in the system-level test suite, you need to add
275-
config files in the relevant directory in the `anemoi-docs` repository.
276-
The config files should be placed in the `tests/system-level/configs`
275+
config files in the relevant directory in the `anemoi` repository. The
276+
config files should be placed in the `tests/system-level/configs`
277277
directory as explained below. They will constitute tasks in the
278278
system-level test suite. No pyflow knowledge is required to add new test
279279
cases.
@@ -297,7 +297,7 @@ In the folder add
297297
the `dataset_config.yaml` file) will be set in the suite.
298298

299299
If you need additional flexibility in configuring your test case, please
300-
open an issue in the `anemoi-docs` repository.
300+
open an issue in the `anemoi` repository.
301301

302302
Model Training Test cases
303303
=========================

docs/getting-started/tour.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ e.g. building a new dataset to train a model using new data. See the
4444
We would love to make Anemoi even easier for everyone to use. If there
4545
are any use-cases you would like to see covered in the future, please
4646
consider contacting the developers or creating a pull request to the
47-
`anemoi-docs repository <https://github.com/ecmwf/anemoi-docs>`_.
47+
`anemoi` repository <https://github.com/ecmwf/anemoi>`_.

tests/system-level/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ This directory is used to store the suite's outputs and to build the virtual env
2424

2525
### Testing Configuration Changes
2626

27-
If you modify configuration files in `anemoi_test/configs`, you need to point to a committed branch of `anemoi-docs` so that the deployed suite can pull your config files from that branch.
27+
If you modify configuration files in `anemoi_test/configs`, you need to point to a committed branch of the `anemoi` repo so that the deployed suite can pull your config files from that branch.
2828

2929
- Commit your changes to a branch.
30-
- Push the branch to anemoi-docs.
30+
- Push the branch to anemoi.
3131
- Run the build script pointing to that branch:
3232

3333
```
34-
./build.sh -s OUTPUT_ROOT_SUITE=$SCRATCH/workdir anemoi_docs_branch=name-of-your-branch
34+
./build.sh -s OUTPUT_ROOT_SUITE=$SCRATCH/workdir anemoi_branch=name-of-your-branch
3535
```
3636

3737
### Additional Build Options

0 commit comments

Comments
 (0)