File size: 5,684 Bytes
73d9e73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
---
license: other
language:
- en
- zh
tags:
- OneScience
- Earth Science
- Weather Forecasting
- Spherical Neural Operators
- ERA5
frameworks: PyTorch
datasets:
- OneScience/ERA5
---

<p align="center">
  <strong><span style="font-size: 30px;">Spherical Fourier Neural Operator</span></strong>
</p>

# Model Overview

SFNO learns dynamical system evolution on the sphere using spherical harmonic transforms, and can be applied to global weather forecasting and spherical shallow-water equation prediction.

Paper: *Spherical Fourier Neural Operators: Learning Stable Dynamics on the Sphere*

https://proceedings.mlr.press/v202/bonev23a.html

# Model Description

This model package invokes NVIDIA's official `torch-harmonics` linear SFNO implementation and supports SHT on fake spherical fields, one parameter update step, checkpoint recovery, and short-term autoregressive rollout. It is an operator-level smoke package, not a reproduction of the paper's SWE/ERA5 experiments.

# Use Cases

| Scenario | Description |
| :---: | :--- |
| Spherical Operator Research | Verify SHT, spectral filtering, and inverse SHT. |
| Local Rapid Verification | Run through training and inference with fake spherical data. |
| ERA5 Weather Forecasting | Subsequently interface with 26- or 73-channel ERA5 data. |

# Usage

## 1. OneCode

[Click to experience intelligent one-click AI4S programming](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home)

## 2. Manual Installation & Usage

**Hardware Requirements**

- CPU can run the current small configuration.
- GPU is recommended for full ERA5 training.

### Download the Model Package

```bash
hf download --model OneScience-Group/SFNO --local-dir ./SFNO
cd SFNO
```

### Set Up the Runtime Environment

**DCU Environment**

```bash
conda create -n onescience311 python=3.11 -y
conda activate onescience311
pip install onescience[earth-dcu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
pip install torch-harmonics==0.8.0
```

**GPU Environment**

```bash
conda create -n onescience311 python=3.11 -y libstdcxx-ng=12 libgcc-ng=12 gcc_linux-64=12 gxx_linux-64=12
conda activate onescience311
pip install onescience[earth-gpu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
pip install torch-harmonics==0.8.0
```

This directory also retains `torch-harmonics==0.8.0` under `.deps/`.

### Data

The current scripts generate low-order smooth fake spherical fields in memory and split consecutive time frames into `T-1` input/target pairs; no external data download is required.

### Training

```bash
python scripts/train.py
```

Training now performs multi-epoch pair Dataset training, time-sequential validation split, learning rate scheduling, and early stopping:

```bash
python scripts/train.py --epochs 10
python scripts/train.py --resume weight/training/latest.pth --epochs 20
```

### Inference

```bash
python scripts/inference.py
```

Output files:

```text
weight/model.pth
weight/training/latest.pth
weight/training/best.pth
weight/training/history.json
result/prediction.pt
result/target.pt
result/inference.json
```

### Result Inspection

```bash
python scripts/result.py
```

The current test only verifies that the model executes. Randomly-initialized rollouts do not represent the paper's long-term stability results.

The result script generates `result/metrics.json` and `result/comparison.png`. The current RMSE does not incorporate spherical integration weights, and the ACC uses the sample's own spatial mean rather than a long-term training-set climatology; therefore the metrics are not comparable with those reported in the paper.

### Paper vs. Current Implementation I/O

| Item | Paper SWE / ERA5 | Current Smoke Configuration |
| --- | --- | --- |
| Input / Output | SWE 3 fields `256×512` / ERA5 26 or 73 channels | `[B,2,17,32]` smooth synthetic fields |
| Time Step | SWE 1 hour / ERA5 6 hours | Consecutive indices with no physical units |
| Architecture | SWE 4×256; weather model 8×384 | 2 blocks, embed dim 8 |
| Training | Single-step training followed by two-step autoregressive fine-tuning | Multi-epoch single-step pair training and validation; rollout used for inference analysis |
| Analysis | Spherically weighted relative error and climatological ACC | Unweighted smoke RMSE/ACC |

The complete execution flow is `train.py -> inference.py -> result.py`. Training generates z-scored `[T,C,Nlat,Nlon]` in memory and forms pairs from consecutive frames. The checkpoint `config` stores only the model configuration, while training parameters are stored separately under `train_config`, allowing inference to reconstruct the model architecture directly from the checkpoint. The model package is distributed without local training weights or `result/` artifacts. A production SWE/ERA5 mode further requires data loading, variable tables, formal train/validation splits, area-weighted loss, and the paper's two-stage training loop.

### Real Data

Real-data training requires ERA5 26/73-channel data, 6-hour temporal pairing, training-set statistics, and spherical grid resampling configuration.

# OneScience Official Information

| Platform | OneScience Main Repository | Skills Repository |
| --- | --- | --- |
| Gitee | https://gitee.com/onescience-ai/onescience | https://gitee.com/onescience-ai/oneskills |
| GitHub | https://github.com/onescience-ai/OneScience | https://github.com/onescience-ai/oneskills |

# Citation & License

- Official Implementation: https://github.com/NVIDIA/torch-harmonics
- This directory is an independent runnable adaptation of SFNO; see `THIRD_PARTY.md` for third-party terms.