MetNet Model Implementations
PyTorch Implementation of Google Research's MetNet for short term weather forecasting (https://arxiv.org/abs/2003.12140), inspired from https://github.com/tcapelle/metnet_pytorch/tree/master/metnet_pytorch
MetNet-2 (https://arxiv.org/pdf/2111.07470.pdf) is a further extension of MetNet that takes in a larger context image to predict up to 12 hours ahead, and is also implemented in PyTorch here.
MetNet-3 (https://arxiv.org/abs/2306.06079) extends it even further, incorporating more observations and data. There will be an implementation here eventually, but one isn't ready yet.
MetNet Global (https://arxiv.org/abs/2510.13050) makes this a global precipitation forecasting model, and seems to be more similar to MetNet-2's architecture.
Installation
Clone the repository, then run
pip install -r requirements.txt
pip install -e .
Alternatively, you can also install a usually older version through pip install metnet
Please ensure that you're using Python version 3.9 or above.
Data
While the exact training data used for both MetNet and MetNet-2 haven't been released, the papers do go into some detail as to the inputs, which were GOES-16 and MRMS precipitation data, as well as the time period covered. We will be making those splits available, as well as a larger dataset that covers a longer time period, with HuggingFace Datasets! Note: The dataset is not available yet, we are still processing data!
from datasets import load_dataset
dataset = load_dataset("openclimatefix/goes-mrms")
This uses the publicly available GOES-16 data and the MRMS archive to create a similar set of data to train and test on, with various other splits available as well.
Pretrained Weights
Pretrained model weights for MetNet and MetNet-2 have not been publicly released, and there is some difficulty in reproducing their training. We release weights for both MetNet and MetNet-2 trained on cloud mask and satellite imagery data with the same parameters as detailed in the papers on HuggingFace Hub for MetNet and MetNet-2. These weights can be downloaded and used using:
from metnet import MetNet, MetNet2
model = MetNet().from_pretrained("openclimatefix/metnet")
model = MetNet2().from_pretrained("openclimatefix/metnet-2")
Example Usage
MetNet can be used with:
from metnet import MetNet
import torch
import torch.nn.functional as F
model = MetNet(
hidden_dim=32,
forecast_steps=24,
input_channels=16,
output_channels=12,
sat_channels=12,
input_size=32,
)
# MetNet expects original HxW to be 4x the input size
x = torch.randn((2, 12, 16, 128, 128))
out = []
for lead_time in range(24):
out.append(model(x, lead_time))
out = torch.stack(out, dim=1)
# MetNet creates predictions for the center 1/4th
y = torch.randn((2, 24, 12, 8, 8))
F.mse_loss(out, y).backward()
And MetNet-2 with:
from metnet import MetNet2
import torch
import torch.nn.functional as F
model = MetNet2(
forecast_steps=8,
input_size=64,
num_input_timesteps=6,
upsampler_channels=128,
lstm_channels=32,
encoder_channels=64,
center_crop_size=16,
)
# MetNet expects original HxW to be 4x the input size
x = torch.randn((2, 6, 12, 256, 256))
out = []
for lead_time in range(8):
out.append(model(x, lead_time))
out = torch.stack(out, dim=1)
y = torch.rand((2,8,12,64,64))
F.mse_loss(out, y).backward()
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Jacob Bieker 💻 |
Jack Kelly 💻 |
Valter Fallenius 📓 |
terigenbuaa 💬 |
Kan.Dai 💬 |
Sailesh Bechar 💬 |
Rahul Maurya ⚠️ |
This project follows the all-contributors specification. Contributions of any kind welcome!
Metadata
Release files for metnet 4.1.25
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| metnet-4.1.25.tar.gz | 35.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| metnet-4.1.25-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.0 kB
Release files / metnet-4.1.25.tar.gz
| Download URL | metnet-4.1.25.tar.gz |
|---|---|
| Size | 35.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
438d0e1db93133edd7400780c7995b86d9a6e1bff42d8230dbc56e536408cc78
|
|
BLAKE2b-256 checksum How to use checksums |
a5bd6e334be67aedd4560285091f1178335cdc0b2ba3586ad92fcc779f0505a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / metnet-4.1.25-py3-none-any.whl
| Download URL | metnet-4.1.25-py3-none-any.whl |
|---|---|
| Size | 44.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4773b412a0ea5c392579267f1ba241972860b0eb20ad38f17fb40f4981bc8a3c
|
|
BLAKE2b-256 checksum How to use checksums |
57a63dcada9bed9d76ea4089258112754c58766ed889f0cab9b9efd15423aaef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Security for metnet 4.1.25
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.