{% extends base_template %} {% import "macros.j2" as macros with context %} {% set report_name = report.report_parameters.name %} {% block body %} {% block report_title %}

{{ report_name }}

{% endblock %} {% block report_description %}

This report of forecast accuracy was automatically generated using the Solar Forecast Arbiter.

{% endblock %} {% block download %}{% endblock %} {% block toc %} {% endblock %} {% block errors %} {% set messages = (report.raw_report.messages | map(attribute="message") | list) + (templating_messages | default([]))%} {% if report.outages != report.raw_report.outages %} {% do messages.append( "Outages have been modified since the report was last computed. " "Recompute to use the updated outages.") %} {% endif %} {% if messages | length > 0 %}
{% for mesg in messages %}
{{ mesg }}
{% endfor %}
{% endif %} {% endblock %} {% block reportmetadata %}

Report Metadata

{% set costs = report.report_parameters.costs %} {% if costs | length > 0 %}

Cost Parameters

{% for cost in costs %}
{{ cost.to_dict() | pretty_json }}
{% endfor %} {% endif %} {% if report.raw_report.outages | length > 0 %}

Outages

Forecast submissions that fall within the periods listed below are excluded from analysis.

{% for outage in report.raw_report.outages %} {% endfor %}
Outage Start Outage End
{{ outage['start'] }} {{ outage['end'] }}
{% endif %} {% endblock %} {% block data %}

Data

This report includes forecast and observation data available from {{ report.report_parameters.start }} to {{ report.report_parameters.end }}. {% endblock %} {% block obsandfx %}

Observations and Forecasts

{% include "obsfx_table.html" %}

More metadata for the objects in this report may be downloaded in JSON format.

{% if timeseries_spec is defined %}

The plots below show the filtered, resampled, and aligned time series of observation and forecast data as well as the distribution of forecast vs. observation data. This resampled and realigned timeseries data may also be downloaded below.

Download timeseries

Controls to pan, zoom, and save the plot are shown on the right. Clicking on an item in the legend will hide/show it.

{% if includes_distribution %}

For forecasts parameterized symmetrically around the 50th percentile, brighter colors indicate percentiles farther from the 50th percentile and darker colors indicate percentiles closer to the 50th percentile. For forecasts parameterized asymmetrically around the 50th percentile, brighter colors indicate smaller percentiles and darker colors indicate larger percentiles. Use the hover tool to determine the percentile.

{% endif %} {{ macros.download_timeseries_script () | safe }} {% endif %}
{% if scatter_spec is defined %} {% endif %} {% if timeseries_prob_spec is defined %}

The plot below shows probability vs. time for probabilistic forecasts with axis='x'.

{% endif %} {% include "load_metadata.html" %} {{ macros.download_metadata_script () | safe }} {% endblock %}

Data Preprocessing

{% block dataresampleandalign %}

Procedure

{% include "data_resampling_preamble" %}
{% endblock %} {% block datavalidation %}

Validation and Resampling

{% include "data_validation_pre_text" %}

Validation procedure details

{% include "data_validation_procedure" %}
{% if report.report_parameters.filters %} {{ macros.validation_metadata_table(report.report_parameters.filters) }} {{ macros.validation_results_table(report.raw_report.processed_forecasts_observations, true) }} {% if report.raw_report.processed_forecasts_observations | unique_flags_filter(false) | length %} {{ macros.validation_results_table(report.raw_report.processed_forecasts_observations, false) }} {% else %} No filters with discard after resample were available because this report was created with Solar Forecast Arbiter version 1.0rc3 or earlier (find the version information at the end of the report). Recompute the report to apply the revised data filtering and resampling procedures.
{% endif %} {% else %}
No filters applied
{% endif %}

Results

{{ macros.preprocessing_table(report.raw_report.processed_forecasts_observations) }} {% include "data_resampling_postamble" %} {% endblock %} {% block summarystat %}

Summary Statistics

A table of summary statistics for the resampled observations and deterministic forecasts over the entire study period is available below. Statistics for other categories may be downloaded in CSV format or JSON format.

{% if "total" in report.report_parameters.categories %} {{ macros.summary_stats_table_vert(report.raw_report.metrics | selectattr("is_summary"), "total") }} {% else %}
Total metrics not selected in report configuration. Summary total statistics table not available. See CSV/JSON files for other summary statistics.
{% endif %}
{% endblock %} {% block metrics %}

Metrics

{% include "metrics_meta_table.html" %} {% if "total" in report.report_parameters.categories %} {{ macros.metric_table_fx_vert(report.raw_report.metrics | rejectattr("is_summary"), "total", report.report_parameters.metrics, true) }} {% else %}
Total metrics not selected in report configuration. Total metrics table not available. See CSV/JSON files for other metrics.
{% endif %}

Metrics Plots

{% for category in report.report_parameters.categories %}

{{ human_categories[category].title() }} Analysis

{% if category_blurbs is defined %}

{{ category_blurbs[category] }}

{% endif %}
{% for metric in report.report_parameters.metrics %} {% for rep_fig in report.raw_report.plots.figures %} {% if rep_fig.category == category and rep_fig.metric == metric %} {% set plot_id = (category+'_'+metric+'_'+rep_fig.name) | figure_name_filter %}
{% endif %} {% endfor %} {% endfor %} {% endfor %}
{% include "load_metrics.html" %} {{ macros.download_metrics_script () | safe }} {% endblock %} {% block versions %}

Versions

{% include "versions.html" %} {% endblock %} {% endblock %}