PVNet 5.0.1__tar.gz → 5.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pvnet-5.0.1 → pvnet-5.2.3}/PKG-INFO +51 -99
- {pvnet-5.0.1 → pvnet-5.2.3}/PVNet.egg-info/PKG-INFO +51 -99
- {pvnet-5.0.1 → pvnet-5.2.3}/PVNet.egg-info/SOURCES.txt +2 -4
- {pvnet-5.0.1 → pvnet-5.2.3}/PVNet.egg-info/requires.txt +1 -2
- {pvnet-5.0.1 → pvnet-5.2.3}/README.md +48 -95
- pvnet-5.2.3/pvnet/datamodule.py +142 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/load_model.py +2 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/base_model.py +10 -67
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/encoders/basic_blocks.py +1 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/encoders/encoders3d.py +24 -11
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/late_fusion.py +15 -24
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/training/lightning_module.py +20 -19
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/training/train.py +1 -23
- pvnet-5.2.3/pvnet/utils.py +169 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pyproject.toml +2 -3
- pvnet-5.2.3/tests/test_datamodule.py +15 -0
- pvnet-5.2.3/tests/test_end2end.py +33 -0
- pvnet-5.0.1/pvnet/data/__init__.py +0 -3
- pvnet-5.0.1/pvnet/data/base_datamodule.py +0 -166
- pvnet-5.0.1/pvnet/data/site_datamodule.py +0 -29
- pvnet-5.0.1/pvnet/data/uk_regional_datamodule.py +0 -29
- pvnet-5.0.1/pvnet/utils.py +0 -88
- pvnet-5.0.1/tests/test_end2end.py +0 -21
- {pvnet-5.0.1 → pvnet-5.2.3}/LICENSE +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/PVNet.egg-info/dependency_links.txt +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/PVNet.egg-info/top_level.txt +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/ensemble.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/basic_blocks.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/encoders/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/linear_networks/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/linear_networks/basic_blocks.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/linear_networks/networks.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/site_encoders/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/site_encoders/basic_blocks.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/models/late_fusion/site_encoders/encoders.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/optimizers.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/training/__init__.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/pvnet/training/plots.py +0 -0
- {pvnet-5.0.1 → pvnet-5.2.3}/setup.cfg +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PVNet
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.2.3
|
|
4
4
|
Summary: PVNet
|
|
5
5
|
Author-email: Peter Dudfield <info@openclimatefix.org>
|
|
6
|
-
Requires-Python:
|
|
6
|
+
Requires-Python: <3.14,>=3.11
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
License-File: LICENSE
|
|
9
|
-
Requires-Dist: ocf-data-sampler>=0.
|
|
9
|
+
Requires-Dist: ocf-data-sampler>=0.6.0
|
|
10
10
|
Requires-Dist: numpy
|
|
11
11
|
Requires-Dist: pandas
|
|
12
12
|
Requires-Dist: matplotlib
|
|
@@ -14,7 +14,6 @@ Requires-Dist: xarray
|
|
|
14
14
|
Requires-Dist: h5netcdf
|
|
15
15
|
Requires-Dist: torch>=2.0.0
|
|
16
16
|
Requires-Dist: lightning
|
|
17
|
-
Requires-Dist: torchvision
|
|
18
17
|
Requires-Dist: typer
|
|
19
18
|
Requires-Dist: sqlalchemy
|
|
20
19
|
Requires-Dist: fsspec[s3]
|
|
@@ -30,7 +29,7 @@ Dynamic: license-file
|
|
|
30
29
|
|
|
31
30
|
# PVNet
|
|
32
31
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
33
|
-
[](#contributors-)
|
|
34
33
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
35
34
|
|
|
36
35
|
[](https://github.com/openclimatefix/PVNet/tags)
|
|
@@ -143,120 +142,71 @@ pip install -e <PATH-TO-ocf-data-sampler-REPO>
|
|
|
143
142
|
If you install the local version of `ocf-data-sampler` that is more recent than the version
|
|
144
143
|
specified in `PVNet` it is not guarenteed to function properly with this library.
|
|
145
144
|
|
|
146
|
-
## Pre-saving samples of data for training/validation of PVNet
|
|
147
145
|
|
|
148
|
-
|
|
146
|
+
### Set up and config example for streaming
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
cp -r configs.example configs
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Set up and config example for sample creation
|
|
156
|
-
|
|
157
|
-
We will use the following example config file for creating samples: `/PVNet/configs/datamodule/configuration/example_configuration.yaml`. Ensure that the file paths are set to the correct locations in `example_configuration.yaml`: search for `PLACEHOLDER` to find where to input the location of the files. You will need to comment out or delete the parts of `example_configuration.yaml` pertaining to the data you are not using.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
When creating samples, an additional datamodule config located in `PVNet/configs/datamodule` is passed into the sample creation script: `streamed_samples.yaml`. Like before, a placeholder variable is used when specifying which configuration to use:
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
configuration: "PLACEHOLDER.yaml"
|
|
164
|
-
```
|
|
148
|
+
We will use the following example config file to describe your data sources: `/PVNet/configs/datamodule/configuration/example_configuration.yaml`. Ensure that the file paths are set to the correct locations in `example_configuration.yaml`: search for `PLACEHOLDER` to find where to input the location of the files. Delete or comment the parts for data you are not using.
|
|
165
149
|
|
|
166
|
-
|
|
150
|
+
At run time, the datamodule config `PVNet/configs/datamodule/streamed_samples.yaml` points to your chosen configuration file:
|
|
167
151
|
|
|
168
|
-
```yaml
|
|
169
152
|
configuration: "/FULL-PATH-TO-REPO/PVNet/configs/datamodule/configuration/example_configuration.yaml"
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Where `FULL-PATH-TO-REPO` represent the whole path to the PVNet repo on your local machine.
|
|
173
|
-
|
|
174
|
-
This is also where you can update the train, val & test periods to cover the data you have access to.
|
|
175
|
-
|
|
176
|
-
### Running the sample creation script
|
|
177
153
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
python scripts/save_samples.py
|
|
182
|
-
```
|
|
183
|
-
PVNet uses
|
|
184
|
-
[hydra](https://hydra.cc/) which enables us to pass variables via the command
|
|
185
|
-
line that will override the configuration defined in the `./configs` directory, like this:
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
python scripts/save_samples.py datamodule=streamed_samples datamodule.sample_output_dir="./output" datamodule.num_train_samples=10 datamodule.num_val_samples=5
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
`scripts/save_samples.py` needs a config under `PVNet/configs/datamodule`. You can adapt `streamed_samples.yaml` or create your own in the same folder.
|
|
154
|
+
You can also update train/val/test time ranges here to match the period you have access to.
|
|
192
155
|
|
|
193
156
|
If downloading private data from a GCP bucket make sure to authenticate gcloud (the public satellite data does not need authentication):
|
|
194
157
|
|
|
195
|
-
```
|
|
196
158
|
gcloud auth login
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Files stored in multiple locations can be added as a list. For example, in the `example_configuration.yaml` file we can supply a path to satellite data stored on a bucket:
|
|
200
|
-
|
|
201
|
-
```yaml
|
|
202
|
-
satellite:
|
|
203
|
-
zarr_path: gs://solar-pv-nowcasting-data/satellite/EUMETSAT/SEVIRI_RSS/v4/2020_nonhrv.zarr
|
|
204
|
-
```
|
|
205
159
|
|
|
206
|
-
|
|
160
|
+
You can provide multiple storage locations as a list. For example:
|
|
207
161
|
|
|
208
|
-
```yaml
|
|
209
162
|
satellite:
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
```
|
|
163
|
+
zarr_path:
|
|
164
|
+
- "gs://public-datasets-eumetsat-solar-forecasting/satellite/EUMETSAT/SEVIRI_RSS/v4/2020_nonhrv.zarr"
|
|
165
|
+
- "gs://public-datasets-eumetsat-solar-forecasting/satellite/EUMETSAT/SEVIRI_RSS/v4/2021_nonhrv.zarr"
|
|
214
166
|
|
|
215
|
-
ocf-data-sampler is currently set up to use 11 channels from the satellite data
|
|
167
|
+
`ocf-data-sampler` is currently set up to use 11 channels from the satellite data (the 12th, HRV, is not used).
|
|
216
168
|
|
|
169
|
+
⚠️ NB: Our publicly accessible satellite data is currently saved with a blosc2 compressor, which is not supported by the tensorstore backend PVNet relies on now. We are in the process of updating this; for now, the paths above cannot be used with this codebase.
|
|
217
170
|
|
|
218
171
|
### Training PVNet
|
|
219
172
|
|
|
220
|
-
How PVNet is run is determined by the
|
|
221
|
-
files. The configs stored in `PVNet/configs.example` should work with samples created using the steps and sample creation config mentioned above.
|
|
173
|
+
How PVNet is run is determined by the configuration files. The example configs in `PVNet/configs.example` work with **streamed_samples** using `datamodule/streamed_samples.yaml`.
|
|
222
174
|
|
|
223
|
-
|
|
175
|
+
Update the following before training:
|
|
224
176
|
|
|
225
|
-
1. In `configs/
|
|
226
|
-
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
3. In `configs/
|
|
232
|
-
-
|
|
177
|
+
1. In `configs/model/late_fusion.yaml`:
|
|
178
|
+
- Update the list of encoders to match the data sources you are using. For different NWP sources, keep the same structure but ensure:
|
|
179
|
+
- `in_channels`: the number of variables your NWP source supplies
|
|
180
|
+
- `image_size_pixels`: spatial crop matching your NWP resolution and the settings in your datamodule configuration (unless you coarsened, e.g. for ECMWF)
|
|
181
|
+
2. In `configs/trainer/default.yaml`:
|
|
182
|
+
- Set `accelerator: 0` if running on a system without a supported GPU
|
|
183
|
+
3. In `configs/datamodule/streamed_samples.yaml`:
|
|
184
|
+
- Point `configuration:` to your local `example_configuration.yaml` (or your custom one)
|
|
185
|
+
- Adjust the train/val/test time ranges to your available data
|
|
233
186
|
|
|
234
|
-
If
|
|
235
|
-
your customised config files:
|
|
187
|
+
If you create custom config files, update the main `./configs/config.yaml` defaults:
|
|
236
188
|
|
|
237
|
-
```yaml
|
|
238
189
|
defaults:
|
|
239
190
|
- trainer: default.yaml
|
|
240
191
|
- model: late_fusion.yaml
|
|
241
|
-
- datamodule:
|
|
192
|
+
- datamodule: streamed_samples.yaml
|
|
242
193
|
- callbacks: null
|
|
243
194
|
- experiment: null
|
|
244
195
|
- hparams_search: null
|
|
245
196
|
- hydra: default.yaml
|
|
246
|
-
```
|
|
247
197
|
|
|
248
|
-
|
|
249
|
-
val data samples, you can now train PVNet by running:
|
|
198
|
+
Now train PVNet:
|
|
250
199
|
|
|
251
|
-
```
|
|
252
200
|
python run.py
|
|
253
|
-
|
|
201
|
+
|
|
202
|
+
You can override any setting with Hydra, e.g.:
|
|
203
|
+
|
|
204
|
+
python run.py datamodule=streamed_samples datamodule.configuration="/FULL-PATH/PVNet/configs/datamodule/configuration/example_configuration.yaml"
|
|
254
205
|
|
|
255
206
|
## Backtest
|
|
256
207
|
|
|
257
208
|
If you have successfully trained a PVNet model and have a saved model checkpoint you can create a backtest using this, e.g. forecasts on historical data to evaluate forecast accuracy/skill. This can be done by running one of the scripts in this repo such as [the UK GSP backtest script](scripts/backtest_uk_gsp.py) or the [the pv site backtest script](scripts/backtest_sites.py), further info on how to run these are in each backtest file.
|
|
258
209
|
|
|
259
|
-
|
|
260
210
|
## Testing
|
|
261
211
|
|
|
262
212
|
You can use `python -m pytest tests` to run tests
|
|
@@ -271,29 +221,31 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
|
271
221
|
<table>
|
|
272
222
|
<tbody>
|
|
273
223
|
<tr>
|
|
274
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/felix-e-h-p"><img src="https://avatars.githubusercontent.com/u/137530077?v=4?s=100" width="100px;" alt="Felix"/><br /><sub><b>Felix</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
275
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Sukh-P"><img src="https://avatars.githubusercontent.com/u/42407101?v=4?s=100" width="100px;" alt="Sukhil Patel"/><br /><sub><b>Sukhil Patel</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
276
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dfulu"><img src="https://avatars.githubusercontent.com/u/41546094?v=4?s=100" width="100px;" alt="James Fulton"/><br /><sub><b>James Fulton</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
277
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AUdaltsova"><img src="https://avatars.githubusercontent.com/u/43303448?v=4?s=100" width="100px;" alt="Alexandra Udaltsova"/><br /><sub><b>Alexandra Udaltsova</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
278
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zakwatts"><img src="https://avatars.githubusercontent.com/u/47150349?v=4?s=100" width="100px;" alt="Megawattz"/><br /><sub><b>Megawattz</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
279
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/peterdudfield"><img src="https://avatars.githubusercontent.com/u/34686298?v=4?s=100" width="100px;" alt="Peter Dudfield"/><br /><sub><b>Peter Dudfield</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
224
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/felix-e-h-p"><img src="https://avatars.githubusercontent.com/u/137530077?v=4?s=100" width="100px;" alt="Felix"/><br /><sub><b>Felix</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=felix-e-h-p" title="Code">💻</a></td>
|
|
225
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Sukh-P"><img src="https://avatars.githubusercontent.com/u/42407101?v=4?s=100" width="100px;" alt="Sukhil Patel"/><br /><sub><b>Sukhil Patel</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=Sukh-P" title="Code">💻</a></td>
|
|
226
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dfulu"><img src="https://avatars.githubusercontent.com/u/41546094?v=4?s=100" width="100px;" alt="James Fulton"/><br /><sub><b>James Fulton</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=dfulu" title="Code">💻</a></td>
|
|
227
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AUdaltsova"><img src="https://avatars.githubusercontent.com/u/43303448?v=4?s=100" width="100px;" alt="Alexandra Udaltsova"/><br /><sub><b>Alexandra Udaltsova</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=AUdaltsova" title="Code">💻</a> <a href="https://github.com/openclimatefix/pvnet/pulls?q=is%3Apr+reviewed-by%3AAUdaltsova" title="Reviewed Pull Requests">👀</a></td>
|
|
228
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zakwatts"><img src="https://avatars.githubusercontent.com/u/47150349?v=4?s=100" width="100px;" alt="Megawattz"/><br /><sub><b>Megawattz</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=zakwatts" title="Code">💻</a></td>
|
|
229
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/peterdudfield"><img src="https://avatars.githubusercontent.com/u/34686298?v=4?s=100" width="100px;" alt="Peter Dudfield"/><br /><sub><b>Peter Dudfield</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=peterdudfield" title="Code">💻</a></td>
|
|
280
230
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mahdilamb"><img src="https://avatars.githubusercontent.com/u/4696915?v=4?s=100" width="100px;" alt="Mahdi Lamb"/><br /><sub><b>Mahdi Lamb</b></sub></a><br /><a href="#infra-mahdilamb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
281
231
|
</tr>
|
|
282
232
|
<tr>
|
|
283
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Prince-Bieker"/><br /><sub><b>Jacob Prince-Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
284
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/codderrrrr"><img src="https://avatars.githubusercontent.com/u/149995852?v=4?s=100" width="100px;" alt="codderrrrr"/><br /><sub><b>codderrrrr</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
285
|
-
<td align="center" valign="top" width="14.28%"><a href="https://chrisxbriggs.com"><img src="https://avatars.githubusercontent.com/u/617309?v=4?s=100" width="100px;" alt="Chris Briggs"/><br /><sub><b>Chris Briggs</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
286
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tmi"><img src="https://avatars.githubusercontent.com/u/147159?v=4?s=100" width="100px;" alt="tmi"/><br /><sub><b>tmi</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
287
|
-
<td align="center" valign="top" width="14.28%"><a href="https://rdrn.me/"><img src="https://avatars.githubusercontent.com/u/19817302?v=4?s=100" width="100px;" alt="Chris Arderne"/><br /><sub><b>Chris Arderne</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
288
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dakshbir"><img src="https://avatars.githubusercontent.com/u/144359831?v=4?s=100" width="100px;" alt="Dakshbir"/><br /><sub><b>Dakshbir</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
289
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MAYANK12SHARMA"><img src="https://avatars.githubusercontent.com/u/145884197?v=4?s=100" width="100px;" alt="MAYANK SHARMA"/><br /><sub><b>MAYANK SHARMA</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
233
|
+
<td align="center" valign="top" width="14.28%"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Prince-Bieker"/><br /><sub><b>Jacob Prince-Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=jacobbieker" title="Code">💻</a></td>
|
|
234
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/codderrrrr"><img src="https://avatars.githubusercontent.com/u/149995852?v=4?s=100" width="100px;" alt="codderrrrr"/><br /><sub><b>codderrrrr</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=codderrrrr" title="Code">💻</a></td>
|
|
235
|
+
<td align="center" valign="top" width="14.28%"><a href="https://chrisxbriggs.com"><img src="https://avatars.githubusercontent.com/u/617309?v=4?s=100" width="100px;" alt="Chris Briggs"/><br /><sub><b>Chris Briggs</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=confusedmatrix" title="Code">💻</a></td>
|
|
236
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tmi"><img src="https://avatars.githubusercontent.com/u/147159?v=4?s=100" width="100px;" alt="tmi"/><br /><sub><b>tmi</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=tmi" title="Code">💻</a></td>
|
|
237
|
+
<td align="center" valign="top" width="14.28%"><a href="https://rdrn.me/"><img src="https://avatars.githubusercontent.com/u/19817302?v=4?s=100" width="100px;" alt="Chris Arderne"/><br /><sub><b>Chris Arderne</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=carderne" title="Code">💻</a></td>
|
|
238
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dakshbir"><img src="https://avatars.githubusercontent.com/u/144359831?v=4?s=100" width="100px;" alt="Dakshbir"/><br /><sub><b>Dakshbir</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=Dakshbir" title="Code">💻</a></td>
|
|
239
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MAYANK12SHARMA"><img src="https://avatars.githubusercontent.com/u/145884197?v=4?s=100" width="100px;" alt="MAYANK SHARMA"/><br /><sub><b>MAYANK SHARMA</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=MAYANK12SHARMA" title="Code">💻</a></td>
|
|
290
240
|
</tr>
|
|
291
241
|
<tr>
|
|
292
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lambaaryan011"><img src="https://avatars.githubusercontent.com/u/153702847?v=4?s=100" width="100px;" alt="aryan lamba "/><br /><sub><b>aryan lamba </b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
293
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/michael-gendy"><img src="https://avatars.githubusercontent.com/u/64384201?v=4?s=100" width="100px;" alt="michael-gendy"/><br /><sub><b>michael-gendy</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
294
|
-
<td align="center" valign="top" width="14.28%"><a href="https://adityasuthar.github.io/"><img src="https://avatars.githubusercontent.com/u/95685363?v=4?s=100" width="100px;" alt="Aditya Suthar"/><br /><sub><b>Aditya Suthar</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
295
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/markus-kreft"><img src="https://avatars.githubusercontent.com/u/129367085?v=4?s=100" width="100px;" alt="Markus Kreft"/><br /><sub><b>Markus Kreft</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
242
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lambaaryan011"><img src="https://avatars.githubusercontent.com/u/153702847?v=4?s=100" width="100px;" alt="aryan lamba "/><br /><sub><b>aryan lamba </b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=lambaaryan011" title="Code">💻</a></td>
|
|
243
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/michael-gendy"><img src="https://avatars.githubusercontent.com/u/64384201?v=4?s=100" width="100px;" alt="michael-gendy"/><br /><sub><b>michael-gendy</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=michael-gendy" title="Code">💻</a></td>
|
|
244
|
+
<td align="center" valign="top" width="14.28%"><a href="https://adityasuthar.github.io/"><img src="https://avatars.githubusercontent.com/u/95685363?v=4?s=100" width="100px;" alt="Aditya Suthar"/><br /><sub><b>Aditya Suthar</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=adityasuthar" title="Code">💻</a></td>
|
|
245
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/markus-kreft"><img src="https://avatars.githubusercontent.com/u/129367085?v=4?s=100" width="100px;" alt="Markus Kreft"/><br /><sub><b>Markus Kreft</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=markus-kreft" title="Code">💻</a></td>
|
|
296
246
|
<td align="center" valign="top" width="14.28%"><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="#ideas-JackKelly" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
247
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zaryab-ali"><img src="https://avatars.githubusercontent.com/u/85732412?v=4?s=100" width="100px;" alt="zaryab-ali"/><br /><sub><b>zaryab-ali</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=zaryab-ali" title="Code">💻</a></td>
|
|
248
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Lex-Ashu"><img src="https://avatars.githubusercontent.com/u/181084934?v=4?s=100" width="100px;" alt="Lex-Ashu"/><br /><sub><b>Lex-Ashu</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=Lex-Ashu" title="Code">💻</a></td>
|
|
297
249
|
</tr>
|
|
298
250
|
</tbody>
|
|
299
251
|
</table>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PVNet
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.2.3
|
|
4
4
|
Summary: PVNet
|
|
5
5
|
Author-email: Peter Dudfield <info@openclimatefix.org>
|
|
6
|
-
Requires-Python:
|
|
6
|
+
Requires-Python: <3.14,>=3.11
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
License-File: LICENSE
|
|
9
|
-
Requires-Dist: ocf-data-sampler>=0.
|
|
9
|
+
Requires-Dist: ocf-data-sampler>=0.6.0
|
|
10
10
|
Requires-Dist: numpy
|
|
11
11
|
Requires-Dist: pandas
|
|
12
12
|
Requires-Dist: matplotlib
|
|
@@ -14,7 +14,6 @@ Requires-Dist: xarray
|
|
|
14
14
|
Requires-Dist: h5netcdf
|
|
15
15
|
Requires-Dist: torch>=2.0.0
|
|
16
16
|
Requires-Dist: lightning
|
|
17
|
-
Requires-Dist: torchvision
|
|
18
17
|
Requires-Dist: typer
|
|
19
18
|
Requires-Dist: sqlalchemy
|
|
20
19
|
Requires-Dist: fsspec[s3]
|
|
@@ -30,7 +29,7 @@ Dynamic: license-file
|
|
|
30
29
|
|
|
31
30
|
# PVNet
|
|
32
31
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
33
|
-
[](#contributors-)
|
|
34
33
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
35
34
|
|
|
36
35
|
[](https://github.com/openclimatefix/PVNet/tags)
|
|
@@ -143,120 +142,71 @@ pip install -e <PATH-TO-ocf-data-sampler-REPO>
|
|
|
143
142
|
If you install the local version of `ocf-data-sampler` that is more recent than the version
|
|
144
143
|
specified in `PVNet` it is not guarenteed to function properly with this library.
|
|
145
144
|
|
|
146
|
-
## Pre-saving samples of data for training/validation of PVNet
|
|
147
145
|
|
|
148
|
-
|
|
146
|
+
### Set up and config example for streaming
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
cp -r configs.example configs
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Set up and config example for sample creation
|
|
156
|
-
|
|
157
|
-
We will use the following example config file for creating samples: `/PVNet/configs/datamodule/configuration/example_configuration.yaml`. Ensure that the file paths are set to the correct locations in `example_configuration.yaml`: search for `PLACEHOLDER` to find where to input the location of the files. You will need to comment out or delete the parts of `example_configuration.yaml` pertaining to the data you are not using.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
When creating samples, an additional datamodule config located in `PVNet/configs/datamodule` is passed into the sample creation script: `streamed_samples.yaml`. Like before, a placeholder variable is used when specifying which configuration to use:
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
configuration: "PLACEHOLDER.yaml"
|
|
164
|
-
```
|
|
148
|
+
We will use the following example config file to describe your data sources: `/PVNet/configs/datamodule/configuration/example_configuration.yaml`. Ensure that the file paths are set to the correct locations in `example_configuration.yaml`: search for `PLACEHOLDER` to find where to input the location of the files. Delete or comment the parts for data you are not using.
|
|
165
149
|
|
|
166
|
-
|
|
150
|
+
At run time, the datamodule config `PVNet/configs/datamodule/streamed_samples.yaml` points to your chosen configuration file:
|
|
167
151
|
|
|
168
|
-
```yaml
|
|
169
152
|
configuration: "/FULL-PATH-TO-REPO/PVNet/configs/datamodule/configuration/example_configuration.yaml"
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Where `FULL-PATH-TO-REPO` represent the whole path to the PVNet repo on your local machine.
|
|
173
|
-
|
|
174
|
-
This is also where you can update the train, val & test periods to cover the data you have access to.
|
|
175
|
-
|
|
176
|
-
### Running the sample creation script
|
|
177
153
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
python scripts/save_samples.py
|
|
182
|
-
```
|
|
183
|
-
PVNet uses
|
|
184
|
-
[hydra](https://hydra.cc/) which enables us to pass variables via the command
|
|
185
|
-
line that will override the configuration defined in the `./configs` directory, like this:
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
python scripts/save_samples.py datamodule=streamed_samples datamodule.sample_output_dir="./output" datamodule.num_train_samples=10 datamodule.num_val_samples=5
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
`scripts/save_samples.py` needs a config under `PVNet/configs/datamodule`. You can adapt `streamed_samples.yaml` or create your own in the same folder.
|
|
154
|
+
You can also update train/val/test time ranges here to match the period you have access to.
|
|
192
155
|
|
|
193
156
|
If downloading private data from a GCP bucket make sure to authenticate gcloud (the public satellite data does not need authentication):
|
|
194
157
|
|
|
195
|
-
```
|
|
196
158
|
gcloud auth login
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Files stored in multiple locations can be added as a list. For example, in the `example_configuration.yaml` file we can supply a path to satellite data stored on a bucket:
|
|
200
|
-
|
|
201
|
-
```yaml
|
|
202
|
-
satellite:
|
|
203
|
-
zarr_path: gs://solar-pv-nowcasting-data/satellite/EUMETSAT/SEVIRI_RSS/v4/2020_nonhrv.zarr
|
|
204
|
-
```
|
|
205
159
|
|
|
206
|
-
|
|
160
|
+
You can provide multiple storage locations as a list. For example:
|
|
207
161
|
|
|
208
|
-
```yaml
|
|
209
162
|
satellite:
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
```
|
|
163
|
+
zarr_path:
|
|
164
|
+
- "gs://public-datasets-eumetsat-solar-forecasting/satellite/EUMETSAT/SEVIRI_RSS/v4/2020_nonhrv.zarr"
|
|
165
|
+
- "gs://public-datasets-eumetsat-solar-forecasting/satellite/EUMETSAT/SEVIRI_RSS/v4/2021_nonhrv.zarr"
|
|
214
166
|
|
|
215
|
-
ocf-data-sampler is currently set up to use 11 channels from the satellite data
|
|
167
|
+
`ocf-data-sampler` is currently set up to use 11 channels from the satellite data (the 12th, HRV, is not used).
|
|
216
168
|
|
|
169
|
+
⚠️ NB: Our publicly accessible satellite data is currently saved with a blosc2 compressor, which is not supported by the tensorstore backend PVNet relies on now. We are in the process of updating this; for now, the paths above cannot be used with this codebase.
|
|
217
170
|
|
|
218
171
|
### Training PVNet
|
|
219
172
|
|
|
220
|
-
How PVNet is run is determined by the
|
|
221
|
-
files. The configs stored in `PVNet/configs.example` should work with samples created using the steps and sample creation config mentioned above.
|
|
173
|
+
How PVNet is run is determined by the configuration files. The example configs in `PVNet/configs.example` work with **streamed_samples** using `datamodule/streamed_samples.yaml`.
|
|
222
174
|
|
|
223
|
-
|
|
175
|
+
Update the following before training:
|
|
224
176
|
|
|
225
|
-
1. In `configs/
|
|
226
|
-
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
3. In `configs/
|
|
232
|
-
-
|
|
177
|
+
1. In `configs/model/late_fusion.yaml`:
|
|
178
|
+
- Update the list of encoders to match the data sources you are using. For different NWP sources, keep the same structure but ensure:
|
|
179
|
+
- `in_channels`: the number of variables your NWP source supplies
|
|
180
|
+
- `image_size_pixels`: spatial crop matching your NWP resolution and the settings in your datamodule configuration (unless you coarsened, e.g. for ECMWF)
|
|
181
|
+
2. In `configs/trainer/default.yaml`:
|
|
182
|
+
- Set `accelerator: 0` if running on a system without a supported GPU
|
|
183
|
+
3. In `configs/datamodule/streamed_samples.yaml`:
|
|
184
|
+
- Point `configuration:` to your local `example_configuration.yaml` (or your custom one)
|
|
185
|
+
- Adjust the train/val/test time ranges to your available data
|
|
233
186
|
|
|
234
|
-
If
|
|
235
|
-
your customised config files:
|
|
187
|
+
If you create custom config files, update the main `./configs/config.yaml` defaults:
|
|
236
188
|
|
|
237
|
-
```yaml
|
|
238
189
|
defaults:
|
|
239
190
|
- trainer: default.yaml
|
|
240
191
|
- model: late_fusion.yaml
|
|
241
|
-
- datamodule:
|
|
192
|
+
- datamodule: streamed_samples.yaml
|
|
242
193
|
- callbacks: null
|
|
243
194
|
- experiment: null
|
|
244
195
|
- hparams_search: null
|
|
245
196
|
- hydra: default.yaml
|
|
246
|
-
```
|
|
247
197
|
|
|
248
|
-
|
|
249
|
-
val data samples, you can now train PVNet by running:
|
|
198
|
+
Now train PVNet:
|
|
250
199
|
|
|
251
|
-
```
|
|
252
200
|
python run.py
|
|
253
|
-
|
|
201
|
+
|
|
202
|
+
You can override any setting with Hydra, e.g.:
|
|
203
|
+
|
|
204
|
+
python run.py datamodule=streamed_samples datamodule.configuration="/FULL-PATH/PVNet/configs/datamodule/configuration/example_configuration.yaml"
|
|
254
205
|
|
|
255
206
|
## Backtest
|
|
256
207
|
|
|
257
208
|
If you have successfully trained a PVNet model and have a saved model checkpoint you can create a backtest using this, e.g. forecasts on historical data to evaluate forecast accuracy/skill. This can be done by running one of the scripts in this repo such as [the UK GSP backtest script](scripts/backtest_uk_gsp.py) or the [the pv site backtest script](scripts/backtest_sites.py), further info on how to run these are in each backtest file.
|
|
258
209
|
|
|
259
|
-
|
|
260
210
|
## Testing
|
|
261
211
|
|
|
262
212
|
You can use `python -m pytest tests` to run tests
|
|
@@ -271,29 +221,31 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
|
271
221
|
<table>
|
|
272
222
|
<tbody>
|
|
273
223
|
<tr>
|
|
274
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/felix-e-h-p"><img src="https://avatars.githubusercontent.com/u/137530077?v=4?s=100" width="100px;" alt="Felix"/><br /><sub><b>Felix</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
275
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Sukh-P"><img src="https://avatars.githubusercontent.com/u/42407101?v=4?s=100" width="100px;" alt="Sukhil Patel"/><br /><sub><b>Sukhil Patel</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
276
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dfulu"><img src="https://avatars.githubusercontent.com/u/41546094?v=4?s=100" width="100px;" alt="James Fulton"/><br /><sub><b>James Fulton</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
277
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AUdaltsova"><img src="https://avatars.githubusercontent.com/u/43303448?v=4?s=100" width="100px;" alt="Alexandra Udaltsova"/><br /><sub><b>Alexandra Udaltsova</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
278
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zakwatts"><img src="https://avatars.githubusercontent.com/u/47150349?v=4?s=100" width="100px;" alt="Megawattz"/><br /><sub><b>Megawattz</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
279
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/peterdudfield"><img src="https://avatars.githubusercontent.com/u/34686298?v=4?s=100" width="100px;" alt="Peter Dudfield"/><br /><sub><b>Peter Dudfield</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
224
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/felix-e-h-p"><img src="https://avatars.githubusercontent.com/u/137530077?v=4?s=100" width="100px;" alt="Felix"/><br /><sub><b>Felix</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=felix-e-h-p" title="Code">💻</a></td>
|
|
225
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Sukh-P"><img src="https://avatars.githubusercontent.com/u/42407101?v=4?s=100" width="100px;" alt="Sukhil Patel"/><br /><sub><b>Sukhil Patel</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=Sukh-P" title="Code">💻</a></td>
|
|
226
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dfulu"><img src="https://avatars.githubusercontent.com/u/41546094?v=4?s=100" width="100px;" alt="James Fulton"/><br /><sub><b>James Fulton</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=dfulu" title="Code">💻</a></td>
|
|
227
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AUdaltsova"><img src="https://avatars.githubusercontent.com/u/43303448?v=4?s=100" width="100px;" alt="Alexandra Udaltsova"/><br /><sub><b>Alexandra Udaltsova</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=AUdaltsova" title="Code">💻</a> <a href="https://github.com/openclimatefix/pvnet/pulls?q=is%3Apr+reviewed-by%3AAUdaltsova" title="Reviewed Pull Requests">👀</a></td>
|
|
228
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zakwatts"><img src="https://avatars.githubusercontent.com/u/47150349?v=4?s=100" width="100px;" alt="Megawattz"/><br /><sub><b>Megawattz</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=zakwatts" title="Code">💻</a></td>
|
|
229
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/peterdudfield"><img src="https://avatars.githubusercontent.com/u/34686298?v=4?s=100" width="100px;" alt="Peter Dudfield"/><br /><sub><b>Peter Dudfield</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=peterdudfield" title="Code">💻</a></td>
|
|
280
230
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mahdilamb"><img src="https://avatars.githubusercontent.com/u/4696915?v=4?s=100" width="100px;" alt="Mahdi Lamb"/><br /><sub><b>Mahdi Lamb</b></sub></a><br /><a href="#infra-mahdilamb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
281
231
|
</tr>
|
|
282
232
|
<tr>
|
|
283
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Prince-Bieker"/><br /><sub><b>Jacob Prince-Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
284
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/codderrrrr"><img src="https://avatars.githubusercontent.com/u/149995852?v=4?s=100" width="100px;" alt="codderrrrr"/><br /><sub><b>codderrrrr</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
285
|
-
<td align="center" valign="top" width="14.28%"><a href="https://chrisxbriggs.com"><img src="https://avatars.githubusercontent.com/u/617309?v=4?s=100" width="100px;" alt="Chris Briggs"/><br /><sub><b>Chris Briggs</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
286
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tmi"><img src="https://avatars.githubusercontent.com/u/147159?v=4?s=100" width="100px;" alt="tmi"/><br /><sub><b>tmi</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
287
|
-
<td align="center" valign="top" width="14.28%"><a href="https://rdrn.me/"><img src="https://avatars.githubusercontent.com/u/19817302?v=4?s=100" width="100px;" alt="Chris Arderne"/><br /><sub><b>Chris Arderne</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
288
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dakshbir"><img src="https://avatars.githubusercontent.com/u/144359831?v=4?s=100" width="100px;" alt="Dakshbir"/><br /><sub><b>Dakshbir</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
289
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MAYANK12SHARMA"><img src="https://avatars.githubusercontent.com/u/145884197?v=4?s=100" width="100px;" alt="MAYANK SHARMA"/><br /><sub><b>MAYANK SHARMA</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
233
|
+
<td align="center" valign="top" width="14.28%"><a href="https://www.jacobbieker.com"><img src="https://avatars.githubusercontent.com/u/7170359?v=4?s=100" width="100px;" alt="Jacob Prince-Bieker"/><br /><sub><b>Jacob Prince-Bieker</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=jacobbieker" title="Code">💻</a></td>
|
|
234
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/codderrrrr"><img src="https://avatars.githubusercontent.com/u/149995852?v=4?s=100" width="100px;" alt="codderrrrr"/><br /><sub><b>codderrrrr</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=codderrrrr" title="Code">💻</a></td>
|
|
235
|
+
<td align="center" valign="top" width="14.28%"><a href="https://chrisxbriggs.com"><img src="https://avatars.githubusercontent.com/u/617309?v=4?s=100" width="100px;" alt="Chris Briggs"/><br /><sub><b>Chris Briggs</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=confusedmatrix" title="Code">💻</a></td>
|
|
236
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tmi"><img src="https://avatars.githubusercontent.com/u/147159?v=4?s=100" width="100px;" alt="tmi"/><br /><sub><b>tmi</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=tmi" title="Code">💻</a></td>
|
|
237
|
+
<td align="center" valign="top" width="14.28%"><a href="https://rdrn.me/"><img src="https://avatars.githubusercontent.com/u/19817302?v=4?s=100" width="100px;" alt="Chris Arderne"/><br /><sub><b>Chris Arderne</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=carderne" title="Code">💻</a></td>
|
|
238
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dakshbir"><img src="https://avatars.githubusercontent.com/u/144359831?v=4?s=100" width="100px;" alt="Dakshbir"/><br /><sub><b>Dakshbir</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=Dakshbir" title="Code">💻</a></td>
|
|
239
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MAYANK12SHARMA"><img src="https://avatars.githubusercontent.com/u/145884197?v=4?s=100" width="100px;" alt="MAYANK SHARMA"/><br /><sub><b>MAYANK SHARMA</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=MAYANK12SHARMA" title="Code">💻</a></td>
|
|
290
240
|
</tr>
|
|
291
241
|
<tr>
|
|
292
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lambaaryan011"><img src="https://avatars.githubusercontent.com/u/153702847?v=4?s=100" width="100px;" alt="aryan lamba "/><br /><sub><b>aryan lamba </b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
293
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/michael-gendy"><img src="https://avatars.githubusercontent.com/u/64384201?v=4?s=100" width="100px;" alt="michael-gendy"/><br /><sub><b>michael-gendy</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
294
|
-
<td align="center" valign="top" width="14.28%"><a href="https://adityasuthar.github.io/"><img src="https://avatars.githubusercontent.com/u/95685363?v=4?s=100" width="100px;" alt="Aditya Suthar"/><br /><sub><b>Aditya Suthar</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
295
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/markus-kreft"><img src="https://avatars.githubusercontent.com/u/129367085?v=4?s=100" width="100px;" alt="Markus Kreft"/><br /><sub><b>Markus Kreft</b></sub></a><br /><a href="https://github.com/openclimatefix/
|
|
242
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lambaaryan011"><img src="https://avatars.githubusercontent.com/u/153702847?v=4?s=100" width="100px;" alt="aryan lamba "/><br /><sub><b>aryan lamba </b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=lambaaryan011" title="Code">💻</a></td>
|
|
243
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/michael-gendy"><img src="https://avatars.githubusercontent.com/u/64384201?v=4?s=100" width="100px;" alt="michael-gendy"/><br /><sub><b>michael-gendy</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=michael-gendy" title="Code">💻</a></td>
|
|
244
|
+
<td align="center" valign="top" width="14.28%"><a href="https://adityasuthar.github.io/"><img src="https://avatars.githubusercontent.com/u/95685363?v=4?s=100" width="100px;" alt="Aditya Suthar"/><br /><sub><b>Aditya Suthar</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=adityasuthar" title="Code">💻</a></td>
|
|
245
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/markus-kreft"><img src="https://avatars.githubusercontent.com/u/129367085?v=4?s=100" width="100px;" alt="Markus Kreft"/><br /><sub><b>Markus Kreft</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=markus-kreft" title="Code">💻</a></td>
|
|
296
246
|
<td align="center" valign="top" width="14.28%"><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="#ideas-JackKelly" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
247
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zaryab-ali"><img src="https://avatars.githubusercontent.com/u/85732412?v=4?s=100" width="100px;" alt="zaryab-ali"/><br /><sub><b>zaryab-ali</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=zaryab-ali" title="Code">💻</a></td>
|
|
248
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Lex-Ashu"><img src="https://avatars.githubusercontent.com/u/181084934?v=4?s=100" width="100px;" alt="Lex-Ashu"/><br /><sub><b>Lex-Ashu</b></sub></a><br /><a href="https://github.com/openclimatefix/pvnet/commits?author=Lex-Ashu" title="Code">💻</a></td>
|
|
297
249
|
</tr>
|
|
298
250
|
</tbody>
|
|
299
251
|
</table>
|
|
@@ -7,13 +7,10 @@ PVNet.egg-info/dependency_links.txt
|
|
|
7
7
|
PVNet.egg-info/requires.txt
|
|
8
8
|
PVNet.egg-info/top_level.txt
|
|
9
9
|
pvnet/__init__.py
|
|
10
|
+
pvnet/datamodule.py
|
|
10
11
|
pvnet/load_model.py
|
|
11
12
|
pvnet/optimizers.py
|
|
12
13
|
pvnet/utils.py
|
|
13
|
-
pvnet/data/__init__.py
|
|
14
|
-
pvnet/data/base_datamodule.py
|
|
15
|
-
pvnet/data/site_datamodule.py
|
|
16
|
-
pvnet/data/uk_regional_datamodule.py
|
|
17
14
|
pvnet/models/__init__.py
|
|
18
15
|
pvnet/models/base_model.py
|
|
19
16
|
pvnet/models/ensemble.py
|
|
@@ -33,4 +30,5 @@ pvnet/training/__init__.py
|
|
|
33
30
|
pvnet/training/lightning_module.py
|
|
34
31
|
pvnet/training/plots.py
|
|
35
32
|
pvnet/training/train.py
|
|
33
|
+
tests/test_datamodule.py
|
|
36
34
|
tests/test_end2end.py
|