This is the fifth 1.0 beta release.
Highlights include:
- support for event forecasts and reports
- using plotly to generate report figures
- support for normalized metrics in the reports
- an option to account for uncertainty using a deadband in reports
- support for forecast skill in reports
See below for the full list of changes.
- Added :py
solarforecastarbiter.reports.figures
which contains modules for creating Bokeh and Plotly report figures. - Added :py
solarforecastarbiter.reports.figures.plotly_figures
to create report figures using plotly (359
)(388
) - :py
solarforecastarbiter.reports.figures.bokeh_figures.output_svg
now takes a :pyselenium.webdriver.remote.webdriver.WebDriver
as an optional argument (345
) - Add metrics for deterministic event forecasts :py
solarforecastarbiter.metrics.event.probability_of_detection
, :pysolarforecastarbiter.metrics.event.false_alarm_ratio
, :pysolarforecastarbiter.metrics.event.probability_of_false_detection
, :pysolarforecastarbiter.metrics.event.critical_success_index
, :pysolarforecastarbiter.metrics.event.event_bias
, and :pysolarforecastarbiter.metrics.event.event_accuracy
. (347
) (348
) - Add functions to get the time range of values available in the API: :py
solarforecastarbiter.io.api.get_observation_time_range
, :pysolarforecastarbiter.io.api.get_forecast_time_range
, :pysolarforecastarbiter.io.api.get_probabilistic_forecast_constant_value_time_range
. (369
) - Start and end are now optional parameters for the solararbiter referencedata update CLI command (
369
) - :py
solarforecastarbiter.vavlidation.tasks.validate_timestamp
has been replaced with :pysolarforecastarbiter.vavlidation.tasks.validate_defaults
which also adds a nighttime flag (382
) - Removed
normalizer
keyword argument from :pysolarforecastarbiter.metrics.calculate_metrics
and :pysolarforecastarbiter.metrics.calculate_deterministic_metrics
. Normalization is now determined by the attributes of the datamodel objects. (379
) - Many functions in :py
solarforecastarbiter.metrics.deterministic
gain a keyword argumenterror_fnc
for specifying a function that calculates the nominal difference forecast - observation. Among other things, this is useful for specifying a deadband. (378
) - Added support for probabilistic forecasts with :py
solarforecastarbiter.metrics.calculator.calculate_metrics
modifications and :pysolarforecastarbiter.metrics.calculator.calculate_probabilistic_metrics
addition. (315
) (266
) (367
) - Added api function to get all values of a :py
solarforecastarbiter.datamodel.ProbabilisticForecast
with addition of :pysolarforecastarbiter.io.api.get_probabilistic_forecast_values
. (367
) - Removed
ref_pair
from :pysolarforecastarbiter.metrics.calculator.calculate_metrics
andref_fx_obs
from :pysolarforecastarbiter.metrics.calculator.calculate_deterministic_metrics
and :pysolarforecastarbiter.metrics.calculator.calculate_probabilistic_metrics
. Instead, use the reference forecast attributes of :pysolararbiter.ForecastObservation
and :pysolararbiter.ProcessedForecastObservation
to supply reference forecast metadata and values. (386
,387
) - :py
solarforecastarbiter.metrics.preprocessing.resample_and_align
now requires input reference forecast time series (optionallyNone
), and also returns processed reference forecast time series (orNone
). (386
,387
) - Added capability to import reference data from DOE ARM sites in the :py
solarforecastarbiter.io.reference_observations.arm
module. Data can be initialized and updated via the Solar Forecast Arbiter CLIreferencedata
command.(390
) - Added support for event observations and forecasts with :py
solarforecastarbiter.datamodel.Observation
modifications and :pysolarforecastarbiter.datamodel.EventForecast
addition. (357
) (361
) (399
) - Added support for evaluating event forecasts with :py
solarforecastarbiter.metrics.calculator.calculate_metrics
modification, :pysolarforecastarbiter.metrics.calculator.calculate_event_metrics
addition and :pysolarforecastarbiter.metrics.preprocessing.resample_and_align
modifications. (357
) (380
) (361
) - Added support for plotting timeseries of event observations and forecasts to :py
solararbiter.plotting.timeseries.make_basic_timeseries
. (394
)
- Report plots are now created using Plotly. Bokeh figure generation moved to :py
solarforecastarbiter.reports.figures.bokeh_figures
for users still interested in bokeh figures.(359
) - Report timeseries plots no longer draw lines over missing data points (
351
). - Double clicking a forecast or observation in the legend of report timeseries plots will toggle the display of all other timeseries. (
253
) - Clean up any PhantomJS drivers created to render SVGs (
344
) (349
) - Reference data updates can now proceed from the last value in the API to avoid any artificial data gaps (
369
) (353
) - GHI validation now includes checks on if a period is cloud-free and will be flagged with CLEARSKY (
210
) (382
) - All data validation now includes the generation of the NIGHTTIME flag (
293
) (382
) - Metrics automatically determine normalization based on Observation type. AC power observations are normalized by AC capacity; DC power by DC capacity. Normalized metrics set to
nan
for all other variables. (370
) (379
) - Metrics
'mae', 'mbe', 'rmse', 'mape', 'nmae', 'nmbe', 'nrmse', 's'
may now be calculated using a deadband. The deadband is specified as a percentage of the observations. The error forecast - observation is set to 0 within the deadband. The deadband is controlled using the :pysolarforecastarbiter.datamodel.ForecastObservation
and :pysolarforecastarbiter.datamodel.ForecastAggregate
uncertainty
argument.None
implies no deadband and a float sets the deadband. Additionally, for :pysolarforecastarbiter.datamodel.ForecastObservation
, the string'observation_uncertainty'
may be supplied to set the deadband equal to :pysolarforecastarbiter.datamodel.Observation.uncertainty
. (358
,378
) - Reports can now report the forecast skill metric (s) when a reference forecast is provided. The metadata table of forecasts and observations now includes reference forecasts. (
386
,387
) - Reports now support evaluating event forecasts. (
380
) (361
)
- Fix using deprecated 'M' string for a month offset in :py
solarforecastarbiter.io.reference_observaions.srml.fetch
(341
) (342
) - Fix CLI report generation when status not set in report metadata (
345
) - Fix bug with APISession list functions when only a single value is available. (
367
) - Fix type errors in observation validation by ensuring all time series values from :py
solarforecastaribter.io.api
functions are coerced to float and converting to float before validation (252
) (384
) - Enforce metric order consistency. (
352
) (396
) - Eliminate most warnings from test suite. (
385
) (395
) - :py
solarforecastarbiter.metrics.deterministic.forecast_skill
now returns 0 if both forecast and reference forecast errors are 0. (395
) - Clarify report data validation section text and table. (
413
) (422
)
- Will Holmgren (
wholmgren
) - Leland Boeman (
lboeman
) - Cliff Hansen (
cwhanse
) - Tony Lorenzo (
alorenzo175
) - Justin Sharp (
MrWindAndSolar
) - Aidan Tuohy
- Adam Wigington (
awig
) - David Larson (
dplarson
)