diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 4c1eb33e9c..4e6e3872b7 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -176,7 +176,7 @@ jobs: - jobid: 'job1' tests: 'ascii2nc_indy pb2nc_indy tc_dland tc_pairs tc_stat plot_tc tc_rmw rmw_analysis tc_diag tc_gen' - jobid: 'job2' - tests: 'met_test_scripts mode_multivar mode_graphics mtd regrid airnow gsi_tools netcdf modis series_analysis wwmca_regrid gen_vx_mask grid_weight interp_shape grid_diag grib_tables lidar2nc shift_data_plane trmm2nc aeronet wwmca_plot ioda2nc gaussian' + tests: 'met_test_scripts mode_multivar mode_graphics mtd regrid airnow gsi_tools netcdf modis series_analysis wwmca_regrid gen_vx_mask interp_shape grid_diag grib_tables lidar2nc shift_data_plane trmm2nc aeronet wwmca_plot ioda2nc gaussian' fail-fast: false steps: - uses: actions/checkout@v4 @@ -310,6 +310,8 @@ jobs: tests: 'ensemble_stat stat_analysis_es' - jobid: 'job5' tests: 'ugrid' + - jobid: 'job6' + tests: 'grid_weight point_weight' fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/data/config/ConfigConstants b/data/config/ConfigConstants index 23210b6c34..15a2a8db4c 100644 --- a/data/config/ConfigConstants +++ b/data/config/ConfigConstants @@ -137,6 +137,10 @@ NONE = 1; COS_LAT = 2; AREA = 3; +// Point weight flag settings +NONE = 1; +SID = 2; + // Duplicate flag settings NONE = 1; UNIQUE = 2; diff --git a/data/config/EnsembleStatConfig_default b/data/config/EnsembleStatConfig_default index c496dd3507..b5b39eb803 100644 --- a/data/config/EnsembleStatConfig_default +++ b/data/config/EnsembleStatConfig_default @@ -266,8 +266,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = ""; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/data/config/GridStatConfig_default b/data/config/GridStatConfig_default index 4a0c7dce44..aa4d9517b5 100644 --- a/data/config/GridStatConfig_default +++ b/data/config/GridStatConfig_default @@ -271,8 +271,9 @@ nc_pairs_flag = { //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = ""; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/data/config/PointStatConfig_default b/data/config/PointStatConfig_default index 266c251e59..0b34c7537d 100644 --- a/data/config/PointStatConfig_default +++ b/data/config/PointStatConfig_default @@ -305,8 +305,10 @@ output_flag = { //////////////////////////////////////////////////////////////////////////////// -tmp_dir = "/tmp"; -output_prefix = ""; -version = "V12.0.0"; +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/docs/Users_Guide/config_options.rst b/docs/Users_Guide/config_options.rst index 25515fc524..5ef04f530e 100644 --- a/docs/Users_Guide/config_options.rst +++ b/docs/Users_Guide/config_options.rst @@ -1847,15 +1847,18 @@ in the following ways: embedded within another quoted string. Any such embedded quotes must be escaped using a preceeding backslash character. -* The "sid" entry is an array of strings which define groups of - observation station ID's over which to compute statistics. Each entry - in the array is either a filename of a comma-separated list. - - * For a filename, the strings are whitespace-separated. The first - string is the mask "name" and the remaining strings are the station +* The "sid" entry is an array of strings which define groups of observation station + ID's over which to compute statistics. Each station ID string can be followed by an + optional numeric weight enclosed in parenethesis and used by the "point_weight_flag" + configuration option. Each entry in the "sid" "array is either a filename or a + comma-separated list. + + * For an ASCII filename, the strings contained within it are whitespace-separated. + The first string is the mask "name" and the remaining strings are the station ID's to be used. * For a comma-separated list, optionally use a colon to specify a name. - For "MY_LIST:SID1,SID2", name = MY_LIST and values = SID1 and SID2. + For "MY_LIST:SID1(WGT1),SID2(WGT2)", name = MY_LIST which consists of + two station ID's (SID1 and SID2) and optional numeric weights (WGT1 and WGT2). * For a comma-separated list of length one with no name specified, the mask "name" and value are both set to the single station ID string. For "SID1", name = SID1 and value = SID1. @@ -1865,6 +1868,7 @@ in the following ways: For "SID1,SID2", name = MASK_SID and values = SID1 and SID2. * The "name" of the station ID mask is written to the VX_MASK column of the MET output files. + * The "llpnt" entry is either a single dictionary or an array of dictionaries. Each dictionary contains three entries, the "name" for the masking region, "lat_thresh", and "lon_thresh". The latitude and @@ -2353,8 +2357,9 @@ NBRCTC), partial sums (SL1L2, SAL1L2, VL1L2, and VAL1L2), and statistics It is meant to account for grid box area distortion and is often applied to global Lat/Lon grids. It is only applied for grid-to-grid verification in Grid-Stat and Ensemble-Stat and is not applied for grid-to-point -verification. It can only be defined once at the highest level of config -file context and applies to all verification tasks for that run. +verification, which is controlled by the "point_weight_flag" option. +It can only be defined once at the highest level of config file context +and applies to all verification tasks for that run. Three grid weighting options are currently supported: @@ -2391,6 +2396,27 @@ versions of MET. grid_weight_flag = NONE; +point_weight_flag +----------------- + +The "point_weight_flag" is similar to the "grid_weight_flag", described above, +but applies to grid-to-point verification in Point-Stat and Ensemble-Stat. +It is not applied for grid-to-grid verification which is controlled by the +"grid_weight_flag" option. It can only be defined once at the highest level +of config file context and applies to all verification tasks for that run. + +While only one point weighting option is currently supported, additional +methods are planned for future versions: + +* NONE to disable point weighting using a constant weight of 1.0 (default). + +* SID to use the weights defined by the station ID masking configuration option, + "mask.sid". + +.. code-block:: none + + point_weight_flag = NONE; + hss_ec_value ------------ diff --git a/docs/Users_Guide/ensemble-stat.rst b/docs/Users_Guide/ensemble-stat.rst index 8a2502c525..66e0187814 100644 --- a/docs/Users_Guide/ensemble-stat.rst +++ b/docs/Users_Guide/ensemble-stat.rst @@ -182,13 +182,25 @@ ____________________ obs_perc_value = 50; message_type_group_map = [...]; grid_weight_flag = NONE; + point_weight_flag = NONE; output_prefix = ""; version = "VN.N"; The configuration options listed above are common to many MET tools and are described in :numref:`config_options`. -Note that the **HIRA** interpolation method is only supported in Ensemble-Stat. +.. note:: + + The **HIRA** interpolation method is only supported in Ensemble-Stat. + +.. note:: + + The "grid_weight_flag" and "point_weight_flag" options described in + :numref:`config_options` define how matched pairs are weighted for + grid-to-grid and grid-to-point verification in Ensemble-Stat. These + weights currently only apply to the computation of probabilistic + outputs (PCT, PSTD, PJC, and PRC) but no other Ensemble-Stat output + line types. _____________________ diff --git a/docs/Users_Guide/point-stat.rst b/docs/Users_Guide/point-stat.rst index 73b7ce9a33..addaa206e2 100644 --- a/docs/Users_Guide/point-stat.rst +++ b/docs/Users_Guide/point-stat.rst @@ -362,6 +362,7 @@ ________________________ obs_summary = NONE; obs_perc_value = 50; message_type_group_map = [...]; + point_weight_flag = NONE; tmp_dir = "/tmp"; output_prefix = ""; version = "VN.N"; diff --git a/internal/test_unit/config/EnsembleStatConfig b/internal/test_unit/config/EnsembleStatConfig index 80157bed0c..59661a5fe2 100644 --- a/internal/test_unit/config/EnsembleStatConfig +++ b/internal/test_unit/config/EnsembleStatConfig @@ -226,8 +226,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_MASK_SID b/internal/test_unit/config/EnsembleStatConfig_MASK_SID index 96128cb148..28bd9899b3 100644 --- a/internal/test_unit/config/EnsembleStatConfig_MASK_SID +++ b/internal/test_unit/config/EnsembleStatConfig_MASK_SID @@ -218,8 +218,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_climo b/internal/test_unit/config/EnsembleStatConfig_climo index 06699abf0a..89abf95dd8 100644 --- a/internal/test_unit/config/EnsembleStatConfig_climo +++ b/internal/test_unit/config/EnsembleStatConfig_climo @@ -248,8 +248,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_grid_weight b/internal/test_unit/config/EnsembleStatConfig_grid_weight index 12994a3a5b..67da4d825f 100644 --- a/internal/test_unit/config/EnsembleStatConfig_grid_weight +++ b/internal/test_unit/config/EnsembleStatConfig_grid_weight @@ -240,8 +240,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = ${GRID_WEIGHT}; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = ${GRID_WEIGHT}; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin b/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin index 013763c74d..3828b386e5 100644 --- a/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin +++ b/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin @@ -232,8 +232,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_point_weight b/internal/test_unit/config/EnsembleStatConfig_point_weight new file mode 100644 index 0000000000..2e9ad158b8 --- /dev/null +++ b/internal/test_unit/config/EnsembleStatConfig_point_weight @@ -0,0 +1,214 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Ensemble-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "FCST"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "${DESC}"; + +// +// Output observation type to be written +// +obtype = "ANALYS"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; + vld_thresh = 0.5; + shape = SQUARE; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// IDs for ensemble members +// Only set if processing a single file with all ensembles +// +ens_member_ids = []; +control_id = ""; + +// +// May be set separately in each "fcst.field" and "obs.field" entry +// +censor_thresh = []; +censor_val = []; +prob_cat_thresh = []; + +// +// May be set separately in each "fcst.field" entry +// +prob_pct_thresh = [ ==0.25 ]; + +// +// May be set separately in each "obs.field" entry +// +nc_var_str = ""; +eclv_points = 0.05; + +// +// Forecast and observation fields to be verified +// +fcst = { + ens_thresh = 0.75; + vld_thresh = 1.0; + message_type = [ "ADPSFC" ]; + obs_quality_inc = []; + obs_quality_exc = []; + + field = [ + { name = "APCP"; level = "A24"; prob_cat_thresh = [ >=2.54 ]; } + ]; +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation filtering options +// May be set separately in each "obs.field" entry +// +message_type = []; +sid_inc = []; +sid_exc = []; +obs_thresh = [ NA ]; +obs_quality_inc = []; +obs_quality_exc = []; +duplicate_flag = NONE; +obs_summary = NONE; +obs_perc_value = 50; +skip_const = FALSE; + +// +// Observation error options +// Set dist_type to NONE to use the observation error table instead +// May be set separately in each "obs.field" entry +// +obs_error = { + flag = FALSE; + dist_type = NONE; + dist_parm = []; + inst_bias_scale = 1.0; + inst_bias_offset = 0.0; + min = NA; + max = NA; +} + +// +// Ensemble bin sizes +// May be set separately in each "obs.field" entry +// +ens_ssvar_bin_size = 1.0; +ens_phist_bin_size = 0.05; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = []; + poly = []; + sid = [ "${CONFIG_DIR}/SID_CONUS_ADPSFC_ELEV.txt" ]; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Confidence interval settings +// +ci_alpha = [ 0.05 ]; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + field = BOTH; + vld_thresh = 1.0; + shape = SQUARE; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// May be set separately in each "obs.field" entry +// +output_flag = { + ecnt = NONE; + rps = NONE; + rhist = NONE; + phist = NONE; + orank = NONE; + ssvar = NONE; + relp = NONE; + pct = STAT; + pstd = STAT; + pjc = STAT; + prc = STAT; + eclv = STAT; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Gridded verification output types +// May be set separately in each "obs.field" entry +// +nc_orank_flag = FALSE; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Random number generator +// +rng = { + type = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +grid_weight_flag = NONE; +point_weight_flag = ${POINT_WEIGHT}; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; + +//////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_python b/internal/test_unit/config/EnsembleStatConfig_python index 4de2045664..e6be01ea44 100644 --- a/internal/test_unit/config/EnsembleStatConfig_python +++ b/internal/test_unit/config/EnsembleStatConfig_python @@ -222,8 +222,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc b/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc index 0881ff3b8d..0a0bf9b074 100644 --- a/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc +++ b/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc @@ -235,8 +235,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob b/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob index af4354bfea..ea1023dc36 100644 --- a/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob +++ b/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob @@ -216,8 +216,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_single_file_grib b/internal/test_unit/config/EnsembleStatConfig_single_file_grib index 20220f82b5..831b5dce36 100644 --- a/internal/test_unit/config/EnsembleStatConfig_single_file_grib +++ b/internal/test_unit/config/EnsembleStatConfig_single_file_grib @@ -271,8 +271,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/EnsembleStatConfig_single_file_nc b/internal/test_unit/config/EnsembleStatConfig_single_file_nc index b3faf78d95..99403c0059 100644 --- a/internal/test_unit/config/EnsembleStatConfig_single_file_nc +++ b/internal/test_unit/config/EnsembleStatConfig_single_file_nc @@ -277,8 +277,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_APCP_regrid b/internal/test_unit/config/GridStatConfig_APCP_regrid index 74bbba5b4d..aea9adeaef 100644 --- a/internal/test_unit/config/GridStatConfig_APCP_regrid +++ b/internal/test_unit/config/GridStatConfig_APCP_regrid @@ -208,8 +208,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val b/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val index 64381023a8..ecce9ddfdf 100644 --- a/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val +++ b/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val @@ -305,8 +305,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "GRIB_lvl_typ_val"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "GRIB_lvl_typ_val"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_GRIB_set_attr b/internal/test_unit/config/GridStatConfig_GRIB_set_attr index cb2f86984c..36ab040a33 100644 --- a/internal/test_unit/config/GridStatConfig_GRIB_set_attr +++ b/internal/test_unit/config/GridStatConfig_GRIB_set_attr @@ -237,8 +237,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "GRIB_set_attr"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "GRIB_set_attr"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_GTG_latlon b/internal/test_unit/config/GridStatConfig_GTG_latlon index 90be6f2172..77edd743db 100644 --- a/internal/test_unit/config/GridStatConfig_GTG_latlon +++ b/internal/test_unit/config/GridStatConfig_GTG_latlon @@ -216,8 +216,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_GTG_lc b/internal/test_unit/config/GridStatConfig_GTG_lc index ddd8321fdd..0385bfda9e 100644 --- a/internal/test_unit/config/GridStatConfig_GTG_lc +++ b/internal/test_unit/config/GridStatConfig_GTG_lc @@ -216,8 +216,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_SEEPS b/internal/test_unit/config/GridStatConfig_SEEPS index 51bc14e2d6..808e5a10f3 100644 --- a/internal/test_unit/config/GridStatConfig_SEEPS +++ b/internal/test_unit/config/GridStatConfig_SEEPS @@ -215,8 +215,9 @@ seeps_grid_climo_name = "${SEEPS_GRID_CLIMO_NAME}"; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_WRF_pres b/internal/test_unit/config/GridStatConfig_WRF_pres index 10d46e8f94..98851dfa7b 100644 --- a/internal/test_unit/config/GridStatConfig_WRF_pres +++ b/internal/test_unit/config/GridStatConfig_WRF_pres @@ -281,8 +281,9 @@ ugrid_coordinates_file = ""; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_apply_mask b/internal/test_unit/config/GridStatConfig_apply_mask index 77af6251c0..041cae792d 100644 --- a/internal/test_unit/config/GridStatConfig_apply_mask +++ b/internal/test_unit/config/GridStatConfig_apply_mask @@ -217,8 +217,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG b/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG index 8783cbd9e1..8eab6dccb0 100644 --- a/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG +++ b/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG @@ -284,8 +284,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = COS_LAT; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_climo_WMO b/internal/test_unit/config/GridStatConfig_climo_WMO index 739d122295..5e37820412 100644 --- a/internal/test_unit/config/GridStatConfig_climo_WMO +++ b/internal/test_unit/config/GridStatConfig_climo_WMO @@ -278,8 +278,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = COS_LAT; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_climo_prob b/internal/test_unit/config/GridStatConfig_climo_prob index 3f00164d86..a1d35ed9e2 100644 --- a/internal/test_unit/config/GridStatConfig_climo_prob +++ b/internal/test_unit/config/GridStatConfig_climo_prob @@ -288,8 +288,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = COS_LAT; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_climo_wrap_year b/internal/test_unit/config/GridStatConfig_climo_wrap_year index beacc6825d..d0a6296ac8 100644 --- a/internal/test_unit/config/GridStatConfig_climo_wrap_year +++ b/internal/test_unit/config/GridStatConfig_climo_wrap_year @@ -259,8 +259,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_fbias_perc_thresh b/internal/test_unit/config/GridStatConfig_fbias_perc_thresh index 9d9d544afb..cb8c1ba195 100644 --- a/internal/test_unit/config/GridStatConfig_fbias_perc_thresh +++ b/internal/test_unit/config/GridStatConfig_fbias_perc_thresh @@ -203,8 +203,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_fourier b/internal/test_unit/config/GridStatConfig_fourier index 3ec891b8dd..c1ae46bb99 100644 --- a/internal/test_unit/config/GridStatConfig_fourier +++ b/internal/test_unit/config/GridStatConfig_fourier @@ -243,8 +243,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_gen_ens_prod b/internal/test_unit/config/GridStatConfig_gen_ens_prod index 015ef3e946..653f178a52 100644 --- a/internal/test_unit/config/GridStatConfig_gen_ens_prod +++ b/internal/test_unit/config/GridStatConfig_gen_ens_prod @@ -278,8 +278,9 @@ ugrid_coordinates_file = ""; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_grid_weight b/internal/test_unit/config/GridStatConfig_grid_weight index 27b266dfa8..0ac9eb393c 100644 --- a/internal/test_unit/config/GridStatConfig_grid_weight +++ b/internal/test_unit/config/GridStatConfig_grid_weight @@ -228,8 +228,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = ${GRID_WEIGHT}; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_interp_shape b/internal/test_unit/config/GridStatConfig_interp_shape index ad250e9802..ac3179cf94 100644 --- a/internal/test_unit/config/GridStatConfig_interp_shape +++ b/internal/test_unit/config/GridStatConfig_interp_shape @@ -211,8 +211,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_mpr_thresh b/internal/test_unit/config/GridStatConfig_mpr_thresh index e99405be7a..54ea06965f 100644 --- a/internal/test_unit/config/GridStatConfig_mpr_thresh +++ b/internal/test_unit/config/GridStatConfig_mpr_thresh @@ -276,8 +276,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = COS_LAT; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_no_leap b/internal/test_unit/config/GridStatConfig_no_leap index 32d05b0862..f22c8e3008 100644 --- a/internal/test_unit/config/GridStatConfig_no_leap +++ b/internal/test_unit/config/GridStatConfig_no_leap @@ -217,8 +217,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_prob_as_scalar b/internal/test_unit/config/GridStatConfig_prob_as_scalar index 0d5bdd25cb..2b8b91a0c4 100644 --- a/internal/test_unit/config/GridStatConfig_prob_as_scalar +++ b/internal/test_unit/config/GridStatConfig_prob_as_scalar @@ -238,8 +238,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_python b/internal/test_unit/config/GridStatConfig_python index 7ca801748e..14021bd14d 100644 --- a/internal/test_unit/config/GridStatConfig_python +++ b/internal/test_unit/config/GridStatConfig_python @@ -218,8 +218,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "python"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "python"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_python_mixed b/internal/test_unit/config/GridStatConfig_python_mixed index 9a39bc9533..b4c9feff07 100644 --- a/internal/test_unit/config/GridStatConfig_python_mixed +++ b/internal/test_unit/config/GridStatConfig_python_mixed @@ -222,8 +222,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "python_mixed"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "python_mixed"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_rtma b/internal/test_unit/config/GridStatConfig_rtma index ddef797d2e..fea47945db 100644 --- a/internal/test_unit/config/GridStatConfig_rtma +++ b/internal/test_unit/config/GridStatConfig_rtma @@ -218,8 +218,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_rtma_perc_thresh b/internal/test_unit/config/GridStatConfig_rtma_perc_thresh index 44ed5f564f..f468a9d1ba 100644 --- a/internal/test_unit/config/GridStatConfig_rtma_perc_thresh +++ b/internal/test_unit/config/GridStatConfig_rtma_perc_thresh @@ -221,8 +221,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_st4 b/internal/test_unit/config/GridStatConfig_st4 index 71d165e98a..1a55fc2cca 100644 --- a/internal/test_unit/config/GridStatConfig_st4 +++ b/internal/test_unit/config/GridStatConfig_st4 @@ -222,8 +222,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_st4_censor b/internal/test_unit/config/GridStatConfig_st4_censor index e1e9adb1df..bfc90cad92 100644 --- a/internal/test_unit/config/GridStatConfig_st4_censor +++ b/internal/test_unit/config/GridStatConfig_st4_censor @@ -231,8 +231,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_ugrid_mpas b/internal/test_unit/config/GridStatConfig_ugrid_mpas index d54b25de53..e61b0c2611 100644 --- a/internal/test_unit/config/GridStatConfig_ugrid_mpas +++ b/internal/test_unit/config/GridStatConfig_ugrid_mpas @@ -255,8 +255,9 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag b/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag index 9e479d0302..0655fd1aa9 100644 --- a/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag +++ b/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag @@ -256,8 +256,9 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_APCP b/internal/test_unit/config/PointStatConfig_APCP index b1df56e94b..ca381a89d4 100644 --- a/internal/test_unit/config/PointStatConfig_APCP +++ b/internal/test_unit/config/PointStatConfig_APCP @@ -135,8 +135,11 @@ output_flag = { duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_APCP_HIRA b/internal/test_unit/config/PointStatConfig_APCP_HIRA index 3dc823a50b..4e965bd716 100644 --- a/internal/test_unit/config/PointStatConfig_APCP_HIRA +++ b/internal/test_unit/config/PointStatConfig_APCP_HIRA @@ -142,8 +142,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_GTG_latlon b/internal/test_unit/config/PointStatConfig_GTG_latlon index 17aba08c1f..ae84d237fd 100644 --- a/internal/test_unit/config/PointStatConfig_GTG_latlon +++ b/internal/test_unit/config/PointStatConfig_GTG_latlon @@ -161,8 +161,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_GTG_lc b/internal/test_unit/config/PointStatConfig_GTG_lc index d45c47f618..198a40dc2f 100644 --- a/internal/test_unit/config/PointStatConfig_GTG_lc +++ b/internal/test_unit/config/PointStatConfig_GTG_lc @@ -169,8 +169,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_INTERP_OPTS b/internal/test_unit/config/PointStatConfig_INTERP_OPTS index 43eb1f0708..e0e75a5b9b 100644 --- a/internal/test_unit/config/PointStatConfig_INTERP_OPTS +++ b/internal/test_unit/config/PointStatConfig_INTERP_OPTS @@ -152,8 +152,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK b/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK index 48a04ed227..780081fb33 100644 --- a/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK +++ b/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK @@ -192,8 +192,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_MASK_SID b/internal/test_unit/config/PointStatConfig_MASK_SID index a77a8f9008..253f7320a1 100644 --- a/internal/test_unit/config/PointStatConfig_MASK_SID +++ b/internal/test_unit/config/PointStatConfig_MASK_SID @@ -147,8 +147,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_PHYS b/internal/test_unit/config/PointStatConfig_PHYS index 3c13262a71..6f3308f785 100644 --- a/internal/test_unit/config/PointStatConfig_PHYS +++ b/internal/test_unit/config/PointStatConfig_PHYS @@ -148,8 +148,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_PHYS_pint b/internal/test_unit/config/PointStatConfig_PHYS_pint index e246c570b3..f98f2e4102 100644 --- a/internal/test_unit/config/PointStatConfig_PHYS_pint +++ b/internal/test_unit/config/PointStatConfig_PHYS_pint @@ -143,8 +143,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_SEEPS b/internal/test_unit/config/PointStatConfig_SEEPS index 20ffa18cfb..cb7244311f 100644 --- a/internal/test_unit/config/PointStatConfig_SEEPS +++ b/internal/test_unit/config/PointStatConfig_SEEPS @@ -142,8 +142,11 @@ seeps_point_climo_name = "${SEEPS_POINT_CLIMO_NAME}"; duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_WINDS b/internal/test_unit/config/PointStatConfig_WINDS index 1c87273e89..ba385a0304 100644 --- a/internal/test_unit/config/PointStatConfig_WINDS +++ b/internal/test_unit/config/PointStatConfig_WINDS @@ -163,8 +163,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_aeronet b/internal/test_unit/config/PointStatConfig_aeronet index fef6c9bb42..387a3c54a2 100644 --- a/internal/test_unit/config/PointStatConfig_aeronet +++ b/internal/test_unit/config/PointStatConfig_aeronet @@ -212,8 +212,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_airnow b/internal/test_unit/config/PointStatConfig_airnow index 4223455902..5b5f97c915 100644 --- a/internal/test_unit/config/PointStatConfig_airnow +++ b/internal/test_unit/config/PointStatConfig_airnow @@ -240,8 +240,10 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// -tmp_dir = "/tmp"; -output_prefix = ""; -version = "V12.0.0"; +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_climo b/internal/test_unit/config/PointStatConfig_climo index d7f89b3cb0..d87ff87ca5 100644 --- a/internal/test_unit/config/PointStatConfig_climo +++ b/internal/test_unit/config/PointStatConfig_climo @@ -285,8 +285,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_climo_WMO b/internal/test_unit/config/PointStatConfig_climo_WMO index 01c3f9b3de..c34dc0989e 100644 --- a/internal/test_unit/config/PointStatConfig_climo_WMO +++ b/internal/test_unit/config/PointStatConfig_climo_WMO @@ -230,8 +230,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_climo_prob b/internal/test_unit/config/PointStatConfig_climo_prob index 364c1bfe73..b69812fae5 100644 --- a/internal/test_unit/config/PointStatConfig_climo_prob +++ b/internal/test_unit/config/PointStatConfig_climo_prob @@ -232,8 +232,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_dup b/internal/test_unit/config/PointStatConfig_dup index 8fad74b0e5..ff42a31eab 100644 --- a/internal/test_unit/config/PointStatConfig_dup +++ b/internal/test_unit/config/PointStatConfig_dup @@ -165,8 +165,11 @@ seeps_p1_thresh = NA; duplicate_flag = ${DUPLICATE_FLAG}; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_mpr_thresh b/internal/test_unit/config/PointStatConfig_mpr_thresh index 675b0696c2..6b62a8df4f 100644 --- a/internal/test_unit/config/PointStatConfig_mpr_thresh +++ b/internal/test_unit/config/PointStatConfig_mpr_thresh @@ -224,8 +224,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_obs_summary b/internal/test_unit/config/PointStatConfig_obs_summary index a931ba6b21..dc5b55a67e 100644 --- a/internal/test_unit/config/PointStatConfig_obs_summary +++ b/internal/test_unit/config/PointStatConfig_obs_summary @@ -153,8 +153,11 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_obs_summary_all b/internal/test_unit/config/PointStatConfig_obs_summary_all index 384e4ada19..e5bc4dcd7a 100644 --- a/internal/test_unit/config/PointStatConfig_obs_summary_all +++ b/internal/test_unit/config/PointStatConfig_obs_summary_all @@ -222,8 +222,11 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_point_weight b/internal/test_unit/config/PointStatConfig_point_weight new file mode 100644 index 0000000000..4f9528e26e --- /dev/null +++ b/internal/test_unit/config/PointStatConfig_point_weight @@ -0,0 +1,145 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Point-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +model = "SREF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "${DESC}"; + +//////////////////////////////////////////////////////////////////////////////// + +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +obs_window = { + beg = -1800; + end = 1800; +} + +//////////////////////////////////////////////////////////////////////////////// + +mpr_column = []; +mpr_thresh = []; +cnt_thresh = [ NA ]; +cnt_logic = UNION; +wind_thresh = [ NA ]; +wind_logic = UNION; +eclv_points = 0.05; + +fcst = { + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; + + field = [ + { name = "TMP"; level = "P850"; message_type = "ADPUPA"; cat_thresh = [ >273, >283 ]; }, + { name = "UGRD"; level = "P850"; message_type = "ADPUPA"; cat_thresh = [ >5 ]; }, + { name = "VGRD"; level = "P850"; message_type = "ADPUPA"; cat_thresh = [ >5 ]; } + ]; + +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +mask = { + grid = []; + poly = []; + sid = [ "${CONFIG_DIR}/SID_CONUS_ADPUPA_ELEV.txt" ]; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +ci_alpha = [ 0.05 ]; + +boot = { + interval = PCTILE; + rep_prop = 1.0; + n_rep = 200; + rng = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +interp = { + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +hira = { + flag = FALSE; + width = [ 2, 3, 4, 5 ]; + vld_thresh = 1.0; + cov_thresh = [ ==0.25 ]; + shape = SQUARE; + prob_cat_thresh = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +output_flag = { + fho = NONE; + ctc = STAT; + cts = STAT; + mctc = STAT; + mcts = STAT; + cnt = STAT; + sl1l2 = STAT; + sal1l2 = NONE; + vl1l2 = STAT; + val1l2 = NONE; + vcnt = STAT; + pct = NONE; + pstd = NONE; + pjc = NONE; + prc = NONE; + ecnt = NONE; + orank = NONE; + rps = NONE; + eclv = STAT; + mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; +} + +//////////////////////////////////////////////////////////////////////////////// +// Threshold for SEEPS p1 (Probability of being dry) + +seeps_p1_thresh = NA; + +//////////////////////////////////////////////////////////////////////////////// + +duplicate_flag = NONE; +rank_corr_flag = TRUE; + +point_weight_flag = ${POINT_WEIGHT}; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; + +//////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_prob b/internal/test_unit/config/PointStatConfig_prob index ab8067a79e..e4149c7eff 100644 --- a/internal/test_unit/config/PointStatConfig_prob +++ b/internal/test_unit/config/PointStatConfig_prob @@ -150,8 +150,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_prob_point_weight b/internal/test_unit/config/PointStatConfig_prob_point_weight new file mode 100644 index 0000000000..f083cb8807 --- /dev/null +++ b/internal/test_unit/config/PointStatConfig_prob_point_weight @@ -0,0 +1,151 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Point-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +model = "SREF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "${DESC}"; + +//////////////////////////////////////////////////////////////////////////////// + +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +obs_window = { + beg = -1800; + end = 1800; +} + +//////////////////////////////////////////////////////////////////////////////// + +mpr_column = []; +mpr_thresh = []; +cnt_thresh = [ NA ]; +cnt_logic = UNION; +wind_thresh = [ NA ]; +wind_logic = UNION; +eclv_points = 0.05; + +fcst = { + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; + + field = [ + { name = "PROB"; level = "P850"; + prob = { name = "TMP"; thresh_hi = 273; }; + cat_thresh = ==0.25; } + ]; + +} +obs = { + message_type = "ADPUPA"; + + field = [ + { name = "TMP"; level = "P850"; cat_thresh = <273; } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +mask = { + grid = [ "FULL" ]; + poly = []; + sid = [ "${CONFIG_DIR}/SID_CONUS_ADPUPA_ELEV.txt" ]; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +ci_alpha = [ 0.05 ]; + +boot = { + interval = PCTILE; + rep_prop = 1.0; + n_rep = 200; + rng = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +interp = { + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +hira = { + flag = FALSE; + width = [ 2, 3, 4, 5 ]; + vld_thresh = 1.0; + cov_thresh = [ ==0.25 ]; + shape = SQUARE; + prob_cat_thresh = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +output_flag = { + fho = NONE; + ctc = NONE; + cts = NONE; + mctc = NONE; + mcts = NONE; + cnt = NONE; + sl1l2 = NONE; + sal1l2 = NONE; + vl1l2 = NONE; + val1l2 = NONE; + vcnt = NONE; + pct = STAT; + pstd = STAT; + pjc = STAT; + prc = STAT; + ecnt = NONE; + orank = NONE; + rps = NONE; + eclv = STAT; + mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; +} + +//////////////////////////////////////////////////////////////////////////////// +// Threshold for SEEPS p1 (Probability of being dry) + +seeps_p1_thresh = NA; + +//////////////////////////////////////////////////////////////////////////////// + +duplicate_flag = NONE; +rank_corr_flag = TRUE; + +point_weight_flag = ${POINT_WEIGHT}; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; + +//////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_python b/internal/test_unit/config/PointStatConfig_python index 5116179451..3f56423d96 100644 --- a/internal/test_unit/config/PointStatConfig_python +++ b/internal/test_unit/config/PointStatConfig_python @@ -219,9 +219,12 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = ""; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_qty_inc_exc b/internal/test_unit/config/PointStatConfig_qty_inc_exc index 1eab2b184c..2345684e7a 100644 --- a/internal/test_unit/config/PointStatConfig_qty_inc_exc +++ b/internal/test_unit/config/PointStatConfig_qty_inc_exc @@ -209,8 +209,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_sid_inc_exc b/internal/test_unit/config/PointStatConfig_sid_inc_exc index a586064f53..9ab93b7417 100644 --- a/internal/test_unit/config/PointStatConfig_sid_inc_exc +++ b/internal/test_unit/config/PointStatConfig_sid_inc_exc @@ -156,8 +156,11 @@ seeps_p1_thresh = NA; duplicate_flag = NONE; obs_summary = NEAREST; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag b/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag index 886c6bb301..3c1a4054a6 100644 --- a/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag +++ b/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag @@ -160,8 +160,11 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_ugrid_mpas_out b/internal/test_unit/config/PointStatConfig_ugrid_mpas_out index c16deb0f7d..dcb7afe613 100644 --- a/internal/test_unit/config/PointStatConfig_ugrid_mpas_out +++ b/internal/test_unit/config/PointStatConfig_ugrid_mpas_out @@ -160,8 +160,11 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_ugrid_no_dataset b/internal/test_unit/config/PointStatConfig_ugrid_no_dataset index 9c7c7f5b3a..2cc3296b6e 100644 --- a/internal/test_unit/config/PointStatConfig_ugrid_no_dataset +++ b/internal/test_unit/config/PointStatConfig_ugrid_no_dataset @@ -160,8 +160,11 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced duplicate_flag = NONE; rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/SID_CONUS_ADPSFC_ELEV.txt b/internal/test_unit/config/SID_CONUS_ADPSFC_ELEV.txt new file mode 100644 index 0000000000..03da3d6060 --- /dev/null +++ b/internal/test_unit/config/SID_CONUS_ADPSFC_ELEV.txt @@ -0,0 +1,2109 @@ +SID_CONUS_ADPSFC_ELEV +1L2(47.07002) +3CLO3(2.57002) +AAT(1492.32002) +AATC1(318.82002) +ABCC1(1419.32002) +ABEW1(182.57002) +ABMC1(1426.07002) +ABNW1(281.32002) +ABRC1(1455.82002) +ABTM8(1348.82002) +ACLN2(1838.32002) +ACMC1(43.07002) +ACRI1(1771.07002) +ACRU1(2216.82002) +ACV(72.57002) +ADRC1(307.07002) +AFHA3(1553.32002) +AFMA3(1278.57002) +AFRA3(901.07002) +AFRC1(2086.07002) +AFRI1(1386.32002) +AFSC1(1455.82002) +AFSN2(2029.82002) +AGDO3(672.82002) +AGKO3(1514.82002) +AGPC1(2767.82002) +AGTQ1(910.82002) +AGWC1(638.57002) +AIDC1(0.57002) +AJGW1(193.32002) +AJO(306.57002) +AKEC1(1041.07002) +ALDC1(553.57002) +ALFO3(1569.32002) +ALKN2(1922.32002) +ALLN2(2004.57002) +ALMA3(563.07002) +ALPC1(671.32002) +ALRN2(1626.57002) +ALW(501.57002) +AMBC1(2004.07002) +ANAC1(106.82002) +ANDC1(494.82002) +ANEC1(654.07002) +ANIC1(0.070023) +ANRO3(1916.07002) +ANSO3(1711.57002) +APC(73.82002) +APDN2(926.07002) +APIC1(1453.57002) +APKC1(1460.07002) +APLC1(941.07002) +APSW1(457.32002) +APYC1(1361.82002) +ARAO3(55.07002) +ARAU1(1446.82002) +ARAW1(675.82002) +ARFO3(1248.07002) +ARGC1(384.82002) +ARKI1(1354.82002) +ASFA3(1807.57002) +ASHW1(944.82002) +ASMC1(354.32002) +ASRC1(655.07002) +AST(11.82002) +ASYU1(2478.82002) +ATAI1(2067.57002) +ATFO3(1461.07002) +ATHC1(1339.82002) +ATLC1(254.07002) +ATLI1(2289.32002) +ATNC1(1160.57002) +ATRC1(1088.57002) +ATSC1(1496.57002) +AUBW1(95.82002) +AURO3(67.07002) +AVLC1(1727.57002) +AVNC1(0.57002) +AVX(23.57002) +AZRQ1(1107.82002) +BAB(104.07002) +BABC1(1253.57002) +BADM8(1806.57002) +BADU1(1144.32002) +BAEI1(2204.57002) +BAFO3(1320.57002) +BAGA3(1147.82002) +BAJC1(600.82002) +BALO3(1239.32002) +BAMC1(456.57002) +BANM8(1254.32002) +BANO3(34.57002) +BARQ1(964.07002) +BARQ2(1466.57002) +BASC1(1137.82002) +BASI1(2203.57002) +BASQ1(829.32002) +BATN2(1573.32002) +BBBC1(1706.57002) +BBFO3(1239.57002) +BBRA3(1741.82002) +BBYC1(3.57002) +BCDO3(1545.82002) +BCDW1(145.07002) +BCFO3(1313.82002) +BCNC1(1598.32002) +BCRQ1(1161.32002) +BCYC1(1381.82002) +BDDA3(1294.07002) +BDFO3(319.82002) +BDMC1(1065.07002) +BDOC1(1834.82002) +BDYC1(733.32002) +BEAM8(2414.82002) +BEBC1(133.32002) +BEDO3(1542.32002) +BEFM8(1915.07002) +BENC1(242.07002) +BERN2(2213.82002) +BETC1(2246.57002) +BEUO3(1317.32002) +BEWO3(1178.07002) +BFL(183.07002) +BFRI1(1574.57002) +BFYI1(1079.32002) +BGBC1(981.32002) +BGCO3(1128.07002) +BGFO3(1380.57002) +BGRM8(1342.32002) +BGVC1(744.07002) +BHAU1(1401.07002) +BHNC1(270.32002) +BIEQ1(903.82002) +BIGN2(2094.82002) +BIH(1884.57002) +BIIC1(795.07002) +BIRQ2(1121.82002) +BISM8(1311.07002) +BKBW1(135.82002) +BKCU1(1996.82002) +BKE(1193.57002) +BKFN2(2023.82002) +BKFO3(612.32002) +BKGC1(1070.32002) +BKLC1(1314.82002) +BKRC1(2257.82002) +BKRN2(2023.82002) +BKSI1(1887.32002) +BKVN2(763.07002) +BLAO3(1066.32002) +BLBC1(80.32002) +BLBO3(551.07002) +BLCC1(2231.32002) +BLCN2(1699.57002) +BLDQ1(1185.07002) +BLEN2(1710.07002) +BLH(131.57002) +BLI(61.07002) +BLKM8(1868.32002) +BLKO3(1159.07002) +BLMC1(2163.07002) +BLOM8(2219.07002) +BLPO3(1740.57002) +BLRC1(284.07002) +BLSC1(1622.32002) +BLTM8(1135.32002) +BLTQ1(952.57002) +BLU(1381.82002) +BLUN2(1525.82002) +BMEC1(864.07002) +BMFW1(1183.82002) +BMOC1(1081.07002) +BMTC1(534.82002) +BMUC1(1538.57002) +BNCC1(186.57002) +BNCN2(1573.57002) +BNDC1(284.07002) +BNDO3(1178.07002) +BNDW1(615.07002) +BNFO3(421.32002) +BNGC1(211.57002) +BNKC1(1359.82002) +BNO(1369.82002) +BNRI1(2203.57002) +BNTC1(1001.07002) +BNVC1(422.32002) +BOCC1(2054.82002) +BOFO3(1183.07002) +BOGC1(1867.07002) +BOI(970.57002) +BOKO3(110.57002) +BOLC1(1569.82002) +BONO3(566.07002) +BOOM8(1316.82002) +BORO3(1760.32002) +BOUN2(609.57002) +BOWC1(1768.32002) +BPAW1(1158.32002) +BPFC1(1638.32002) +BPKC1(1700.32002) +BPKN2(2249.82002) +BPMC1(1700.32002) +BPNC1(1378.82002) +BPOC1(2480.07002) +BQFO3(1635.57002) +BRAQ2(1663.07002) +BRBI1(1671.57002) +BRCN2(2287.57002) +BRCQ1(2131.82002) +BRDC1(335.82002) +BRHC1(711.32002) +BRLM8(2082.57002) +BRLN2(1719.82002) +BRMO3(1136.32002) +BRNQ1(820.32002) +BROC1(846.82002) +BROQ1(1142.57002) +BRRC1(643.32002) +BRRI1(1818.57002) +BRRM8(2132.82002) +BRUO3(331.82002) +BRWC1(85.57002) +BSCM8(1981.57002) +BSCN2(1305.07002) +BSDI1(1268.82002) +BSNC1(1460.07002) +BSPM8(1931.32002) +BSTU1(1783.57002) +BTFO3(1261.82002) +BTM(1918.32002) +BTRC1(1249.82002) +BTRI1(1875.57002) +BTTC1(54.32002) +BTYO3(1454.82002) +BUBC1(186.57002) +BUCO3(1200.57002) +BUCW1(409.32002) +BUFC1(1499.32002) +BUFN2(1468.32002) +BUFO3(856.07002) +BUGC1(1181.07002) +BULI1(1830.82002) +BULO3(890.32002) +BULQ1(1326.82002) +BULQ2(1297.07002) +BUMC1(1001.07002) +BUO(1001.07002) +BUPC1(1314.82002) +BUR(400.32002) +BUSW1(695.82002) +BVAQ1(852.82002) +BVDC1(1053.82002) +BVLQ1(1408.32002) +BVRC1(167.32002) +BVRO3(1345.32002) +BWFO3(1433.32002) +BWSO3(1555.82002) +BWSQ1(2318.82002) +BYCU1(2325.07002) +BYFO3(1374.57002) +BYI(1307.82002) +BZRC1(941.57002) +CAEC1(379.32002) +CAFO3(1428.07002) +CAHC1(611.32002) +CALU1(1709.82002) +CAMI1(1163.32002) +CANO3(129.07002) +CAPC1(352.57002) +CAPN2(1838.32002) +CASN2(1044.32002) +CATN2(1799.82002) +CAWN2(615.57002) +CAZC1(779.32002) +CBFI1(2468.07002) +CBRA3(206.57002) +CBUC1(1715.57002) +CCCC1(794.57002) +CCCQ1(1301.57002) +CCDI1(1551.82002) +CCEC1(804.07002) +CCEN2(637.82002) +CCHC1(402.07002) +CCR(86.07002) +CCRN2(1826.32002) +CCRO3(180.57002) +CCUN2(1877.57002) +CCZC1(123.32002) +CDAW1(717.32002) +CDCU1(2042.07002) +CDEC1(1110.57002) +CDGC1(561.32002) +CDLC1(463.32002) +CDMU1(1612.57002) +CEC(62.82002) +CECU1(2011.82002) +CEDN2(2100.57002) +CEDW1(575.82002) +CEEC1(295.07002) +CEFO3(1330.32002) +CEKC1(856.57002) +CENW1(145.07002) +CESC1(1699.82002) +CFCC1(1585.82002) +CFRC1(1483.32002) +CFWC1(85.57002) +CGDN2(1001.82002) +CGFO3(1276.82002) +CGFW1(859.57002) +CGVC1(2744.57002) +CGWO3(843.57002) +CHAC1(1432.82002) +CHEA3(1392.82002) +CHFQ1(1614.82002) +CHMC1(1823.82002) +CHMQ1(979.32002) +CHMQ2(824.82002) +CHOC1(1318.57002) +CHPQ1(1568.32002) +CHRI1(2024.07002) +CHRO3(208.32002) +CHSN2(2178.57002) +CHTC1(396.07002) +CHUM8(1922.32002) +CHWC1(611.32002) +CICC1(88.07002) +CIFO3(1533.82002) +CINW1(473.07002) +CISC1(1050.07002) +CJAW1(596.82002) +CLBC1(1135.82002) +CLFC1(568.07002) +CLFO3(1475.07002) +CLFU1(1752.82002) +CLHC1(380.82002) +CLKI1(1165.32002) +CLKO3(1197.07002) +CLLC1(153.07002) +CLLO3(1136.57002) +CLM(432.57002) +CLNC1(1473.32002) +CLSC1(-0.42998) +CLSW1(152.82002) +CLVM8(2188.07002) +CMA(58.32002) +CMAC1(69.82002) +CMBM8(1785.32002) +CMFW1(1133.07002) +CMNC1(1096.07002) +CMOC1(1000.82002) +CMPQ1(1745.82002) +CMVC1(1215.57002) +CNAC1(353.57002) +CNFC1(1453.82002) +CNFO3(262.32002) +CNGC1(488.82002) +CNIC1(605.07002) +CNJC1(153.07002) +CNO(269.82002) +CNSC1(1094.32002) +CNYC1(1463.32002) +COCC1(244.57002) +CODC1(494.82002) +COE(828.07002) +COEC1(494.82002) +COGC1(581.07002) +COIN2(2005.82002) +COKC1(1728.32002) +COLO3(1365.82002) +COMN2(2082.82002) +CONM8(1755.32002) +COPM8(1864.32002) +COVC1(989.32002) +COWC1(548.07002) +COXQ1(1930.57002) +COYN2(1868.07002) +COZI1(1938.32002) +CPCM8(1809.32002) +CPFO3(1733.57002) +CPLC1(2317.32002) +CPPW1(1380.57002) +CPWA3(1660.57002) +CQFO3(1421.57002) +CQLQ2(504.07002) +CQT(87.82002) +CRAQ1(842.07002) +CRCA3(1752.32002) +CRCW1(958.32002) +CRGC1(53.57002) +CRIC1(217.07002) +CRKI1(990.82002) +CRLC1(2654.82002) +CRLO3(1711.57002) +CRMI1(1867.82002) +CROQ1(1719.07002) +CRQ(29.32002) +CRSN2(1843.32002) +CRTI1(1867.82002) +CRVC1(2594.82002) +CRVO3(95.57002) +CRWA3(308.32002) +CRWC1(1561.07002) +CRWW1(145.07002) +CRXC1(99.07002) +CRYN2(653.57002) +CRZC1(1197.82002) +CSCI1(1635.57002) +CSCO3(1553.07002) +CSDI1(1635.57002) +CSFO3(1464.32002) +CSHW1(236.32002) +CSMC1(538.32002) +CSTC1(583.57002) +CSTO3(1574.82002) +CSUC1(446.57002) +CSVC1(410.07002) +CSWC1(1238.32002) +CSXC1(783.32002) +CSZC1(1587.82002) +CTB(1155.57002) +CTLN2(2114.07002) +CTNC1(879.32002) +CTOC1(149.32002) +CUGW1(699.82002) +CUMW1(674.32002) +CUTQ1(2228.57002) +CUUC1(1457.57002) +CVAC1(38.32002) +CVBC1(335.07002) +CVFO3(671.82002) +CVSC1(1020.32002) +CVSO3(161.57002) +CWFO3(1326.07002) +CWSN2(587.32002) +CWXW1(575.82002) +CXCC1(67.57002) +CYAC1(988.32002) +CYFI1(1494.07002) +CYFW1(555.57002) +CYMC1(875.32002) +CYOC1(410.07002) +CYVC1(1786.82002) +CZFO3(1790.57002) +CZZ(971.07002) +DACC1(559.07002) +DAG(774.07002) +DALM8(1921.32002) +DANO3(1310.82002) +DARW1(786.57002) +DBCQ2(1799.57002) +DBLC1(572.32002) +DCCW1(817.32002) +DCEN2(692.07002) +DCKN2(587.32002) +DCRM8(1575.07002) +DCUC1(303.07002) +DCWC1(85.57002) +DDWC1(462.57002) +DEAI1(977.07002) +DECC1(1031.07002) +DEDN2(1336.82002) +DEEM8(1716.82002) +DEFO3(828.32002) +DEHI1(1377.57002) +DEIC1(683.07002) +DEMC1(1070.32002) +DENC1(1013.07002) +DERM8(1780.07002) +DESC1(734.07002) +DESN2(1602.57002) +DEVC1(539.32002) +DEW(710.32002) +DGFC1(1118.82002) +DGRC1(291.82002) +DHDI1(2190.07002) +DHLM8(2060.57002) +DIAO3(1643.32002) +DIDN2(926.07002) +DIVM8(2339.57002) +DIXO3(126.07002) +DKFC1(1050.07002) +DKYC1(2509.57002) +DLBQ1(1262.82002) +DLCC1(1732.57002) +DLN(1711.07002) +DLS(362.07002) +DLTU1(1439.82002) +DLVC1(476.57002) +DMLC1(1737.07002) +DMRA3(1642.32002) +DNPC1(1544.57002) +DNRC1(2091.32002) +DNVC1(1511.57002) +DOGC1(1949.07002) +DOGQ1(1956.32002) +DOTW1(284.57002) +DOUW1(740.82002) +DPHC1(1381.82002) +DPKI1(1763.82002) +DPSA3(1472.07002) +DPYM8(1611.07002) +DRBM8(1755.57002) +DRBN2(2007.57002) +DRCN2(2111.07002) +DRYN2(1809.07002) +DRYW1(987.57002) +DSNC1(117.32002) +DUCC1(1508.57002) +DUCN2(692.07002) +DUDC1(864.07002) +DUIC1(1047.07002) +DUNO3(119.32002) +DVLO3(246.82002) +DVOC1(984.07002) +DVRC1(159.07002) +DVSC1(1766.07002) +DVT(476.32002) +DWAI1(818.82002) +DWRN2(1586.57002) +DYCN2(1777.32002) +DYLC1(1555.82002) +DYNN2(2159.32002) +EACQ2(1800.57002) +EAT(754.32002) +EBTC1(2394.32002) +ECHO3(209.32002) +ECKC1(832.82002) +ECSC1(556.82002) +EDOC1(433.32002) +EDW(732.32002) +EED(351.57002) +EELC1(989.32002) +EEPC1(1286.82002) +EGCC1(1578.82002) +EGKO3(213.32002) +EGLC1(520.07002) +EIMO3(1608.07002) +EKA(127.82002) +EKAN2(2042.07002) +EKO(1704.82002) +EKRI1(945.07002) +ELBI1(1045.57002) +ELCC1(-20.17998) +ELDA3(726.82002) +ELEW1(714.57002) +ELJC1(176.82002) +ELKC1(879.57002) +ELKQ2(858.32002) +ELN(835.07002) +ELRN2(2205.07002) +ELRQ1(1547.82002) +ELSQ2(659.07002) +ELXC1(43.32002) +ELY(2205.07002) +EMCM8(1324.32002) +EMFO3(1388.57002) +EMIO3(1200.57002) +EMRC1(897.32002) +EMTI1(945.32002) +ENCQ1(829.07002) +ENCW1(409.32002) +ENFO3(1243.32002) +ENMW1(259.07002) +ENTU1(1798.57002) +ENUW1(409.32002) +ENV(1440.82002) +ENVI1(1047.82002) +EORC1(552.82002) +EPH(429.82002) +EPKC1(628.32002) +ERAW1(740.57002) +ERCC1(422.07002) +ESCC1(258.32002) +ESEC1(514.57002) +ESOC1(258.32002) +ESPC1(822.07002) +ESRC1(348.07002) +EUG(165.07002) +EUL(728.57002) +EURM8(1327.32002) +EVAQ1(2190.32002) +EVFO3(699.57002) +EXQC1(242.82002) +EZRI1(2087.07002) +FADO3(378.07002) +FAFI1(1604.07002) +FAFO3(1193.57002) +FALN2(1196.82002) +FALQ1(1641.57002) +FAT(74.32002) +FBOC1(450.82002) +FBSC1(814.82002) +FCHC1(311.57002) +FCKO3(1761.57002) +FCRM8(2060.07002) +FEFO3(964.57002) +FERI1(1202.57002) +FFFO3(1454.82002) +FFXW1(695.82002) +FGFO3(1512.32002) +FGMC1(514.32002) +FGRC1(781.07002) +FHCC1(117.57002) +FHDC1(1733.32002) +FHFI1(1408.07002) +FHLC1(448.82002) +FHR(6.07002) +FIFW1(567.82002) +FINQ1(820.57002) +FISN2(1825.82002) +FISO3(1361.07002) +FISW1(1437.07002) +FKFO3(1401.57002) +FLAC1(1773.82002) +FLEI1(2262.57002) +FLFC1(2136.07002) +FLFI1(1594.57002) +FLFO3(1524.32002) +FMFO3(1386.82002) +FMLQR(968.57002) +FMNQ1(1929.57002) +FMOC1(1062.82002) +FMRC1(1406.57002) +FNWC1(1011.57002) +FNWO3(161.57002) +FNXA3(374.82002) +FOGO3(258.07002) +FOIC1(2086.07002) +FOSO3(385.57002) +FOXN2(1742.32002) +FPRO3(178.07002) +FPWU1(1060.82002) +FRAW1(281.07002) +FRCC1(216.07002) +FRCW1(1004.32002) +FRGC1(47.57002) +FRHM8(1917.32002) +FRIC1(238.32002) +FRIW1(259.07002) +FRKW1(197.07002) +FRLO3(1545.82002) +FRMM8(1202.57002) +FRSO3(145.82002) +FRTC1(1140.57002) +FSHC1(1180.82002) +FSLC1(140.82002) +FSNC1(56.82002) +FSSO3(238.07002) +FTAW1(817.82002) +FTDC1(204.32002) +FTFW1(961.32002) +FTMM8(1759.57002) +FTNC1(581.82002) +FTSC1(607.57002) +FUL(27.07002) +FVVN2(1477.82002) +FWFW1(1071.32002) +FWNN2(653.57002) +FWSC1(1706.57002) +FWSN2(653.57002) +FZWA3(1881.82002) +GAAM8(1989.57002) +GALN2(2015.32002) +GARI1(2175.07002) +GARW1(817.82002) +GASC1(486.57002) +GASO3(190.82002) +GAVI1(1554.57002) +GBDA3(282.57002) +GBRC1(870.32002) +GCAW1(668.57002) +GCDC1(493.82002) +GCHA3(1354.82002) +GCKQ1(1783.82002) +GCN(1863.82002) +GCRA3(1672.57002) +GDFO3(1022.82002) +GDLC1(1788.82002) +GDPN2(1100.07002) +GDRO3(356.07002) +GDRQ2(730.82002) +GDTA3(143.32002) +GDTC1(142.57002) +GECU1(1945.57002) +GEG(700.82002) +GEOC1(810.32002) +GERW1(349.32002) +GGDA3(300.07002) +GGRC1(418.07002) +GHDQ1(1684.07002) +GHFW1(883.57002) +GILO3(1089.82002) +GISC1(960.07002) +GKSC1(1508.57002) +GLAW1(930.32002) +GLDO3(1668.32002) +GLEQ1(898.82002) +GLFM8(1308.82002) +GLNI1(2600.32002) +GLSI1(2600.32002) +GMFW1(906.57002) +GMTC1(880.82002) +GNFC1(2143.82002) +GNLC1(2143.57002) +GNLW1(768.07002) +GNNC1(1126.07002) +GNSC1(265.82002) +GNTC1(1113.07002) +GODW1(1157.57002) +GOLW1(483.07002) +GOSC1(760.57002) +GOYC1(241.57002) +GPEN2(2015.32002) +GPFO3(212.57002) +GPI(1061.32002) +GPRM8(1772.82002) +GQEC1(486.57002) +GRBO3(1554.32002) +GRCA3(1672.57002) +GRCM8(1621.32002) +GRCW1(1108.07002) +GRFW1(734.07002) +GRHC1(348.07002) +GRMO3(140.57002) +GRNQ2(1708.57002) +GRNW1(1081.57002) +GROQ2(1410.57002) +GRRC1(1461.82002) +GRSC1(1757.32002) +GRSI1(2191.32002) +GRVN2(2024.07002) +GRWA3(1651.32002) +GRZO3(1067.32002) +GSFO3(1336.07002) +GSGN2(1310.82002) +GSKI1(1861.57002) +GSNM8(1719.07002) +GSPC1(745.82002) +GSTC1(36.07002) +GSTO3(1554.32002) +GSVC1(770.07002) +GTCC1(167.32002) +GTMC1(1137.82002) +GTOC1(475.32002) +GTOM8(1825.82002) +GVPC1(1070.32002) +GVYC1(2090.07002) +GWFW1(1146.57002) +GWWW1(349.32002) +GZFC1(1009.07002) +HABC1(1530.57002) +HAIC1(607.07002) +HAMA3(639.82002) +HANM8(1377.82002) +HATC1(1158.32002) +HAWM8(1442.32002) +HAYI1(828.07002) +HBFI1(1452.32002) +HBRC1(1777.82002) +HCNC1(1646.57002) +HCPC1(442.57002) +HCTC1(349.32002) +HDLC1(944.32002) +HDLI1(1332.32002) +HDZC1(740.07002) +HEMI1(1238.32002) +HESC1(1060.07002) +HFLC1(1041.07002) +HGFW1(1036.82002) +HHAI1(1963.07002) +HHDW1(674.32002) +HHFO3(975.07002) +HHR(13.32002) +HIBW1(791.07002) +HIDC1(187.07002) +HIMN2(2010.07002) +HIO(145.82002) +HIRO3(1172.07002) +HJO(58.82002) +HKFW1(284.57002) +HLCC1(1023.07002) +HLKC1(1656.32002) +HLLC1(1773.07002) +HLMO3(879.57002) +HLTI1(2393.82002) +HMGC1(1545.57002) +HMS(255.82002) +HNAO3(677.82002) +HNBO3(898.32002) +HNDO3(898.32002) +HNEO3(734.32002) +HNFO3(968.32002) +HNGC1(856.57002) +HNGO3(734.32002) +HNHO3(968.32002) +HNIO3(968.32002) +HNJO3(1185.82002) +HNSW1(259.07002) +HNTC1(1770.07002) +HNYM8(1181.07002) +HOAC1(830.57002) +HODO3(485.82002) +HOHU1(1687.57002) +HOMI1(758.07002) +HONC1(357.57002) +HOOM8(1596.32002) +HOTM8(1151.32002) +HOTN2(1305.57002) +HOWO3(1421.07002) +HOXO3(485.82002) +HPDC1(524.57002) +HPEC1(220.07002) +HPFI1(2544.07002) +HPRC1(803.32002) +HPRO3(898.32002) +HPWO3(1365.07002) +HQM(44.57002) +HQSI1(1016.57002) +HRHW1(351.32002) +HRI(212.57002) +HRLO3(1512.82002) +HRWM8(1348.32002) +HRZC1(664.57002) +HSEC1(331.07002) +HSFO3(763.82002) +HSGC1(819.07002) +HSKO3(341.57002) +HSPC1(67.57002) +HSQC1(2740.07002) +HTRC1(1377.07002) +HTSC1(1022.32002) +HUFW1(300.07002) +HUGI1(1369.57002) +HUSQ1(896.82002) +HUZI1(1748.57002) +HVSA3(312.32002) +HWCI1(1637.57002) +HWD(103.32002) +HWKC1(377.07002) +HWRW1(389.07002) +HYFC1(1034.57002) +HYFO3(900.82002) +HYNI1(2486.07002) +HYSC1(1879.57002) +ICKC1(2047.32002) +ICPC1(2047.32002) +IDA(1494.82002) +IDAC1(818.57002) +IDKC1(1357.82002) +IDOC1(338.32002) +IDPC1(2203.32002) +IDWC1(1406.82002) +IGM(1229.82002) +ILLQ2(1445.32002) +IMHO3(1278.07002) +IMTW1(1231.07002) +IMWN2(1889.82002) +INDI1(1864.32002) +INTC1(1166.57002) +IPL(-25.67998) +IPLC1(38.32002) +IRFO3(1380.82002) +ISPQ1(896.57002) +ISWC1(484.82002) +IWLC1(1068.57002) +IZA(402.07002) +JAPN2(2033.32002) +JBGC1(508.57002) +JBLC1(434.57002) +JCUN2(2033.32002) +JEAN2(1075.07002) +JER(1144.57002) +JESN2(1130.32002) +JETM8(1021.82002) +JKPI1(1925.07002) +JLNQ2(826.07002) +JNLC1(661.32002) +JOJO3(961.57002) +JPRC1(1704.82002) +JRFO3(1395.32002) +JRHQ1(1699.32002) +JRMA3(1379.07002) +JRMI1(1081.32002) +JSDC1(810.32002) +JSNC1(1564.32002) +JSPN2(1723.57002) +JSPU1(1827.07002) +JTAC1(1461.07002) +JUFW1(205.57002) +JULC1(1065.82002) +JUMQ2(654.32002) +JWBC1(1297.32002) +KADW1(1063.82002) +KBFO3(1309.07002) +KBNC1(1290.82002) +KCFW1(640.32002) +KCPC1(701.57002) +KCYC1(286.57002) +KEDW1(1140.82002) +KEEO3(1425.57002) +KELC1(575.07002) +KESC1(363.57002) +KFAW1(840.82002) +KFLW1(840.82002) +KIMO3(733.57002) +KLS(195.57002) +KMFW1(632.32002) +KMRO3(1515.32002) +KNNC1(454.82002) +KNSN2(1484.32002) +KNWC1(1179.32002) +KOSW1(645.07002) +KRCI1(1881.07002) +KRCM8(1661.07002) +KRKC1(1640.57002) +KRNC1(1508.07002) +KRTC1(1457.57002) +KSPC1(2283.07002) +KTLC1(230.07002) +KTLW1(840.82002) +KTTC1(109.57002) +KUSW1(770.82002) +KYCN2(1758.32002) +L13(11.32002) +LADN2(2014.07002) +LAFC1(1670.07002) +LAFN2(552.32002) +LAGC1(25.07002) +LAGO3(1095.32002) +LAHC1(179.82002) +LALN2(552.32002) +LAS(692.07002) +LAX(47.07002) +LAYC1(596.32002) +LBBM8(1124.32002) +LBCO3(935.57002) +LBDC1(129.82002) +LBFO3(1413.07002) +LBIC1(8.07002) +LBRW1(470.32002) +LCBC1(35.82002) +LCFW1(1113.57002) +LCHN2(1818.57002) +LDOI1(2287.57002) +LDRC1(1432.07002) +LDWM8(1151.82002) +LEBC1(1355.07002) +LECW1(954.82002) +LEFW1(946.07002) +LEGC1(459.07002) +LEGW1(201.32002) +LENN2(2023.82002) +LESQ1(2054.32002) +LEXC1(313.57002) +LFDQ1(892.07002) +LFRM8(1132.57002) +LGB(2.32002) +LGD(1105.82002) +LGFO3(698.32002) +LGRC1(207.32002) +LGWN2(535.07002) +LHCA3(428.57002) +LIBM8(1118.57002) +LICC1(72.32002) +LIDW1(446.32002) +LIMQ1(1592.32002) +LINM8(1754.82002) +LINQR(919.57002) +LKCC1(410.07002) +LKCO3(1706.32002) +LKN(1704.82002) +LKNC1(1292.07002) +LKSO3(615.07002) +LKTI1(1369.57002) +LKWA3(1426.57002) +LLEC1(931.32002) +LLFW1(1055.82002) +LLJ(2024.07002) +LMCN2(1746.57002) +LMCO3(1680.82002) +LMDN2(1001.82002) +LMDO3(996.07002) +LMHM8(2112.32002) +LMLN2(2125.57002) +LMRM8(2148.82002) +LMRN2(1001.82002) +LMT(1346.82002) +LNBW1(353.82002) +LNCM8(1754.82002) +LOAC1(201.07002) +LOBC1(2497.82002) +LOFO3(259.07002) +LOIN2(1958.82002) +LOKC1(1494.57002) +LOL(1286.07002) +LONN2(1940.82002) +LOSC1(129.82002) +LOSO3(865.32002) +LPAC1(153.07002) +LPC(152.07002) +LPDC1(981.07002) +LPFI1(1852.57002) +LPOC1(624.82002) +LPOW1(865.32002) +LPRC1(620.32002) +LPRU1(1974.32002) +LPSI1(1735.57002) +LPSW1(1075.32002) +LPTC1(1507.82002) +LPWO3(509.32002) +LPZC1(639.07002) +LRCM8(1755.57002) +LRLC1(889.32002) +LRRM8(2199.82002) +LSFW1(954.82002) +LSGC1(312.82002) +LSHC1(735.07002) +LSLC1(327.57002) +LSNC1(1249.82002) +LSPC1(1715.57002) +LSRC1(150.07002) +LSTC1(1126.07002) +LSV(704.82002) +LTAI1(1554.57002) +LTHC1(1029.07002) +LTJC1(605.07002) +LTLC1(984.07002) +LTRC1(205.82002) +LUBM8(1436.32002) +LUFI1(1109.57002) +LUKO3(1197.57002) +LUNN2(2077.82002) +LVGQ1(1881.07002) +LVK(246.82002) +LVMC1(165.32002) +LVPN2(587.32002) +LVTC1(2722.57002) +LVYN2(1973.32002) +LWDC1(422.07002) +LWDI1(2604.32002) +LWNW1(1214.07002) +LWS(597.82002) +MADC1(1039.57002) +MAE(86.57002) +MAEC1(487.57002) +MAFC1(236.57002) +MAMC1(2671.82002) +MANM8(1812.57002) +MANW1(809.32002) +MAPC1(603.57002) +MARW1(824.32002) +MAYI1(1925.32002) +MBBC1(951.57002) +MBCA3(628.07002) +MBCC1(123.32002) +MBMW1(824.32002) +MBUC1(129.07002) +MCCC1(1347.07002) +MCDO3(1538.82002) +MCDW1(261.82002) +MCE(40.57002) +MCFC1(1017.57002) +MCGC1(274.32002) +MCGN2(2217.32002) +MCKI1(1136.07002) +MCPA3(1150.57002) +MCUC1(1081.57002) +MDAC1(222.57002) +MDDC1(939.57002) +MDFI1(1785.07002) +MDFO3(636.82002) +MDHC1(1317.82002) +MDLA3(1073.32002) +MDLI1(2400.07002) +MDMI1(1306.57002) +MDRW1(709.07002) +MEAA3(1087.32002) +MEEC1(71.82002) +MEFO3(1123.32002) +MEFW1(1219.82002) +MFDU1(1857.07002) +MFDW1(222.32002) +MFLC1(1031.07002) +MFR(531.82002) +MGCA3(628.07002) +MGFO3(1204.32002) +MGMI1(1857.82002) +MGSW1(872.07002) +MHBC1(93.32002) +MHEC1(502.32002) +MHLA3(1162.57002) +MHMC1(589.82002) +MHS(1579.32002) +MHSI1(1858.32002) +MHSW1(1033.07002) +MHV(854.07002) +MHWO3(1816.07002) +MHYC1(2135.57002) +MIAC1(1017.57002) +MIDI1(2081.82002) +MIDW1(709.07002) +MIGC1(157.57002) +MILW1(799.07002) +MIPW1(148.07002) +MISI1(966.07002) +MITW1(730.57002) +MJBN2(1472.57002) +MJCC1(875.07002) +MKBI1(2332.07002) +MKEC1(2179.57002) +MKZO3(1345.32002) +MLCC1(1154.32002) +MLFO3(565.57002) +MLGC1(1052.82002) +MLHN2(776.32002) +MLKI1(2356.57002) +MLLO3(256.57002) +MLNC1(1052.82002) +MLP(1392.82002) +MMCW1(824.32002) +MMFO3(708.57002) +MMIA3(402.07002) +MMKC1(1335.32002) +MMRO3(708.82002) +MMTA3(1073.32002) +MMTC1(2246.82002) +MMV(79.82002) +MMWA3(572.82002) +MNAC1(1603.32002) +MNCC1(1230.07002) +MNCN2(2014.07002) +MNGC1(1483.32002) +MNHC1(1819.57002) +MNLC1(1124.07002) +MNNA3(1347.82002) +MNRN2(2015.32002) +MNSI1(2367.32002) +MNTN2(1659.07002) +MOAN2(703.07002) +MOD(14.07002) +MOFI1(1656.57002) +MOGN2(1805.82002) +MOIC1(377.82002) +MOKI1(2017.07002) +MOLC1(541.32002) +MOMN2(2123.57002) +MORN2(1633.07002) +MORQ1(846.32002) +MOSI1(866.32002) +MOSO3(1423.32002) +MOUC1(903.32002) +MOWC1(1625.32002) +MPEC1(76.82002) +MPLO3(203.57002) +MPOC1(535.82002) +MPSW1(1021.32002) +MRDC1(1483.32002) +MRFO3(1228.32002) +MRGI1(2231.57002) +MRIC1(535.82002) +MRKI1(1647.32002) +MRLN2(1973.32002) +MRNC1(422.07002) +MRSC1(452.57002) +MRSO3(747.07002) +MRWA3(470.07002) +MRY(19.57002) +MRYM8(1764.57002) +MRYN2(1185.82002) +MSAC1(1579.32002) +MSCI1(878.82002) +MSEC1(244.07002) +MSFO3(1358.07002) +MSJC1(1107.32002) +MSLQ1(1013.07002) +MSO(1372.82002) +MSPM8(1311.07002) +MSQN2(855.07002) +MSRC1(1579.32002) +MSRU1(1816.32002) +MSVA3(572.82002) +MSYC1(1090.82002) +MTAW1(874.07002) +MTCW1(897.57002) +MTHI1(833.07002) +MTHN2(2139.82002) +MTHO3(1177.57002) +MTIC1(377.82002) +MTKM8(1922.32002) +MTMC1(188.07002) +MTMI1(1739.32002) +MTQC1(840.57002) +MTR(19.57002) +MTRO3(1187.32002) +MTSC1(2103.32002) +MTSN2(1341.82002) +MTTC1(2090.07002) +MTZC1(600.32002) +MUDC1(981.32002) +MUDW1(171.82002) +MULM8(2247.82002) +MUO(833.07002) +MVDC1(1233.07002) +MVDN2(1712.82002) +MVEW1(100.32002) +MVLC1(1376.82002) +MWH(392.82002) +MWSA3(783.07002) +MYF(76.82002) +MYL(1746.07002) +MYMA3(321.07002) +MYRC1(2228.07002) +MYRI1(1217.57002) +MYV(22.32002) +MZTC1(1625.32002) +NADC1(168.82002) +NAPC1(254.07002) +NBKO3(318.32002) +NBRC1(75.07002) +NCKC1(1016.07002) +NCLO3(1594.32002) +NCSW1(1115.07002) +NEFW1(766.57002) +NEIQ1(1161.57002) +NFEM8(1524.82002) +NFFI1(2566.57002) +NFFW1(213.82002) +NFJM8(1673.32002) +NFKC1(1544.57002) +NFL(1250.57002) +NFRC1(854.57002) +NFRO3(698.32002) +NHPC1(446.57002) +NHRU1(1995.32002) +NID(850.07002) +NINM8(1348.82002) +NIPC1(384.82002) +NISW1(944.82002) +NKSW1(61.07002) +NKX(76.82002) +NLC(50.57002) +NLSC1(791.57002) +NLSN2(575.82002) +NMPI1(809.82002) +NMSC1(342.57002) +NOIM8(1320.82002) +NPFO3(798.07002) +NPXC1(1180.57002) +NRAC1(100.82002) +NRDC1(1031.82002) +NRKW1(173.57002) +NTCC1(562.82002) +NTDN2(1618.82002) +NTPO3(1709.57002) +NTRC1(1861.82002) +NUCI1(1300.32002) +NUQ(157.07002) +NUW(0.82002) +NVRM8(1714.07002) +NWRA3(901.07002) +NWRC1(27.82002) +NXP(715.57002) +NYAN2(1873.57002) +NYL(166.07002) +NYSO3(717.32002) +NZAC1(1279.32002) +NZCM8(1965.32002) +OAGW1(718.07002) +OAK(29.07002) +OAMC1(31.57002) +OASN2(1923.82002) +OBRC1(532.57002) +OCFW1(1255.32002) +OCHO3(1167.32002) +OCMO3(1415.07002) +OCNC1(63.07002) +OCTC1(259.07002) +OCWO3(1408.57002) +ODBN2(926.07002) +ODLC1(28.82002) +ODSW1(502.82002) +OGD(1454.82002) +OGDC1(949.07002) +OGOC1(616.07002) +OGVC1(1180.57002) +OHOI1(2151.32002) +OICC1(1010.07002) +OITC1(417.57002) +OJAC1(561.32002) +OJIC1(561.32002) +OKB(63.07002) +OKFO3(1515.57002) +OKNC1(1194.82002) +OKPC1(354.32002) +OLDQ1(1015.82002) +OLNM8(1374.32002) +OMFO3(613.07002) +OMFW1(1016.82002) +OMK(792.57002) +OMTC1(828.82002) +OMWW1(1021.32002) +ONCC1(2046.07002) +ONO(708.57002) +ONOC1(120.82002) +ONSC1(823.57002) +ONT(559.07002) +ONYC1(1312.32002) +OOFO3(1648.57002) +OORC1(1651.57002) +OPCA3(532.57002) +OPLC1(875.07002) +ORCO3(72.82002) +ORDC1(266.82002) +ORIC1(96.07002) +ORWN2(1356.57002) +OTOW1(313.82002) +OTTC1(119.07002) +OURC1(830.82002) +OVE(96.82002) +OVNM8(1549.07002) +OVRC1(2064.07002) +OWDC1(133.32002) +OWFO3(1061.07002) +OWNC1(2132.07002) +OWYN2(1817.07002) +OXR(58.32002) +OXSI1(1699.82002) +OYFO3(1607.57002) +P68(1960.07002) +P69(1202.57002) +PACW1(1036.82002) +PAE(39.82002) +PAFO3(594.32002) +PAHN2(1302.82002) +PALW1(446.57002) +PAMC1(937.32002) +PANN2(1759.32002) +PASQ1(1977.32002) +PBCC1(1310.32002) +PBFW1(100.32002) +PBUI1(1571.32002) +PCEC1(434.82002) +PCIC1(476.57002) +PCKC1(1277.57002) +PCKI1(1751.82002) +PCLC1(410.07002) +PCON2(1698.57002) +PCQC1(671.82002) +PCRW1(1591.82002) +PCYO3(1535.82002) +PDEC1(508.57002) +PDGC1(457.07002) +PDT(411.07002) +PDX(87.57002) +PEAC1(348.57002) +PEFO3(291.57002) +PEFW1(974.07002) +PELQR(1600.32002) +PEOW1(976.82002) +PEPC1(2030.57002) +PESW1(961.57002) +PFHC1(1397.57002) +PFRC1(278.07002) +PFTC1(414.57002) +PGRC1(600.32002) +PHGM8(1989.32002) +PHRC1(955.32002) +PHX(368.32002) +PIBC1(162.57002) +PIBN2(587.32002) +PICM8(1771.07002) +PIDC1(1031.82002) +PIEC1(1624.32002) +PIEI1(1096.57002) +PIFC1(1362.82002) +PIFW1(977.82002) +PIH(1370.57002) +PIHC1(982.57002) +PION2(1798.82002) +PIPA3(1543.82002) +PIRI1(1096.57002) +PISC1(80.57002) +PITC1(789.82002) +PIVC1(1426.07002) +PKCC1(680.07002) +PKFC1(537.07002) +PKFO3(819.32002) +PKSQ1(1594.57002) +PLAM8(1179.32002) +PLCC1(433.32002) +PLEC1(165.07002) +PLFI1(1057.32002) +PLIC1(877.07002) +PLKI1(1151.57002) +PLLC1(1530.57002) +PLMC1(29.32002) +PLRC1(924.82002) +PLTC1(307.07002) +PLVM8(1337.07002) +PMD(950.57002) +PMFW1(966.07002) +PMNM8(1294.57002) +PNCC1(2143.57002) +PNCQR(1110.32002) +PNFI1(1419.82002) +PNGO3(485.82002) +PNKW1(935.32002) +PNRI1(1034.07002) +PNTM8(1515.32002) +POEM8(1519.32002) +POLM8(1514.57002) +POMC1(389.57002) +PORQ1(1387.57002) +POSC1(1823.82002) +POTC1(762.32002) +POTI1(874.32002) +POWC1(213.82002) +POWO3(502.07002) +PPDN2(692.07002) +PPHC1(1055.32002) +PPPC1(842.82002) +PPRC1(442.57002) +PPRW1(1356.07002) +PPSC1(307.57002) +PRAI1(1557.82002) +PRB(350.82002) +PRBC1(350.82002) +PRBQ1(1576.07002) +PRC(1651.32002) +PRCI1(1175.07002) +PRCO3(1473.32002) +PRDM8(1302.82002) +PRFO3(741.07002) +PRGC1(1675.32002) +PRHC1(461.07002) +PRIQ1(1259.07002) +PRKA3(230.32002) +PRLI1(1820.32002) +PRMC1(937.32002) +PROO3(875.32002) +PRPC1(828.82002) +PRSN2(2211.57002) +PSAC1(291.82002) +PSC(182.07002) +PSCC1(2163.07002) +PSP(794.57002) +PSPC1(1721.57002) +PSQC1(258.32002) +PSRC1(2097.82002) +PSTA3(1651.32002) +PSTC1(1748.32002) +PSTM8(1481.07002) +PTEC1(231.57002) +PTFO3(1498.32002) +PTHC1(1095.07002) +PTHW1(1409.82002) +PTNM8(2195.32002) +PTPC1(19.57002) +PTV(193.82002) +PUGC1(119.07002) +PUW(835.82002) +PVRO3(1027.82002) +PWYC1(213.82002) +PYFO3(1003.32002) +PYLC1(1131.07002) +PYNC1(1193.32002) +PYPC1(566.32002) +PYTI1(729.32002) +QBAA3(1828.07002) +QBMA3(1816.82002) +QBRA3(1443.82002) +QBYQ2(1429.57002) +QCAC1(58.32002) +QCCO3(737.32002) +QCKA3(1214.57002) +QCNW1(289.07002) +QDPA3(2360.07002) +QFSA3(1933.57002) +QGDA3(1326.57002) +QGSA3(1711.57002) +QHAA3(351.57002) +QHBA3(1070.07002) +QHQA3(726.57002) +QHUA3(1535.57002) +QISA3(1651.32002) +QLGA3(1715.07002) +QMBA3(1292.32002) +QMLA3(1715.07002) +QMMA3(1291.57002) +QNFA3(1715.07002) +QNYC1(1504.57002) +QOKA3(1282.82002) +QPFO3(569.07002) +QRMO3(1703.32002) +QRTA3(1572.32002) +QSPA3(1214.57002) +QSTA3(1042.57002) +QTCW1(566.07002) +QTUA3(1863.82002) +QTWA3(1466.32002) +QTZC1(1234.57002) +QUEQ1(925.07002) +QUPA3(628.07002) +QWSA3(2150.82002) +QYJA3(1641.32002) +QYRC1(1504.57002) +RAL(309.57002) +RAWN2(1395.07002) +RAYQ1(956.82002) +RBG(319.32002) +RBL(108.82002) +RBTN2(1664.82002) +RBVN2(2048.57002) +RBYC1(370.07002) +RBYM8(1907.82002) +RCCW1(193.32002) +RCEC1(2297.32002) +RCFC1(47.57002) +RCHC1(846.82002) +RCPC1(1286.82002) +RCRO3(1587.57002) +RCSO3(1590.57002) +RDD(155.82002) +RDKI1(2303.32002) +RDLO3(478.07002) +RDM(929.07002) +RDOC1(0.32002) +RDVC1(667.32002) +REDO3(1123.07002) +REEO3(83.82002) +RENI1(1220.57002) +REO(1261.57002) +RFCN2(653.57002) +RFSC1(363.57002) +RFTI1(1347.82002) +RGTC1(984.07002) +RIV(457.07002) +RJSC1(395.32002) +RKBC1(277.07002) +RKHO3(287.32002) +RKPM8(1992.07002) +RLFO3(1389.57002) +RLGW1(1181.57002) +RLKC1(990.07002) +RLKN2(2027.57002) +RLYO3(1393.32002) +RMFO3(110.57002) +RMNC1(475.32002) +RMTC1(1179.32002) +RNDC1(1477.07002) +RNDN2(1723.32002) +RNFO3(1485.82002) +RNM(475.32002) +RNO(1777.32002) +RNT(54.82002) +ROCI1(1315.82002) +ROLC1(712.07002) +RONM8(1080.32002) +RORO3(1281.07002) +ROSQ1(762.57002) +ROVC1(1031.82002) +RPSA3(171.32002) +RRAC1(155.82002) +RRFI1(1704.57002) +RRKN2(1305.07002) +RRMC1(1592.32002) +RROO3(1333.82002) +RRRC1(520.57002) +RSBU1(1657.32002) +RSCN2(1826.57002) +RSFW1(159.82002) +RSHC1(1497.07002) +RSPC1(508.07002) +RTFO3(1374.57002) +RTHN2(2138.57002) +RTLC1(1440.07002) +RUBC1(2136.07002) +RUSC1(1113.32002) +RVDC1(1716.82002) +RVYC1(324.32002) +RWCC1(111.32002) +RWDN2(575.82002) +RXFO3(1092.07002) +RYNC1(549.07002) +RZVW1(562.82002) +SABC1(2896.07002) +SAC(-4.42998) +SAFO3(1148.32002) +SAHN2(575.82002) +SAN(56.82002) +SAPC1(-5.92998) +SARC1(75.07002) +SAUC1(558.32002) +SAYC1(410.07002) +SBA(142.57002) +SBFO3(880.32002) +SBIC1(0.070023) +SBKW1(76.82002) +SBMW1(677.57002) +SBP(318.82002) +SBPC1(318.82002) +SBTC1(1166.82002) +SBVC1(244.07002) +SBYC1(745.82002) +SCAQ1(2022.82002) +SCCN2(575.82002) +SCCQ1(2190.07002) +SCDO3(190.82002) +SCFI1(1328.57002) +SCFO3(1481.32002) +SCHC1(313.57002) +SCHI1(2118.82002) +SCHO3(1417.32002) +SCK(-4.17998) +SCKC1(0.32002) +SCOO3(190.82002) +SCRN2(1851.57002) +SCSC1(508.32002) +SCTI1(1774.82002) +SCWW1(278.07002) +SDB(1131.07002) +SDDC1(363.82002) +SDFO3(1570.82002) +SDLC1(796.82002) +SDM(179.82002) +SDMM8(1981.57002) +SDMO3(393.07002) +SDMW1(315.07002) +SDOC1(416.07002) +SDRC1(1128.82002) +SEA(76.82002) +SENW1(1094.82002) +SERC1(1940.57002) +SETC1(973.07002) +SEW(37.82002) +SEXC1(208.57002) +SEYC1(1762.32002) +SFBC1(1748.32002) +SFBO3(495.57002) +SFF(705.32002) +SFKC1(532.57002) +SFKO3(477.32002) +SFNW1(205.82002) +SFO(24.07002) +SFOC1(2.82002) +SFXC1(64.82002) +SGEC1(438.07002) +SGFO3(879.57002) +SGGU1(1359.32002) +SGHQ1(1781.82002) +SGNW1(1145.07002) +SGPC1(1180.82002) +SGQC1(396.07002) +SGRU1(1101.82002) +SGUU1(1050.07002) +SGX(258.32002) +SGYC1(962.32002) +SHDC1(364.82002) +SHFO3(1392.82002) +SHHC1(653.57002) +SHIC1(801.57002) +SHLQ2(1300.57002) +SHMC1(1483.32002) +SHN(70.57002) +SHNC1(669.82002) +SHPW1(817.57002) +SHQC1(746.82002) +SHRO3(1182.82002) +SHRQ1(1725.82002) +SHVC1(1642.82002) +SHWI1(1061.57002) +SIAN2(1673.32002) +SIDW1(638.57002) +SIGU1(2386.57002) +SIY(970.32002) +SJBC1(207.07002) +SJC(198.57002) +SKAM8(1843.07002) +SKFI1(1924.82002) +SKKW1(1143.82002) +SKLA3(1611.07002) +SKMW1(200.07002) +SKNC1(551.82002) +SKOQ1(2292.82002) +SKOW1(663.82002) +SKYW1(982.82002) +SLAC1(739.32002) +SLE(66.57002) +SLFC1(735.07002) +SLFO3(1415.07002) +SLKO3(1701.57002) +SLMC1(2231.32002) +SLON2(704.82002) +SLPC1(1020.82002) +SLRC1(175.82002) +SLTC1(1247.07002) +SLTO3(1370.32002) +SLVO3(1715.32002) +SLWC1(23.07002) +SMBA3(691.32002) +SMBC1(1007.32002) +SMDC1(1949.07002) +SMF(-5.92998) +SMFO3(1762.07002) +SMGC1(318.82002) +SMIO3(263.57002) +SMLO3(1565.07002) +SMN(1853.32002) +SMNN2(1422.07002) +SMNQ2(540.82002) +SMO(47.07002) +SMOC1(23.07002) +SMPC1(307.32002) +SMPN2(926.07002) +SMPW1(1063.82002) +SMRC1(364.82002) +SMRO3(1701.57002) +SMRQ1(1080.32002) +SMSC1(1148.32002) +SMTC1(10.57002) +SMTI1(1695.07002) +SMTM8(1580.82002) +SMVC1(354.32002) +SMWN2(1422.07002) +SMX(103.57002) +SMYI1(1853.32002) +SNA(100.82002) +SNFW1(516.07002) +SNS(168.82002) +SNSI1(1309.82002) +SNT(2352.07002) +SNWC1(1140.32002) +SOAC1(904.07002) +SOAO3(898.32002) +SOBO3(898.32002) +SOCO3(898.32002) +SODO3(898.32002) +SOEO3(898.32002) +SOFO3(898.32002) +SOGO3(898.32002) +SOUI1(1054.57002) +SOX(306.57002) +SPAI1(1559.57002) +SPB(127.57002) +SPCC1(2179.57002) +SPCW1(668.57002) +SPEW1(246.57002) +SPGC1(1728.32002) +SPGN2(1616.07002) +SPGW1(1299.57002) +SPLW1(1121.32002) +SPMN2(1956.82002) +SPMW1(1071.57002) +SPNQ1(1798.82002) +SPSO3(1200.57002) +SPWC1(1020.32002) +SPXC1(142.57002) +SQFO3(1127.32002) +SQLW1(473.07002) +SQPM8(1356.57002) +SQPW1(1036.32002) +SQSC1(932.32002) +SRAC1(2722.57002) +SRBN2(1001.82002) +SRBW1(476.07002) +SRCQ1(1787.32002) +SRFI1(1497.57002) +SRGM8(1348.07002) +SRIC1(24.32002) +SRMO3(631.07002) +SRTC1(712.32002) +SRUC1(398.32002) +SRXC1(607.07002) +SRYM8(1764.57002) +SSCN2(2178.57002) +SSPW1(927.07002) +STAC1(100.82002) +STAM8(1480.57002) +STAN2(2028.32002) +STCQ1(1379.32002) +STDQ1(882.82002) +STEC1(176.82002) +STFC1(624.07002) +STFO3(1623.82002) +STGM8(1348.07002) +STHC1(275.32002) +STKM8(1499.57002) +STMN2(1994.07002) +STMQR(1764.57002) +STNI1(2352.07002) +STPC1(1949.07002) +STQC1(1651.57002) +STRO3(1525.07002) +STRQ1(932.32002) +STRW1(1555.32002) +STS(206.57002) +STSM8(1263.07002) +STTM8(1454.07002) +STUC1(1748.32002) +STVM8(1521.32002) +STWO3(1598.57002) +STYC1(1105.32002) +SUAM8(1931.32002) +SUMM8(1771.07002) +SUNN2(1812.57002) +SUNQ1(2034.07002) +SVCO3(1629.57002) +SVFI1(1654.07002) +SVFO3(584.32002) +SVMO3(1556.57002) +SVNW1(1236.32002) +SVPI1(1787.57002) +SVRQ2(1122.82002) +SWAC1(697.82002) +SWBC1(1342.82002) +SWCW1(920.32002) +SWDC1(11.32002) +SWIC1(161.32002) +SWLC1(118.07002) +SWNN2(653.57002) +SWPI1(2391.82002) +SXT(599.07002) +SYDC1(354.32002) +SYNO3(229.32002) +SYSC1(999.82002) +SZKQ2(947.32002) +TABC1(351.57002) +TACA3(131.32002) +TACN2(1975.57002) +TANC1(841.32002) +TAPC1(1359.82002) +TAYI1(2006.32002) +TBRC1(1455.07002) +TBSU1(2418.32002) +TCAC1(944.32002) +TCFI1(1440.07002) +TCFO3(583.57002) +TCFW1(1023.07002) +TCKC1(628.32002) +TCLC1(671.82002) +TCM(36.07002) +TCMO3(1430.82002) +TCNC1(442.57002) +TCRA3(1343.57002) +TEKC1(924.82002) +TEKW1(834.07002) +TENQR(1728.82002) +TEPM8(2006.82002) +TERC1(261.07002) +TEXN2(1613.07002) +TFRU1(1778.07002) +TGCC1(2091.82002) +TGFI1(1741.57002) +THAM8(1298.57002) +THBW1(1494.32002) +THDC1(267.32002) +THFI1(2051.07002) +THLN2(1777.32002) +THMI1(1956.57002) +THRQ1(875.07002) +TIGC1(973.32002) +TIJC1(37.82002) +TILO3(711.32002) +TILQ1(2241.57002) +TILW1(473.07002) +TIW(28.82002) +TIXC1(38.32002) +TLHC1(903.32002) +TLMO3(300.07002) +TLRW1(297.82002) +TLYO3(1027.82002) +TMCM8(1866.07002) +TMFO3(1600.57002) +TMKO3(300.07002) +TMNC1(1306.57002) +TMRO3(1355.07002) +TNRC1(203.82002) +TOFO3(1349.82002) +TOHW1(1222.57002) +TOPI1(1758.57002) +TORC1(295.82002) +TPEO3(1482.07002) +TPFW1(973.07002) +TPGC1(311.07002) +TPH(1745.07002) +TPHC1(1306.57002) +TQIN2(2066.82002) +TRCM8(1184.82002) +TRFO3(513.57002) +TRFW1(1121.32002) +TRGW1(1060.82002) +TRHC1(944.32002) +TRII1(1680.07002) +TRM(238.32002) +TRMC1(590.07002) +TRMI1(1784.82002) +TRNW1(720.82002) +TROM8(1218.07002) +TRON2(926.32002) +TRTC1(2086.07002) +TRUC1(2108.32002) +TRVQ1(919.07002) +TSCC1(502.32002) +TSDC1(1357.82002) +TSHC1(1238.32002) +TSOW1(1088.07002) +TSP(1359.82002) +TTD(138.82002) +TTRC1(338.57002) +TUFO3(1224.32002) +TUSN2(1975.57002) +TVL(2128.57002) +TVWU1(1660.32002) +TWBI1(1064.82002) +TWCC1(1359.82002) +TWDC1(402.07002) +TWDN2(855.07002) +TWF(1307.57002) +TWLM8(1864.57002) +TWMC1(485.57002) +TWRW1(720.82002) +TYBO3(1545.07002) +TYEC1(940.57002) +TYLO3(1457.82002) +U24(1439.82002) +UAO(55.07002) +UCCC1(1048.57002) +UCLC1(167.32002) +UCRC1(363.32002) +UDWC1(930.32002) +UFDN2(926.32002) +UHLC1(1564.32002) +UIL(79.82002) +UKIO3(1290.57002) +ULVN2(1044.32002) +UMCQ2(1488.57002) +UMNC1(312.82002) +UMTO3(175.07002) +UNYO3(1447.82002) +UPSO3(780.82002) +UPWW1(1060.82002) +USEA3(906.57002) +VABC1(1653.57002) +VAMA3(609.07002) +VAQC1(231.57002) +VBPC1(1949.07002) +VCB(67.82002) +VCFO3(283.57002) +VDBC1(131.07002) +VDBN2(755.82002) +VDCA3(1423.32002) +VDPA3(1438.57002) +VENO3(373.57002) +VENU1(1796.57002) +VGAC1(2548.07002) +VGRC1(1054.07002) +VGT(755.82002) +VICC1(463.82002) +VICQ1(1745.82002) +VIOC1(1624.57002) +VIS(61.07002) +VKOC1(2950.57002) +VLCC1(563.32002) +VLKC1(588.07002) +VLYC1(1235.57002) +VNCU1(1903.32002) +VNNI1(2462.82002) +VNOC1(240.57002) +VNY(312.82002) +VOFN2(597.82002) +VSTC1(167.07002) +VTUC1(208.57002) +VUO(87.57002) +VVDN2(575.82002) +WAGI1(1912.32002) +WAHI1(850.57002) +WALC1(2288.07002) +WARO3(1291.32002) +WASC1(82.57002) +WATC1(1306.57002) +WATQ1(1796.07002) +WBA(1973.82002) +WBRI1(1641.57002) +WCGU1(1657.07002) +WCLN2(1851.57002) +WCWO3(898.32002) +WDEC1(311.07002) +WEAC1(975.07002) +WEDC1(96.07002) +WEEC1(1230.32002) +WEFI1(1396.07002) +WEHC1(561.32002) +WEIN2(718.07002) +WESC1(304.82002) +WFHC1(1379.82002) +WFSW1(162.32002) +WGRM8(1333.82002) +WGVN2(1532.82002) +WGWC1(1031.82002) +WHDI1(1700.82002) +WHHM8(1656.57002) +WHLA3(2070.82002) +WHSW1(872.57002) +WHTW1(1465.07002) +WIKA3(983.57002) +WIMQ1(946.07002) +WIWO3(1423.07002) +WJF(753.32002) +WKFO3(320.57002) +WKPA3(735.07002) +WLBC1(1010.07002) +WLCI1(2005.57002) +WLDN2(896.82002) +WLFQ2(990.32002) +WLKC1(-0.67998) +WLLM8(1381.32002) +WLLO3(959.57002) +WLMO3(741.07002) +WLYC1(442.57002) +WMC(1532.82002) +WMFO3(1044.32002) +WMSC1(856.82002) +WNDN2(831.07002) +WODI1(1614.07002) +WODM8(1915.07002) +WPKO3(770.32002) +WPOC1(344.57002) +WPRW1(680.82002) +WRIC1(1347.82002) +WRKC1(1359.82002) +WRMM8(2064.07002) +WRNQ1(936.32002) +WRPM8(1427.57002) +WRRC1(320.07002) +WRRU1(1359.32002) +WRSC1(450.82002) +WRSM8(2222.07002) +WRTN2(994.57002) +WSBO3(539.57002) +WSDC1(377.07002) +WSFM8(1925.32002) +WSFO3(1102.57002) +WSHC1(2118.57002) +WSJN2(926.32002) +WSPC1(512.57002) +WSRO3(737.57002) +WSTQ1(1803.32002) +WTFO3(1462.57002) +WTHC1(145.82002) +WTPC1(898.82002) +WTRC1(124.82002) +WTSO3(300.07002) +WUPA3(983.57002) +WVAA3(1488.82002) +WVI(149.32002) +WVTC1(2063.57002) +WWAC1(1016.07002) +WWDC1(1636.07002) +WWNC1(1729.32002) +WWRC1(1995.07002) +WYDW1(389.07002) +WYTC1(733.32002) +XXXC1(2379.07002) +YALW1(434.07002) +YBCA3(1672.57002) +YBGA3(1672.57002) +YBLC1(216.07002) +YCGN2(1345.57002) +YCPA3(1379.07002) +YCPC1(1335.32002) +YCVA3(1535.07002) +YCWA3(1659.07002) +YEFO3(695.32002) +YFCA3(1672.57002) +YFFI1(2410.82002) +YKA(844.07002) +YKAM8(1409.57002) +YKM(409.82002) +YLCA3(1659.07002) +YLPO3(1514.57002) +YMNA3(1403.57002) +YNFO3(273.32002) +YOBC1(1198.07002) +YPWA3(1651.32002) +YRKC1(404.07002) +YRV(1352.82002) +YSAC1(999.82002) +YSMA3(1672.57002) +YSUA3(1897.32002) +YTBA3(1672.57002) +YTPA3(1672.57002) +YUCA3(879.57002) +YUGA3(1672.57002) +YVR(1.82002) +YVVC1(1453.82002) +YWAC1(1729.32002) +YWPA3(1640.82002) +YWSA3(1672.57002) +YXC(1142.07002) +YXX(60.07002) +YYC(1065.07002) +YYF(1119.82002) +YYVC1(2450.32002) +ZBHA3(806.07002) +ZENC1(753.82002) +ZFWA3(744.82002) +ZIOU1(1600.57002) +ZONM8(1151.82002) diff --git a/internal/test_unit/config/SID_CONUS_ADPUPA_ELEV.txt b/internal/test_unit/config/SID_CONUS_ADPUPA_ELEV.txt new file mode 100644 index 0000000000..42eb4fd1fb --- /dev/null +++ b/internal/test_unit/config/SID_CONUS_ADPUPA_ELEV.txt @@ -0,0 +1,98 @@ +SID_CONUS_ADPUPA_ELEV +72206(4.07002) +72520(316.07002) +72597(531.82002) +72518(137.82002) +71600(0.070023) +71722(214.57002) +72764(541.57002) +71836(14.82002) +71908(729.57002) +71867(261.32002) +71913(0.070023) +71945(374.82002) +72250(4.82002) +72208(6.07002) +72632(307.07002) +74001(204.32002) +72403(115.82002) +72572(1486.57002) +72662(1025.82002) +72712(182.82002) +71845(355.57002) +76644(8.82002) +76595(2.32002) +72201(0.070023) +76225(1572.07002) +72230(169.57002) +72388(926.32002) +72318(640.32002) +72440(374.32002) +72528(201.82002) +72645(222.57002) +72776(1057.82002) +71934(220.07002) +72393(57.32002) +72305(2.82002) +72493(131.32002) +72456(300.32002) +72476(1638.57002) +72426(308.57002) +72501(17.57002) +72649(277.57002) +72786(670.57002) +72261(324.32002) +72364(1244.82002) +72340(103.57002) +72317(251.07002) +72451(770.32002) +74002(12.32002) +72562(887.82002) +72681(970.57002) +72694(66.57002) +72634(400.57002) +76743(12.82002) +72558(363.07002) +72797(79.82002) +71203(868.57002) +70398(22.57002) +78073(0.070023) +72210(3.82002) +72251(12.57002) +72240(2.07002) +72265(855.82002) +72327(169.82002) +72768(688.07002) +74455(210.82002) +71603(11.57002) +72659(395.82002) +71811(3.07002) +71816(74.82002) +76458(12.82002) +72202(1.57002) +72274(883.32002) +72235(103.07002) +78016(0.070023) +72402(3.32002) +71815(38.57002) +72747(346.82002) +71119(718.57002) +78526(42.07002) +72248(60.82002) +72215(263.32002) +72357(359.82002) +74560(189.07002) +74494(1.82002) +74389(77.32002) +71906(62.82002) +ASDE04(0.070023) +76394(433.07002) +72233(7.07002) +72214(25.82002) +72249(190.57002) +72293(76.82002) +74004(136.07002) +72363(1078.82002) +71109(97.82002) +71823(334.57002) +71907(5.32002) diff --git a/internal/test_unit/config/ref_config/GridStatConfig_03h b/internal/test_unit/config/ref_config/GridStatConfig_03h index 0a3daba7a1..278acf3be0 100644 --- a/internal/test_unit/config/ref_config/GridStatConfig_03h +++ b/internal/test_unit/config/ref_config/GridStatConfig_03h @@ -198,8 +198,9 @@ nc_pairs_flag = FALSE; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${MODEL}_F${FCST_TIME}_03h"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${MODEL}_F${FCST_TIME}_03h"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/GridStatConfig_24h b/internal/test_unit/config/ref_config/GridStatConfig_24h index 8804e2d708..2d0c263303 100644 --- a/internal/test_unit/config/ref_config/GridStatConfig_24h +++ b/internal/test_unit/config/ref_config/GridStatConfig_24h @@ -198,8 +198,9 @@ nc_pairs_flag = FALSE; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "${MODEL}_F${FCST_TIME}_24h"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "${MODEL}_F${FCST_TIME}_24h"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA b/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA index 226be944df..2d98af4d87 100644 --- a/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA +++ b/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA @@ -182,8 +182,11 @@ output_flag = { duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${MODEL}_F${FCST_TIME}_ADPUPA"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${MODEL}_F${FCST_TIME}_ADPUPA"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF b/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF index 9667c95b10..3f8a2a6367 100644 --- a/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF +++ b/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF @@ -192,8 +192,11 @@ output_flag = { duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${MODEL}_F${FCST_TIME}_ONLYSF"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${MODEL}_F${FCST_TIME}_ONLYSF"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/PointStatConfig_WINDS b/internal/test_unit/config/ref_config/PointStatConfig_WINDS index 87fe9c01bd..ffb0a2f06f 100644 --- a/internal/test_unit/config/ref_config/PointStatConfig_WINDS +++ b/internal/test_unit/config/ref_config/PointStatConfig_WINDS @@ -175,8 +175,11 @@ output_flag = { duplicate_flag = NONE; rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${MODEL}_F${FCST_TIME}_WINDS"; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = "${MODEL}_F${FCST_TIME}_WINDS"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/t b/internal/test_unit/t deleted file mode 100755 index 8df021c329..0000000000 --- a/internal/test_unit/t +++ /dev/null @@ -1,114 +0,0 @@ -export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410' -export 'DESC=NO_WEIGHT' -export 'GRID_WEIGHT=NONE' -export 'OUTPUT_PREFIX=NO_WEIGHT' -/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/grid_stat \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfs/gfs_2012040900_F024.grib2 \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfsanl/gfsanl_4_20120410_0000_000.grb2 \ - /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/GridStatConfig_grid_weight \ - -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1 -unset CLIMO_MEAN_FILE -unset DESC -unset GRID_WEIGHT -unset OUTPUT_PREFIX - - -export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410' -export 'DESC=COS_LAT_WEIGHT' -export 'GRID_WEIGHT=COS_LAT' -export 'OUTPUT_PREFIX=COS_LAT_WEIGHT' -/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/grid_stat \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfs/gfs_2012040900_F024.grib2 \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfsanl/gfsanl_4_20120410_0000_000.grb2 \ - /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/GridStatConfig_grid_weight \ - -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1 -unset CLIMO_MEAN_FILE -unset DESC -unset GRID_WEIGHT -unset OUTPUT_PREFIX - - -export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410' -export 'DESC=AREA_WEIGHT' -export 'GRID_WEIGHT=AREA' -export 'OUTPUT_PREFIX=AREA_WEIGHT' -/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/grid_stat \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfs/gfs_2012040900_F024.grib2 \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfsanl/gfsanl_4_20120410_0000_000.grb2 \ - /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/GridStatConfig_grid_weight \ - -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1 -unset CLIMO_MEAN_FILE -unset DESC -unset GRID_WEIGHT -unset OUTPUT_PREFIX - - -export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410' -export 'CLIMO_STDEV_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cstdv_1d.19790410' -export 'DESC=NO_WEIGHT' -export 'GRID_WEIGHT=NONE' -export 'OUTPUT_PREFIX=NO_WEIGHT' -/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/ensemble_stat \ - 6 \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \ - /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/EnsembleStatConfig_grid_weight \ - -grid_obs /d1/projects/MET/MET_test_data/unit_test/obs_data/laps/laps_2012041012_F000.grib \ - -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1 -unset CLIMO_MEAN_FILE -unset CLIMO_STDEV_FILE -unset DESC -unset GRID_WEIGHT -unset OUTPUT_PREFIX - - -export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410' -export 'CLIMO_STDEV_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cstdv_1d.19790410' -export 'DESC=COS_LAT_WEIGHT' -export 'GRID_WEIGHT=COS_LAT' -export 'OUTPUT_PREFIX=COS_LAT_WEIGHT' -/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/ensemble_stat \ - 6 \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \ - /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/EnsembleStatConfig_grid_weight \ - -grid_obs /d1/projects/MET/MET_test_data/unit_test/obs_data/laps/laps_2012041012_F000.grib \ - -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1 -unset CLIMO_MEAN_FILE -unset CLIMO_STDEV_FILE -unset DESC -unset GRID_WEIGHT -unset OUTPUT_PREFIX - - -export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410' -export 'CLIMO_STDEV_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cstdv_1d.19790410' -export 'DESC=AREA_WEIGHT' -export 'GRID_WEIGHT=AREA' -export 'OUTPUT_PREFIX=AREA_WEIGHT' -/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/ensemble_stat \ - 6 \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \ - /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \ - /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/EnsembleStatConfig_grid_weight \ - -grid_obs /d1/projects/MET/MET_test_data/unit_test/obs_data/laps/laps_2012041012_F000.grib \ - -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1 -unset CLIMO_MEAN_FILE -unset CLIMO_STDEV_FILE -unset DESC -unset GRID_WEIGHT -unset OUTPUT_PREFIX - - diff --git a/internal/test_unit/xml/unit_point_weight.xml b/internal/test_unit/xml/unit_point_weight.xml new file mode 100644 index 0000000000..b034b54a3a --- /dev/null +++ b/internal/test_unit/xml/unit_point_weight.xml @@ -0,0 +1,148 @@ + + + + + + + + + + +]> + + + + + + &TEST_DIR; + true + + + &MET_BIN;/point_stat + + OUTPUT_PREFIX NO_WEIGHT + DESC NO_WEIGHT + POINT_WEIGHT NONE + CONFIG_DIR &CONFIG_DIR; + + \ + &DATA_DIR_MODEL;/grib2/sref_mn/sref_mean_2012040821_F015.grib2 \ + &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ + &CONFIG_DIR;/PointStatConfig_point_weight \ + -outdir &OUTPUT_DIR;/point_weight -v 1 + + + &OUTPUT_DIR;/point_weight/point_stat_NO_WEIGHT_150000L_20120409_120000V.stat + + + + + &MET_BIN;/point_stat + + OUTPUT_PREFIX SID_WEIGHT + DESC SID_WEIGHT + POINT_WEIGHT SID + CONFIG_DIR &CONFIG_DIR; + + \ + &DATA_DIR_MODEL;/grib2/sref_mn/sref_mean_2012040821_F015.grib2 \ + &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ + &CONFIG_DIR;/PointStatConfig_point_weight \ + -outdir &OUTPUT_DIR;/point_weight -v 1 + + + &OUTPUT_DIR;/point_weight/point_stat_SID_WEIGHT_150000L_20120409_120000V.stat + + + + + &MET_BIN;/point_stat + + OUTPUT_PREFIX PROB_NO_WEIGHT + DESC NO_WEIGHT + POINT_WEIGHT NONE + CONFIG_DIR &CONFIG_DIR; + + \ + &DATA_DIR_MODEL;/grib2/sref_pr/sref_prob_2012040821_F015.grib2 \ + &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ + &CONFIG_DIR;/PointStatConfig_prob_point_weight \ + -outdir &OUTPUT_DIR;/point_weight -v 1 + + + &OUTPUT_DIR;/point_weight/point_stat_PROB_NO_WEIGHT_150000L_20120409_120000V.stat + + + + + &MET_BIN;/point_stat + + OUTPUT_PREFIX PROB_SID_WEIGHT + DESC SID_WEIGHT + POINT_WEIGHT SID + CONFIG_DIR &CONFIG_DIR; + + \ + &DATA_DIR_MODEL;/grib2/sref_pr/sref_prob_2012040821_F015.grib2 \ + &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ + &CONFIG_DIR;/PointStatConfig_prob_point_weight \ + -outdir &OUTPUT_DIR;/point_weight -v 1 + + + &OUTPUT_DIR;/point_weight/point_stat_PROB_SID_WEIGHT_150000L_20120409_120000V.stat + + + + + &MET_BIN;/ensemble_stat + + OUTPUT_PREFIX NO_WEIGHT + DESC NO_WEIGHT + POINT_WEIGHT NONE + CONFIG_DIR &CONFIG_DIR; + + \ + 6 \ + &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \ + &CONFIG_DIR;/EnsembleStatConfig_point_weight \ + -point_obs &OUTPUT_DIR;/ascii2nc/gauge_2012041012_24hr.nc \ + -outdir &OUTPUT_DIR;/point_weight -v 1 + + + &OUTPUT_DIR;/point_weight/ensemble_stat_NO_WEIGHT_20120410_120000V.stat + + + + + &MET_BIN;/ensemble_stat + + OUTPUT_PREFIX SID_WEIGHT + DESC SID_WEIGHT + POINT_WEIGHT SID + CONFIG_DIR &CONFIG_DIR; + + \ + 6 \ + &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \ + &DATA_DIR_MODEL;/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \ + &CONFIG_DIR;/EnsembleStatConfig_point_weight \ + -point_obs &OUTPUT_DIR;/ascii2nc/gauge_2012041012_24hr.nc \ + -outdir &OUTPUT_DIR;/point_weight -v 1 + + + &OUTPUT_DIR;/point_weight/ensemble_stat_SID_WEIGHT_20120410_120000V.stat + + + + + diff --git a/scripts/config/EnsembleStatConfig b/scripts/config/EnsembleStatConfig index bc84b81d8e..9071cf77e4 100644 --- a/scripts/config/EnsembleStatConfig +++ b/scripts/config/EnsembleStatConfig @@ -272,8 +272,10 @@ rng = { //////////////////////////////////////////////////////////////////////////////// -grid_weight_flag = NONE; -output_prefix = ""; -version = "V12.0.0"; +grid_weight_flag = NONE; +point_weight_flag = NONE; + +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/config/GridStatConfig_APCP_12 b/scripts/config/GridStatConfig_APCP_12 index 2358000a81..3cbc179064 100644 --- a/scripts/config/GridStatConfig_APCP_12 +++ b/scripts/config/GridStatConfig_APCP_12 @@ -217,8 +217,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "APCP_12"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "APCP_12"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/config/GridStatConfig_APCP_24 b/scripts/config/GridStatConfig_APCP_24 index 39eaa7d220..383efc78c5 100644 --- a/scripts/config/GridStatConfig_APCP_24 +++ b/scripts/config/GridStatConfig_APCP_24 @@ -227,8 +227,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "APCP_24"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "APCP_24"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/config/GridStatConfig_POP_12 b/scripts/config/GridStatConfig_POP_12 index 6fb4775939..974a3a79b7 100644 --- a/scripts/config/GridStatConfig_POP_12 +++ b/scripts/config/GridStatConfig_POP_12 @@ -226,8 +226,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = "POP_12"; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = "POP_12"; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/config/GridStatConfig_all b/scripts/config/GridStatConfig_all index a165ef836d..f39e7e90cf 100644 --- a/scripts/config/GridStatConfig_all +++ b/scripts/config/GridStatConfig_all @@ -257,8 +257,9 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// grid_weight_flag = NONE; -tmp_dir = "/tmp"; -output_prefix = ""; -version = "V12.0.0"; + +tmp_dir = "/tmp"; +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/config/PointStatConfig b/scripts/config/PointStatConfig index 3c79f15262..1f4140de1e 100644 --- a/scripts/config/PointStatConfig +++ b/scripts/config/PointStatConfig @@ -216,8 +216,11 @@ seeps_p1_thresh = NA; //////////////////////////////////////////////////////////////////////////////// rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = ""; -version = "V12.0.0"; + +point_weight_flag = NONE; + +tmp_dir = "/tmp"; +output_prefix = ""; +version = "V12.0.0"; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/basic/vx_config/config_constants.h b/src/basic/vx_config/config_constants.h index 7bba9e759e..12f4b2025b 100644 --- a/src/basic/vx_config/config_constants.h +++ b/src/basic/vx_config/config_constants.h @@ -462,6 +462,17 @@ enum class GridWeightType { //////////////////////////////////////////////////////////////////////// +// +// Enumeration for point_weight_flag configuration parameter +// + +enum class PointWeightType { + None, // Apply no point weighting + SID // Apply station ID weighting +}; + +//////////////////////////////////////////////////////////////////////// + // // Enumeration for grid_decomp_flag configuration parameter // @@ -753,6 +764,7 @@ static const char conf_key_topo_mask[] = "topo_mask"; static const char conf_key_topo_mask_flag[] = "topo_mask.flag"; static const char conf_key_use_obs_thresh[] = "use_obs_thresh"; static const char conf_key_interp_fcst_thresh[] = "interp_fcst_thresh"; +static const char conf_key_point_weight_flag[] = "point_weight_flag"; // // Grid-Stat specific parameter key names @@ -1300,6 +1312,9 @@ static const char conf_val_bca[] = "BCA"; static const char conf_val_cos_lat[] = "COS_LAT"; static const char conf_val_area[] = "AREA"; +// Point weight flag values +static const char conf_val_sid[] = "SID"; + // Duplicate flag values static const char conf_val_unique[] = "UNIQUE"; diff --git a/src/basic/vx_config/config_util.cc b/src/basic/vx_config/config_util.cc index 5cce67dfcb..a4323a23b1 100644 --- a/src/basic/vx_config/config_util.cc +++ b/src/basic/vx_config/config_util.cc @@ -600,16 +600,14 @@ StringArray parse_conf_message_type(Dictionary *dict, bool error_out) { /////////////////////////////////////////////////////////////////////////////// StringArray parse_conf_sid_list(Dictionary *dict, const char *conf_key) { - StringArray sa, cur, sid_sa; - ConcatString mask_name; + StringArray sid_sa; const char *method_name = "parse_conf_sid_list() -> "; - sa = parse_conf_string_array(dict, conf_key, method_name); + StringArray sa(parse_conf_string_array(dict, conf_key, method_name)); - // Parse station ID's to exclude from each entry + // Append to the list of station ID's for(int i=0; i " + mlog << Debug(4) << method_name << "parsing station ID masking file \"" << tmp_file << "\"\n"; // Open the mask station id file specified + ifstream in; in.open(tmp_file.c_str()); if(!in) { - mlog << Error << "\nparse_sid_mask() -> " + mlog << Error << "\n" << method_name << "Can't open the station ID masking file \"" << tmp_file << "\".\n\n"; exit(1); @@ -665,7 +659,7 @@ void parse_sid_mask(const ConcatString &mask_sid_str, // Store the first entry as the name of the mask in >> sid_str; - mask_name = sid_str; + mask_sid.set_name(sid_str); // Store the rest of the entries as masking station ID's while(in >> sid_str) mask_sid.add(sid_str.c_str()); @@ -673,9 +667,9 @@ void parse_sid_mask(const ConcatString &mask_sid_str, // Close the input file in.close(); - mlog << Debug(4) << "parse_sid_mask() -> " + mlog << Debug(4) << method_name << "parsed " << mask_sid.n() << " station ID's for the \"" - << mask_name << "\" mask from file \"" << tmp_file << "\"\n"; + << mask_sid.name() << "\" mask from file \"" << tmp_file << "\"\n"; } // Process list of strings else { @@ -683,19 +677,19 @@ void parse_sid_mask(const ConcatString &mask_sid_str, // Print a warning if the string contains a dot which suggests // the user was trying to specify a file name. if(check_reg_exp("[.]", mask_sid_str.c_str())) { - mlog << Warning << "\nparse_sid_mask() -> " + mlog << Warning << "\n" << method_name << "unable to process \"" << mask_sid_str << "\" as a file name and processing it as a single " << "station ID mask instead.\n\n"; } - mlog << Debug(4) << "parse_sid_mask() -> " + mlog << Debug(4) << method_name << "storing single station ID mask \"" << mask_sid_str << "\"\n"; // Check for embedded whitespace or slashes if(check_reg_exp(ws_reg_exp, mask_sid_str.c_str()) || check_reg_exp("[/]", mask_sid_str.c_str())) { - mlog << Error << "\nparse_sid_mask() -> " + mlog << Error << "\n" << method_name << "masking station ID string can't contain whitespace or " << "slashes \"" << mask_sid_str << "\".\n\n"; exit(1); @@ -708,15 +702,16 @@ void parse_sid_mask(const ConcatString &mask_sid_str, // One elements means no colon was specified if(sa.n() == 1) { mask_sid.add_css(sa[0]); - mask_name = ( mask_sid.n() == 1 ? mask_sid[0] : "MASK_SID" ); + mask_sid.set_name((mask_sid.n() == 1 ? + mask_sid.sid_map().begin()->first : "MASK_SID")); } // Two elements means one colon was specified else if(sa.n() == 2) { - mask_name = sa[0]; mask_sid.add_css(sa[1]); + mask_sid.set_name(sa[0]); } else { - mlog << Error << "\nparse_sid_mask() -> " + mlog << Error << "\n" << method_name << "masking station ID string may contain at most one colon to " << "specify the mask name \"" << mask_sid_str << "\".\n\n"; exit(1); @@ -724,14 +719,26 @@ void parse_sid_mask(const ConcatString &mask_sid_str, } - // Sort the mask_sid's - mask_sid.sort(); - - return; + return mask_sid; } /////////////////////////////////////////////////////////////////////////////// +StringArray parse_sid_mask_as_list(const ConcatString &mask_sid_str) { + + MaskSID ms = parse_sid_mask(mask_sid_str); + + StringArray sa; + for(const auto &pair : ms.sid_map()) sa.add(pair.first); + + return sa; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Code for MaskLatLon struct +// +/////////////////////////////////////////////////////////////////////////////// void MaskLatLon::clear() { name.clear(); @@ -764,7 +771,6 @@ MaskLatLon &MaskLatLon::operator=(const MaskLatLon &a) noexcept { return *this; } - /////////////////////////////////////////////////////////////////////////////// vector parse_conf_llpnt_mask(Dictionary *dict) { @@ -2189,9 +2195,10 @@ HiRAInfo parse_conf_hira(Dictionary *dict) { GridWeightType parse_conf_grid_weight_flag(Dictionary *dict) { GridWeightType t = GridWeightType::None; int v; + const char *method_name = "parse_conf_grid_weight_flag() -> "; if(!dict) { - mlog << Error << "\nparse_conf_grid_weight_flag() -> " + mlog << Error << "\n" << method_name << "empty dictionary!\n\n"; exit(1); } @@ -2204,7 +2211,7 @@ GridWeightType parse_conf_grid_weight_flag(Dictionary *dict) { else if(v == conf_const.lookup_int(conf_val_cos_lat)) t = GridWeightType::Cos_Lat; else if(v == conf_const.lookup_int(conf_val_area)) t = GridWeightType::Area; else { - mlog << Error << "\nparse_conf_grid_weight_flag() -> " + mlog << Error << "\n" << method_name << "Unexpected config file value of " << v << " for \"" << conf_key_grid_weight_flag << "\".\n\n"; exit(1); @@ -2215,6 +2222,35 @@ GridWeightType parse_conf_grid_weight_flag(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// +PointWeightType parse_conf_point_weight_flag(Dictionary *dict) { + PointWeightType t = PointWeightType::None; + int v; + const char *method_name = "parse_conf_point_weight_flag() -> "; + + if(!dict) { + mlog << Error << "\n" << method_name + << "empty dictionary!\n\n"; + exit(1); + } + + // Get the integer flag value for the current entry + v = dict->lookup_int(conf_key_point_weight_flag); + + // Convert integer to enumerated GridWeightType + if(v == conf_const.lookup_int(conf_val_none)) t = PointWeightType::None; + else if(v == conf_const.lookup_int(conf_val_sid)) t = PointWeightType::SID; + else { + mlog << Error << "\n" << method_name + << "Unexpected config file value of " << v << " for \"" + << conf_key_point_weight_flag << "\".\n\n"; + exit(1); + } + + return t; +} + +/////////////////////////////////////////////////////////////////////////////// + DuplicateType parse_conf_duplicate_flag(Dictionary *dict) { DuplicateType t = DuplicateType::None; int v; diff --git a/src/basic/vx_config/config_util.h b/src/basic/vx_config/config_util.h index 15de1e00f0..885fa6fb2e 100644 --- a/src/basic/vx_config/config_util.h +++ b/src/basic/vx_config/config_util.h @@ -55,10 +55,8 @@ extern StringArray parse_conf_message_type( extern StringArray parse_conf_sid_list( Dictionary *dict, const char *); -extern void parse_sid_mask( - const ConcatString &, - StringArray &, - ConcatString &); +extern MaskSID parse_sid_mask(const ConcatString &); +extern StringArray parse_sid_mask_as_list(const ConcatString &); extern std::vector parse_conf_llpnt_mask(Dictionary *dict); extern StringArray parse_conf_obs_qty_inc(Dictionary *dict); @@ -105,6 +103,7 @@ extern InterpInfo parse_conf_interp(Dictionary *dict, const char *); extern NbrhdInfo parse_conf_nbrhd(Dictionary *dict, const char *); extern HiRAInfo parse_conf_hira(Dictionary *dict); extern GridWeightType parse_conf_grid_weight_flag(Dictionary *dict); +extern PointWeightType parse_conf_point_weight_flag(Dictionary *dict); extern DuplicateType parse_conf_duplicate_flag(Dictionary *dict); extern ObsSummary parse_conf_obs_summary(Dictionary *dict); extern ConcatString parse_conf_tmp_dir(Dictionary *dict); diff --git a/src/basic/vx_util/Makefile.am b/src/basic/vx_util/Makefile.am index b0daa451e9..db0896bbd6 100644 --- a/src/basic/vx_util/Makefile.am +++ b/src/basic/vx_util/Makefile.am @@ -61,6 +61,7 @@ libvx_util_a_SOURCES = ascii_table.cc ascii_table.h \ empty_string.h \ polyline.h polyline.cc \ mask_poly.h mask_poly.cc \ + mask_sid.h mask_sid.cc \ read_fortran_binary.h read_fortran_binary.cc \ met_buffer.h met_buffer.cc \ smart_buffer.h smart_buffer.cc \ diff --git a/src/basic/vx_util/Makefile.in b/src/basic/vx_util/Makefile.in index 4c05def519..2a7015be79 100644 --- a/src/basic/vx_util/Makefile.in +++ b/src/basic/vx_util/Makefile.in @@ -129,13 +129,14 @@ am__libvx_util_a_SOURCES_DIST = ascii_table.cc ascii_table.h \ interp_util.h two_to_one.cc two_to_one.h get_filenames.cc \ get_filenames.h util_constants.h bool_to_string.h \ empty_string.h polyline.h polyline.cc mask_poly.h mask_poly.cc \ - read_fortran_binary.h read_fortran_binary.cc met_buffer.h \ - met_buffer.cc smart_buffer.h smart_buffer.cc vx_util.h \ - CircularTemplate.h CircularTemplate.cc GridTemplate.h \ - GridTemplate.cc GridPoint.h GridPoint.cc GridOffset.h \ - GridOffset.cc observation.h observation.cc stat_column_defs.h \ - handle_openmp.h handle_openmp.cc RectangularTemplate.h \ - RectangularTemplate.cc python_line.h python_line.cc + mask_sid.h mask_sid.cc read_fortran_binary.h \ + read_fortran_binary.cc met_buffer.h met_buffer.cc \ + smart_buffer.h smart_buffer.cc vx_util.h CircularTemplate.h \ + CircularTemplate.cc GridTemplate.h GridTemplate.cc GridPoint.h \ + GridPoint.cc GridOffset.h GridOffset.cc observation.h \ + observation.cc stat_column_defs.h handle_openmp.h \ + handle_openmp.cc RectangularTemplate.h RectangularTemplate.cc \ + python_line.h python_line.cc @ENABLE_PYTHON_TRUE@am__objects_1 = \ @ENABLE_PYTHON_TRUE@ libvx_util_a-python_line.$(OBJEXT) am__objects_2 = $(am__objects_1) @@ -172,6 +173,7 @@ am_libvx_util_a_OBJECTS = libvx_util_a-ascii_table.$(OBJEXT) \ libvx_util_a-get_filenames.$(OBJEXT) \ libvx_util_a-polyline.$(OBJEXT) \ libvx_util_a-mask_poly.$(OBJEXT) \ + libvx_util_a-mask_sid.$(OBJEXT) \ libvx_util_a-read_fortran_binary.$(OBJEXT) \ libvx_util_a-met_buffer.$(OBJEXT) \ libvx_util_a-smart_buffer.$(OBJEXT) \ @@ -230,6 +232,7 @@ am__depfiles_remade = ./$(DEPDIR)/libvx_util_a-CircularTemplate.Po \ ./$(DEPDIR)/libvx_util_a-main.Po \ ./$(DEPDIR)/libvx_util_a-make_path.Po \ ./$(DEPDIR)/libvx_util_a-mask_poly.Po \ + ./$(DEPDIR)/libvx_util_a-mask_sid.Po \ ./$(DEPDIR)/libvx_util_a-memory.Po \ ./$(DEPDIR)/libvx_util_a-met_buffer.Po \ ./$(DEPDIR)/libvx_util_a-normalize.Po \ @@ -508,6 +511,7 @@ libvx_util_a_SOURCES = ascii_table.cc ascii_table.h \ empty_string.h \ polyline.h polyline.cc \ mask_poly.h mask_poly.cc \ + mask_sid.h mask_sid.cc \ read_fortran_binary.h read_fortran_binary.cc \ met_buffer.h met_buffer.cc \ smart_buffer.h smart_buffer.cc \ @@ -602,6 +606,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-make_path.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-mask_poly.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-mask_sid.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-memory.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-met_buffer.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-normalize.Po@am__quote@ # am--include-marker @@ -1128,6 +1133,20 @@ libvx_util_a-mask_poly.obj: mask_poly.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_util_a-mask_poly.obj `if test -f 'mask_poly.cc'; then $(CYGPATH_W) 'mask_poly.cc'; else $(CYGPATH_W) '$(srcdir)/mask_poly.cc'; fi` +libvx_util_a-mask_sid.o: mask_sid.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_util_a-mask_sid.o -MD -MP -MF $(DEPDIR)/libvx_util_a-mask_sid.Tpo -c -o libvx_util_a-mask_sid.o `test -f 'mask_sid.cc' || echo '$(srcdir)/'`mask_sid.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_util_a-mask_sid.Tpo $(DEPDIR)/libvx_util_a-mask_sid.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mask_sid.cc' object='libvx_util_a-mask_sid.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_util_a-mask_sid.o `test -f 'mask_sid.cc' || echo '$(srcdir)/'`mask_sid.cc + +libvx_util_a-mask_sid.obj: mask_sid.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_util_a-mask_sid.obj -MD -MP -MF $(DEPDIR)/libvx_util_a-mask_sid.Tpo -c -o libvx_util_a-mask_sid.obj `if test -f 'mask_sid.cc'; then $(CYGPATH_W) 'mask_sid.cc'; else $(CYGPATH_W) '$(srcdir)/mask_sid.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_util_a-mask_sid.Tpo $(DEPDIR)/libvx_util_a-mask_sid.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mask_sid.cc' object='libvx_util_a-mask_sid.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_util_a-mask_sid.obj `if test -f 'mask_sid.cc'; then $(CYGPATH_W) 'mask_sid.cc'; else $(CYGPATH_W) '$(srcdir)/mask_sid.cc'; fi` + libvx_util_a-read_fortran_binary.o: read_fortran_binary.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_util_a-read_fortran_binary.o -MD -MP -MF $(DEPDIR)/libvx_util_a-read_fortran_binary.Tpo -c -o libvx_util_a-read_fortran_binary.o `test -f 'read_fortran_binary.cc' || echo '$(srcdir)/'`read_fortran_binary.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_util_a-read_fortran_binary.Tpo $(DEPDIR)/libvx_util_a-read_fortran_binary.Po @@ -1440,6 +1459,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libvx_util_a-main.Po -rm -f ./$(DEPDIR)/libvx_util_a-make_path.Po -rm -f ./$(DEPDIR)/libvx_util_a-mask_poly.Po + -rm -f ./$(DEPDIR)/libvx_util_a-mask_sid.Po -rm -f ./$(DEPDIR)/libvx_util_a-memory.Po -rm -f ./$(DEPDIR)/libvx_util_a-met_buffer.Po -rm -f ./$(DEPDIR)/libvx_util_a-normalize.Po @@ -1531,6 +1551,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libvx_util_a-main.Po -rm -f ./$(DEPDIR)/libvx_util_a-make_path.Po -rm -f ./$(DEPDIR)/libvx_util_a-mask_poly.Po + -rm -f ./$(DEPDIR)/libvx_util_a-mask_sid.Po -rm -f ./$(DEPDIR)/libvx_util_a-memory.Po -rm -f ./$(DEPDIR)/libvx_util_a-met_buffer.Po -rm -f ./$(DEPDIR)/libvx_util_a-normalize.Po diff --git a/src/basic/vx_util/mask_sid.cc b/src/basic/vx_util/mask_sid.cc new file mode 100644 index 0000000000..7c888bfda3 --- /dev/null +++ b/src/basic/vx_util/mask_sid.cc @@ -0,0 +1,161 @@ +// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +// ** Copyright UCAR (c) 1992 - 2024 +// ** University Corporation for Atmospheric Research (UCAR) +// ** National Center for Atmospheric Research (NCAR) +// ** Research Applications Lab (RAL) +// ** P.O.Box 3000, Boulder, Colorado, 80307-3000, USA +// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* + +/////////////////////////////////////////////////////////////////////////////// + +#include "vx_util.h" + +#include "mask_sid.h" + +using namespace std; + +/////////////////////////////////////////////////////////////////////////////// +// +// Code for MaskSID struct +// +/////////////////////////////////////////////////////////////////////////////// + +MaskSID::MaskSID() { + init_from_scratch(); +} + +//////////////////////////////////////////////////////////////////////// + +MaskSID::~MaskSID() { + clear(); +} + +//////////////////////////////////////////////////////////////////////// + +MaskSID::MaskSID(const MaskSID &m) { + + init_from_scratch(); + + assign(m); +} + +//////////////////////////////////////////////////////////////////////// + +MaskSID & MaskSID::operator=(const MaskSID &m) noexcept { + + if(this == &m) return *this; + + assign(m); + + return *this; +} + +//////////////////////////////////////////////////////////////////////// + +void MaskSID::init_from_scratch() { + + clear(); + + return; +} + +//////////////////////////////////////////////////////////////////////// + +void MaskSID::clear() { + Name.clear(); + HasWeights = false; + SIDMap.clear(); +} + +//////////////////////////////////////////////////////////////////////// + +void MaskSID::assign(const MaskSID & m) { + Name = m.Name; + HasWeights = m.HasWeights; + SIDMap = m.SIDMap; + + return; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool MaskSID::operator==(const MaskSID &m) const { + bool match = true; + + if(!(Name == m.Name ) || + !(SIDMap == m.SIDMap)) { + match = false; + } + + return match; +} + +/////////////////////////////////////////////////////////////////////////////// + +const std::map & MaskSID::sid_map() const { + return SIDMap; +} + +/////////////////////////////////////////////////////////////////////////////// + +void MaskSID::set_name(const string &s) { + Name = s; + + return; +} + +/////////////////////////////////////////////////////////////////////////////// + +void MaskSID::add(const string &text) { + ConcatString sid(text); + + // Default weight value of 1.0 + double weight = 1.0; + + // Check for optional weight + StringArray sa(sid.split("(")); + if(sa.n() > 1) { + sid = sa[0]; + weight = stod(sa[1]); + HasWeights = true; + } + + // Add station ID map entry + if(SIDMap.count(sid) == 0) SIDMap[sid] = weight; + + return; +} + +/////////////////////////////////////////////////////////////////////////////// + +void MaskSID::add_css(const string &text) { + StringArray sa; + sa.add_css(text); + for(int i=0; i 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool MaskSID::has_sid(const string &s, double &weight) const { + bool found = false; + + if(SIDMap.count(s) == 0) { + weight = bad_data_double; + } + else { + found = true; + weight = SIDMap.at(s); + } + + return found; +} + +/////////////////////////////////////////////////////////////////////////////// + diff --git a/src/basic/vx_util/mask_sid.h b/src/basic/vx_util/mask_sid.h new file mode 100644 index 0000000000..81b7071f37 --- /dev/null +++ b/src/basic/vx_util/mask_sid.h @@ -0,0 +1,71 @@ +// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +// ** Copyright UCAR (c) 1992 - 2024 +// ** University Corporation for Atmospheric Research (UCAR) +// ** National Center for Atmospheric Research (NCAR) +// ** Research Applications Lab (RAL) +// ** P.O.Box 3000, Boulder, Colorado, 80307-3000, USA +// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* +//////////////////////////////////////////////////////////////////////// + +#ifndef __MASK_SID_H__ +#define __MASK_SID_H__ + +#include "vx_util.h" + +//////////////////////////////////////////////////////////////////////// +// +// Class to store masking station id information +// +//////////////////////////////////////////////////////////////////////// + +class MaskSID { + + void init_from_scratch(); + + void assign(const MaskSID &); + + // Mask name + ConcatString Name; + + // Boolean for non-default weights + bool HasWeights; + + // Mapping of SID name to weight value + std::map SIDMap; + + public: + + MaskSID(); + ~MaskSID(); + MaskSID(const MaskSID &); + MaskSID & operator=(const MaskSID &) noexcept; + + void clear(); + bool operator==(const MaskSID &) const; + + int n() const; + std::string name() const; + bool has_weights() const; + const std::map & sid_map() const; + + void set_name(const std::string &); + + // Formatted as: station_name(numeric_weight) + void add(const std::string &); + void add_css(const std::string &); + bool has_sid(const std::string &) const ; + bool has_sid(const std::string &, double &) const; +}; + +//////////////////////////////////////////////////////////////////////// + +inline int MaskSID::n() const { return (int) SIDMap.size(); } +inline std::string MaskSID::name() const { return Name; } +inline bool MaskSID::has_weights() const { return HasWeights; } + +//////////////////////////////////////////////////////////////////////// + +#endif // __MASK_SID_H__ + +//////////////////////////////////////////////////////////////////////// + diff --git a/src/basic/vx_util/util_constants.h b/src/basic/vx_util/util_constants.h index e2520efd18..c24ffdec88 100644 --- a/src/basic/vx_util/util_constants.h +++ b/src/basic/vx_util/util_constants.h @@ -102,7 +102,7 @@ static const int tmp_buf_size = 512; static const double grib_earth_radius_km = 6371.20; static const int default_nc_compression = 0; static const int default_precision = 5; -static const double default_grid_weight = 1.0; +static const double default_weight = 1.0; static const char default_tmp_dir[] = "/tmp"; //////////////////////////////////////////////////////////////////////// diff --git a/src/basic/vx_util/vx_util.h b/src/basic/vx_util/vx_util.h index ab8460b420..c396db1924 100644 --- a/src/basic/vx_util/vx_util.h +++ b/src/basic/vx_util/vx_util.h @@ -59,6 +59,7 @@ #include "empty_string.h" #include "polyline.h" #include "mask_poly.h" +#include "mask_sid.h" #include "read_fortran_binary.h" #include "stat_column_defs.h" diff --git a/src/libcode/vx_analysis_util/stat_job.cc b/src/libcode/vx_analysis_util/stat_job.cc index c10f392b85..ef7d6827e8 100644 --- a/src/libcode/vx_analysis_util/stat_job.cc +++ b/src/libcode/vx_analysis_util/stat_job.cc @@ -1802,20 +1802,19 @@ void STATAnalysisJob::set_mask_sid(const char *c) { if(!c) return; - ConcatString mask_name; - mask_sid_str = c; // List the station ID mask mlog << Debug(1) << "Station ID Mask: " << mask_sid_str << "\n"; - parse_sid_mask(mask_sid_str, mask_sid, mask_name); + MaskSID ms = parse_sid_mask(mask_sid_str); + for(const auto &pair : ms.sid_map()) mask_sid.add(pair.first); // List the length of the station ID mask mlog << Debug(2) - << "Parsed Station ID Mask: " << mask_name - << " containing " << mask_sid.n() << " points\n"; + << "Parsed Station ID Mask (" << ms.name() + << ") containing " << mask_sid.n() << " stations\n"; return; } diff --git a/src/libcode/vx_python3_utils/wchar_argv.cc b/src/libcode/vx_python3_utils/wchar_argv.cc index a51eea0675..d60d9ab14d 100644 --- a/src/libcode/vx_python3_utils/wchar_argv.cc +++ b/src/libcode/vx_python3_utils/wchar_argv.cc @@ -13,11 +13,11 @@ //////////////////////////////////////////////////////////////////////// +#include #include #include #include #include -#include #include "wchar_argv.h" #include "concat_string.h" @@ -132,23 +132,21 @@ void Wchar_Argv::set(const StringArray & a) { -int j, k, N; -int len; char * s = nullptr; char ** av = nullptr; ConcatString c; const char *method_name = "Wchar_Argv::set() -> "; -len = 0; +int len = 0; -for (j=0; j<(a.n()); ++j) { +for (int j=0; j<(a.n()); ++j) { len += a.length(j); } -N = len + a.n(); +int N = len + a.n(); s = new char [N]; @@ -156,9 +154,9 @@ av = new char * [a.n()]; memset(s, 0, N); -k = 0; +int k = 0; -for (j=0; j<(a.n()); ++j) { +for (int j=0; j<(a.n()); ++j) { av[j] = s + k; @@ -196,8 +194,6 @@ void Wchar_Argv::set(int _argc, char ** _argv) clear(); -int j, k; -int argv_len; int * len = nullptr; @@ -210,9 +206,9 @@ len = new int [Argc]; // total length of the argument string ... // -argv_len = 0; +int argv_len = 0; -for (j=0; j<_argc; ++j) { +for (int j=0; j<_argc; ++j) { len[j] = m_strlen(_argv[j]); // we're using the len array here because // we don't want to call m_strlen more than @@ -235,7 +231,7 @@ for (j=0; j<_argc; ++j) { W_Buf = new wchar_t [argv_len]; -for (j=0; jname() << "\" station ID masking region.\n"; + + // Print warning if no weights are provided + if(!mask_sid_ptr->has_weights()) { + mlog << Warning << "\n" << method_name + << "station ID point weighting requested but no weights " + << "were defined in the \"" << mask_sid_ptr->name() + << "\" station ID mask. Using default weights of " + << default_weight << ".\n\n"; + } + + // Loop through the point observations + for(int i_obs=0; i_obshas_sid(sid_sa[i_obs], wgt)) { + wgt_na.set(i_obs, wgt); + } + else { + mlog << Warning << "\n" << method_name + << "no match found for station id: " + << sid_sa[i_obs] << "\n\n"; + } + } + } + + return; +} + +//////////////////////////////////////////////////////////////////////// + void PairBase::add_grid_obs(double o, const ClimoPntInfo &cpi, double wgt) { @@ -1293,13 +1336,15 @@ void VxPairBase::set_mask_area(int i_mask, const char *name, //////////////////////////////////////////////////////////////////////// void VxPairBase::set_mask_sid(int i_mask, const char *name, - StringArray *sid_ptr) { + MaskSID *ms_ptr) { + + if(!ms_ptr) return; for(int i_msg_typ=0; i_msg_typset_mask_name(name); - pb_ptr[n]->set_mask_sid_ptr(sid_ptr); + pb_ptr[n]->set_mask_sid_ptr(ms_ptr); } } @@ -1511,6 +1556,20 @@ void VxPairBase::calc_obs_summary() { //////////////////////////////////////////////////////////////////////// +void VxPairBase::set_point_weight(const PointWeightType wgt_flag) { + + if(n_vx == 0) { + mlog << Warning << "\nVxPairBase::set_point_weight() -> " + << "set_size() has not been called yet!\n\n"; + } + + for(auto &x : pb_ptr) x->set_point_weight(wgt_flag); + + return; +} + +//////////////////////////////////////////////////////////////////////// + bool VxPairBase::is_keeper_sid( const char *pnt_obs_str, const char *hdr_sid_str) { bool keep = true; @@ -1864,7 +1923,7 @@ bool VxPairBase::is_keeper_mask( } // Otherwise, check for the masking SID list else if( pb_ptr[n]->mask_sid_ptr != nullptr && - !pb_ptr[n]->mask_sid_ptr->has(hdr_sid_str)) { + !pb_ptr[n]->mask_sid_ptr->has_sid(hdr_sid_str)) { if(mlog.verbosity_level() >= REJECT_DEBUG_LEVEL) { mlog << Debug(REJECT_DEBUG_LEVEL) diff --git a/src/libcode/vx_statistics/pair_base.h b/src/libcode/vx_statistics/pair_base.h index af92385f5c..03b186a750 100644 --- a/src/libcode/vx_statistics/pair_base.h +++ b/src/libcode/vx_statistics/pair_base.h @@ -75,10 +75,10 @@ class PairBase { ////////////////////////////////////////////////////////////////// // Masking area applied to the forecast and climo fields - ConcatString mask_name; + ConcatString mask_name; MaskPlane *mask_area_ptr; // Pointer to the masking MaskPlane // which is not allocated - StringArray *mask_sid_ptr; // Pointer to masking station ID list + MaskSID *mask_sid_ptr; // Pointer to masking station ID list // which is not allocated MaskLatLon *mask_llpnt_ptr; // Pointer to Lat/Lon thresholds // which is not allocated @@ -137,9 +137,9 @@ class PairBase { bool is_point_vx() const; - void set_mask_name(const char *); + void set_mask_name(const std::string &); void set_mask_area_ptr(MaskPlane *); - void set_mask_sid_ptr(StringArray *); + void set_mask_sid_ptr(MaskSID *); void set_mask_llpnt_ptr(MaskLatLon *); void set_climo_cdf_info_ptr(const ClimoCDFInfo *); @@ -173,12 +173,14 @@ class PairBase { const ClimoPntInfo &, double); void set_point_obs(int, const char *, double, double, double, double, - unixtime, double, double, double, - const char *, const ClimoPntInfo &, double); + unixtime, double, double, double, const char *, + const ClimoPntInfo &, double); - void add_grid_obs(double, const ClimoPntInfo &, double); + void add_grid_obs(double, + const ClimoPntInfo &, double); - void add_grid_obs(double, double, double, const ClimoPntInfo &, double); + void add_grid_obs(double, double, double, + const ClimoPntInfo &, double); void add_climo(double, const ClimoPntInfo &); @@ -192,6 +194,7 @@ class PairBase { void calc_obs_summary(); + void set_point_weight(const PointWeightType); }; //////////////////////////////////////////////////////////////////////// @@ -349,7 +352,7 @@ class VxPairBase { void set_msg_typ(int, const char *); void set_msg_typ_vals(int, const StringArray &); void set_mask_area(int, const char *, MaskPlane *); - void set_mask_sid(int, const char *, StringArray *); + void set_mask_sid(int, const char *, MaskSID *); void set_mask_llpnt(int, const char *, MaskLatLon *); void set_interp(int i_interp, const char *interp_mthd_str, int width, @@ -375,6 +378,7 @@ class VxPairBase { void print_obs_summary() const; void calc_obs_summary(); + void set_point_weight(const PointWeightType); bool is_keeper_sid(const char *, const char *); bool is_keeper_var(const char *, const char *, int); diff --git a/src/libcode/vx_statistics/pair_data_ensemble.cc b/src/libcode/vx_statistics/pair_data_ensemble.cc index af9f80de15..f4ccbe279e 100644 --- a/src/libcode/vx_statistics/pair_data_ensemble.cc +++ b/src/libcode/vx_statistics/pair_data_ensemble.cc @@ -1170,8 +1170,7 @@ void VxPairDataEnsemble::add_point_obs(float *hdr_arr, int *hdr_typ_arr, const char *hdr_sid_str, unixtime hdr_ut, const char *obs_qty, float *obs_arr, - Grid &gr, const char *var_name, - const DataPlane *wgt_dp) { + const Grid &gr, const char *var_name) { // Check the observation VarInfo file type if(obs_info->file_type() != FileType_Gb1) { @@ -1303,17 +1302,12 @@ void VxPairDataEnsemble::add_point_obs(float *hdr_arr, int *hdr_typ_arr, gr, obs_x, obs_y, obs_v, obs_lvl, obs_hgt, cpi)) continue; - // Compute weight for current point - double wgt_v = (wgt_dp == nullptr ? - default_grid_weight : - wgt_dp->get(x, y)); - // Add the observation value // Weight is from the nearest grid point int n = three_to_one(i_msg_typ, i_mask, i_interp); if(!pd[n].add_point_obs(hdr_sid_str, hdr_lat, hdr_lon, obs_x, obs_y, hdr_ut, obs_lvl, obs_hgt, - obs_v, obs_qty, cpi, wgt_v)) { + obs_v, obs_qty, cpi, default_weight)) { if(mlog.verbosity_level() >= REJECT_DEBUG_LEVEL) { mlog << Debug(REJECT_DEBUG_LEVEL) diff --git a/src/libcode/vx_statistics/pair_data_ensemble.h b/src/libcode/vx_statistics/pair_data_ensemble.h index f621c23abf..6f14825b11 100644 --- a/src/libcode/vx_statistics/pair_data_ensemble.h +++ b/src/libcode/vx_statistics/pair_data_ensemble.h @@ -216,8 +216,8 @@ class VxPairDataEnsemble : public VxPairBase { void set_skip_const(bool); void add_point_obs(float *, int *, const char *, const char *, - unixtime, const char *, float *, Grid &, - const char * = 0, const DataPlane * = 0); + unixtime, const char *, float *, const Grid &, + const char *); void add_ens(int, bool mn, Grid &); }; diff --git a/src/libcode/vx_statistics/pair_data_point.cc b/src/libcode/vx_statistics/pair_data_point.cc index a22194a297..5c8188e868 100644 --- a/src/libcode/vx_statistics/pair_data_point.cc +++ b/src/libcode/vx_statistics/pair_data_point.cc @@ -503,8 +503,7 @@ void VxPairDataPoint::set_size(int types, int masks, int interps) { void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, const char *hdr_sid_str, unixtime hdr_ut, const char *obs_qty, float *obs_arr, - Grid &gr, const char *var_name, - const DataPlane *wgt_dp) { + const Grid &gr, const char *var_name) { // Increment the number of tries count n_try++; @@ -553,11 +552,7 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, obs_info->is_specific_humidity(); bool precip_flag = fcst_info->is_precipitation() && obs_info->is_precipitation(); - int precip_interval = bad_data_int; - if(precip_flag) { - if(wgt_dp) precip_interval = wgt_dp->accum(); - else precip_interval = fcst_dpa[0].accum(); - } + int precip_interval = fcst_dpa[0].accum(); bool has_seeps = false; SeepsScore *seeps = nullptr; @@ -623,17 +618,12 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, continue; } - // Compute weight for current point - double wgt_v = (wgt_dp == nullptr ? - default_grid_weight : - wgt_dp->get(x, y)); - // Add the forecast, climatological, and observation data // Weight is from the nearest grid point int n = three_to_one(i_msg_typ, i_mask, i_interp); if(!pd[n].add_point_pair(hdr_sid_str, hdr_lat, hdr_lon, obs_x, obs_y, hdr_ut, obs_lvl, - obs_hgt, fcst_v, obs_v, obs_qty, cpi, wgt_v)) { + obs_hgt, fcst_v, obs_v, obs_qty, cpi, default_weight)) { if(mlog.verbosity_level() >= REJECT_DEBUG_LEVEL) { mlog << Debug(REJECT_DEBUG_LEVEL) @@ -954,7 +944,7 @@ void subset_wind_pairs(const PairDataPoint &pd_u, const PairDataPoint &pd_v, // Loop over the pairs for(i=0; i mask_area_map; // Mapping of mask names to Station ID lists - std::map mask_sid_map; + std::map mask_sid_map; gsl_rng *rng_ptr; // GSL random number generator (allocated) - GridWeightType grid_weight_flag; // Grid weighting flag - ConcatString tmp_dir; // Directory for temporary files + GridWeightType grid_weight_flag; // Grid weighting flag + PointWeightType point_weight_flag; // Point weighting flag + ConcatString output_prefix; // String to customize output file name ConcatString version; // Config file version diff --git a/src/tools/core/grid_stat/grid_stat.cc b/src/tools/core/grid_stat/grid_stat.cc index 802e772aab..45afc74615 100644 --- a/src/tools/core/grid_stat/grid_stat.cc +++ b/src/tools/core/grid_stat/grid_stat.cc @@ -2088,7 +2088,7 @@ void get_mask_points(const GridStatVxOpt &vx_opt, if(ocsd_ptr) apply_mask(*ocsd_ptr, mask_mp, pd.ocsd_na); else pd.ocsd_na.add_const(bad_data_double, pd.n_obs); if(wgt_ptr) apply_mask(*wgt_ptr, mask_mp, pd.wgt_na); - else pd.wgt_na.add_const(default_grid_weight, pd.n_obs); + else pd.wgt_na.add_const(default_weight, pd.n_obs); if(ocmn_ptr && ocsd_ptr) pd.compute_climo_cdf(); diff --git a/src/tools/core/point_stat/point_stat.cc b/src/tools/core/point_stat/point_stat.cc index fcd67962b0..0b88407abc 100644 --- a/src/tools/core/point_stat/point_stat.cc +++ b/src/tools/core/point_stat/point_stat.cc @@ -202,10 +202,11 @@ int met_main(int argc, char *argv[]) { process_obs_file(i); } - // Calculate and print observation summaries + // Process observation summaries and point weights for(i=0; i mask_area_map; // Mapping of mask names to Station ID lists - std::map mask_sid_map; + std::map mask_sid_map; + + PointWeightType point_weight_flag; // Point weighting flag ConcatString tmp_dir; // Directory for temporary files ConcatString output_prefix; // String to customize output file name diff --git a/src/tools/core/series_analysis/series_analysis.cc b/src/tools/core/series_analysis/series_analysis.cc index 581356dcd8..e5c3a62fe8 100644 --- a/src/tools/core/series_analysis/series_analysis.cc +++ b/src/tools/core/series_analysis/series_analysis.cc @@ -970,7 +970,7 @@ void process_scores() { (ocsd_flag ? ocsd_dp(x, y) : bad_data_double)); pd_block[i].add_grid_pair(fcst_dp(x, y), obs_dp(x, y), - cpi, default_grid_weight); + cpi, default_weight); } // end for i } // end for i_series diff --git a/src/tools/core/stat_analysis/aggr_stat_line.cc b/src/tools/core/stat_analysis/aggr_stat_line.cc index 3c6dcd3f22..98df91caad 100644 --- a/src/tools/core/stat_analysis/aggr_stat_line.cc +++ b/src/tools/core/stat_analysis/aggr_stat_line.cc @@ -1728,8 +1728,8 @@ void aggr_wind_lines(LineDataFile &f, STATAnalysisJob &job, // Append the unit vectors with no climatological values // ClimoPntInfo cpi; - m[key].pd_u.add_grid_pair(uf, uo, cpi, default_grid_weight); - m[key].pd_v.add_grid_pair(vf, vo, cpi, default_grid_weight); + m[key].pd_u.add_grid_pair(uf, uo, cpi, default_weight); + m[key].pd_v.add_grid_pair(vf, vo, cpi, default_weight); // // Keep track of the unique header column entries @@ -1837,8 +1837,8 @@ void aggr_mpr_wind_lines(LineDataFile &f, STATAnalysisJob &job, aggr.hdr_sa.add(hdr); ClimoPntInfo u_cpi(ufcmn, ufcsd, uocmn, uocsd); ClimoPntInfo v_cpi(vfcmn, vfcsd, vocmn, vocsd); - aggr.pd_u.add_grid_pair(uf, uo, u_cpi, default_grid_weight); - aggr.pd_v.add_grid_pair(vf, vo, v_cpi, default_grid_weight); + aggr.pd_u.add_grid_pair(uf, uo, u_cpi, default_weight); + aggr.pd_v.add_grid_pair(vf, vo, v_cpi, default_weight); // // Add the new map entry @@ -1903,8 +1903,8 @@ void aggr_mpr_wind_lines(LineDataFile &f, STATAnalysisJob &job, m[key].hdr_sa.add(hdr); ClimoPntInfo u_cpi(ufcmn, ufcsd, uocmn, uocsd); ClimoPntInfo v_cpi(vfcmn, vfcsd, vocmn, vocsd); - m[key].pd_u.add_grid_pair(uf, uo, u_cpi, default_grid_weight); - m[key].pd_v.add_grid_pair(vf, vo, v_cpi, default_grid_weight); + m[key].pd_u.add_grid_pair(uf, uo, u_cpi, default_weight); + m[key].pd_v.add_grid_pair(vf, vo, v_cpi, default_weight); } } @@ -2053,8 +2053,8 @@ void aggr_mpr_wind_lines(LineDataFile &f, STATAnalysisJob &job, double vo; convert_u_v_to_unit(it->second.pd_u.o_na[i], it->second.pd_v.o_na[i], uo, vo); - aggr.pd_u.add_grid_pair(uf, uo, cpi, default_grid_weight); - aggr.pd_v.add_grid_pair(vf, vo, cpi, default_grid_weight); + aggr.pd_u.add_grid_pair(uf, uo, cpi, default_weight); + aggr.pd_v.add_grid_pair(vf, vo, cpi, default_weight); } // @@ -2135,7 +2135,7 @@ void aggr_mpr_lines(LineDataFile &f, STATAnalysisJob &job, aggr.pd.ocmn_na.add(cur.obs_climo_mean); aggr.pd.ocsd_na.add(cur.obs_climo_stdev); aggr.pd.ocdf_na.add(cur.obs_climo_cdf); - aggr.pd.wgt_na.add(default_grid_weight); + aggr.pd.wgt_na.add(default_weight); aggr.fcst_var = cur.fcst_var; aggr.obs_var = cur.obs_var; @@ -2166,7 +2166,7 @@ void aggr_mpr_lines(LineDataFile &f, STATAnalysisJob &job, m[key].pd.ocmn_na.add(cur.obs_climo_mean); m[key].pd.ocsd_na.add(cur.obs_climo_stdev); m[key].pd.ocdf_na.add(cur.obs_climo_cdf); - m[key].pd.wgt_na.add(default_grid_weight); + m[key].pd.wgt_na.add(default_weight); // // Only aggregate consistent variable names @@ -3049,7 +3049,7 @@ void aggr_orank_lines(LineDataFile &f, STATAnalysisJob &job, // ClimoPntInfo cpi(cur.fcst_climo_mean, cur.fcst_climo_stdev, cur.obs_climo_mean, cur.obs_climo_stdev); - m[key].ens_pd.add_grid_obs(cur.obs, cpi, default_grid_weight); + m[key].ens_pd.add_grid_obs(cur.obs, cpi, default_weight); m[key].ens_pd.skip_ba.add(false); m[key].ens_pd.n_pair++; m[key].ens_pd.r_na.add(cur.rank); diff --git a/src/tools/core/stat_analysis/parse_stat_line.cc b/src/tools/core/stat_analysis/parse_stat_line.cc index 3e3c5ae1f3..80a4dd7102 100644 --- a/src/tools/core/stat_analysis/parse_stat_line.cc +++ b/src/tools/core/stat_analysis/parse_stat_line.cc @@ -61,7 +61,6 @@ void parse_fho_ctable(STATLine &l, TTContingencyTable &ct) { double h_rate = atof(l.get_item("H_RATE")); double o_rate = atof(l.get_item("O_RATE")); - // MET #2887: JHG multiple by the sum of the weights here instead? double fy = n_pairs * f_rate; double fy_oy = n_pairs * h_rate; double oy = n_pairs * o_rate; diff --git a/src/tools/other/ascii2nc/ascii2nc.cc b/src/tools/other/ascii2nc/ascii2nc.cc index 940e12cedf..c8fb632dda 100644 --- a/src/tools/other/ascii2nc/ascii2nc.cc +++ b/src/tools/other/ascii2nc/ascii2nc.cc @@ -743,18 +743,18 @@ void set_mask_poly(const StringArray & a) { //////////////////////////////////////////////////////////////////////// void set_mask_sid(const StringArray & a) { - ConcatString mask_name; // List the station ID mask mlog << Debug(1) << "Station ID Mask: " << a[0] << "\n"; - parse_sid_mask(a[0], mask_sid, mask_name); + MaskSID ms = parse_sid_mask(a[0]); + for(const auto &pair : ms.sid_map()) mask_sid.add(pair.first); // List the length of the station ID mask mlog << Debug(2) - << "Parsed Station ID Mask: " << mask_name - << " containing " << mask_sid.n_elements() << " points\n"; + << "Parsed Station ID Mask (" << ms.name() + << ") containing " << mask_sid.n() << " stations\n"; } //////////////////////////////////////////////////////////////////////// diff --git a/src/tools/other/gsi_tools/gsidens2orank.cc b/src/tools/other/gsi_tools/gsidens2orank.cc index 39edb87cc5..31aa675774 100644 --- a/src/tools/other/gsi_tools/gsidens2orank.cc +++ b/src/tools/other/gsi_tools/gsidens2orank.cc @@ -271,7 +271,7 @@ void process_conv_data(ConvData &d, int i_mem) { bad_data_double, bad_data_double); ens_pd.add_point_obs(d.sid.c_str(), d.lat, d.lon, bad_data_double, bad_data_double, d.obs_ut, d.prs, - d.elv, d.obs, na_str, cpi, default_grid_weight); + d.elv, d.obs, na_str, cpi, default_weight); // Initialize ensemble members and mean to bad data for(i=0; i