File size: 4,066 Bytes
3d8f4ee
 
 
 
 
 
 
 
 
 
 
 
 
828247d
 
 
 
 
 
 
 
 
 
 
 
3d8f4ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
828247d
 
 
 
 
 
 
3d8f4ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: cc-by-nc-sa-4.0
language:
- en
metrics:
- r_squared
library_name: keras
tags:
- Climate
- SDL-radiation
- CNN
- BiLSTM
- Time-Series
model-index:
  - name: SDL Prediction Model
    results:
      - task:
          type: spatio-temporal-forecasting
        dataset:
          type: weather
          name: CLARA-dataset
        metrics:
          - name: R2
            type: r2
            value: 0.8204
---

## SDL Prediction Model

This repository contains a deep learning model for forecasting **Surface Downward Longwave Radiation (SDL)** using a hybrid **CNN-BiLSTM** architecture. The model is trained on the CLARA dataset and is designed for monthly grid-based predictions over India.

---

### Model Overview

- **Model Type:** Convolutional Neural Network + Bidirectional LSTM (CNN-BiLSTM)
- **Version:** 1.0 (`r2-0.8204`)
- **Input Shape:** 12 timesteps Γ— 140 Γ— 140 grid Γ— 4 channels
- **Channels:**
	- `sdlr_value`
	- `year_channel`
	- `month_sin_channel`
	- `month_cos_channel`
- **Model File:** `model.keras`
- **Scalers:**
	- Input: `scalers/input_scalers.pkl`
	- Output: `scalers/y_scaler.pkl`
- **Metadata:**
	- Initial sequence: `metadata/initial_X_sequence_for_forecast.npy`
	- Model metadata: `metadata/model_metadata.json`
- **Model Metrics**
    - `MSE: 0.0099`
	- `MAE: 0.0744`
	- `RMSE: 0.0995`
	- `R2: 0.8204`
	- `MAE (Original SDL Units): 27.88 W/mΒ²`
	- `RMSE (Original SDL Units): 37.26 W/mΒ²`
---

### Dataset

- **Name:** CLARA-dataset
- **Description:** SDL - Surface downward longwave radiation
- **Temporal Resolution:** Monthly
- **Spatial Resolution:** 0.25Β° Γ— 0.25Β° grid (140 Γ— 140)
- **Temporal Coverage:** 
    - Start: 1979-01-01
    - End: 2025-06-01
- **Geographic Coverage:**
	- Latitude: 5.0Β°N to 40.0Β°N
	- Longitude: 65.0Β°E to 100.0Β°E

---

### Repository Structure

```
β”œβ”€β”€ config.json                # Model and dataset configuration
β”œβ”€β”€ LICENSE                    # License (CC BY-NC-SA 4.0)
β”œβ”€β”€ model.keras                # Trained model 
β”œβ”€β”€ metadata/
β”‚   β”œβ”€β”€ initial_X_sequence_for_forecast.npy
β”‚   └── model_metadata.json
β”œβ”€β”€ scalers/
β”‚   β”œβ”€β”€ input_scalers.pkl
β”‚   └── y_scaler.pkl
```

---

### Usage


This repository provides the trained model and all necessary artifacts (scalers, metadata, initial input sequence) for SDL prediction, but does **not** include the inference code.

To use the model for inference:

1. **Load the Model and Artifacts:**
	- Load `model.keras` using Keras: `tf.keras.models.load_model('model.keras')`.
	- Load the scalers (`scalers/input_scalers.pkl`, `scalers/y_scaler.pkl`) and metadata (`metadata/model_metadata.json`) using Python's `pickle` and `json` modules.
	- Load the initial input sequence (`metadata/initial_X_sequence_for_forecast.npy`) using NumPy.

2. **Prepare Input Data:**
	- Prepare a 12-month sequence of input data as a 4D array: `(TIMESTEPS, height, width, n_channels)`.
	- Use the provided scalers to normalize input features.

3. **Perform Prediction:**
	- Pass the input sequence to the model to obtain predictions for future SDL values.
	- For rolling forecasts, update the input sequence with each new prediction and repeat as needed.
	- Use the output scaler to inverse-transform predictions to original units (W/mΒ²).

4. **Postprocess Results:**
	- Map predictions to the desired grid points using the latitude and longitude grids from the metadata.

**Note:**
- An implementation of this model is used in the project [Solarwise](https://github.com/RakshitRabugotra/solarwise) repository.

---

### License

This project is licensed under the **Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)**. See the `LICENSE` file for details or visit this [website](https://creativecommons.org/licenses/by-nc-sa/4.0/).

---

### Citation

If you use this model or code, please cite appropriately and respect the license terms.

---

### Contact

For questions or collaboration, please open an issue or contact the repository maintainer.