Change Details - New Hourly Model Surface Statistics

27-Feb-2019 (beta)
Updated the standard calculation error calculation again, to be code that works for both upper air (3D -- when we need to calculate autocorrelations in both pressure AND time) and 2D (time-only) cases. Routine(s) changed:

22-Feb-2019 (beta)
Tried to make the error bars a little more stable, while still looking at the autocorrelation as a way of appropriately estimating the standard error. We now limit the autocorrelation at 1 lag to 0.95. Previously it had been limited to 0.99. This eliminates some huge standard errors when AC1 is very near unity. Also, when a gap was inserted immediately after the first datum, the AC at lag 2 was used, rather than at lag 1. We now determine the lag to use before a gap is inserted, which nearly always selects lag = 1. I haven't tested this with profile data, only time series, so there may be more work to do. Routine(s) changed:

6-Dec-2018 (beta)
Added the capability to use a comma-delimited list of stations as the 'region'. E.g., "kasc,ksmf,etc". Routine(s) changed: CurveParameters, getStats.cgi,

25-July-2018 (beta)
Added the capability to choose the database: either surface_sums (1), or surface_sums2 (2). Routine(s) changed:, getStats.cgi.

12-July-2018 (production and beta)
Changed the default 'truth' value to QC_METARS from METARS. . Routine(s) changed:

17-Oct-2017 (beta)
Many changes to add optional error bars. We basically copied over the server-side scripts from the upper air statistics pages and adapted them for this one. As a result, we no longer ask for specific 'clipping' values, or the fraction of completeness for averages. Instead, we adapted the "show/hide gaps" construct from the upper air pages, and the "show/hide 3 sd outliers" construct. Our explanation of EMS's standard error calculation is linked from the page. Routine(s) changed: (added), getStats.cgi (replaces get_surface_stats.cgi), DisplayFrame (adapted from the upper air versions), CurveParameters, CurvesControl.

26-June-2017 (production and beta)

6-June-2017 (production and beta)
A java web start (browser-independent) version of this was created, and changes were made to support a java web start version of this: Models now come from getModels.cgi, and an initial time window of 1 month is determined by the java code rather than the calling script. Routine(s) changed: getModels.cgi (new), Welcome.cgi, StatsDisplay, CurveParamaters.

27-July-2016 (production and beta)
Cleaned up outliers for HRRR and RR1h in the surface_sums database.

4-April-2016 (beta)
Added QC_METAR as a 'Truth' option. This verifies against METARs that are included in the uselist. (In fact, we assimilate ALL METARs into the RAP, but we flag questionable METARs in our uselist anyway.) This option is currently available for only these models: HRRR_OPS, HRRR, RAPv3_EMC, RR1h. Routine(s) changed: DisplayFrame, get_surface_stats.cgi.

12-Jan-2016 (beta)
Changed the identification of incomplete averages to match what's done for the UA RAOB time-series (and MATS). Also added the option to specify the fraction of data (compared to the maximum within a time window) required for an avarage value to be plotted. Routine(s) changed: CurvesControl, Welcome.cgi, makejar, get_surface_stats.cgi.

17-Sept-2015 (production and beta)

14-Sept-2015 (production and beta)
Removed a requirement that Ntot > 90 so that we can again see results for individual stations. Routine(s) changed: DisplayFrame.

26-Aug-2015 (production and beta)

16-July-2015 (beta)
Added options to look at the verification statistics out on 3-hourly intervals out to 30 hours. Done in response to the RAP and HRRR forecast lengths being extended. Routine(s) changed: CurveParameters.

7-July-2015 (production and beta)
Corrected how the cgi script checks for new-style and old-style tables. Now it correctly checks for 'v2' style tables first, then checks for 'q' style tables second, then finally checks for tables with neither a 'v2' or a 'q' (old-style tables). This has some disadvantages however. If data exists in an old-style and also a newer style table, the data in the newer style table will mask the data in the old-style table. If you want early data from an old style table, please see one of the verification staff. Routine(s) changed: get_surface_stats.cgi.

21-May-2015 (production and beta)

13-May-2015 (beta)
Added the option to 'clip' data to a specified range. The clipping values appear to apply to each curve, but actually the clipping for the last curve applies to all curves, including differences. To remove clipping, set the min clipping value to "-1e30" and the max value to "1e30" exactly. Routine(s) changed: DisplayFrame, CurveParameters, get_surface_stats.cgi.

5-Jan-2015 (beta and production)
Fixed a bug on diurnal plots that put bogus line breaks in if forecasts were only available every 3 hours rather than every hour. Routine(s) changed: get_surface_stats.cgi.

