{"id":49237203,"url":"https://github.com/openclimatefix/PVNet","last_synced_at":"2026-05-27T16:00:41.786Z","repository":{"id":63180161,"uuid":"565799141","full_name":"openclimatefix/pvnet","owner":"openclimatefix","description":"PVnet main repo","archived":false,"fork":false,"pushed_at":"2026-05-19T14:56:45.000Z","size":349379,"stargazers_count":53,"open_issues_count":11,"forks_count":49,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-22T20:14:16.369Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openclimatefix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["openclimatefix"],"patreon":null,"open_collective":"openclimatefix","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2022-11-14T10:55:59.000Z","updated_at":"2026-05-19T15:14:34.000Z","dependencies_parsed_at":"2023-09-27T22:55:52.741Z","dependency_job_id":"cd253afb-ac55-4359-b492-de411080949e","html_url":"https://github.com/openclimatefix/pvnet","commit_stats":{"total_commits":805,"total_committers":11,"mean_commits":73.18181818181819,"dds":0.6608695652173913,"last_synced_commit":"3e2f306bf9900c69f9152937cd0dc1f45b9dda5c"},"previous_names":[],"tags_count":245,"template":false,"template_full_name":null,"purl":"pkg:github/openclimatefix/pvnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fpvnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fpvnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fpvnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fpvnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openclimatefix","download_url":"https://codeload.github.com/openclimatefix/pvnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fpvnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33573255,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-24T17:00:32.372Z","updated_at":"2026-05-27T16:00:41.765Z","avatar_url":"https://github.com/openclimatefix.png","language":"Python","funding_links":["https://github.com/sponsors/openclimatefix","https://opencollective.com/openclimatefix"],"categories":["Renewable Energy"],"sub_categories":["Photovoltaics and Solar Energy"],"readme":"# PVNet\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-21-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n[![tags badge](https://img.shields.io/github/v/tag/openclimatefix/PVNet?include_prereleases\u0026sort=semver\u0026color=FFAC5F)](https://github.com/openclimatefix/PVNet/tags)\n[![ease of contribution: hard](https://img.shields.io/badge/ease%20of%20contribution:%20hard-bb2629)](https://github.com/openclimatefix/ocf-meta-repo?tab=readme-ov-file#overview-of-ocfs-nowcasting-repositories)\n\n\nThis project is used for training PVNet and running PVNet on live data.\n\nPVNet is a multi-modal late-fusion model for predicting renewable energy generation from weather \ndata. The NWP (Numerical Weather Prediction) and satellite data are sent through a neural network \nwhich encodes them down to 1D intermediate representations. These are concatenated together with \nrecent generation, the calculated solar coordinates (azimuth and elevation) and the location ID \nwhich has been put through an embedding layer. This 1D concatenated feature vector is put through \nan output network which outputs predictions of the future energy yield.\n\n\n## Experiments\n\nOur paper based on this repo was accepted into the Tackling Climate Change with Machine Learning \nworkshop at ICLR 2024 and can be viewed [here](https://www.climatechange.ai/papers/iclr2024/46).\n\nSome more structured notes on experiments we have performed with PVNet are \n[here](https://docs.google.com/document/d/1VumDwWd8YAfvXbOtJEv3ZJm_FHQDzrKXR0jU9vnvGQg).\n\n\n## Setup / Installation\n\n```bash\ngit clone git@github.com:openclimatefix/PVNet.git\ncd PVNet\npip install .\n```\n\nThe commit history is extensive. To save download time, use a depth of 1:\n```bash\ngit clone --depth 1 git@github.com:openclimatefix/PVNet.git\n```\nThis means only the latest commit and its associated files will be downloaded.\n\nNext, in the PVNet repo, install PVNet as an editable package:\n\n```bash\npip install -e .\n```\n\n### Additional development dependencies\n\n```bash\npip install \".[dev]\"\n```\n\n\n\n## Getting started with running PVNet\n\nBefore running any code in PVNet, copy the example configuration to a\nconfigs directory:\n\n```\ncp -r configs.example configs\n```\n\nYou will be making local amendments to these configs. See the README in\n`configs.example` for more info.\n\n### Datasets\n\nAs a minimum, in order to create samples of data/run PVNet, you will need to\nsupply paths to NWP and GSP data. PV data can also be used. We list some\nsuggested locations for downloading such datasets below:\n\n**GSP (Grid Supply Point)** - Regional PV generation data\\\nThe University of Sheffield provides API access to download this data:\nhttps://www.solar.sheffield.ac.uk/api/\n\nDocumentation for querying generation data aggregated by GSP region can be found\nhere:\nhttps://docs.google.com/document/d/e/2PACX-1vSDFb-6dJ2kIFZnsl-pBQvcH4inNQCA4lYL9cwo80bEHQeTK8fONLOgDf6Wm4ze_fxonqK3EVBVoAIz/pub#h.9d97iox3wzmd\n\n**NWP (Numerical weather predictions)**\\\nOCF maintains a Zarr formatted version of the German Weather Service's (DWD)\nICON-EU NWP model here:\nhttps://huggingface.co/datasets/openclimatefix/dwd-icon-eu which includes the UK\n\n**PV**\\\nOCF maintains a dataset of PV generation from 1311 private PV installations\nhere: https://huggingface.co/datasets/openclimatefix/uk_pv\n\n\n### Connecting with ocf-data-sampler for sample creation\n\nOutside the PVNet repo, clone the ocf-data-sampler repo and exit the conda env created for PVNet: https://github.com/openclimatefix/ocf-data-sampler\n```bash\ngit clone git@github.com/openclimatefix/ocf-data-sampler.git\nconda create -n ocf-data-sampler python=3.11\n```\n\nThen go inside the ocf-data-sampler repo to add packages\n\n```bash\npip install .\n```\n\nThen exit this environment, and enter back into the pvnet conda environment and install ocf-data-sampler in editable mode (-e). This means the package is directly linked to the source code in the ocf-data-sampler repo.\n\n```bash\npip install -e \u003cPATH-TO-ocf-data-sampler-REPO\u003e\n```\n\nIf you install the local version of `ocf-data-sampler` that is more recent than the version \nspecified in `PVNet` it is not guarenteed to function properly with this library.\n\n\n### Set up and config example for streaming\n\nWe 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.\n\nAt run time, the datamodule config `PVNet/configs/datamodule/streamed_samples.yaml` points to your chosen configuration file:\n\nconfiguration: \"/FULL-PATH-TO-REPO/PVNet/configs/datamodule/configuration/example_configuration.yaml\"\n\nYou can also update train/val/test time ranges here to match the period you have access to.\n\nIf downloading private data from a GCP bucket make sure to authenticate gcloud (the public satellite data does not need authentication):\n\ngcloud auth login\n\nYou can provide multiple storage locations as a list. For example:\n\nsatellite:\n  zarr_path:\n    - \"gs://public-datasets-eumetsat-solar-forecasting/satellite/EUMETSAT/SEVIRI_RSS/v4/2020_nonhrv.zarr\"\n    - \"gs://public-datasets-eumetsat-solar-forecasting/satellite/EUMETSAT/SEVIRI_RSS/v4/2021_nonhrv.zarr\"\n\n`ocf-data-sampler` is currently set up to use 11 channels from the satellite data (the 12th, HRV, is not used).\n\n⚠️ 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.\n\n### Training PVNet\n\nHow 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`.\n\nUpdate the following before training:\n\n1. In `configs/model/late_fusion.yaml`:\n    - Update the list of encoders to match the data sources you are using. For different NWP sources, keep the same structure but ensure:\n        - `in_channels`: the number of variables your NWP source supplies\n        - `image_size_pixels`: spatial crop matching your NWP resolution and the settings in your datamodule configuration (unless you coarsened, e.g. for ECMWF)\n2. In `configs/trainer/default.yaml`:\n    - Set `accelerator: 0` if running on a system without a supported GPU\n3. In `configs/datamodule/streamed_samples.yaml`:\n    - Point `configuration:` to your local `example_configuration.yaml` (or your custom one)\n    - Adjust the train/val/test time ranges to your available data\n\nIf you create custom config files, update the main `./configs/config.yaml` defaults:\n\ndefaults:\n  - trainer: default.yaml\n  - model: late_fusion.yaml\n  - datamodule: streamed_samples.yaml\n  - callbacks: null\n  - experiment: null\n  - hparams_search: null\n  - hydra: default.yaml\n\nNow train PVNet:\n\npython run.py\n\nYou can override any setting with Hydra, e.g.:\n\npython run.py datamodule=streamed_samples datamodule.configuration=\"/FULL-PATH/PVNet/configs/datamodule/configuration/example_configuration.yaml\"\n\n## Backtest\n\nIf 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.\n\n## Testing\n\nYou can use `python -m pytest tests` to run tests\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/felix-e-h-p\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/137530077?v=4?s=100\" width=\"100px;\" alt=\"Felix\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFelix\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=felix-e-h-p\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Sukh-P\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/42407101?v=4?s=100\" width=\"100px;\" alt=\"Sukhil Patel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSukhil Patel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=Sukh-P\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dfulu\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/41546094?v=4?s=100\" width=\"100px;\" alt=\"James Fulton\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames Fulton\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=dfulu\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/AUdaltsova\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43303448?v=4?s=100\" width=\"100px;\" alt=\"Alexandra Udaltsova\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexandra Udaltsova\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=AUdaltsova\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/openclimatefix/pvnet/pulls?q=is%3Apr+reviewed-by%3AAUdaltsova\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/zakwatts\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47150349?v=4?s=100\" width=\"100px;\" alt=\"Megawattz\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMegawattz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=zakwatts\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/peterdudfield\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/34686298?v=4?s=100\" width=\"100px;\" alt=\"Peter Dudfield\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePeter Dudfield\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=peterdudfield\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/mahdilamb\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4696915?v=4?s=100\" width=\"100px;\" alt=\"Mahdi Lamb\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMahdi Lamb\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-mahdilamb\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.jacobbieker.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7170359?v=4?s=100\" width=\"100px;\" alt=\"Jacob Prince-Bieker\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJacob Prince-Bieker\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=jacobbieker\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/codderrrrr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/149995852?v=4?s=100\" width=\"100px;\" alt=\"codderrrrr\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecodderrrrr\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=codderrrrr\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://chrisxbriggs.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/617309?v=4?s=100\" width=\"100px;\" alt=\"Chris Briggs\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChris Briggs\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=confusedmatrix\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tmi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/147159?v=4?s=100\" width=\"100px;\" alt=\"tmi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003etmi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=tmi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://rdrn.me/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19817302?v=4?s=100\" width=\"100px;\" alt=\"Chris Arderne\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChris Arderne\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=carderne\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Dakshbir\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/144359831?v=4?s=100\" width=\"100px;\" alt=\"Dakshbir\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDakshbir\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=Dakshbir\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MAYANK12SHARMA\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/145884197?v=4?s=100\" width=\"100px;\" alt=\"MAYANK SHARMA\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMAYANK SHARMA\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=MAYANK12SHARMA\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/lambaaryan011\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/153702847?v=4?s=100\" width=\"100px;\" alt=\"aryan lamba \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003earyan lamba \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=lambaaryan011\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/michael-gendy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/64384201?v=4?s=100\" width=\"100px;\" alt=\"michael-gendy\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emichael-gendy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=michael-gendy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://adityasuthar.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/95685363?v=4?s=100\" width=\"100px;\" alt=\"Aditya Suthar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAditya Suthar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=adityasuthar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/markus-kreft\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/129367085?v=4?s=100\" width=\"100px;\" alt=\"Markus Kreft\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarkus Kreft\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=markus-kreft\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://jack-kelly.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/460756?v=4?s=100\" width=\"100px;\" alt=\"Jack Kelly\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJack Kelly\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-JackKelly\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/zaryab-ali\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/85732412?v=4?s=100\" width=\"100px;\" alt=\"zaryab-ali\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ezaryab-ali\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=zaryab-ali\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Lex-Ashu\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/181084934?v=4?s=100\" width=\"100px;\" alt=\"Lex-Ashu\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLex-Ashu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/pvnet/commits?author=Lex-Ashu\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenclimatefix%2FPVNet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenclimatefix%2FPVNet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenclimatefix%2FPVNet/lists"}