summaryrefslogtreecommitdiff
path: root/python-metnet.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 06:38:26 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 06:38:26 +0000
commit83fd5b0c51204e7623081cce15adc85487db2aee (patch)
tree1efc3df67061e3789509465e19887c61410bee28 /python-metnet.spec
parenta878b306534ea2647a64b175f51415b45b4eb7e5 (diff)
automatic import of python-metnet
Diffstat (limited to 'python-metnet.spec')
-rw-r--r--python-metnet.spec447
1 files changed, 447 insertions, 0 deletions
diff --git a/python-metnet.spec b/python-metnet.spec
new file mode 100644
index 0000000..918b193
--- /dev/null
+++ b/python-metnet.spec
@@ -0,0 +1,447 @@
+%global _empty_manifest_terminate_build 0
+Name: python-metnet
+Version: 4.1.14
+Release: 1
+Summary: PyTorch MetNet Implementation
+License: MIT License
+URL: https://github.com/openclimatefix/metnet
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3a/4f/bffd6422c606b1f26da39bff2881d626c85bf86f729497cb4f7bac08bed3/metnet-4.1.14.tar.gz
+BuildArch: noarch
+
+Requires: python3-einops
+Requires: python3-numpy
+Requires: python3-torchvision
+Requires: python3-antialiased-cnns
+Requires: python3-axial-attention
+Requires: python3-pytorch-msssim
+Requires: python3-huggingface-hub
+Requires: python3-ocf-datapipes
+Requires: python3-pytorch-lightning
+
+%description
+# MetNet and MetNet-2
+<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
+[![All Contributors](https://img.shields.io/badge/all_contributors-6-orange.svg?style=flat-square)](#contributors-)
+<!-- ALL-CONTRIBUTORS-BADGE:END -->
+
+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.
+
+## Installation
+
+Clone the repository, then run
+```shell
+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](https://huggingface.co/datasets/openclimatefix/goes-mrms)! Note: The dataset is not available yet, we are still processing data!
+
+```python
+from datasets import load_dataset
+
+dataset = load_dataset("openclimatefix/goes-mrms")
+```
+
+This uses the publicly avaiilable 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](https://huggingface.co/openclimatefix/metnet) and [MetNet-2](https://huggingface.co/openclimatefix/metnet-2). These weights can be downloaded and used using:
+
+```python
+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:
+
+```python
+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:
+
+```python
+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](https://allcontributors.org/docs/en/emoji-key)):
+
+<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
+<!-- prettier-ignore-start -->
+<!-- markdownlint-disable -->
+<table>
+ <tbody>
+ <tr>
+ <td align="center"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Bieker"/><br /><sub><b>Jacob Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/metnet/commits?author=jacobbieker" title="Code">💻</a></td>
+ <td align="center"><a href="http://jack-kelly.com"><img src="https://avatars.githubusercontent.com/u/460756?v=4?s=100" width="100px;" alt="Jack Kelly"/><br /><sub><b>Jack Kelly</b></sub></a><br /><a href="https://github.com/openclimatefix/metnet/commits?author=JackKelly" title="Code">💻</a></td>
+ <td align="center"><a href="https://github.com/ValterFallenius"><img src="https://avatars.githubusercontent.com/u/21970939?v=4?s=100" width="100px;" alt="Valter Fallenius"/><br /><sub><b>Valter Fallenius</b></sub></a><br /><a href="#userTesting-ValterFallenius" title="User Testing">📓</a></td>
+ <td align="center"><a href="https://github.com/terigenbuaa"><img src="https://avatars.githubusercontent.com/u/91317406?v=4?s=100" width="100px;" alt="terigenbuaa"/><br /><sub><b>terigenbuaa</b></sub></a><br /><a href="#question-terigenbuaa" title="Answering Questions">💬</a></td>
+ <td align="center"><a href="https://github.com/NMC-DAVE"><img src="https://avatars.githubusercontent.com/u/26354668?v=4?s=100" width="100px;" alt="Kan.Dai"/><br /><sub><b>Kan.Dai</b></sub></a><br /><a href="#question-NMC-DAVE" title="Answering Questions">💬</a></td>
+ <td align="center"><a href="https://github.com/SaileshBechar"><img src="https://avatars.githubusercontent.com/u/38445041?v=4?s=100" width="100px;" alt="Sailesh Bechar"/><br /><sub><b>Sailesh Bechar</b></sub></a><br /><a href="#question-SaileshBechar" title="Answering Questions">💬</a></td>
+ </tr>
+ </tbody>
+</table>
+
+<!-- markdownlint-restore -->
+<!-- prettier-ignore-end -->
+
+<!-- ALL-CONTRIBUTORS-LIST:END -->
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
+
+%package -n python3-metnet
+Summary: PyTorch MetNet Implementation
+Provides: python-metnet
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-metnet
+# MetNet and MetNet-2
+<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
+[![All Contributors](https://img.shields.io/badge/all_contributors-6-orange.svg?style=flat-square)](#contributors-)
+<!-- ALL-CONTRIBUTORS-BADGE:END -->
+
+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.
+
+## Installation
+
+Clone the repository, then run
+```shell
+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](https://huggingface.co/datasets/openclimatefix/goes-mrms)! Note: The dataset is not available yet, we are still processing data!
+
+```python
+from datasets import load_dataset
+
+dataset = load_dataset("openclimatefix/goes-mrms")
+```
+
+This uses the publicly avaiilable 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](https://huggingface.co/openclimatefix/metnet) and [MetNet-2](https://huggingface.co/openclimatefix/metnet-2). These weights can be downloaded and used using:
+
+```python
+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:
+
+```python
+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:
+
+```python
+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](https://allcontributors.org/docs/en/emoji-key)):
+
+<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
+<!-- prettier-ignore-start -->
+<!-- markdownlint-disable -->
+<table>
+ <tbody>
+ <tr>
+ <td align="center"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Bieker"/><br /><sub><b>Jacob Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/metnet/commits?author=jacobbieker" title="Code">💻</a></td>
+ <td align="center"><a href="http://jack-kelly.com"><img src="https://avatars.githubusercontent.com/u/460756?v=4?s=100" width="100px;" alt="Jack Kelly"/><br /><sub><b>Jack Kelly</b></sub></a><br /><a href="https://github.com/openclimatefix/metnet/commits?author=JackKelly" title="Code">💻</a></td>
+ <td align="center"><a href="https://github.com/ValterFallenius"><img src="https://avatars.githubusercontent.com/u/21970939?v=4?s=100" width="100px;" alt="Valter Fallenius"/><br /><sub><b>Valter Fallenius</b></sub></a><br /><a href="#userTesting-ValterFallenius" title="User Testing">📓</a></td>
+ <td align="center"><a href="https://github.com/terigenbuaa"><img src="https://avatars.githubusercontent.com/u/91317406?v=4?s=100" width="100px;" alt="terigenbuaa"/><br /><sub><b>terigenbuaa</b></sub></a><br /><a href="#question-terigenbuaa" title="Answering Questions">💬</a></td>
+ <td align="center"><a href="https://github.com/NMC-DAVE"><img src="https://avatars.githubusercontent.com/u/26354668?v=4?s=100" width="100px;" alt="Kan.Dai"/><br /><sub><b>Kan.Dai</b></sub></a><br /><a href="#question-NMC-DAVE" title="Answering Questions">💬</a></td>
+ <td align="center"><a href="https://github.com/SaileshBechar"><img src="https://avatars.githubusercontent.com/u/38445041?v=4?s=100" width="100px;" alt="Sailesh Bechar"/><br /><sub><b>Sailesh Bechar</b></sub></a><br /><a href="#question-SaileshBechar" title="Answering Questions">💬</a></td>
+ </tr>
+ </tbody>
+</table>
+
+<!-- markdownlint-restore -->
+<!-- prettier-ignore-end -->
+
+<!-- ALL-CONTRIBUTORS-LIST:END -->
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
+
+%package help
+Summary: Development documents and examples for metnet
+Provides: python3-metnet-doc
+%description help
+# MetNet and MetNet-2
+<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
+[![All Contributors](https://img.shields.io/badge/all_contributors-6-orange.svg?style=flat-square)](#contributors-)
+<!-- ALL-CONTRIBUTORS-BADGE:END -->
+
+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.
+
+## Installation
+
+Clone the repository, then run
+```shell
+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](https://huggingface.co/datasets/openclimatefix/goes-mrms)! Note: The dataset is not available yet, we are still processing data!
+
+```python
+from datasets import load_dataset
+
+dataset = load_dataset("openclimatefix/goes-mrms")
+```
+
+This uses the publicly avaiilable 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](https://huggingface.co/openclimatefix/metnet) and [MetNet-2](https://huggingface.co/openclimatefix/metnet-2). These weights can be downloaded and used using:
+
+```python
+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:
+
+```python
+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:
+
+```python
+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](https://allcontributors.org/docs/en/emoji-key)):
+
+<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
+<!-- prettier-ignore-start -->
+<!-- markdownlint-disable -->
+<table>
+ <tbody>
+ <tr>
+ <td align="center"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Bieker"/><br /><sub><b>Jacob Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/metnet/commits?author=jacobbieker" title="Code">💻</a></td>
+ <td align="center"><a href="http://jack-kelly.com"><img src="https://avatars.githubusercontent.com/u/460756?v=4?s=100" width="100px;" alt="Jack Kelly"/><br /><sub><b>Jack Kelly</b></sub></a><br /><a href="https://github.com/openclimatefix/metnet/commits?author=JackKelly" title="Code">💻</a></td>
+ <td align="center"><a href="https://github.com/ValterFallenius"><img src="https://avatars.githubusercontent.com/u/21970939?v=4?s=100" width="100px;" alt="Valter Fallenius"/><br /><sub><b>Valter Fallenius</b></sub></a><br /><a href="#userTesting-ValterFallenius" title="User Testing">📓</a></td>
+ <td align="center"><a href="https://github.com/terigenbuaa"><img src="https://avatars.githubusercontent.com/u/91317406?v=4?s=100" width="100px;" alt="terigenbuaa"/><br /><sub><b>terigenbuaa</b></sub></a><br /><a href="#question-terigenbuaa" title="Answering Questions">💬</a></td>
+ <td align="center"><a href="https://github.com/NMC-DAVE"><img src="https://avatars.githubusercontent.com/u/26354668?v=4?s=100" width="100px;" alt="Kan.Dai"/><br /><sub><b>Kan.Dai</b></sub></a><br /><a href="#question-NMC-DAVE" title="Answering Questions">💬</a></td>
+ <td align="center"><a href="https://github.com/SaileshBechar"><img src="https://avatars.githubusercontent.com/u/38445041?v=4?s=100" width="100px;" alt="Sailesh Bechar"/><br /><sub><b>Sailesh Bechar</b></sub></a><br /><a href="#question-SaileshBechar" title="Answering Questions">💬</a></td>
+ </tr>
+ </tbody>
+</table>
+
+<!-- markdownlint-restore -->
+<!-- prettier-ignore-end -->
+
+<!-- ALL-CONTRIBUTORS-LIST:END -->
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
+
+%prep
+%autosetup -n metnet-4.1.14
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-metnet -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 4.1.14-1
+- Package Spec generated