- 12-July-2018 (production and beta)
- Changed the default 'truth' value to QC_METARS from
METARS. . Routine(s) changed:
CurveParameters.java.
- 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: error_library.pl (added), getStats.cgi (replaces get_surface_stats.cgi), DisplayFrame (adapted from the upper air versions), CurveParameters, CurvesControl. - 26-June-2017 (production and beta)
- Statistics for individual stations were ressurected. (These are
available for whatever time periods we keep the
qp1f tables around, which varies by model from one to several months.) Routine(s) changed: make_station_summary.pl. - 1-hr forecasts for the RR1h in the AK region were started on June 25th. Routine(s) changed: (on jet) ruc_madis_surface/surface_driver_all_nets.pl.

- Statistics for individual stations were ressurected. (These are
available for whatever time periods we keep the
- 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)
- We now link to the SGT3 libraries. Previously, we had linked with the old SGT (version 1 libraries).
- No longer have 3 left axes, because the new PlainAxis routine automatically has a black vertical axis, even when the horizontal lines are set to lightGray.
- The curve legend titles are now editable.
- HRRR is now the first model listed, rather than persistance.
- (We still use JPlotLayout, so the horizontal lines don't always paint across the entire plot. But, they can be removed by setting their color to white.)
- Routine(s) changed: DisplayFrame, Welcome.cgi, makejar.

- 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)
**All beta changes moved to production**- Changed default color of the background horizontal lines to lightGray. Routine(s) changed: DisplayFrame.

- 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)
**All beta changes moved to production**- Added the
**NAVGEM_HIWPP_4**model. (The HIWPP experimental version of the NAVGEM model on a 0.5 global latlon grid.) Routine(s) changed: Welcome.cgi.

- 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)
- Added the
**NAPnest_OPS_227**model, although**analysis results are incorrect**because of an apparent post-processing problem with 2m and 10m fields for analyses. - Fixed a bug for RH dieoff plots.
- Routine(s) changed: Welcome.cgi, get_surface_stats.cgi

- Added the
- 10-Sep-2014 (beta and production)
- Added
**NHX_E and NXH_W regions**(NXH for E longitues and W longitudes respectively) for the FIM_4 and GFS_4 models. - Renamed FIMYZEUS to FIMYZEUS_83.
- Renamed FIM to FIM_130, because we've always only processed the 130 grid for surface verification for our production FIM model.
- Routine(s) changed: Welcome.cgi, CurveParameters.

- Added
- 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)
**All beta changes moved to production**- Added global regions (only for FIM_4 model so far):
**Global, NXH, SHX, TRO**. - Added FIM_4 (FIM from /public on the '4' (0.5 degree LatLon) grid), FIMYZEUS on the 83 grid.
- Clarified in the 'model' dropdown menu that model 'FIM' is on the 130 grid. Routine(s) changed: Welcome.cgi, CurveParameters.

- 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)
- Added 'Dieoff' plots, that show statistic vs. fcst length. (These ought to be called 'Blowup' plots because the RMS stats get larger with forecast length.)
- Upgraded 'Diurnal' plots to use hour of the day as the abscissa, rather than a faked date of 2-Jan-1970. This should make for cleaner plots.
- Added 2h forecasts for many models, for easier investigation of comparison with persistence. These 2h forecasts start on 7-Aug-2014.
- Made the 'fcst' window editable, so you can ask for forecast lengths not included in the drop-down list. (Forecasts are not available for every forecast hour.)
- Implemented a smarter(?) algorithm for calculating and indicating data gaps.
- Since a change in database table structure was needed to facilitate the creation of 'Dieoff' plots in reasonable time, the cgi script now looks first for new-format tables for a given model, then looks for old-format tables. This is needed because retro runs have used, and will continue to use, old-format tables.
- Changed several routines in the ~amb-verif/ruc_madis_surface/ directories on jet and zeus to facilitate filling of the new tables.
- Routine(s) changed: Welcome.cgi, get_surface_stats.cgi, CurveParameters.java, DisplayFrame.java, SimpleLine2.java, routines on jet and zeus.

- 25-July-2014 (beta and production)
- Added 'persis' (persistence) to the mix of models.
- We now set cases with fewer than 90 obs to missing. Routine(s) changed: DisplayFrame.
- Copied current state of beta to production.

