{"id":13719416,"url":"https://github.com/openclimatefix/Open-Source-Quartz-Solar-Forecast","last_synced_at":"2025-05-07T11:31:31.803Z","repository":{"id":207521638,"uuid":"719451266","full_name":"openclimatefix/open-source-quartz-solar-forecast","owner":"openclimatefix","description":"Open Source Solar Site Level Forecast","archived":false,"fork":false,"pushed_at":"2025-05-02T09:27:30.000Z","size":2465,"stargazers_count":85,"open_issues_count":32,"forks_count":78,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-04T17:03:35.470Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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":"security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":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":"2023-11-16T07:37:42.000Z","updated_at":"2025-05-02T09:27:33.000Z","dependencies_parsed_at":"2023-11-23T17:31:30.131Z","dependency_job_id":"250e6948-c0e2-4bdc-9068-3e2f17d9b5a8","html_url":"https://github.com/openclimatefix/open-source-quartz-solar-forecast","commit_stats":{"total_commits":383,"total_committers":30,"mean_commits":"12.766666666666667","dds":0.7571801566579635,"last_synced_commit":"297b7e9c5a1eb9f94bf4c003af8acf4076c2933d"},"previous_names":["openclimatefix/solar-forecast-os","openclimatefix/quartz-solar-forecast","openclimatefix/open-quartz-solar-forecast","openclimatefix/open-source-quartz-solar-forecast"],"tags_count":118,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fopen-source-quartz-solar-forecast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fopen-source-quartz-solar-forecast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fopen-source-quartz-solar-forecast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix%2Fopen-source-quartz-solar-forecast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openclimatefix","download_url":"https://codeload.github.com/openclimatefix/open-source-quartz-solar-forecast/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252868859,"owners_count":21816926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-08-03T01:00:48.311Z","updated_at":"2025-05-07T11:31:31.786Z","avatar_url":"https://github.com/openclimatefix.png","language":"Jupyter Notebook","funding_links":["https://github.com/sponsors/openclimatefix","https://opencollective.com/openclimatefix"],"categories":["Renewable Energy"],"sub_categories":["Photovoltaics and Solar Energy"],"readme":"# Quartz Solar Forecast\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-33-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n![image](https://github.com/user-attachments/assets/6563849b-b355-4842-93e4-61c15a9a9ebf)\n[![tags badge](https://img.shields.io/github/v/tag/openclimatefix/open-source-quartz-solar-forecast?include_prereleases\u0026sort=semver\u0026color=FFAC5F)](https://github.com/openclimatefix/open-source-quartz-solar-forecast/tags)\n[![pypi badge](https://img.shields.io/pypi/v/quartz-solar-forecast?\u0026color=07BCDF)](https://pypi.org/project/quartz-solar-forecast/)\n[![ease of contribution: easy](https://img.shields.io/badge/ease%20of%20contribution:%20easy-32bd50)](https://github.com/openclimatefix/ocf-meta-repo?tab=readme-ov-file#overview-of-ocfs-nowcasting-repositories) \n[![Python package tests](https://github.com/openclimatefix/open-source-quartz-solar-forecast/actions/workflows/pytest.yaml/badge.svg)](https://github.com/openclimatefix/open-source-quartz-solar-forecast/actions/workflows/pytest.yaml)\n\n\nThe aim of the project is to build an open source PV forecast that is free and easy to use.\nThe forecast provides the expected generation in `kw` for 0 to 48 hours for a single PV site.\n\nOpen Climate Fix also provides a commercial PV forecast, please get in touch at quartz.support@openclimatefix.org\n\nWant to learn more about the project? We've presented Quartz Solar Forecast at two open source conferences:\n\n- **FOSDEM 2024** (Free and Open source Software Developers' European Meeting): How we built Open Quartz, our motivation behind it and its impact on aiding organizations in resource optimization [Watch the talk](https://www.youtube.com/watch?v=NAZ2VeiN1N8)\n\n- **LF Energy 2024**: Exploring Open Quartz's developments - new models, inverter APIs, and our Open Source journey at Open Climate Fix [Watch the talk](https://www.youtube.com/watch?v=YTaq41ztEDg)\n\n\nThe current model uses GFS or ICON NWPs to predict the solar generation at a site\n\n```python\nfrom quartz_solar_forecast.forecast import run_forecast\nfrom quartz_solar_forecast.pydantic_models import PVSite\nfrom datetime import datetime\n\n# make a pv site object\nsite = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=1.25)\n\n# run model for today, using ICON NWP data\npredictions_df = run_forecast(site=site, ts=datetime.today(), nwp_source=\"icon\")\n```\n\nwhich should result in a time series similar to this one:\n\n![https://github.com/openclimatefix/Open-Source-Quartz-Solar-Forecast/blob/main/predictions.png?raw=true](https://github.com/openclimatefix/Open-Source-Quartz-Solar-Forecast/blob/main/predictions.png?raw=true)\n\nA colab notebook providing some examples can be found [here](https://colab.research.google.com/drive/1qKDFRpq4Hk-LHgWuDsz_Najc3Zq-GVNY?usp=sharing).\n\n## Generating Forecasts\n\nTo generate solar forecasts and save them into a CSV file, follow these steps:\n\n- Run the forecast_csv.py script with desired inputs\n\n```bash\npython scripts/forecast_csv.py\n```\n\nReplace the --init_time_freq, --start_datetime, --end_datetime, and --site_name with your desired forecast initialization frequency (in hours), start datetime, end datetime, and the name of the forecast or site, respectively.\n\nOutput\n\nThe script will generate solar forecasts at the specified intervals between the start and end datetimes. The results will be combined into a CSV file named using the site name, start and end datetimes, and the frequency of forecasts. This file will be saved in the scripts/csv_forecasts directory.\n\n## Installation\n\nThe source code is currently hosted on GitHub at: https://github.com/openclimatefix/Open-Source-Quartz-Solar-Forecast\n\nBinary installers for the latest released version are available at the Python Package Index (PyPI)\n\n```bash\npip install quartz-solar-forecast\n```\n\nYou might need to install the following packages first\n\n```bash\nconda install -c conda-forge pyresample\n```\n\nThis can solve the [bug: \\_\\_\\_kmpc_for_static_fini](https://github.com/openclimatefix/Open-Source-Quartz-Solar-Forecast/issues/32).\n\n### Logging\n\nThe package logs when `run_forecast` is used. This is useful for OCF to determine how the package is being used \nand how we can make improvements in the future.\nNote that any latitudes and longitudes are rounded to 2 decimals places in order to anonymize the data.\nIf you would like to disable this logging, you can do so by setting the environment variable `QUARTZ_SOLAR_FORECAST_LOGGING` to `False`.\n\n\n## Model\n\nTwo models are currently available to make predictions.\n\n**Gradient Boosting Model** (default)\n\nThe model uses GFS or ICON NWPs to predict the solar generation at a site.\nIt is a gradient boosted tree model and uses 9 NWP variables.\nIt is trained on 25,000 PV sites with over 5 years of PV history, which is available [here](https://huggingface.co/datasets/openclimatefix/uk_pv).\nThe training of this model is handled in [pv-site-prediction](https://github.com/openclimatefix/pv-site-prediction)\nTODO - we need to benchmark this forecast.\n\nThe 9 NWP variables, from Open-Meteo documentation, are mentioned above with their appropariate units.\n\n1. **Visibility (km)**, or vis: Distance at which objects can be clearly seen. Can affect the amount of sunlight reaching solar panels.\n2. **Wind Speed at 10 meters (km/h)**, or si10 : Wind speed measured at a height of 10 meters above ground level. Important for understanding weather conditions and potential impacts on solar panels.\n3. **Temperature at 2 meters (°C)**, or t : Air temperature measure at 2 meters above the ground. Can affect the efficiency of PV systems.\n4. **Precipitation (mm)**, or prate : Precipitation (rain, snow, sleet, etc.). Helps to predict cloud cover and potentiel reductions in solar irradiance.\n5. **Shortwave Radiation (W/m²)**, or dswrf: Solar radiation in the shortwave spectrum reaching the Earth's surface. Measure of the potential solar energy available for PV systems.\n6. **Direct Radiation (W/m²)** or dlwrf: Longwave (infrared) radiation emitted by the Earth back into the atmosphere. **confirm it is correct**\n7. **Cloud Cover low (%)**, or lcc: Percentage of the sky covered by clouds at low altitudes. Impacts the amount of solar radiation reachign the ground, and similarly the PV system.\n8. **Cloud Cover mid (%)**, or mcc : Percentage of the sky covered by clouds at mid altitudes.\n9. **Cloud Cover high (%)**, or lcc : Percentage of the sky covered by clouds at high altitude\n   We also use the following features\n\n- poa_global: The plane of array irradiance, which is the amount of solar radiation that strikes a solar panel.\n- poa_global_now_is_zero: A boolean variable that is true if the poa_global is zero at the current time. This is used to help the model learn that the PV generation is zero at night.\n- capacity (kw): The capacity of the PV system in kw.\n- The model also has a feature to check if these variables are NaNs or not.\n  The model also uses the following variables, which are currently all set to nan\n- recent_power: The mean power over the last 30 minutes\n- h_mean: The mean of the recent pv data over the last 7 days\n- h_median: The median of the recent pv data over the last 7 days\n- h_max: The max of the recent pv data over the last 7 days\n\n**XGBoost**\n\nThe second option is an XGBoost model and uses the following Numerical Weather Predictions (NWP) input features achieved from [open-meteo](https://open-meteo.com/) variables. Different types of data is provided by open-meteo. To train this model hourly forecast data of [the historical weather API](https://open-meteo.com/en/docs/historical-weather-api) was used. The time period is restricted by the availabilty of the target solar enegery data of the panels and covers the time between 2018 and 2021. Additional information about the time, location and specifics about the panel are used. The weather features used are listed below, with the description given by open-meteo.\n\n- Temperature at 2m (ºC): Air temperature at 2 meters above ground\n- Relative Humidity at 2m (%): Relative humidity at 2 meters above ground\n- Dewpoint at 2m (ºC): Dew point temperature at 2 meters above ground\n- Precipitation (rain + snow) (mm): Total precipitation (rain, showers, snow) sum of the preceding hour\n- Surface Pressure (hPa): Atmospheric air pressure reduced to mean sea level (msl) or pressure at surface. Typically pressure on mean sea level is used in meteorology. Surface pressure gets lower with increasing elevation.\n- Cloud Cover Total (%): Total cloud cover as an area fraction\n- Cloud Cover Low (%): Low level clouds and fog up to 3 km altitude\n- Cloud Cover Mid (%): Mid level clouds from 3 to 8 km altitude\n- Cloud Cover High (%): High level clouds from 8 km altitude\n- Wind Speed at 10m (km/h): Wind speed at 10, 80, 120 or 180 meters above ground. Wind speed on 10 meters is the standard level.\n- Wind Direction (10m): Wind direction at 10 meters above ground\n- Is day or Night: 1 if the current time step has daylight, 0 at night\n- Direct Solar Radiation (W/m2): Direct solar radiation as average of the preceding hour on the horizontal plane and the normal plane (perpendicular to the sun)\n- Diffusive Solar Radiation DHI (W/m2): Diffuse solar radiation as average of the preceding hour\n\nTo use this model specify `model=\"xgb\"` in `run_forecast(site=site, model=\"xgb\", ts=datetime.today())`.\n\n## Model Comparisons\n\nThe following plot shows example predictions of both models for the same time period. Additionally for the Gradient Boosting model (default) the results from the two different data sources are shown.\n\n![model comparison](images/model_data_comparison_hr.png)\n_Predictions using the two different models and different data sources._\n\n## Known restrictions\n\n- The model is trained on [UK MetOffice](https://www.metoffice.gov.uk/services/data/met-office-weather-datahub) NWPs, but when running inference we use [GFS](https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast) data from [Open-meteo](https://open-meteo.com/). The differences between GFS and UK MetOffice could led to some odd behaviours.\n- Depending, whether the timestamp for the prediction lays more than 90 days in the past or not, different data sources for the NWP are used. If we predict within the last 90 days, we can use ICON or GFS from the open-meteo Weather Forecast API. Since ICON doesn't provide visibility, this parameter is queried from GFS in any case. If the date for the prediction is further back in time, a reanalysis model of historical data is used (open-meteo | Historical Weather API). The historical weather API doesn't provide visibility at all, that's why it's set to a maximum of 24000 meter in this case. This can lead to some loss of precision.\n- The model was trained and tested only over the UK, applying it to other geographical regions should be done with caution.\n- When using the XGBoost model, only hourly predictions within the last 90 days are available for data consistency.\n\n## Evaluation\n\n**Gradient Boosting Model** (default)\n\nTo evaluate the model we use the [UK PV](https://huggingface.co/datasets/openclimatefix/uk_pv) dataset and the [ICON NWP](https://huggingface.co/datasets/openclimatefix/dwd-icon-eu) dataset.\nAll the data is publicly available and the evaluation script can be run with the following command\n\n```bash\npython scripts/run_evaluation.py\n```\n\nThe test dataset we used is defined in `quartz_solar_forecast/dataset/testset.csv`.\nThis contains 50 PV sites, which 50 unique timestamps. The data is from 2021.\n\nThe results of the evaluation are as follows The MAE is 0.1906 kw across all horizons.\n\n| Horizons | MAE [kw]      | MAE [%] |\n| -------- | ------------- | ------- |\n| 0        | 0.202 +- 0.03 | 6.2     |\n| 1        | 0.211 +- 0.03 | 6.4     |\n| 2        | 0.216 +- 0.03 | 6.5     |\n| 3 - 4    | 0.211 +- 0.02 | 6.3     |\n| 5 - 8    | 0.191 +- 0.01 | 6       |\n| 9 - 16   | 0.161 +- 0.01 | 5       |\n| 17 - 24  | 0.173 +- 0.01 | 5.3     |\n| 24 - 48  | 0.201 +- 0.01 | 6.1     |\n\nIf we exclude nighttime, then the average MAE [%] from 0 to 36 forecast hours is 13.0%.\n\nNotes:\n\n- The MAE in % is the MAE divided by the capacity of the PV site. We acknowledge there are a number of different ways to do this.\n- It is slightly surprising that the 0-hour forecast horizon and the 24-48 hour horizon have a similar MAE.\n  This may be because the model is trained expecting live PV data, but currently in this project we provide no live PV data.\n\n**XGBoost**\n\nThe model was trained and evaluated on 1147 solar panels and tested on 37 independent locations. An intensive hyperparameter tuning was performed. The model provides a feature importance list. Different metrics were calculated and analyzed. Finally the model was evaluated using the Mean Absolute Error (MAE). The MAE over the entire test data is $0.12$ kW, when the night times are excluded the MAE is $0.21$ kW. A plot with the MAE for each panel in the test set is shown in the figure below.\n\n![MAE](images/mae_test.png)\n_Mean absolute error for the panels in the test set._\n\nNotes:\n\n- The evaluation per horizon is not available for this model, as it is not provided by the open-meteo data.\n\n## Abbreviations\n\n- NWP: Numerical Weather Predictions\n- GFS: Global Forecast System\n- PV: Photovoltaic\n- MAE: Mean Absolute Error\n- [ICON](https://www.dwd.de/EN/ourservices/nwp_forecast_data/nwp_forecast_data.html): ICOsahedral Nonhydrostatic\n- KW: Kilowatt\n\n## FOSDEM\n\nFOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels.\nOCF presented Quartz Solar Forecast project at FOSDEM 2024. The link to the original FOSDEM video is availble at [Quartz Solar OS: Building an open source AI solar forecast for everyone](https://fosdem.org/2024/schedule/event/fosdem-2024-2960-quartz-solar-os-building-an-open-source-ai-solar-forecast-for-everyone/).\nIt is also available on [YouTube](https://www.youtube.com/watch?v=NAZ2VeiN1N8)\n\n## Running the dashboard locally\n\nStart the API first (port 8000):\n`cd api`\n`python main.py`\n\nStart the frontend (port 5137):\n`cd dashboards/dashboard_1`\n`npm install`\n`npm run dev`\n\nThere is also a steamlit dashboard in `dashboards/dashboard_2` that can be used. \n\n## Global Model\n\nAlthough this model is trained on UK data, this tool has been used in the following countries, (please let us know if you want your country to be added)\n\n🇬🇧🇺🇸🇦🇺🇧🇦🇪🇸🇯🇵🇨🇳🇧🇪🇩🇪🇫🇷🇵🇹🇳🇱🇮🇳🇰🇷\n\n## Contribution\n\nWe welcome other models.\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/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/open-source-quartz-solar-forecast/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/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=\"#ideas-zakwatts\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#talk-zakwatts\" title=\"Talks\"\u003e📢\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/EdFage\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/87755165?v=4?s=100\" width=\"100px;\" alt=\"EdFage\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEdFage\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=EdFage\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=EdFage\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/chloepilonv\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/136987461?v=4?s=100\" width=\"100px;\" alt=\"Chloe Pilon Vaillancourt\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChloe Pilon Vaillancourt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=chloepilonv\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://racheltipton.dev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/86949265?v=4?s=100\" width=\"100px;\" alt=\"rachel tipton\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003erachel tipton\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#talk-rachel-labri-tipton\" title=\"Talks\"\u003e📢\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/armenbod\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/84937223?v=4?s=100\" width=\"100px;\" alt=\"armenbod\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003earmenbod\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-armenbod\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=armenbod\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/shreyasudaya\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/94735680?v=4?s=100\" width=\"100px;\" alt=\"Shreyas Udaya\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShreyas Udaya\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=shreyasudaya\" title=\"Documentation\"\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=\"http://github.com/aryanbhosale\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/36108149?v=4?s=100\" width=\"100px;\" alt=\"Aryan Bhosale\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAryan Bhosale\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=aryanbhosale\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=aryanbhosale\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/0xFrama\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/30957828?v=4?s=100\" width=\"100px;\" alt=\"Francesco\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrancesco\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=0xFrama\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/roshnaeem\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47316899?v=4?s=100\" width=\"100px;\" alt=\"Rosheen Naeem\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRosheen Naeem\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=roshnaeem\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bikramb98\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/24806286?v=4?s=100\" width=\"100px;\" alt=\"Bikram Baruah\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBikram Baruah\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=bikramb98\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Hapyr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/23398802?v=4?s=100\" width=\"100px;\" alt=\"Jakob Gebler\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJakob Gebler\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/issues?q=author%3AHapyr\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ombhojane\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/82753658?v=4?s=100\" width=\"100px;\" alt=\"Om Bhojane\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOm Bhojane\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=ombhojane\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://chrisadams.me.uk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/17906?v=4?s=100\" width=\"100px;\" alt=\"Chris Adams\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChris Adams\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-mrchrisadams\" title=\"Ideas, Planning, \u0026 Feedback\"\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/mudrap17\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/76879120?v=4?s=100\" width=\"100px;\" alt=\"Mudra Patel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMudra Patel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=mudrap17\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/diegomarvid\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/33181424?v=4?s=100\" width=\"100px;\" alt=\"Diego Marvid\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDiego Marvid\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=diegomarvid\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/froukje\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10419258?v=4?s=100\" width=\"100px;\" alt=\"Frauke Albrecht\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrauke Albrecht\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=froukje\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Ludecan\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/17169248?v=4?s=100\" width=\"100px;\" alt=\"Pablo Alfaro\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePablo Alfaro\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/pulls?q=is%3Apr+reviewed-by%3ALudecan\" 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/KelRem\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/175075550?v=4?s=100\" width=\"100px;\" alt=\"KelRem\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKelRem\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#question-KelRem\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sicunchen\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/14258987?v=4?s=100\" width=\"100px;\" alt=\"Lia Chen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLia Chen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=sicunchen\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://clementlumumba.netlify.app/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43673340?v=4?s=100\" width=\"100px;\" alt=\"Clement Lumumba\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eClement Lumumba\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=Clemo97\" 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/aayushyatiwari\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/169576527?v=4?s=100\" width=\"100px;\" alt=\"aayush\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eaayush\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=aayushyatiwari\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Brohan7524\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/85754035?v=4?s=100\" width=\"100px;\" alt=\"Rohan Singh\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRohan Singh\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=Brohan7524\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sumana-2705\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/110307215?v=4?s=100\" width=\"100px;\" alt=\"Sumana Sree Angajala\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSumana Sree Angajala\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=sumana-2705\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/EmilyIsCoding\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/98443131?v=4?s=100\" width=\"100px;\" alt=\"Emily\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEmily\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=EmilyIsCoding\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sergejlazuk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/33606741?v=4?s=100\" width=\"100px;\" alt=\"sergejla\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esergejla\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#question-sergejlazuk\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/JadeVexo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/66781710?v=4?s=100\" width=\"100px;\" alt=\"Jaay\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJaay\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=JadeVexo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://rachitex.me\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18143615?v=4?s=100\" width=\"100px;\" alt=\"Rachit Mishra\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRachit Mishra\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=rachitex\" title=\"Documentation\"\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/vashisthrahul13\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/182660137?v=4?s=100\" width=\"100px;\" alt=\"Rahul Vashisth\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRahul Vashisth\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=vashisthrahul13\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/LynnLawren\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/107563516?v=4?s=100\" width=\"100px;\" alt=\"Lynn Mary Lawrence\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLynn Mary Lawrence\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=LynnLawren\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/j4ckieee\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/146953876?v=4?s=100\" width=\"100px;\" alt=\"Jackie Truong\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJackie Truong\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=j4ckieee\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/binaryecheos\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/130131792?v=4?s=100\" width=\"100px;\" alt=\"Gourav Sahu \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGourav Sahu \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/open-source-quartz-solar-forecast/commits?author=binaryecheos\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://hrsvrn.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/76729417?v=4?s=100\" width=\"100px;\" alt=\"Harshvardhan Vatsa\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHarshvardhan Vatsa\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-hrsvrn\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\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%2FOpen-Source-Quartz-Solar-Forecast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenclimatefix%2FOpen-Source-Quartz-Solar-Forecast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenclimatefix%2FOpen-Source-Quartz-Solar-Forecast/lists"}