× Note: The Solar Forecast Arbiter is now under the stewardship of the Electric Power Research Institute (EPRI). For more info, contact forecastarbiter@epri.com.

Solar Forecast Arbiter Documentation

The Solar Forecast Arbiter is an open source framework for the evaluation of solar irradiance, solar power, and net-load forecasts. It is comprised of three software components: the Dashboard, API, and Core library.

Solar Forecast Arbiter Dashboard

The Dashboard is a website providing a graphical user interface for the Solar Forecast Arbiter framework. It provides web forms for exchanging data with the API and requesting analyses. It leverages the Core library to create visualizations for uploaded data and reports. The Dashboard is a Python Flask application that makes extensive use of Jinja2 templates.

Documentation: https://forecastarbiter.org/documentation/dashboard/
Code: https://github.com/SolarArbiter/solarforecastarbiter_dashboard

Solar Forecast Arbiter API

The API is a HTTP REST API for programatically exchanging data with the Solar Forecast Arbiter. The API handles all user authentication and database interaction. To handle requests, the API adds to a queue of tasks to be performed by worker processes. Because the API is closely tied to the Database and Queue, it contains code for initializing these services. The API is a Python Flask application that makes extensive use of sqlalchemy, rq(Redis Queue), and marshmallow.

Documentation: https://api.forecastarbiter.com/
Code: https://github.com/SolarArbiter/solarforecastarbiter-api

Solar Forecast Arbiter Core

The Core library contains definitions for the data structures used throughout the framework. It also contains all of the data acquisition, data processing, analysis, and visualization code to be used by the other components of the framework. The core library is written in Python and makes extensive use of libraries such as pvlib python, pandas, xarray, bokeh, and plotly.

Code: https://github.com/SolarArbiter/solarforecastarbiter-core
Documentation: https://solarforecastarbiter-core.readthedocs.io


Diagram depicting data flow between components of the Solar Forecast Arbiter. Most users will use the Dashboard to interact with the API. Some users may choose to use a local installation of the Core library to perform their analyses and interact with the API. Other users may choose to interact directly with the API for scripting purposes (not shown). The API stores and retrieves data with the Database. The API also queues analyses to be processed by workers running the Core library. The works then send their results to the API for storage in the database.

The Solar Forecast Arbiter is hosted on a server running CentOS at a datacenter at the University of Arizona. The components are run on an OKD (Origin Kubernetes Distribution) cluster and depend on a separate MYSQL server for data storage. The infrastructure of the Solar Forecast Arbiter is documented in detail in a Systems Layer Setup document (available on request).