- 16-July-2014 (beta)
- Fixed to not put out data from incomplete averaging intervals. If there are gaps at either end of the averaging interval that together exceed 10% of the total averaging interval, the datum for that interval is set to 'missing'. Routine(s) changed: get_surface_stats.cgi.
- Updated the signed jar file to include most needed classes. Routine(s) changed: makejar.

- 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)
- Added the ability to enter a station name (from our madis3 database)
for a single station in the
`Reg`

field to get statistics (except RH). These may take up to 60 seconds per month to generate, but they're often faster after the first plot comes up. Routine added: make_station_summary.pl. Routines changed: get_surface_stats.cgi, CurveParameters. - Narrowed the control window for easier use on Mac laptops (Macs use a wider font than windows). Routine(s) changed: CurveParameters, CurvesControl.

- Added the ability to enter a station name (from our madis3 database)
for a single station in the
- 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)
- Started upddating hourly summary tables (in db 'surface_sums') with our new surface processing, which started 15 April for the RR1h, and started 26 April for HRRR, and 29 April for Bak13. However, the summary files (which are read by this web page) do not reflect the new processing until about 19Z today.
- Also, to test the new coastal processing for the RR1h (see the 15-April-2011 note below) I developed several surface_sums.RRnew% tables that include the new coastal processing. These can be compared with the corresponding surface_sums.RR1h% table at http://ruc.noaa.gov/stats/surface/beta/.

- 15-Apr-2011 (production and beta)
- This processing only applies to RR1h so far, and uses tables in
madis3, as follows:
- RR1hp -- partitioned version of RR1ha, BUT SEE NOTES BELOW
- RR1hp1f -- 1h forecasts from the above table (for long term storage)
- RR1h_coastal5 -- like RR1h_coastal, BUT SEE NOTES BELOW
- stations_RR1h_coastal5 -- like stations_RR1h_coastal, but with an error that caused too many stations to be included in the table corrected.

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)
- Can now eliminate any curves by clicking on the 'x' in the upper right of each curve's parameter specification. (Previously, you could only eliminate the last curve.)
- Fixed a bug in java 6 update 22 that causes buttons with html text to fail.
- Added the ability to select coastal stations only. (Coastal stations have at least one adjacent grid point with a different land/water value than the station itself.)
- Routine(s) changed: DisplayFrame, CurveParameters, CurvesControl, StatsDisplay, SimpleLine2, get_surface_stats.cgi.

- 21-Oct-2009 (beta)
- Statistics, including standard error, added to the text
window. Routine(s) changed: DisplayFrame.
- 20-Aug-2009 (production and beta)
**All beta changes moved to production.**- North American Model (NAM) added.
- If more than 50% of the points on a line are missing, the line is plotted with symbols and lines, instead of just lines. (This was done to more easily display models that only produce forecasts every few hours, as opposed to every hour.) The way each line is plotted can (as always) can be changed by right-clicking on the line's legend. Routine(s) changed: DisplayFrame, SimpleLine2.

- 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)
- Error corrected that caused the min and max dates in 'plot unmatched' to depend on the order of curves.
- N_in_avg added as a statistic.
- Date selection window now goes back to 2006, to include retro run periods.
- Routine(s) changed: DisplayFrame, CurveParameters, CurvesControl.

- 5-Dec-2008 (production and beta)
- All beta changes moved to production (ceiling3.jar)
- model Bak13 (on 13 km grid) from wjet added
- model dev13 (on 13km grid) added
- "model" persistence added
- statistic Bias added
- statistic FAR added
- statistic CSI added
- statistic HSS added
- The 'plot matching' function was adjusted to not requrie the same number of metar reports in compared models for each hour. This makes it easier to match persistence with other models (because persistence requires that a metar station report at exactly the same time n hours ago, and this doesn't always apply). It also makes it easier to match models on different grids, because models on 20km grids have a few (about 4) more metars than those on 13km grids. This is because at the edges a metar will be matched if it is within 10km of a grid point for a 20km model, but the METAR must be within 6.5km of a grid point for a 13km model.
- Routine(s) changed: get_ceil_stats.cgi, CurveParameters, routines that load models into the database

- 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
- 25-Nov-2008
- First version. This uses data from the 'ceiling' database on wolphin.

Last modified: Thu Jul 12 20:45:45 GMT 2018