diff --git a/.github/workflows/update_truth.yml b/.github/workflows/update_truth.yml index a5cc330cab..cf9734e449 100644 --- a/.github/workflows/update_truth.yml +++ b/.github/workflows/update_truth.yml @@ -1,4 +1,4 @@ -name: Create Truth Data Update Pull Request +name: Update Truth Data on: workflow_dispatch: diff --git a/docs/Users_Guide/config_options.rst b/docs/Users_Guide/config_options.rst index 3239becefc..d60967cbd3 100644 --- a/docs/Users_Guide/config_options.rst +++ b/docs/Users_Guide/config_options.rst @@ -2406,7 +2406,7 @@ are empty. Note: grib_code 11 is equivalent to obs_var "TMP". Settings specific to individual tools ------------------------------------- -EnsembleStatConfig_default +GenEnsProdConfig_default ^^^^^^^^^^^^^^^^^^^^^^^^^^ ens @@ -2501,6 +2501,64 @@ combination of the categorical threshold (cat_thresh), neighborhood width ]; } +ensemble_flag +""""""""""""" + +The "ensemble_flag" entry is a dictionary of boolean value indicating +which ensemble products should be generated: + +* "latlon" for a grid of the Latitude and Longitude fields + +* "mean" for the simple ensemble mean + +* "stdev" for the ensemble standard deviation + +* "minus" for the mean minus one standard deviation + +* "plus" for the mean plus one standard deviation + +* "min" for the ensemble minimum + +* "max" for the ensemble maximum + +* "range" for the range of ensemble values + +* "vld_count" for the number of valid ensemble members + +* "frequency" for the ensemble relative frequency meeting a threshold + +* "nep" for the neighborhood ensemble probability + +* "nmep" for the neighborhood maximum ensemble probability + +* "rank" to write the rank for the gridded observation field to separate + NetCDF output file. + +* "weight" to write the grid weights specified in grid_weight_flag to the + rank NetCDF output file. + +.. code-block:: none + + ensemble_flag = { + latlon = TRUE; + mean = TRUE; + stdev = TRUE; + minus = TRUE; + plus = TRUE; + min = TRUE; + max = TRUE; + range = TRUE; + vld_count = TRUE; + frequency = TRUE; + nep = FALSE; + nmep = FALSE; + rank = TRUE; + weight = FALSE; + } + +EnsembleStatConfig_default +^^^^^^^^^^^^^^^^^^^^^^^^^^ + fcst, obs """"""""" @@ -2643,58 +2701,6 @@ levels, and range of values. max = NA; } -ensemble_flag -""""""""""""" - -The "ensemble_flag" entry is a dictionary of boolean value indicating -which ensemble products should be generated: - -* "mean" for the simple ensemble mean - -* "stdev" for the ensemble standard deviation - -* "minus" for the mean minus one standard deviation - -* "plus" for the mean plus one standard deviation - -* "min" for the ensemble minimum - -* "max" for the ensemble maximum - -* "range" for the range of ensemble values - -* "vld_count" for the number of valid ensemble members - -* "frequency" for the ensemble relative frequency meeting a threshold - -* "nep" for the neighborhood ensemble probability - -* "nmep" for the neighborhood maximum ensemble probability - -* "rank" to write the rank for the gridded observation field to separate - NetCDF output file. - -* "weight" to write the grid weights specified in grid_weight_flag to the - rank NetCDF output file. - -.. code-block:: none - - ensemble_flag = { - mean = TRUE; - stdev = TRUE; - minus = TRUE; - plus = TRUE; - min = TRUE; - max = TRUE; - range = TRUE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; - } - rng """ diff --git a/internal/test_unit/config/TCStatConfig_ALAL2010 b/internal/test_unit/config/TCStatConfig_ALAL2010 index 05bf63a7a1..46b630969d 100644 --- a/internal/test_unit/config/TCStatConfig_ALAL2010 +++ b/internal/test_unit/config/TCStatConfig_ALAL2010 @@ -212,7 +212,7 @@ jobs = [ "-job filter -amodel AHWI -rirw_track BDECK -rirw_thresh <=-30 -rirw_exact TRUE -dump_row ${MET_TEST_OUTPUT}/tc_stat/ALAL2010_AHWI_rw.tcst", "-job rirw -rirw_window 00 -rirw_thresh <=-15 -out_line_type CTC,CTS,MPR", "-job rirw -rirw_window 12 -rirw_thresh <=-15 -out_line_type CTC,CTS,MPR", - "-job rirw -rirw_window 12 -rirw_thresh <=-15 -out_line_type CTC,CTS -out_stat ${MET_TEST_OUTPUT}/tc_stat/ALAL2010_rirw.stat" + "-job rirw -rirw_window 12 -rirw_thresh <=-15 -out_line_type CTC,CTS -by amodel -out_stat ${MET_TEST_OUTPUT}/tc_stat/ALAL2010_rirw.stat" ]; // diff --git a/src/libcode/vx_statistics/contable_stats.cc b/src/libcode/vx_statistics/contable_stats.cc index 02aa6dfbbb..9df41040a0 100644 --- a/src/libcode/vx_statistics/contable_stats.cc +++ b/src/libcode/vx_statistics/contable_stats.cc @@ -811,14 +811,11 @@ if ( Nrows != Ncols ) { const int N = total(); -if ( N == 0 ) { - - mlog << Error << "\nContingencyTable::gheidke() -> " - << "table empty!\n\n"; - - exit ( 1 ); + // + // MET #2542: return bad data for empty tables rather than erroring out + // -} +if ( N == 0 ) return ( bad_data_double ); const double DN = (double) N; int j, k, m, n; @@ -912,14 +909,11 @@ if ( ec_value < 0.0 || ec_value >= 1.0 ) { const int N = total(); -if ( N == 0 ) { - - mlog << Error << "\nContingencyTable::gheidke_ec(double) -> " - << "table empty!\n\n"; - - exit ( 1 ); + // + // MET #2542: return bad data for empty tables rather than erroring out + // -} +if ( N == 0 ) return ( bad_data_double ); int j, sum; double num, denom, ans; @@ -977,14 +971,11 @@ if ( Nrows != Ncols ) { const int N = total(); -if ( N == 0 ) { - - mlog << Error << "\nContingencyTable::gkuiper() -> " - << "table empty!\n\n"; - - exit ( 1 ); + // + // MET #2542: return bad data for empty tables rather than erroring out + // -} +if ( N == 0 ) return ( bad_data_double ); const double DN = (double) N; int j, k, m, n; @@ -1077,14 +1068,11 @@ if ( Nrows != Ncols ) { const int N = total(); -if ( N == 0 ) { - - mlog << Error << "\nContingencyTable::gerrity() -> " - << "table empty!\n\n"; - - exit ( 1 ); + // + // MET #2542: return bad data for empty tables rather than erroring out + // -} +if ( N == 0 ) return ( bad_data_double ); int j, k, m, n; const double DN = (double) N;