solarforecastarbiter.reference_forecasts.main.run_persistence

solarforecastarbiter.reference_forecasts.main.run_persistence(session, observation, forecast, run_time, issue_time, index=False)[source]

Run a persistence forecast for an observation.

For intraday forecasts, the index argument controls if the forecast is constructed using persistence of the measured values (index = False) or persistence using clear sky index or AC power index.

For day ahead forecasts, only persistence of measured values (index = False) is supported.

Forecasts may be run operationally or retrospectively. For operational forecasts, run_time is typically set to now. For retrospective forecasts, run_time is the time by which the forecast should be run so that it could have been be delivered for the issue_time. Forecasts will only use data with timestamps before run_time.

The persistence window is the time over which the persistence quantity (irradiance, power, clear sky index, or power index) is averaged. The persistence window is automatically determined from the forecast attributes:

  • Intraday persistence forecasts:
    window = run_time - forecast.run_length. No longer than 1 hour.
  • Day ahead forecasts:
    window = forecast.interval_length.

Users that would like more flexibility may use the lower-level functions in solarforecastarbiter.reference_forecasts.persistence.

Parameters:
session : api.Session

The session object to use to request data from the SolarForecastArbiter API.

observation : datamodel.Observation

The metadata of the observation to be used to create the forecast.

forecast : datamodel.Forecast

The metadata of the desired forecast.

run_time : pd.Timestamp

Run time of the forecast.

issue_time : pd.Timestamp

Issue time of the forecast run.

index : bool, default False

If False, use persistence of observed value. If True, use persistence of clear sky or AC power index.

Returns:
forecast : pd.Series

Forecast conforms to the metadata specified by the forecast argument.

Raises:
ValueError

If forecast and issue_time are incompatible.

ValueError

If persistence window < observation.interval_length.

ValueError

If forecast.run_length = 1 day and forecast period is not midnight to midnight.

ValueError

If forecast.run_length = 1 day and index=True.

ValueError

If instantaneous forecast and instantaneous observation interval lengths do not match.

ValueError

If average observations are used to make instantaneous forecast.