ClimODE
Models precise weather evolution with value-conserving dynamics, learning global weather transport as a neural flow, which also enables estimating the uncertainty in predictions.
https://github.com/aalto-quml/climode
Category: Climate Change
Sub Category: Earth and Climate Modeling
Last synced: about 22 hours ago
JSON representation
Repository metadata
ClimODE: Climate and Weather Forecasting With Physics-informed Neural ODEs
- Host: GitHub
- URL: https://github.com/aalto-quml/climode
- Owner: Aalto-QuML
- License: mit
- Created: 2023-11-28T13:28:52.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-18T17:12:27.000Z (about 1 month ago)
- Last Synced: 2025-04-29T00:37:47.763Z (2 days ago)
- Language: Python
- Homepage: https://yogeshverma1998.github.io/ClimODE/
- Size: 12 MB
- Stars: 92
- Watchers: 0
- Forks: 13
- Open Issues: 6
- Releases: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
README.md
ClimODE: Climate and Weather Forecasting With Physics-informed Neural ODEs
Yogesh verma | Markus Heinonen | Vikas Garg
The code repository for the paper ClimODE: Climate and Weather Forecasting With Physics-informed Neural ODEs. More information can be found on the project website.
Citation
If you find this repository useful in your research, please consider citing the following paper:
@inproceedings{
verma2024climode,
title={Clim{ODE}: Climate and Weather Forecasting with Physics-informed Neural {ODE}s},
author={Yogesh Verma and Markus Heinonen and Vikas Garg},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=xuY33XhEGR}
}
Prerequisites
- torchdiffeq : https://github.com/rtqichen/torchdiffeq.
- pytorch >= 1.12.0
- torch-scatter
- torch-sparse
- torch-cluster
- torch-spline-conv
- torchcubicspline: https://github.com/patrick-kidger/torchcubicspline
- properscoring (for CRPS scores) : https://pypi.org/project/properscoring/
Data Preparation
First, download ERA5 data with 5.625deg from WeatherBench. The data directory should look like the following
era5_data
|-- 10m_u_component_of_wind
|-- 10m_v_component_of_wind
|-- 2m_temperature
|-- constants
|-- geopotential_500
|-- temperature_850
Training ERA5
Global Forecast
To train ClimODE for global forecast use,
python train_global.py --scale 0 --batch_size 8 --spectral 0 --solver "euler"
Global Monthly Forecast
To train ClimODE for global monthly forecast use,
python train_monthly.py --scale 0 --batch_size 4 --spectral 0 --solver "euler"
Regional Forecast
To train ClimODE for regional forecasts among various regions of earth use,
python train_region.py --scale 0 --batch_size 8 --spectral 0 --solver "euler" --region 'NorthAmerica/SouthAmerica/Australia'
Evaluation ERA5
Global Forecast
To evaluate ClimODE for global forecast on Lat. weighted RMSE and ACC use, (Make sure to change the model path in the file)
python evaluation_global.py --spectral 0 --scale 0 --batch_size 8
Global Monthly Forecast
To evaluate ClimODE for global monthly forecast on Lat. weighted RMSE and ACC use, (Make sure to change the model path in the file)
python evaluation_monthly.py --spectral 0 --scale 0 --batch_size 4
Regional Forecast
To evaluate ClimODE for regional forecast on Lat. weighted RMSE and ACC use, (Make sure to change the model path in the file)
python evaluation_region.py --spectral 0 --scale 0 --region 'NorthAmerica/SouthAmerica/Australia' --batch_size 8
Training on a different custom dataset
To train on a custom dataset, you need to follow the below guidelines
- Data Loading: You might want to change the data loading scheme depending on your data (e.g. seasonal, daily, etc., and with many different input channels), which can be found in
utils.py
in the data-loading function. - Fitting initial velocity: Depending on the data, you need to estimate the initial velocity to train and test the model (For more details, see the manuscript) via the
fit_velocity
function. - Model Function: Depending on the input observable quantities, you might need to modify the number of input channels to model function in
model_function.py
. - Training and evaluation: Depending on your dataset, you might want to fine-tune and change the various hyper-parameters in training and evaluation files. Make sure to make them consistent in both of them. Also, we report CRPS scores for global hourly forecast only, if you want to compute them for every task please include the
evaluation_crps_mm
function.
Note: We are also constantly updating and revising the repo to make it more adaptable in a general way, and finidng bugs and removing them and modifying certain parts.
Owner metadata
- Name: Aalto-QuML
- Login: Aalto-QuML
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/107996420?v=4
- Repositories: 2
- Last ynced at: 2023-03-07T01:01:53.137Z
- Profile URL: https://github.com/Aalto-QuML
GitHub Events
Total
- Issues event: 1
- Watch event: 24
- Issue comment event: 2
- Push event: 1
- Fork event: 9
Last Year
- Issues event: 1
- Watch event: 24
- Issue comment event: 2
- Push event: 1
- Fork event: 9
Committers metadata
Last synced: 9 days ago
Total Commits: 59
Total Committers: 1
Avg Commits per committer: 59.0
Development Distribution Score (DDS): 0.0
Commits in past year: 5
Committers in past year: 1
Avg Commits per committer in past year: 5.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
Yogesh Verma | y****2@g****m | 59 |
Committer domains:
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 10
Total pull requests: 2
Average time to close issues: about 2 months
Average time to close pull requests: N/A
Total issue authors: 8
Total pull request authors: 1
Average comments per issue: 1.8
Average comments per pull request: 0.0
Merged pull request: 0
Bot issues: 0
Bot pull requests: 0
Past year issues: 9
Past year pull requests: 2
Past year average time to close issues: about 2 months
Past year average time to close pull requests: N/A
Past year issue authors: 7
Past year pull request authors: 1
Past year average comments per issue: 1.78
Past year average comments per pull request: 0.0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- tung-nd (2)
- JimengShi (2)
- plyu3 (1)
- Kongwp (1)
- Hank0626 (1)
- Yumenomae (1)
- marvingabler (1)
- PiComLab (1)
Top Pull Request Authors
- einzigsue (2)
Top Issue Labels
Top Pull Request Labels
Score: 4.584967478670572