28-Nov-2014 (beta and production)

10-Sep-2014 (beta and production)

9-Sep-2014 (beta and production)
Made a little change to the curve breaking algorithm to avoid too many runs appearing as points rather than lines. Routine(s) changed: get_surface_stats.cgi.

4-Sep-2014 (beta and production)

11-Aug-2014 (beta)
Added variable name to the key legend for each plot. (Previously, it was only in the window name for Dieoff plots.) Routine(s) changed: DisplayFrame.

8-Aug-2014 (beta)

25-July-2014 (beta and production)

16-July-2014 (beta)

12-Feb-2014 (beta)
Fixed a problem that caused difference curves not to plot. Routine(s) changed get_surface_stats.cgi.

12-Nov-2013 (beta)
Added diurnal plots. Routine(s) changed: get_surface_stats.cgi, DisplayFrame, CurveParameters.

17-April-2013 (beta)

9-April-2013 (beta)
Made the model text window editable, so the user can enter a model name directly, without having to search for it. Routine(s) changed: CurveParameters.

29-Oct-2012 (beta)
Changed default line weight for plots to "HEAVY". Routine(s) changed: DisplayFrame.

26-Oct-2012 (beta)
Added Mean Absolute Error ("MAE") as an available statistic. Currently MAE is only available for GLMP (Gridded LAMP), HRRR, and RR1h. Routine(s) changed: get_surface_stats.cgi, CurveParameters.

31-Jan-2012 (beta)
Correctd a side effect of the 20-Sept-2011 calculation of delta to account for a pathological case for retro runs, where only a few days--not evenly spaced--are processed. If delta doesn't divide the entire time interval an integral number of times, delta is set to 1-hour. This may cause gaps to appear in the plot, but it will at least allow all the available data to be seen. (The previous delta calculation could cause all but the first data point to be missed. Routine(s) changed: get_surface_stats.cgi.

5-Jan-2012 (beta)
Changed list of years to update to the current year +1 automatically. Routine(s) changed: CurvesControl, lib.JYearBox.

29-Nov-2011(beta--there is no production site!)
Changed calculation of wind bias to be wind speed bias, i.e., the average speed for obs minus the average speed for the model. Previously, this stat had been the average of the vector wind difference. Routine(s) changed: get_surface_stats.cgi.

20-Sept-2011 (production and beta)
Simplified and improved the calculation of 'delta'--the expected time between data points (that determines whether a line should be drawn between two points, or whether a gap should be indicated). Delta is now simply the minimum time between query results. Routine(s) changed: get_surface_stats.cgi.

5-May-2011 (production and beta)

15-Apr-2011 (production and beta)
This processing only applies to RR1h so far, and uses tables in madis3, as follows: NOTE: For coastal stations, the RR1ha table has an ERROR: the wind direction was not rotated from the rotated-lat-lon coordinate system (no rotation was done). This has now been corrected, in fill_surface_values5.c.

MOREOVER, for coastal stations, the RR1ha table used the 'best' nearest neighbor, rather than the bilinear interpolation of all 4 surrounding grid points. This caused coastal stations to be treated differently than non-coastal stations (which always used the bilinearly interpolated values), and the 'best' match was determined by agreement with observations, which could potentially cause an insest problem.

The new processing, with corrected error, and bilinear interpolation for coastal stations, started 2011-04-15 15:30:00.

Daily sums have not yet been updated with the corrected/changed processing.

20-Oct-2010 (beta)

21-Oct-2009 (beta)
Statistics, including standard error, added to the text window. Routine(s) changed: DisplayFrame.

20-Aug-2009 (production and beta)

17-Aug-2009 (beta)
Text window option added, that shows for each data point (averaged or not) the date, the value plotted, the number of hours in the average (Nhrs), the number of METAR sites below the threshold (Nlow), and the total number of METARs (Ntot). Routine(s) changed: get_ceil_stats.cgi, StatsDisplay, CurvesControl, DisplayFrame.

13-Aug-2009 (production and beta)

5-Dec-2008 (production and beta)

2-Dec-2008 (beta)
Updated to get a list of models from the calling web page. Also, got rid of an annoying java bean info call in SGLabel that may have slowed down the appearence of plots. Routine(s) changed: Welcome.cgi, CurveParameters, StatsDisplay, CurvesControl, gov.noaa.pmel.sgt.SGLabel

First version. This uses data from the 'ceiling' database on wolphin.

Prepared by Bill Moninger,
Last modified: Wed Feb 27 23:01:20 GMT 2019