1.0.0b4 (February 7, 2020)¶
This is the fourth 1.0 beta release. Further changes beyond the pull requests listed here may have been applied in (GH321).
The biggest change is a new data model for Reports so that metrics, processed data, and generated Bokeh javascript and SVG figures are stored in JSON in the API. This removes the requirement for Pandoc and HTML reports can be generated using only Jinja. Other changes include report figure generated from a common data source, better error handling if computing a report fails, and actual data validation results, including the number of missing and dropped values, in the report.
API Changes¶
solarforecastarbiter.metrics.prepocessing.apply_validation()
now expects a single observation DataFrame with value and quality_flag columns instead of a dict. It also returns the processed Series along with a dict of the number of values removed for each quality flag. (GH291)solarforecastarbiter.metrics.prepocessing.resample_and_align()
now expects the forecast and observation series explicitly. It also returns the resampled and aligned values instead of a datamodel.ProcessedForecastObservation (GH291)- Move functionality of
solarforecastarbiter.reports.main.validate_resample_align()
tosolarforecastarbiter.metrics.prepocessing.process_forecast_observations()
(GH291) - Rename
io.utils.serialize_data
tosolarforecastarbiter.io.utils.serialize_timeseries()
(GH291) solarforecastarbiter.metrics.calculator.calculate_metrics()
returns a list ofsolarforecastarbiter.datamodel.MetricResult
andsolarforecastarbiter.metrics.calculator.calculate_deterministic_metrics()
returns a singlesolarforecastarbiter.datamodel.MetricResult
(GH291)solarforecastarbiter.datamodel.ProcessedForecastObservation
now requires a name parameter (GH291)solarforecastarbiter.reports.figures.construct_timeseries_cds()
now takes a singlesolarforecastarbiter.datamodel.Report
object and returns separate Bokeh ColumnDataSources for timeseries and metadata. (GH307)solarforecastarbiter.reports.figures.construct_metrics_cds()
updated to accept a list ofsolarforecastarbiter.datamodel.MetricResult
as its first argument. (GH307)solarforecastarbiter.reports.figures.timeseries()
andsolarforecastarbiter.figures.scatter()
now take two Bokeh ColumnDataSources as their first two arguments in place of a list of (ProcesseForecastObservation, ColumnDataSource) tuples. See the return value ofsolarforecastarbiter.figures.construct_timeseries_cds()
for the format of these ColumnDataSources. (GH307)- Replaced
solarforecastarbiter.reports.full_html
withsolarforecastarbiter.reports.template.render_html()
which accepts asolarforecastarbiter.datamodel.Report
object, a dashboard url and optional flags to include timeseries plots or generate a standalone html report. (GH311) - Add
solarforecastarbiter.reports.figures.output_svg()
to save Bokeh figures as SVG (GH313) - Add optional status keyword to
solarforecastarbiter.io.api.APISession.post_raw_report()
(GH318) solarforecastarbiter.datamodel.PreprocessingResult
Added to track prepocessing summary of results (GH320)- Add the
solarforecastarbiter.datamodel.ReportParameters
class, add thereport_parameters
parameters tosolarforecastarbiter.datamodel.Report
, and move most parameters (GH324) - Remove the
ReportMetadata
class and move some parameters tosolarforecastarbiter.datamodel.RawReport
(GH324) - Remove
solarforecastarbiter.reports.main.create_metadata
(GH324) solarforecastarbiter.reports.main.get_versions()
now returns a tuple of (package, version) tuples (GH325)
Enhancements¶
- Automatically verify selected metrics are valid for deterministic forecasts. (GH267) (GH301)
- Automatically verify selected metrics are valid for probabilistic forecasts. (GH302) (GH306)
- Add schema for de/serializing timeseries in
solarforecastarbiter.io.utils
(GH291) - Add decorator factory
solarforecastarbiter.reports.main.capture_report_failure()
to better log report failures to the end user. (GH318) - Add missing tests for functionality in
solarforecastarbiter.reports.main
(GH312) (GH318) - Add missing tests for
solarforecastarbiter.reports.figures
(GH318) - Add data validation summary table in the html report (GH299) (GH320)
- Track data preprocessing results add section and summary table in the html report (GH299) (GH320)
- Generate error page templates for failed reports. (GH325)
- Replace the Bokeh tables with HTML tables in reports (GH321)
- Add
solarforecastarbiter.io.utils.load_report_values()
convenience function (GH331) - Adjust observations and forecasts table and make all processed pairs in a report have a unique name (GH333)
- Update versions in requirements (GH335)
- Add an example notebook to create reference reports (GH222) (GH338)
Bug fixes¶
- Fix handling of empty observation timeseries in metrics preprocessing. (GH295) (GH296)
- Fix handling of interval_label == ending in the groupby categories in metrics.calculator. (GH234) (GH297)
- Document resample_and_align() behavior when the interval_label of the forecast and observation don’t match. (GH300) (GH303)
- Fix scatter plot limits when some data is NaN (GH282) (GH311)
- Handle errors on SVG export (GH310) (GH313)
- Test and handle errors in report creation for empty data (GH217) (GH318)
- Fix
solarforecastarbiter.datamodel.__check_units__()
with no arguments (GH318) - Fix field seperator conflict with the name when creating figures (GH337) (GH338)
- Fix dumping TimeOfDayFilter to dict (GH338)
- Allow the posting of filters in
solarforecastarbiter.io.api.APISession.create_report()
(GH338)
Contributors¶
- Will Holmgren (@wholmgren)
- Leland Boeman (@lboeman)
- Cliff Hansen (@cwhanse)
- Tony Lorenzo (@alorenzo175)
- Justin Sharp (@MrWindAndSolar)
- Aidan Tuohy
- Adam Wigington (@awig)
- David Larson (@dplarson)