From 411681d7a57cadd54d29a02b8f7ce1b22d12dd13 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Mon, 19 Sep 2022 12:28:02 -0600 Subject: [PATCH 01/28] ci-run-all-cases Triggering the running of all the METplus use cases using the MET tag test_feature_1908 from the feature_1908_remove_ens branch. The question is whether or not the removal of ensemble post-processing breaks the EnsembleStat Wrapper. If all the use cases run without error, then that's a success and we should include dtcenter/MET#1908 in beta3. If they do not, consider shifting that to beta4 instead. --- .github/workflows/testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index b156497b0..e359adeaa 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -85,7 +85,7 @@ jobs: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} EXTERNAL_TRIGGER: ${{ needs.job_control.outputs.external_trigger }} - #MET_FORCE_TAG: 10.0.0 + MET_FORCE_TAG: test_feature_1908 update_data_volumes: name: Docker Setup - Update Data Volumes From 738f466a50a72c90a264a64183bf8b21688504f8 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Mon, 19 Sep 2022 12:40:22 -0600 Subject: [PATCH 02/28] see if use cases will not run if the build fails --- .github/workflows/testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index e359adeaa..0d1b12178 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -109,7 +109,7 @@ jobs: name: Use Case Tests runs-on: ubuntu-latest needs: [get_image, update_data_volumes, job_control] - if: ${{ always() && needs.job_control.outputs.run_some_tests == 'true' }} + if: ${{ needs.job_control.outputs.run_some_tests == 'true' }} strategy: fail-fast: false matrix: ${{fromJson(needs.job_control.outputs.matrix)}} From bc151551904225d698b766b2f62add0b9513da77 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Mon, 19 Sep 2022 13:03:43 -0600 Subject: [PATCH 03/28] ci-run-all-cases Trying again to trigger the METplus use cases. METplus needs to pull from a DockerHub dtcenter/met image tag name. I manually created one and pushed to DockerHub for this testing. --- .github/workflows/testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 0d1b12178..54424f1de 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -85,7 +85,7 @@ jobs: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} EXTERNAL_TRIGGER: ${{ needs.job_control.outputs.external_trigger }} - MET_FORCE_TAG: test_feature_1908 + MET_FORCE_TAG: feature_1908_remove_ens update_data_volumes: name: Docker Setup - Update Data Volumes From a1a41c41b1f8c719f645ad8c8b10662e1759782d Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Mon, 19 Sep 2022 16:28:18 -0600 Subject: [PATCH 04/28] turn on use cases that failed from ensemble_stat changes --- .github/parm/use_case_groups.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 0e9a05056..fd1fb2d99 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -34,6 +34,11 @@ "index_list": "2-6", "run": false }, + { + "category": "short_range", + "index_list": "2", + "run": true + }, { "category": "short_range", "index_list": "7", @@ -97,7 +102,7 @@ { "category": "medium_range", "index_list": "8", - "run": false + "run": true }, { "category": "precipitation", @@ -119,6 +124,11 @@ "index_list": "3-7", "run": false }, + { + "category": "precipitation", + "index_list": "7", + "run": true + }, { "category": "precipitation", "index_list": "8", From 12abf5c7f8beb1b01b88c5bad996cd5c91bded1f Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Mon, 19 Sep 2022 17:25:59 -0600 Subject: [PATCH 05/28] updates to conf file to use GenEnsProd instead of performing ensemble vx in EnsembleStat --- ...nsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf | 61 ++++++-------- .../EnsembleStat_fcstWOFS_obsWOFS.conf | 82 ++++++++++++++---- ...tat_fcstHRRR_fcstOnly_SurrogateSevere.conf | 83 +++++++------------ 3 files changed, 124 insertions(+), 102 deletions(-) diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf index 2fa8f1af1..258be24d7 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf @@ -11,7 +11,7 @@ # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list ### -PROCESS_LIST = EnsembleStat +PROCESS_LIST = GenEnsProd ### @@ -41,11 +41,11 @@ LOOP_ORDER = processes # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info ### -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE}/model_applications/precipitation/HRRRE/pcp_combine -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = hrrrebegin_end_incr(1,3,1,2)_{init?fmt=%Y%m%d%H}f{lead?fmt=%HHH}_A03.nc +GEN_ENS_PROD_INPUT_DIR = {INPUT_BASE}/model_applications/precipitation/HRRRE/pcp_combine +GEN_ENS_PROD_INPUT_TEMPLATE = hrrrebegin_end_incr(1,3,1,2)_{init?fmt=%Y%m%d%H}f{lead?fmt=%HHH}_A03.nc -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/precipitation/EnsembleSTat_fcstHRRRE_FcstOnly_NetCDF/EnsembleStat -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M} +GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/precipitation/EnsembleSTat_fcstHRRRE_FcstOnly_NetCDF/EnsembleStat +GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/ensemble_stat_{ENS_VAR1_NAME}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc ### @@ -58,35 +58,26 @@ ENS_VAR1_LEVELS = "(*,*)" ### -# EnsembleStat Settings -# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ensemblestat +# GenEnsProd Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#genensprod ### - -MODEL = HRRRE -OBTYPE = ANALYS - -ENSEMBLE_STAT_N_MEMBERS = 3 - -ENSEMBLE_STAT_ENS_THRESH = 0.5 -ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 - -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = -5400 -OBS_ENSEMBLE_STAT_WINDOW_END = 5400 - -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE - -ENSEMBLE_STAT_OUTPUT_PREFIX = APCP_03 +GEN_ENS_PROD_N_MEMBERS = 3 + +GEN_ENS_PROD_ENS_THRESH = 0.5 +GEN_ENS_PROD_VLD_THRESH = 1.0 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANK = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT = FALSE diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index ea682db01..563d40053 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -11,7 +11,7 @@ # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list ### -PROCESS_LIST = PcpCombine, EnsembleStat, GridStat +PROCESS_LIST = PcpCombine, EnsembleStat, GenEnsProd, GridStat ### @@ -49,6 +49,14 @@ FCST_PCP_COMBINE_INPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M} FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/{MODEL}/pcp_combine FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/ENS_MEM_{custom?fmt=%s}/wofs{custom?fmt=%s}_PCP_{init?fmt=%Y%m%d}_{init?fmt=%H%M}_{valid?fmt=%H%M}_A1.nc +# GenEnsProd + +GEN_ENS_PROD_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} +GEN_ENS_PROD_INPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/ENS_MEM_??/wofs??_PCP_{init?fmt=%Y%m%d}_{init?fmt=%H%M}_{valid?fmt=%H%M}_A1.nc + +GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/{MODEL}/ensemble_stat +GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/ensemble_stat_{MODEL}_PCP_{init?fmt=%H%M}_{lead?fmt=%H%M}00L_A1_{init?fmt=%Y%m%d}_{valid?fmt=%H%M}00V_ens.nc + # EnsembleStat FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} @@ -62,8 +70,8 @@ ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M} # GridStat -FCST_GRID_STAT_INPUT_DIR = {ENSEMBLE_STAT_OUTPUT_DIR} -FCST_GRID_STAT_INPUT_TEMPLATE = {ENSEMBLE_STAT_OUTPUT_TEMPLATE}/ensemble_stat_{MODEL}_PCP_{init?fmt=%H%M}_{lead?fmt=%H%M}00L_A1_{init?fmt=%Y%m%d}_{valid?fmt=%H%M}00V_ens.nc +FCST_GRID_STAT_INPUT_DIR = {GEN_ENS_PROD_OUTPUT_DIR} +FCST_GRID_STAT_INPUT_TEMPLATE = {GEN_ENS_PROD_OUTPUT_TEMPLATE} OBS_GRID_STAT_INPUT_DIR = {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR} OBS_GRID_STAT_INPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/mrms_PCP_{init?fmt=%Y%m%d}_{init?fmt=%H%M}_{valid?fmt=%H%M}_A1.nc @@ -82,6 +90,16 @@ GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/ MODEL= WOFS OBTYPE = MRMS_QPE + +# GenEnsProd + +ENS_VAR1_NAME = APCP_01 +ENS_VAR1_LEVELS = "(*,*)" +ENS_VAR1_THRESH = >=12.7, >=25.4, >=50.8 + + +# EnsembleStat + FCST_ENSEMBLE_STAT_VAR1_NAME = APCP_01 FCST_ENSEMBLE_STAT_VAR1_LEVELS = "(*,*)" FCST_ENSEMBLE_STAT_VAR1_THRESH = >=12.7, >=25.4, >=50.8 @@ -90,6 +108,9 @@ OBS_ENSEMBLE_STAT_VAR1_NAME = GaugeCorrQPE01H_01 OBS_ENSEMBLE_STAT_VAR1_LEVELS = "(*,*)" OBS_ENSEMBLE_STAT_VAR1_THRESH = {FCST_ENSEMBLE_STAT_VAR1_THRESH} + +# GridStat + FCST_GRID_STAT_VAR1_NAME = APCP_01_A1_ENS_NMEP_ge12.7_NBRHD1_NEAREST1 FCST_GRID_STAT_VAR1_LEVELS = "(*,*)" FCST_GRID_STAT_VAR1_OPTIONS = prob = TRUE @@ -273,6 +294,45 @@ PCP_COMBINE_CUSTOM_LOOP_LIST = 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 1 FCST_PCP_COMBINE_COMMAND = -sum 00000000_000000 1 {valid?fmt=%Y%m%d}_{valid?fmt=%H%M}00 1 -pcpdir {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} -pcprx wofs -field 'name="APCP";level="A1";' +### +# GenEnsProd Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#genensprod +### + + +GEN_ENS_PROD_N_MEMBERS = 18 + +GEN_ENS_PROD_ENS_THRESH = 1.0 + +GEN_ENS_PROD_REGRID_TO_GRID = FCST +GEN_ENS_PROD_REGRID_METHOD = BUDGET +GEN_ENS_PROD_REGRID_WIDTH = 2 +GEN_ENS_PROD_REGRID_VLD_THRESH = 1.0 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 1, 3, 5, 7, 9 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = SQUARE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 1.0 + +GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 1.0 +GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = SQUARE +GEN_ENS_PROD_NMEP_SMOOTH_METHOD = NEAREST +GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +#GEN_ENS_PROD_INPUT_GRID_DATATYPE = NETCDF + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE + ### # EnsembleStat Settings # https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ensemblestat @@ -287,19 +347,9 @@ ENSEMBLE_STAT_REGRID_METHOD = BUDGET ENSEMBLE_STAT_REGRID_WIDTH = 2 ENSEMBLE_STAT_REGRID_VLD_THRESH = 1.0 -ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 1, 3, 5, 7, 9 -ENSEMBLE_STAT_NBRHD_PROB_SHAPE = SQUARE -ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 1.0 - FCST_ENSEMBLE_STAT_INPUT_GRID_DATATYPE = NETCDF OBS_ENSEMBLE_STAT_INPUT_GRID_DATATYPE = NETCDF -ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 1.0 -ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = SQUARE -ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = NEAREST -ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 3 -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 3 ENSEMBLE_STAT_MESSAGE_TYPE = @@ -311,8 +361,8 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE @@ -322,7 +372,7 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf index 2566dd242..3176dab1a 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf +++ b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf @@ -11,7 +11,7 @@ # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list ### -PROCESS_LIST = PCPCombine, EnsembleStat, RegridDataPlane +PROCESS_LIST = PCPCombine, GenEnsProd, RegridDataPlane ### @@ -52,16 +52,16 @@ FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/short_range/surrogate_severe_calc FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d}/hrrr_ncep_{init?fmt=%Y%m%d%H}f{lead?fmt=%HHH}.nc -FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} - -ENSEMBLE_STAT_OUTPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} +GEN_ENS_PROD_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} +GEN_ENS_PROD_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} +GEN_ENS_PROD_OUTPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} +GEN_ENS_PROD_OUTPUT_TEMPLATE = ensemble_stat_{valid?fmt=%Y%m%d}_120000V_ens.nc FCST_REGRID_DATA_PLANE_RUN = True -FCST_REGRID_DATA_PLANE_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} -FCST_REGRID_DATA_PLANE_INPUT_TEMPLATE = ensemble_stat_{valid?fmt=%Y%m%d}_120000V_ens.nc +FCST_REGRID_DATA_PLANE_INPUT_DIR = {GEN_ENS_PROD_OUTPUT_DIR} +FCST_REGRID_DATA_PLANE_INPUT_TEMPLATE = {GEN_ENS_PROD_OUTPUT_TEMPLATE} FCST_REGRID_DATA_PLANE_OUTPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} FCST_REGRID_DATA_PLANE_OUTPUT_TEMPLATE = surrogate_severe_{init?fmt=%Y%m%d}_{lead?fmt=%HHH}V_regrid.nc @@ -114,52 +114,33 @@ FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB ### -# EnsembleStat Settings -# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ensemblestat +# GenEnsProd Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#genensprod ### -ENSEMBLE_STAT_N_MEMBERS = 1 -ENSEMBLE_STAT_ENS_THRESH = 1.0 - -ENSEMBLE_STAT_REGRID_TO_GRID = G211 -ENSEMBLE_STAT_REGRID_METHOD = MAX -ENSEMBLE_STAT_REGRID_WIDTH = 27 -ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.0 - -ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE -ENSEMBLE_STAT_SKIP_CONST = True - -ENSEMBLE_STAT_CENSOR_THRESH = ==-9999 -ENSEMBLE_STAT_CENSOR_VAL = 0.0 - -ENSEMBLE_STAT_OBS_ERROR_FLAG = True - -ENSEMBLE_STAT_MASK_GRID = - -ENSEMBLE_STAT_CI_ALPHA = 0.01 - -ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_RELP = NONE - -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE +GEN_ENS_PROD_N_MEMBERS = 1 +GEN_ENS_PROD_ENS_THRESH = 1.0 + +GEN_ENS_PROD_REGRID_TO_GRID = G211 +GEN_ENS_PROD_REGRID_METHOD = MAX +GEN_ENS_PROD_REGRID_WIDTH = 27 +GEN_ENS_PROD_REGRID_VLD_THRESH = 0.0 + +GEN_ENS_PROD_CENSOR_THRESH = ==-9999 +GEN_ENS_PROD_CENSOR_VAL = 0.0 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = FALSE ### From 89d85e285df3a8367b51d17037a218c7bdb74933 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Mon, 19 Sep 2022 17:28:23 -0600 Subject: [PATCH 06/28] correctly list of use cases to run to test --- .github/parm/use_case_groups.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index fd1fb2d99..2f97af6ef 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -102,12 +102,12 @@ { "category": "medium_range", "index_list": "8", - "run": true + "run": false }, { "category": "precipitation", "index_list": "0", - "run": false + "run": true }, { "category": "precipitation", From 324810b6a51b2795580029019da949c2338a03c8 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Mon, 19 Sep 2022 17:35:31 -0600 Subject: [PATCH 07/28] turn off individual use cases that were added and run all diffs with ci-run-all-diff --- .github/parm/use_case_groups.json | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 2f97af6ef..0e9a05056 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -34,11 +34,6 @@ "index_list": "2-6", "run": false }, - { - "category": "short_range", - "index_list": "2", - "run": true - }, { "category": "short_range", "index_list": "7", @@ -107,7 +102,7 @@ { "category": "precipitation", "index_list": "0", - "run": true + "run": false }, { "category": "precipitation", @@ -124,11 +119,6 @@ "index_list": "3-7", "run": false }, - { - "category": "precipitation", - "index_list": "7", - "run": true - }, { "category": "precipitation", "index_list": "8", From 637b4b4b1dfb0d438ae118b491136e97ce52aafc Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 08:20:37 -0600 Subject: [PATCH 08/28] turn latlon and mean ensemble_flag values back on --- .../precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index 563d40053..43e9659f1 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -361,8 +361,8 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE From c62c8ebdfa106eb2b46c595bd6d1f99f1ff44dec Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 08:21:46 -0600 Subject: [PATCH 09/28] run adjusted case to check diff results -- ci-run-diff --- .github/parm/use_case_groups.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 0e9a05056..3bb687f2c 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -117,7 +117,7 @@ { "category": "precipitation", "index_list": "3-7", - "run": false + "run": true }, { "category": "precipitation", From 727b388c2fbfe3aa4e08a6785501de8528c972f9 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 08:58:59 -0600 Subject: [PATCH 10/28] add valid count and ci-run-diff --- .../precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index 43e9659f1..89937dc81 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -328,7 +328,7 @@ GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = FALSE -GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE From 87376b8dd7ed0d46bbf8fe7ff68c9ca54b598ce8 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 09:01:36 -0600 Subject: [PATCH 11/28] turn off use case group --- .github/parm/use_case_groups.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 3bb687f2c..0e9a05056 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -117,7 +117,7 @@ { "category": "precipitation", "index_list": "3-7", - "run": true + "run": false }, { "category": "precipitation", From c842514d1313773431c463225ed6a43f173f2af8 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 09:01:44 -0600 Subject: [PATCH 12/28] turn off forced MET tag --- .github/workflows/testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 54424f1de..305e2e80f 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -85,7 +85,7 @@ jobs: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} EXTERNAL_TRIGGER: ${{ needs.job_control.outputs.external_trigger }} - MET_FORCE_TAG: feature_1908_remove_ens + #MET_FORCE_TAG: 10.1.0 update_data_volumes: name: Docker Setup - Update Data Volumes From 4af5d055b84aa09da3424afd1210b6eacbe6e2f9 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 10:00:28 -0600 Subject: [PATCH 13/28] per #1816, removed nmep_smooth, nbrhd_prob, and ensemble_flag dictionary variables from EnsembleStat wrapper and added support for nc_orank_flag --- docs/Users_Guide/glossary.rst | 127 +++++++--------- docs/Users_Guide/wrappers.rst | 110 +++----------- .../test_ensemble_stat_wrapper.py | 142 ++++-------------- metplus/wrappers/ensemble_stat_wrapper.py | 55 ++----- parm/met_config/EnsembleStatConfig_wrapped | 16 +- .../EnsembleStat/EnsembleStat.conf | 33 +--- 6 files changed, 130 insertions(+), 353 deletions(-) diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index b2a4501c9..25505d65f 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -5586,19 +5586,13 @@ METplus Configuration Glossary | *Used by:* EnsembleStat ENSEMBLE_STAT_NBRHD_PROB_WIDTH - Specify the value for 'nbrhd_prob.width' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NBRHD_PROB_WIDTH` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NBRHD_PROB_SHAPE - Specify the value for 'nbrhd_prob.shape' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NBRHD_PROB_SHAPE` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH - Specify the value for 'nbrhd_prob.vld_thresh' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_CLIMO_CDF_CDF_BINS See :term:`ENSEMBLE_STAT_CLIMO_CDF_BINS` @@ -5634,34 +5628,22 @@ METplus Configuration Glossary | *Used by:* EnsembleStat ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX - Specify the value for 'nmep_smooth.gaussian_dx' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS - Specify the value for 'nmep_smooth.gaussian_radius' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH - Specify the value for 'nmep_smooth.vld_thresh' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE - Specify the value for 'nmep_smooth.shape' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NMEP_SMOOTH_SHAPE` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NMEP_SMOOTH_METHOD - Specify the value for 'nmep_smooth.type.method' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NMEP_SMOOTH_METHOD` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH - Specify the value for 'nmep_smooth.type.width' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_NMEP_SMOOTH_WIDTH` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_CENSOR_THRESH Specify the value for 'censor_thresh' in the MET configuration file for EnsembleStat. @@ -5925,74 +5907,46 @@ METplus Configuration Glossary | *Used by:* EnsembleStat ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON - Specify the value for 'ensemble_flag.latlon' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN - Specify the value for 'ensemble_flag.mean' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV - Specify the value for 'ensemble_flag.stdev' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS - Specify the value for 'ensemble_flag.minus' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS - Specify the value for 'ensemble_flag.plus' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN - Specify the value for 'ensemble_flag.min' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_MIN` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX - Specify the value for 'ensemble_flag.max' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_MAX` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE - Specify the value for 'ensemble_flag.range' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT - Specify the value for 'ensemble_flag.vld_count' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY - Specify the value for 'ensemble_flag.frequency' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP - Specify the value for 'ensemble_flag.nep' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_NEP` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP - Specify the value for 'ensemble_flag.nmep' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK - Specify the value for 'ensemble_flag.rank' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RANK` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT - Specify the value for 'ensemble_flag.weight' in the MET configuration file for EnsembleStat. - - | *Used by:* EnsembleStat + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` instead. GRID_STAT_MASK_GRID Specify the value for 'mask.grid' in the MET configuration file for GridStat. @@ -9937,3 +9891,38 @@ METplus Configuration Glossary See :ref:`Overriding Unsupported MET config file settings` for more information | *Used by:* PlotPointObs + + ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON + Specify the value for 'nc_orank_flag.latlon' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat + + ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN + Specify the value for 'nc_orank_flag.mean' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat + + ENSEMBLE_STAT_NC_ORANK_FLAG_RAW + Specify the value for 'nc_orank_flag.raw' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat + + ENSEMBLE_STAT_NC_ORANK_FLAG_RANK + Specify the value for 'nc_orank_flag.rank' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat + + ENSEMBLE_STAT_NC_ORANK_FLAG_PIT + Specify the value for 'nc_orank_flag.pit' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat + + ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT + Specify the value for 'nc_orank_flag.vld_count' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat + + ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT + Specify the value for 'nc_orank_flag.weight' in the MET configuration file for EnsembleStat. + + | *Used by:* EnsembleStat diff --git a/docs/Users_Guide/wrappers.rst b/docs/Users_Guide/wrappers.rst index 3a1b7c0af..e085f249c 100644 --- a/docs/Users_Guide/wrappers.rst +++ b/docs/Users_Guide/wrappers.rst @@ -217,21 +217,12 @@ METplus Configuration | :term:`ENSEMBLE_STAT_DESC` | :term:`ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE` | :term:`ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE` -| :term:`ENSEMBLE_STAT_NBRHD_PROB_WIDTH` -| :term:`ENSEMBLE_STAT_NBRHD_PROB_SHAPE` -| :term:`ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH` | :term:`ENSEMBLE_STAT_CLIMO_CDF_BINS` | :term:`ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS` | :term:`ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS` | :term:`ENSEMBLE_STAT_CLIMO_CDF_DIRECT_PROB` | :term:`ENSEMBLE_STAT_DUPLICATE_FLAG` | :term:`ENSEMBLE_STAT_SKIP_CONST` -| :term:`ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX` -| :term:`ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS` -| :term:`ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH` -| :term:`ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE` -| :term:`ENSEMBLE_STAT_NMEP_SMOOTH_METHOD` -| :term:`ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH` | :term:`ENSEMBLE_STAT_CENSOR_THRESH` | :term:`ENSEMBLE_STAT_CENSOR_VAL` | :term:`ENSEMBLE_STAT_DUPLICATE_FLAG` @@ -286,20 +277,13 @@ METplus Configuration | :term:`ENSEMBLE_STAT_OUTPUT_FLAG_PJC` | :term:`ENSEMBLE_STAT_OUTPUT_FLAG_PRC` | :term:`ENSEMBLE_STAT_OUTPUT_FLAG_ECLV` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK` -| :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RAW` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RANK` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_PIT` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT` +| :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` | :term:`ENSEMBLE_STAT_OBS_QUALITY_INC` | :term:`ENSEMBLE_STAT_OBS_QUALITY_EXC` | :term:`ENSEMBLE_STAT_MET_CONFIG_OVERRIDES` @@ -494,42 +478,6 @@ see :ref:`How METplus controls MET config file settings`. .. note:: For more information on controlling the forecast field attributes in METplus, please see the :ref:`Field_Info` section of the User's Guide. -**${METPLUS_NBRHD_PROB_DICT}** - -.. list-table:: - :widths: 5 5 - :header-rows: 0 - - * - METplus Config(s) - - MET Config File - * - :term:`ENSEMBLE_STAT_NBRHD_PROB_WIDTH` - - nbrhd_prob.width - * - :term:`ENSEMBLE_STAT_NBRHD_PROB_SHAPE` - - nbrhd_prob.shape - * - :term:`ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH` - - nbrhd_prob.vld_thresh - -**${METPLUS_NMEP_SMOOTH_DICT}** - -.. list-table:: - :widths: 5 5 - :header-rows: 0 - - * - METplus Config(s) - - MET Config File - * - :term:`ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH` - - nmep_smooth.vld_thresh - * - :term:`ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE` - - nmep_smooth.shape - * - :term:`ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX` - - nmep_smooth.gaussian_dx - * - :term:`ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS` - - nmep_smooth.gaussian_radius - * - :term:`ENSEMBLE_STAT_NMEP_SMOOTH_METHOD` - - nmep_smooth.type.method - * - :term:`ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH` - - nmep_smooth.type.width - **${METPLUS_PROB_CAT_THRESH}** .. list-table:: @@ -862,7 +810,7 @@ see :ref:`How METplus controls MET config file settings`. * - :term:`ENSEMBLE_STAT_OUTPUT_FLAG_ECLV` - output_flag.eclv -**${METPLUS_ENSEMBLE_FLAG_DICT}** +**${METPLUS_NC_ORANK_FLAG_DICT}** .. list-table:: :widths: 5 5 @@ -870,34 +818,20 @@ see :ref:`How METplus controls MET config file settings`. * - METplus Config(s) - MET Config File - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON` - - ensemble_flag.latlon - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN` - - ensemble_flag.mean - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV` - - ensemble_flag.stdev - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS` - - ensemble_flag.minus - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS` - - ensemble_flag.plus - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN` - - ensemble_flag.min - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX` - - ensemble_flag.max - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE` - - ensemble_flag.range - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT` - - ensemble_flag.vld_count - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY` - - ensemble_flag.frequency - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP` - - ensemble_flag.nep - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP` - - ensemble_flag.nmep - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK` - - ensemble_flag.rank - * - :term:`ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT` - - ensemble_flag.weight + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON` + - nc_orank_flag.latlon + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN` + - nc_orank_flag.mean + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RAW` + - nc_orank_flag.raw + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RANK` + - nc_orank_flag.rank + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_PIT` + - nc_orank_flag.pit + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT` + - nc_orank_flag.vld_count + * - :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` + - nc_orank_flag.weight **${METPLUS_OUTPUT_PREFIX}** diff --git a/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py b/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py index b28d87570..c669e1983 100644 --- a/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py +++ b/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py @@ -359,76 +359,46 @@ def test_handle_climo_file_variables(metplus_config, config_overrides, 'pct = STAT;pstd = STAT;' 'pjc = STAT;prc = STAT;eclv = STAT;' '}')}), - # ensemble_flag - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {latlon = FALSE;}'}), + # nc_orank_flag + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON': 'True', }, + {'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {latlon = TRUE;}'}), - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {mean = FALSE;}'}), + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN': 'True', }, + {'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {mean = TRUE;}'}), - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {stdev = FALSE;}'}), + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_RAW': 'True', }, + {'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {raw = TRUE;}'}), - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {minus = FALSE;}'}), + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_RANK': 'True', }, + {'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {rank = TRUE;}'}), - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {plus = FALSE;}'}), + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_PIT': 'True', }, + {'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {pit = TRUE;}'}), - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {min = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {max = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {range = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT': 'FALSE', }, + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT': 'True', }, { - 'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {vld_count = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY': 'FALSE', }, - { - 'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {frequency = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {nep = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {nmep = FALSE;}'}), + 'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {vld_count = TRUE;}'}), - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {rank = FALSE;}'}), - - ({'ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {weight = FALSE;}'}), + ({'ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT': 'True', }, + {'METPLUS_NC_ORANK_FLAG_DICT': 'nc_orank_flag = {weight = TRUE;}'}), ({ - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK': 'FALSE', - 'ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT': 'FALSE', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON': 'True', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN': 'True', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_RAW': 'True', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_RANK': 'True', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_PIT': 'True', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT': 'True', + 'ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT': 'True', }, { - 'METPLUS_ENSEMBLE_FLAG_DICT': ('ensemble_flag = {latlon = FALSE;' - 'mean = FALSE;stdev = FALSE;' - 'minus = FALSE;plus = FALSE;' - 'min = FALSE;max = FALSE;' - 'range = FALSE;vld_count = FALSE;' - 'frequency = FALSE;nep = FALSE;' - 'nmep = FALSE;rank = FALSE;' - 'weight = FALSE;}')}), + 'METPLUS_NC_ORANK_FLAG_DICT': ('nc_orank_flag = {latlon = TRUE;' + 'mean = TRUE;raw = TRUE;' + 'rank = TRUE;pit = TRUE;' + 'vld_count = TRUE;' + 'weight = TRUE;}') + }), + # climo_cdf dictionary ({'ENSEMBLE_STAT_CLIMO_CDF_CDF_BINS': '1', }, {'METPLUS_CLIMO_CDF_DICT': 'climo_cdf = {cdf_bins = 1.0;}'}), @@ -587,60 +557,6 @@ def test_handle_climo_file_variables(metplus_config, config_overrides, 'match_month = TRUE;day_interval = 30;' 'hour_interval = 12;}'), 'CLIMO_STDEV_FILE': '"/some/climo_stdev/file.txt"'}), - ({'ENSEMBLE_STAT_NBRHD_PROB_WIDTH': '5', }, - {'METPLUS_NBRHD_PROB_DICT': 'nbrhd_prob = {width = [5];}'}), - - ({'ENSEMBLE_STAT_NBRHD_PROB_SHAPE': 'circle', }, - {'METPLUS_NBRHD_PROB_DICT': 'nbrhd_prob = {shape = CIRCLE;}'}), - - ({'ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH': '0.0', }, - {'METPLUS_NBRHD_PROB_DICT': 'nbrhd_prob = {vld_thresh = 0.0;}'}), - - ({ - 'ENSEMBLE_STAT_NBRHD_PROB_WIDTH': '5', - 'ENSEMBLE_STAT_NBRHD_PROB_SHAPE': 'CIRCLE', - 'ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH': '0.0', - }, - { - 'METPLUS_NBRHD_PROB_DICT': ( - 'nbrhd_prob = {width = [5];shape = CIRCLE;' - 'vld_thresh = 0.0;}' - ) - }), - ({'ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH': '0.0', }, - {'METPLUS_NMEP_SMOOTH_DICT': 'nmep_smooth = {vld_thresh = 0.0;}'}), - - ({'ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE': 'circle', }, - {'METPLUS_NMEP_SMOOTH_DICT': 'nmep_smooth = {shape = CIRCLE;}'}), - - ({'ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX': '81.27', }, - {'METPLUS_NMEP_SMOOTH_DICT': 'nmep_smooth = {gaussian_dx = 81.27;}'}), - - ({'ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS': '120', }, - { - 'METPLUS_NMEP_SMOOTH_DICT': 'nmep_smooth = {gaussian_radius = 120;}'}), - - ({'ENSEMBLE_STAT_NMEP_SMOOTH_TYPE_METHOD': 'GAUSSIAN', }, - {'METPLUS_NMEP_SMOOTH_DICT': 'nmep_smooth = {type = [{method = GAUSSIAN;}];}'}), - - ({'ENSEMBLE_STAT_NMEP_SMOOTH_TYPE_WIDTH': '1', }, - {'METPLUS_NMEP_SMOOTH_DICT': 'nmep_smooth = {type = [{width = 1;}];}'}), - - ({ - 'ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH': '0.0', - 'ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE': 'circle', - 'ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX': '81.27', - 'ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS': '120', - 'ENSEMBLE_STAT_NMEP_SMOOTH_TYPE_METHOD': 'GAUSSIAN', - 'ENSEMBLE_STAT_NMEP_SMOOTH_TYPE_WIDTH': '1', - }, - { - 'METPLUS_NMEP_SMOOTH_DICT': ( - 'nmep_smooth = {vld_thresh = 0.0;shape = CIRCLE;' - 'gaussian_dx = 81.27;gaussian_radius = 120;' - 'type = [{method = GAUSSIAN;width = 1;}];}' - ) - }), ({'ENSEMBLE_STAT_OBS_QUALITY_INC': '2,3,4', }, {'METPLUS_OBS_QUALITY_INC': 'obs_quality_inc = ["2", "3", "4"];'}), ({'ENSEMBLE_STAT_OBS_QUALITY_EXC': '5,6,7', }, diff --git a/metplus/wrappers/ensemble_stat_wrapper.py b/metplus/wrappers/ensemble_stat_wrapper.py index 8eee18064..61b493d82 100755 --- a/metplus/wrappers/ensemble_stat_wrapper.py +++ b/metplus/wrappers/ensemble_stat_wrapper.py @@ -39,8 +39,6 @@ class EnsembleStatWrapper(CompareGriddedWrapper): 'METPLUS_ENS_VLD_THRESH', 'METPLUS_ENS_OBS_THRESH', 'METPLUS_ENS_FIELD', - 'METPLUS_NBRHD_PROB_DICT', - 'METPLUS_NMEP_SMOOTH_DICT', 'METPLUS_FCST_FILE_TYPE', 'METPLUS_FCST_FIELD', 'METPLUS_OBS_FILE_TYPE', @@ -60,7 +58,7 @@ class EnsembleStatWrapper(CompareGriddedWrapper): 'METPLUS_CI_ALPHA', 'METPLUS_INTERP_DICT', 'METPLUS_OUTPUT_FLAG_DICT', - 'METPLUS_ENSEMBLE_FLAG_DICT', + 'METPLUS_NC_ORANK_FLAG_DICT', 'METPLUS_OUTPUT_PREFIX', 'METPLUS_OBS_QUALITY_INC', 'METPLUS_OBS_QUALITY_EXC', @@ -93,21 +91,15 @@ class EnsembleStatWrapper(CompareGriddedWrapper): 'eclv', ] - ENSEMBLE_FLAGS = ['latlon', - 'mean', - 'stdev', - 'minus', - 'plus', - 'min', - 'max', - 'range', - 'vld_count', - 'frequency', - 'nep', - 'nmep', - 'rank', - 'weight', - ] + NC_ORANK_FLAGS = [ + 'latlon', + 'mean', + 'raw', + 'rank', + 'pit', + 'vld_count', + 'weight', + ] def __init__(self, config, instance=None): self.app_name = 'ensemble_stat' @@ -268,8 +260,6 @@ def create_c_dict(self): self.add_met_config(name='ens_phist_bin_size', data_type='float') - self.handle_nbrhd_prob_dict() - self.add_met_config(name='ens_thresh', data_type='float') @@ -283,14 +273,11 @@ def create_c_dict(self): # set climo_cdf dictionary variables self.handle_climo_cdf_dict() - # set nmep_smooth dictionary variables - self.handle_nmep_smooth_dict() - # interp dictionary values self.handle_interp_dict() self.handle_flags('OUTPUT') - self.handle_flags('ENSEMBLE') + self.handle_flags('NC_ORANK') self.add_met_config(name='flag', data_type='bool', @@ -390,26 +377,6 @@ def create_c_dict(self): return c_dict - def handle_nmep_smooth_dict(self): - self.add_met_config_dict('nmep_smooth', { - 'vld_thresh': 'float', - 'shape': ('string', 'uppercase,remove_quotes'), - 'gaussian_dx': 'float', - 'gaussian_radius': 'int', - 'type': ('dictlist', '', {'method': ('string', - 'uppercase,remove_quotes'), - 'width': 'int', - } - ) - }) - - def handle_nbrhd_prob_dict(self): - self.add_met_config_dict('nbrhd_prob', { - 'width': ('list', 'remove_quotes'), - 'shape': ('string', 'uppercase,remove_quotes'), - 'vld_thresh': 'float', - }) - def run_at_time_all_fields(self, time_info): """! Runs the MET application for a given time and forecast lead combination Args: diff --git a/parm/met_config/EnsembleStatConfig_wrapped b/parm/met_config/EnsembleStatConfig_wrapped index c4846b4d0..664d52841 100644 --- a/parm/met_config/EnsembleStatConfig_wrapped +++ b/parm/met_config/EnsembleStatConfig_wrapped @@ -59,17 +59,6 @@ ${METPLUS_ENS_MEMBER_IDS} //control_id = ${METPLUS_CONTROL_ID} -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -${METPLUS_NBRHD_PROB_DICT} - -// -// NMEP smoothing methods -// -${METPLUS_NMEP_SMOOTH_DICT} //////////////////////////////////////////////////////////////////////////////// @@ -219,9 +208,10 @@ ${METPLUS_OUTPUT_FLAG_DICT} //////////////////////////////////////////////////////////////////////////////// // -// Ensemble product output types +// Gridded verification output types +// May be set separately in each "obs.field" entry // -${METPLUS_ENSEMBLE_FLAG_DICT} +${METPLUS_NC_ORANK_FLAG_DICT} //////////////////////////////////////////////////////////////////////////////// diff --git a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf index acad0c6f7..4f75ddbdb 100644 --- a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf +++ b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf @@ -141,17 +141,6 @@ ENSEMBLE_STAT_REGRID_SHAPE = SQUARE ENSEMBLE_STAT_CENSOR_THRESH = ENSEMBLE_STAT_CENSOR_VAL = -ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 -ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE -ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 - -ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 -ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE -ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 -ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 -ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN -ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 - #ENSEMBLE_STAT_PROB_CAT_THRESH = #ENSEMBLE_STAT_PROB_PCT_THRESH = ==0.25 #ENSEMBLE_STAT_ECLV_POINTS = 0.05 @@ -222,21 +211,13 @@ ENSEMBLE_STAT_OUTPUT_FLAG_RELP = BOTH #ENSEMBLE_STAT_OUTPUT_FLAG_PRC = BOTH #ENSEMBLE_STAT_OUTPUT_FLAG_ECLV = BOTH - -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = TRUE #ENSEMBLE_STAT_OBS_QUALITY_INC = #ENSEMBLE_STAT_OBS_QUALITY_EXC = From 73cc205a894d7b9efc8942ef6a126e91872c12b1 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 12:29:37 -0600 Subject: [PATCH 14/28] per #1816, removed ens dictionary from EnsembleStat, moved ens.vld_thresh and ens.ens_thresh to fcst dictionary, moved ens.obs_thresh to top level --- docs/Users_Guide/glossary.rst | 17 +- docs/Users_Guide/wrappers.rst | 18 +- .../test_ensemble_stat_wrapper.py | 44 +-- metplus/wrappers/ensemble_stat_wrapper.py | 279 +++++++----------- parm/met_config/EnsembleStatConfig_wrapped | 20 +- 5 files changed, 141 insertions(+), 237 deletions(-) diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index 25505d65f..b5390441b 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -984,12 +984,18 @@ METplus Configuration Glossary | *Used by:* EnsembleStat ENSEMBLE_STAT_ENS_VLD_THRESH + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_VLD_THRESH` instead. + + ENSEMBLE_STAT_VLD_THRESH Threshold for the ratio of the number of valid data values to the total number of expected ensemble members. This value is passed into the ensemble_stat config file to make sure the percentage of files that are valid meets the expectation. | *Used by:* EnsembleStat ENSEMBLE_STAT_ENS_OBS_THRESH - Sets the ens.obs_thresh value in the ensemble_stat MET config file. + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_OBS_THRESH`. + + ENSEMBLE_STAT_OBS_THRESH + Sets the obs_thresh value in the ensemble_stat MET config file. | *Used by:* EnsembleStat @@ -6312,9 +6318,12 @@ METplus Configuration Glossary | *Used by:* TCpairs ENS_ENSEMBLE_STAT_INPUT_DATATYPE - Set the file_type entry of the ens dictionary in the MET config file for EnsembleStat. + .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_INPUT_DATATYPE` in :ref:`gen_ens_prod_wrapper` instead. - | *Used by:* EnsembleStat + GEN_ENS_PROD_INPUT_DATATYPE + Set the file_type entry of the ens dictionary in the MET config file for GenEnsProd. + + | *Used by:* GenEnsProd FCST_SERIES_ANALYSIS_INPUT_DATATYPE Set the file_type entry of the fcst dictionary in the MET config file for SeriesAnalysis. @@ -9178,7 +9187,7 @@ METplus Configuration Glossary it will automatically be removed by the wrapper to prevent an error in the MET tool. This may require adjusting the value for :term:`ENSEMBLE_STAT_N_MEMBERS` and/or - :term:`ENSEMBLE_STAT_ENS_VLD_THRESH`. + :term:`ENSEMBLE_STAT_VLD_THRESH`. | *Used by:* EnsembleStat diff --git a/docs/Users_Guide/wrappers.rst b/docs/Users_Guide/wrappers.rst index e085f249c..bf045de7c 100644 --- a/docs/Users_Guide/wrappers.rst +++ b/docs/Users_Guide/wrappers.rst @@ -210,8 +210,8 @@ METplus Configuration | :term:`OBS_ENSEMBLE_STAT_FILE_WINDOW_BEGIN` | :term:`OBS_ENSEMBLE_STAT_FILE_WINDOW_END` | :term:`ENSEMBLE_STAT_ENS_THRESH` -| :term:`ENSEMBLE_STAT_ENS_VLD_THRESH` -| :term:`ENSEMBLE_STAT_ENS_OBS_THRESH` +| :term:`ENSEMBLE_STAT_VLD_THRESH` +| :term:`ENSEMBLE_STAT_OBS_THRESH` | :term:`ENSEMBLE_STAT_CUSTOM_LOOP_LIST` | :term:`ENSEMBLE_STAT_SKIP_IF_OUTPUT_EXISTS` | :term:`ENSEMBLE_STAT_DESC` @@ -435,9 +435,9 @@ see :ref:`How METplus controls MET config file settings`. * - METplus Config(s) - MET Config File * - :term:`ENSEMBLE_STAT_ENS_THRESH` - - ens.ens_thresh + - fcst.ens_thresh -**${METPLUS_ENS_VLD_THRESH}** +**${METPLUS_VLD_THRESH}** .. list-table:: :widths: 5 5 @@ -445,10 +445,10 @@ see :ref:`How METplus controls MET config file settings`. * - METplus Config(s) - MET Config File - * - :term:`ENSEMBLE_STAT_ENS_VLD_THRESH` - - ens.vld_thresh + * - :term:`ENSEMBLE_STAT_VLD_THRESH` + - fcst.vld_thresh -**${METPLUS_ENS_OBS_THRESH}** +**${METPLUS_OBS_THRESH}** .. list-table:: :widths: 5 5 @@ -456,8 +456,8 @@ see :ref:`How METplus controls MET config file settings`. * - METplus Config(s) - MET Config File - * - :term:`ENSEMBLE_STAT_ENS_OBS_THRESH` - - ens.obs_thresh + * - :term:`ENSEMBLE_STAT_OBS_THRESH` + - obs_thresh **${METPLUS_ENS_FIELD}** diff --git a/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py b/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py index c669e1983..7a745cb92 100644 --- a/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py +++ b/internal_tests/pytests/wrappers/ensemble_stat/test_ensemble_stat_wrapper.py @@ -16,12 +16,9 @@ obs_name = 'APCP_03' obs_level_no_quotes = '(*,*)' obs_level = f'"{obs_level_no_quotes}"' -ens_name = 'REFC' -ens_level = 'L0' fcst_fmt = f'field = [{{ name="{fcst_name}"; level="{fcst_level}"; }}];' obs_fmt = (f'field = [{{ name="{obs_name}"; ' f'level="{obs_level_no_quotes}"; }}];') -ens_fmt = f'field = [{{ name="{ens_name}"; level="{ens_level}"; }}];' time_fmt = '%Y%m%d%H' run_times = ['2005080700', '2005080712'] @@ -60,44 +57,17 @@ def set_minimum_config_settings(config, set_fields=True): config.set('config', 'FCST_VAR1_LEVELS', fcst_level) config.set('config', 'OBS_VAR1_NAME', obs_name) config.set('config', 'OBS_VAR1_LEVELS', obs_level) - config.set('config', 'ENS_VAR1_NAME', ens_name) - config.set('config', 'ENS_VAR1_LEVELS', ens_level) @pytest.mark.parametrize( 'config_overrides, env_var_values', [ - # 0 : 3 ens, 1 fcst, 1 obs - ({'ENS_VAR1_NAME': 'ens_name_1', - 'ENS_VAR1_LEVELS': 'ENS_LEVEL_1', - 'ENS_VAR2_NAME': 'ens_name_2', - 'ENS_VAR2_LEVELS': 'ENS_LEVEL_2A, ENS_LEVEL_2B', - 'FCST_VAR1_NAME': 'fcst_name_1', - 'FCST_VAR1_LEVELS': 'FCST_LEVEL_1', - 'OBS_VAR1_NAME': 'obs_name_1', - 'OBS_VAR1_LEVELS': 'OBS_LEVEL_1', - }, - {'METPLUS_ENS_FIELD': ('field = [' - '{ name="ens_name_1"; level="ENS_LEVEL_1"; },' - '{ name="ens_name_2"; level="ENS_LEVEL_2A"; },' - '{ name="ens_name_2"; level="ENS_LEVEL_2B"; }' - '];'), - 'METPLUS_FCST_FIELD': ('field = [' - '{ name="fcst_name_1"; level="FCST_LEVEL_1"; }' - '];'), - 'METPLUS_OBS_FIELD': ('field = [' - '{ name="obs_name_1"; level="OBS_LEVEL_1"; }' - '];'), - }), - # 1 : no ens, 1 fcst, 1 obs -- use fcst for ens + # 0 : no ens, 1 fcst, 1 obs ({'FCST_VAR1_NAME': 'fcst_name_1', 'FCST_VAR1_LEVELS': 'FCST_LEVEL_1', 'OBS_VAR1_NAME': 'obs_name_1', 'OBS_VAR1_LEVELS': 'OBS_LEVEL_1', }, - {'METPLUS_ENS_FIELD': ('field = [' - '{ name="fcst_name_1"; level="FCST_LEVEL_1"; }' - '];'), - 'METPLUS_FCST_FIELD': ('field = [' + {'METPLUS_FCST_FIELD': ('field = [' '{ name="fcst_name_1"; level="FCST_LEVEL_1"; }' '];'), 'METPLUS_OBS_FIELD': ('field = [' @@ -580,6 +550,14 @@ def test_handle_climo_file_variables(metplus_config, config_overrides, ({'ENSEMBLE_STAT_ECLV_POINTS': '0.05', }, {'METPLUS_ECLV_POINTS': 'eclv_points = 0.05;'}), + ({'ENSEMBLE_STAT_ENS_THRESH': '0.1', }, + {'METPLUS_ENS_THRESH': 'ens_thresh = 0.1;'}), + + ({'ENSEMBLE_STAT_VLD_THRESH': '0.5', }, + {'METPLUS_VLD_THRESH': 'vld_thresh = 0.5;'}), + + ({'ENSEMBLE_STAT_OBS_THRESH': 'NA, 0.5', }, + {'METPLUS_OBS_THRESH': 'obs_thresh = [NA, 0.5];'}), ] ) @pytest.mark.wrapper_c @@ -633,8 +611,6 @@ def test_ensemble_stat_single_field(metplus_config, config_overrides, assert(actual_value == fcst_fmt) elif env_var_key == 'METPLUS_OBS_FIELD': assert (actual_value == obs_fmt) - elif env_var_key == 'METPLUS_ENS_FIELD': - assert (actual_value == ens_fmt) else: assert(env_var_values.get(env_var_key, '') == actual_value) diff --git a/metplus/wrappers/ensemble_stat_wrapper.py b/metplus/wrappers/ensemble_stat_wrapper.py index 61b493d82..67f58169d 100755 --- a/metplus/wrappers/ensemble_stat_wrapper.py +++ b/metplus/wrappers/ensemble_stat_wrapper.py @@ -34,16 +34,14 @@ class EnsembleStatWrapper(CompareGriddedWrapper): 'METPLUS_REGRID_DICT', 'METPLUS_CENSOR_THRESH', 'METPLUS_CENSOR_VAL', - 'METPLUS_ENS_FILE_TYPE', 'METPLUS_ENS_THRESH', - 'METPLUS_ENS_VLD_THRESH', - 'METPLUS_ENS_OBS_THRESH', - 'METPLUS_ENS_FIELD', + 'METPLUS_VLD_THRESH', 'METPLUS_FCST_FILE_TYPE', 'METPLUS_FCST_FIELD', 'METPLUS_OBS_FILE_TYPE', 'METPLUS_OBS_FIELD', 'METPLUS_MESSAGE_TYPE', + 'METPLUS_OBS_THRESH', 'METPLUS_DUPLICATE_FLAG', 'METPLUS_SKIP_CONST', 'METPLUS_OBS_ERROR_FLAG', @@ -122,23 +120,19 @@ def create_c_dict(self): 'LOG_ENSEMBLE_STAT_VERBOSITY', c_dict['VERBOSITY']) - c_dict['ENS_INPUT_DATATYPE'] = \ - self.config.getstr('config', 'ENS_ENSEMBLE_STAT_INPUT_DATATYPE', '') - - c_dict['FCST_INPUT_DATATYPE'] = \ - self.config.getstr('config', - 'FCST_ENSEMBLE_STAT_INPUT_DATATYPE', - '') + c_dict['FCST_INPUT_DATATYPE'] = ( + self.config.getraw('config', 'FCST_ENSEMBLE_STAT_INPUT_DATATYPE') + ) - c_dict['OBS_POINT_INPUT_DATATYPE'] = \ - self.config.getstr('config', - 'OBS_ENSEMBLE_STAT_INPUT_POINT_DATATYPE', - '') + c_dict['OBS_POINT_INPUT_DATATYPE'] = ( + self.config.getraw('config', + 'OBS_ENSEMBLE_STAT_INPUT_POINT_DATATYPE') + ) - c_dict['OBS_GRID_INPUT_DATATYPE'] = \ - self.config.getstr('config', - 'OBS_ENSEMBLE_STAT_INPUT_GRID_DATATYPE', - '') + c_dict['OBS_GRID_INPUT_DATATYPE'] = ( + self.config.getraw('config', + 'OBS_ENSEMBLE_STAT_INPUT_GRID_DATATYPE') + ) # check if more than 1 obs datatype is set to python embedding, # only one can be used @@ -169,23 +163,28 @@ def create_c_dict(self): # fill inputs that are not found with fake path to note it is missing c_dict['FCST_FILL_MISSING'] = True - c_dict['OBS_POINT_INPUT_DIR'] = \ + c_dict['OBS_POINT_INPUT_DIR'] = ( self.config.getdir('OBS_ENSEMBLE_STAT_POINT_INPUT_DIR', '') + ) - c_dict['OBS_POINT_INPUT_TEMPLATE'] = \ + c_dict['OBS_POINT_INPUT_TEMPLATE'] = ( self.config.getraw('config', 'OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE') + ) - c_dict['OBS_GRID_INPUT_DIR'] = \ + c_dict['OBS_GRID_INPUT_DIR'] = ( self.config.getdir('OBS_ENSEMBLE_STAT_GRID_INPUT_DIR', '') + ) - c_dict['OBS_GRID_INPUT_TEMPLATE'] = \ + c_dict['OBS_GRID_INPUT_TEMPLATE'] = ( self.config.getraw('config', 'OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE') + ) # The ensemble forecast files input directory and filename templates - c_dict['FCST_INPUT_DIR'] = \ + c_dict['FCST_INPUT_DIR'] = ( self.config.getdir('FCST_ENSEMBLE_STAT_INPUT_DIR', '') + ) c_dict['FCST_INPUT_TEMPLATE'] = ( self.config.getraw('config', 'FCST_ENSEMBLE_STAT_INPUT_TEMPLATE') @@ -198,26 +197,24 @@ def create_c_dict(self): self.log_error("Must set FCST_ENSEMBLE_STAT_INPUT_TEMPLATE or " "FCST_ENSEMBLE_STAT_INPUT_FILE_LIST") - c_dict['OUTPUT_DIR'] = self.config.getdir('ENSEMBLE_STAT_OUTPUT_DIR', - '') + c_dict['OUTPUT_DIR'] = ( + self.config.getdir('ENSEMBLE_STAT_OUTPUT_DIR', '') + ) if not c_dict['OUTPUT_DIR']: self.log_error("Must set ENSEMBLE_STAT_OUTPUT_DIR " "in configuration file") c_dict['OUTPUT_TEMPLATE'] = ( self.config.getraw('config', - 'ENSEMBLE_STAT_OUTPUT_TEMPLATE', - '') + 'ENSEMBLE_STAT_OUTPUT_TEMPLATE') ) # get ctrl (control) template/dir - optional - c_dict['CTRL_INPUT_TEMPLATE'] = self.config.getraw( - 'config', - 'ENSEMBLE_STAT_CTRL_INPUT_TEMPLATE' + c_dict['CTRL_INPUT_TEMPLATE'] = ( + self.config.getraw('config', 'ENSEMBLE_STAT_CTRL_INPUT_TEMPLATE') ) - c_dict['CTRL_INPUT_DIR'] = self.config.getdir( - 'ENSEMBLE_STAT_CTRL_INPUT_DIR', - '' + c_dict['CTRL_INPUT_DIR'] = ( + self.config.getdir('ENSEMBLE_STAT_CTRL_INPUT_DIR', '') ) # get climatology config variables @@ -235,24 +232,28 @@ def create_c_dict(self): ) # read by MET through environment variable, not set in MET config file - c_dict['MET_OBS_ERR_TABLE'] = \ - self.config.getstr('config', 'ENSEMBLE_STAT_MET_OBS_ERR_TABLE', '') + c_dict['MET_OBS_ERR_TABLE'] = ( + self.config.getraw('config', 'ENSEMBLE_STAT_MET_OBS_ERR_TABLE') + ) self.add_met_config(name='vld_thresh', data_type='float', - env_var_name='METPLUS_ENS_VLD_THRESH', - metplus_configs=['ENSEMBLE_STAT_ENS_VLD_THRESH', - 'ENSEMBLE_STAT_VLD_THRESH', - 'ENSEMBLE_STAT_ENS_VALID_THRESH', - 'ENSEMBLE_STAT_VALID_THRESH', - ]) + metplus_configs=[ + 'ENSEMBLE_STAT_FCST_VLD_THRESH', + 'FCST_ENSEMBLE_STAT_FCST_VLD_THRESH', + 'ENSEMBLE_STAT_VLD_THRESH', + 'ENSEMBLE_STAT_FCST_VALID_THRESH', + 'FCST_ENSEMBLE_STAT_VALID_THRESH', + 'ENSEMBLE_STAT_VALID_THRESH', + 'ENSEMBLE_STAT_ENS_VLD_THRESH', + ]) self.add_met_config(name='obs_thresh', data_type='list', - env_var_name='METPLUS_ENS_OBS_THRESH', - metplus_configs=['ENSEMBLE_STAT_ENS_OBS_THRESH', - 'ENSEMBLE_STAT_OBS_THRESH'], - extra_args={'remove_quotes': True}) + metplus_configs=['ENSEMBLE_STAT_OBS_THRESH', + 'ENSEMBLE_STAT_ENS_OBS_THRESH'], + extra_args={'remove_quotes': True, + 'allow_empty': True}) self.add_met_config(name='ens_ssvar_bin_size', data_type='float') @@ -261,7 +262,10 @@ def create_c_dict(self): data_type='float') self.add_met_config(name='ens_thresh', - data_type='float') + data_type='float', + metplus_configs=['ENSEMBLE_STAT_ENS_THRESH', + 'ENSEMBLE_STAT_FCST_ENS_THRESH', + 'FCST_ENSEMBLE_STAT_ENS_THRESH']) self.add_met_config(name='duplicate_flag', data_type='string', @@ -353,11 +357,6 @@ def create_c_dict(self): data_type='list', extra_args={'remove_quotes': True}) - # old method of setting MET config values - c_dict['ENS_THRESH'] = ( - self.config.getstr('config', 'ENSEMBLE_STAT_ENS_THRESH', '1.0') - ) - # signifies that the tool can be run without setting # field information for fcst and obs c_dict['VAR_LIST_OPTIONAL'] = True @@ -377,6 +376,41 @@ def create_c_dict(self): return c_dict + def get_command(self): + """! Builds the command to run the MET application + @rtype string + @return Returns a MET command with arguments that you can run + """ + cmd = '{} -v {} '.format(self.app_path, self.c_dict['VERBOSITY']) + + for args in self.args: + cmd += args + " " + + if not self.infiles: + self.log_error(self.app_name+": No input filenames specified") + return None + + for infile in self.infiles: + cmd += infile + " " + + if self.param != "": + cmd += self.param + " " + + for obs_file in self.point_obs_files: + if obs_file.startswith('PYTHON'): + obs_file = f"'{obs_file}'" + cmd += "-point_obs " + obs_file + " " + + for obs_file in self.grid_obs_files: + cmd += "-grid_obs " + obs_file + " " + + if not self.outdir: + self.log_error(self.app_name+": No output directory specified") + return None + + cmd += '-outdir {}'.format(self.outdir) + return cmd + def run_at_time_all_fields(self, time_info): """! Runs the MET application for a given time and forecast lead combination Args: @@ -389,15 +423,12 @@ def run_at_time_all_fields(self, time_info): fill_missing=fill_missing): return - # parse var list for ENS fields - ensemble_var_list = util.sub_var_list(self.c_dict['ENS_VAR_LIST_TEMP'], - time_info) - # parse optional var list for FCST and/or OBS fields var_list = util.sub_var_list(self.c_dict['VAR_LIST_TEMP'], time_info) - # if empty var list for FCST/OBS, use None as first var, else use first var in list + # if empty var list for FCST/OBS, use None as first var, + # else use first var in list if not var_list: first_var_info = None else: @@ -405,7 +436,8 @@ def run_at_time_all_fields(self, time_info): # get point observation file if requested if self.c_dict['OBS_POINT_INPUT_TEMPLATE']: - point_obs_path = self.find_data(time_info, first_var_info, 'OBS_POINT') + point_obs_path = self.find_data(time_info, first_var_info, + 'OBS_POINT') if point_obs_path is None: return @@ -413,7 +445,8 @@ def run_at_time_all_fields(self, time_info): # get grid observation file if requested if self.c_dict['OBS_GRID_INPUT_TEMPLATE']: - grid_obs_path = self.find_data(time_info, first_var_info, 'OBS_GRID') + grid_obs_path = self.find_data(time_info, first_var_info, + 'OBS_GRID') if grid_obs_path is None: return @@ -422,51 +455,31 @@ def run_at_time_all_fields(self, time_info): # set field info fcst_field = self.get_all_field_info(var_list, 'FCST') obs_field = self.get_all_field_info(var_list, 'OBS') - ens_field = self.get_all_field_info(ensemble_var_list, 'ENS') - if not fcst_field and not obs_field and not ens_field: - self.log_error("Could not build field info for fcst, obs, or ens") + if not fcst_field and not obs_field: + self.log_error("Could not build field info for fcst or obs") return - # if ens is not set, use fcst - if not ens_field: - ens_field = fcst_field - self.format_field('FCST', fcst_field) self.format_field('OBS', obs_field) - self.format_field('ENS', ens_field) - # run self.process_fields(time_info) - def get_all_field_info(self, var_list, data_type): """!Get field info based on data type""" field_list = [] for var_info in var_list: - if data_type == 'FCST': - level = var_info['fcst_level'] - thresh = var_info['fcst_thresh'] - name = var_info['fcst_name'] - extra = var_info['fcst_extra'] - elif data_type == 'OBS': - level = var_info['obs_level'] - thresh = var_info['obs_thresh'] - name = var_info['obs_name'] - extra = var_info['obs_extra'] - elif data_type == 'ENS': - level = var_info['ens_level'] - thresh = var_info['ens_thresh'] - name = var_info['ens_name'] - extra = var_info['ens_extra'] - else: - return '' + type_lower = data_type.lower() + level = var_info[f'{type_lower}_level'] + thresh = var_info[f'{type_lower}_thresh'] + name = var_info[f'{type_lower}_name'] + extra = var_info[f'{type_lower}_extra'] # check if python embedding is used and set up correctly # set env var for file type if it is used - pyEmbedIsOK = self.check_for_python_embedding(data_type, var_info) - if not pyEmbedIsOK: + py_embed_ok = self.check_for_python_embedding(data_type, var_info) + if not py_embed_ok: return '' next_field = self.get_field_info(v_level=level, @@ -484,48 +497,14 @@ def get_all_field_info(self, var_list, data_type): def set_environment_variables(self, time_info): self.add_env_var("MET_OBS_ERROR_TABLE", self.c_dict.get('MET_OBS_ERR_TABLE', '')) - - fcst_field = self.c_dict.get('FCST_FIELD', '') - self.add_env_var("FCST_FIELD", - fcst_field) - self.add_env_var("OBS_FIELD", - self.c_dict.get('OBS_FIELD', '')) - - ens_field = self.c_dict.get('ENS_FIELD', '') - # if ens field is not set, use fcst field - if not ens_field: - ens_field = fcst_field - - self.add_env_var("ENS_FIELD", ens_field) - - self.add_env_var("OBS_WINDOW_BEGIN", - str(self.c_dict['OBS_WINDOW_BEGIN'])) - self.add_env_var("OBS_WINDOW_END", - str(self.c_dict['OBS_WINDOW_END'])) - - # support old method of setting variables in MET config files - self.add_env_var('ENS_THRESH', - self.c_dict.get('ENS_THRESH')) - met_config_list_old = [ - 'OBTYPE', - 'INPUT_BASE', - 'ENS_FILE_TYPE', - 'FCST_FILE_TYPE', - 'OBS_FILE_TYPE', - ] - for item in met_config_list_old: - self.add_env_var(item, self.c_dict.get(item, '')) - - # call parent function to set common vars, user env vars, - # and print list of variables that are set super().set_environment_variables(time_info) def process_fields(self, time_info): """! Set and print environment variables, then build/run MET command - Args: - @param time_info dictionary containing timing information - @param fcst_field field information formatted for MET config file - @param obs_field field information formatted for MET config file + + @param time_info dictionary containing timing information + @param fcst_field field information formatted for MET config file + @param obs_field field information formatted for MET config file """ # set config file since command is reset after each run self.param = do_string_sub(self.c_dict['CONFIG_FILE'], @@ -539,60 +518,12 @@ def process_fields(self, time_info): # set environment variables that are passed to the MET config self.set_environment_variables(time_info) - # check if METplus can generate the command successfully - cmd = self.get_command() - if cmd is None: - self.log_error("Could not generate command") - return - # run the MET command self.build() - def clear(self): """!Unset class variables to prepare for next run time """ super().clear() self.point_obs_files = [] self.grid_obs_files = [] - - - def get_command(self): - """! Builds the command to run the MET application - @rtype string - @return Returns a MET command with arguments that you can run - """ - if self.app_path is None: - self.log_error(self.app_name + ": No app path specified. \ - You must use a subclass") - return None - - cmd = '{} -v {} '.format(self.app_path, self.c_dict['VERBOSITY']) - - for args in self.args: - cmd += args + " " - - if len(self.infiles) == 0: - self.log_error(self.app_name+": No input filenames specified") - return None - - for infile in self.infiles: - cmd += infile + " " - - if self.param != "": - cmd += self.param + " " - - for obs_file in self.point_obs_files: - if obs_file.startswith('PYTHON'): - obs_file = f"'{obs_file}'" - cmd += "-point_obs " + obs_file + " " - - for obs_file in self.grid_obs_files: - cmd += "-grid_obs " + obs_file + " " - - if self.outdir == "": - self.log_error(self.app_name+": No output directory specified") - return None - - cmd += '-outdir {}'.format(self.outdir) - return cmd diff --git a/parm/met_config/EnsembleStatConfig_wrapped b/parm/met_config/EnsembleStatConfig_wrapped index 664d52841..b0cbe84f3 100644 --- a/parm/met_config/EnsembleStatConfig_wrapped +++ b/parm/met_config/EnsembleStatConfig_wrapped @@ -39,20 +39,6 @@ ${METPLUS_CENSOR_VAL} cat_thresh = []; nc_var_str = ""; -// -// Ensemble product fields to be processed -// -ens = { - - ${METPLUS_ENS_FILE_TYPE} - - ${METPLUS_ENS_THRESH} - ${METPLUS_ENS_VLD_THRESH} - ${METPLUS_ENS_OBS_THRESH} - - ${METPLUS_ENS_FIELD} -} - //ens_member_ids = ${METPLUS_ENS_MEMBER_IDS} @@ -81,7 +67,8 @@ ${METPLUS_ECLV_POINTS} fcst = { ${METPLUS_FCST_FILE_TYPE} - + ${METPLUS_ENS_THRESH} + ${METPLUS_VLD_THRESH} ${METPLUS_FCST_FIELD} } @@ -101,7 +88,8 @@ obs = { ${METPLUS_MESSAGE_TYPE} sid_exc = []; -obs_thresh = [ NA ]; +//obs_thresh = [ NA ]; +${METPLUS_OBS_THRESH} //obs_quality_inc = ${METPLUS_OBS_QUALITY_INC} From 2e4f3e3d8e6a19c2e218d9042e205a8e724daf63 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 12:31:36 -0600 Subject: [PATCH 15/28] switch MET tag to test changes to wrapper --- .github/workflows/testing.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 305e2e80f..9cbad020f 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -86,6 +86,7 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} EXTERNAL_TRIGGER: ${{ needs.job_control.outputs.external_trigger }} #MET_FORCE_TAG: 10.1.0 + MET_FORCE_TAG: feature_1908_remove_ens update_data_volumes: name: Docker Setup - Update Data Volumes From 792f1b5875a14a2a5f1489494ce21bf6740c7320 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Tue, 20 Sep 2022 12:47:24 -0600 Subject: [PATCH 16/28] per #1816, update use case config files that run EnsembleStat with new config variables and remove variables that are no longer used - ci-run-all-cases --- .../EnsembleStat/EnsembleStat.conf | 31 ++-------- .../EnsembleStat_python_embedding.conf | 26 +++----- .../EnsembleStat_fcstICAP_obsMODIS_aod.conf | 8 +-- .../EnsembleStat_fcstWOFS_obsWOFS.conf | 21 +++---- ...tat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf | 61 ++++++++++++++----- 5 files changed, 67 insertions(+), 80 deletions(-) diff --git a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf index 4f75ddbdb..5877f0ec7 100644 --- a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf +++ b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf @@ -85,29 +85,6 @@ OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} -ENS_VAR1_NAME = APCP -ENS_VAR1_LEVELS = A24 -ENS_VAR1_THRESH = >0.0, >=10.0 - -ENS_VAR2_NAME = REFC -ENS_VAR2_LEVELS = L0 -ENS_VAR2_THRESH = >=35.0 - -ENS_VAR2_OPTIONS = GRIB1_ptv = 129; - -ENS_VAR3_NAME = UGRD -ENS_VAR3_LEVELS = Z10 -ENS_VAR3_THRESH = >=5.0 - -ENS_VAR4_NAME = VGRD -ENS_VAR4_LEVELS = Z10 -ENS_VAR4_THRESH = >=5.0 - -ENS_VAR5_NAME = WIND -ENS_VAR5_LEVELS = Z10 -ENS_VAR5_THRESH = >=5.0 - - ### # EnsembleStat Settings # https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ensemblestat @@ -121,12 +98,12 @@ ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped ENSEMBLE_STAT_DESC = NA -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = -5400 -OBS_ENSEMBLE_STAT_WINDOW_END = 5400 +ENSEMBLE_STAT_OBS_WINDOW_BEGIN = -5400 +ENSEMBLE_STAT_OBS_WINDOW_END = 5400 ENSEMBLE_STAT_ENS_THRESH = 1.0 -ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 +ENSEMBLE_STAT_VLD_THRESH = 1.0 ENSEMBLE_STAT_OUTPUT_PREFIX = @@ -146,7 +123,7 @@ ENSEMBLE_STAT_CENSOR_VAL = #ENSEMBLE_STAT_ECLV_POINTS = 0.05 ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC - +#ENSEMBLE_STAT_OBS_THRESH = ENSEMBLE_STAT_DUPLICATE_FLAG = NONE ENSEMBLE_STAT_SKIP_CONST = False diff --git a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf index 8bdf7689c..3cf046e3e 100644 --- a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf +++ b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf @@ -41,8 +41,6 @@ LOOP_ORDER = times # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info ### -ENS_ENSEMBLE_STAT_INPUT_DATATYPE = PYTHON_NUMPY - FCST_ENSEMBLE_STAT_INPUT_DATATYPE = PYTHON_NUMPY OBS_ENSEMBLE_STAT_INPUT_GRID_DATATYPE = PYTHON_NUMPY @@ -74,7 +72,6 @@ OBS_FILE_WINDOW_END = 0 # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info ### -ENS_VAR1_NAME = {MET_INSTALL_DIR}/share/met/python/read_ascii_numpy.py MET_PYTHON_INPUT_ARG FCST FCST_VAR1_NAME = {MET_INSTALL_DIR}/share/met/python/read_ascii_numpy.py MET_PYTHON_INPUT_ARG FCST OBS_VAR1_NAME = {MET_INSTALL_DIR}/share/met/python/read_ascii_numpy.py MET_PYTHON_INPUT_ARG OBS @@ -99,7 +96,7 @@ OBS_ENSEMBLE_STAT_WINDOW_END = 5400 ENSEMBLE_STAT_N_MEMBERS = 2 ENSEMBLE_STAT_ENS_THRESH = 1.0 -ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 +ENSEMBLE_STAT_VLD_THRESH = 1.0 ENSEMBLE_STAT_REGRID_TO_GRID = NONE @@ -114,20 +111,13 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = BOTH ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = BOTH ENSEMBLE_STAT_OUTPUT_FLAG_RELP = BOTH -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = TRUE #ENSEMBLE_STAT_MET_OBS_ERR_TABLE = diff --git a/parm/use_cases/model_applications/air_quality_and_comp/EnsembleStat_fcstICAP_obsMODIS_aod.conf b/parm/use_cases/model_applications/air_quality_and_comp/EnsembleStat_fcstICAP_obsMODIS_aod.conf index ade151271..213142de0 100644 --- a/parm/use_cases/model_applications/air_quality_and_comp/EnsembleStat_fcstICAP_obsMODIS_aod.conf +++ b/parm/use_cases/model_applications/air_quality_and_comp/EnsembleStat_fcstICAP_obsMODIS_aod.conf @@ -41,8 +41,6 @@ LOOP_ORDER = times # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info ### -ENS_ENSEMBLE_STAT_INPUT_DATATYPE = PYTHON_NUMPY - FCST_ENSEMBLE_STAT_INPUT_DATATYPE = PYTHON_NUMPY FCST_ENSEMBLE_STAT_INPUT_DIR = FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = 0, 1, 2, 3, 4, 5, 6 @@ -61,8 +59,6 @@ ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} CONFIG_DIR = {PARM_BASE}/use_cases/model_applications/air_quality_and_comp/EnsembleStat_fcstICAP_obsMODIS_aod -ENS_VAR1_NAME = {CONFIG_DIR}/forecast_embedded.py {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR}/icap_{init?fmt=%Y%m%d%H}_aod.nc:total_aod:{valid?fmt=%Y%m%d%H%M}:MET_PYTHON_INPUT_ARG - FCST_VAR1_NAME = {CONFIG_DIR}/forecast_embedded.py {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR}/icap_{init?fmt=%Y%m%d%H}_aod.nc:total_aod:{valid?fmt=%Y%m%d%H%M}:MET_PYTHON_INPUT_ARG OBS_VAR1_NAME = {CONFIG_DIR}/analysis_embedded.py {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR}/AGGR_HOURLY_{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}_1deg_global_archive.nc:aod_nrl_total:Mean @@ -76,8 +72,8 @@ OBS_VAR1_NAME = {CONFIG_DIR}/analysis_embedded.py {OBS_ENSEMBLE_STAT_GRID_INPUT_ MODEL = ICAP OBTYPE = NRL_AOD -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = -5400 -OBS_ENSEMBLE_STAT_WINDOW_END = 5400 +ENSEMBLE_STAT_OBS_WINDOW_BEGIN = -5400 +ENSEMBLE_STAT_OBS_WINDOW_END = 5400 ENSEMBLE_STAT_N_MEMBERS = 7 diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index 89937dc81..a0ff53f56 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -361,20 +361,13 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = FALSE ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_PCP_{init?fmt=%H%M}_{lead?fmt=%H%M}00L_A1 diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf index 830276b6d..1db04edbd 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf +++ b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf @@ -11,7 +11,7 @@ # https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list ### -PROCESS_LIST = PB2NC, EnsembleStat +PROCESS_LIST = PB2NC, EnsembleStat, GenEnsProd ### @@ -71,6 +71,12 @@ ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField/EnsembleStat ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M} +# GenEnsProd +GEN_ENS_PROD_INPUT_DIR = {FCST_ENSEMBLE_STAT_INPUT_DIR} +GEN_ENS_PROD_INPUT_TEMPLATE = {FCST_ENSEMBLE_STAT_INPUT_TEMPLATE} + +GEN_ENS_PROD_OUTPUT_DIR = {ENSEMBLE_STAT_OUTPUT_DIR} +GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/ensemble_stat_{ENSEMBLE_STAT_OUTPUT_PREFIX}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc ### # Field Info @@ -179,22 +185,47 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = BOTH ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = BOTH ENSEMBLE_STAT_OUTPUT_FLAG_RELP = BOTH -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE + +ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = FALSE CONFIG_DIR={PARM_BASE}/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {CONFIG_DIR}/obs_error_table_V8.0.txt ENSEMBLE_STAT_OUTPUT_PREFIX = HRRRE_F{lead?fmt=%3H}_ADPSFC + +### +# GenEnsProd Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#genensprod +### + + +GEN_ENS_PROD_OBS_WINDOW_BEGIN = -900 +GEN_ENS_PROD_OBS_WINDOW_END = 900 + +GEN_ENS_PROD_N_MEMBERS = 2 + +GEN_ENS_PROD_ENS_THRESH = 1.0 + +GEN_ENS_PROD_REGRID_TO_GRID = FCST +GEN_ENS_PROD_REGRID_METHOD = BILIN +GEN_ENS_PROD_REGRID_WIDTH = 2 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANK = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT = FALSE \ No newline at end of file From 29d05e2ee290e9b65bc1f50fec693c3ef6b8a9b0 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 06:06:36 -0600 Subject: [PATCH 17/28] use MET develop since changes for ensemble_stat have been merged and ci-run-all-diff --- .github/workflows/testing.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 9cbad020f..305e2e80f 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -86,7 +86,6 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} EXTERNAL_TRIGGER: ${{ needs.job_control.outputs.external_trigger }} #MET_FORCE_TAG: 10.1.0 - MET_FORCE_TAG: feature_1908_remove_ens update_data_volumes: name: Docker Setup - Update Data Volumes From 01763dfd16763e581716726b4162e7202e7876f0 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 06:37:17 -0600 Subject: [PATCH 18/28] turn on valid count in nc orank output --- .../precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index a0ff53f56..af5471bc5 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -366,7 +366,7 @@ ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = FALSE ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE -ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = FALSE ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_PCP_{init?fmt=%H%M}_{lead?fmt=%H%M}00L_A1 From 0a32c8c660b793ac2be4efc52d28ea61b393b28e Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 06:38:02 -0600 Subject: [PATCH 19/28] run single use case diff ci-run-diff --- .github/parm/use_case_groups.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 0e9a05056..3bb687f2c 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -117,7 +117,7 @@ { "category": "precipitation", "index_list": "3-7", - "run": false + "run": true }, { "category": "precipitation", From 946813381944e582bc25e3918a8c2e8258cf63fa Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 06:55:19 -0600 Subject: [PATCH 20/28] turn on raw output and ci-run-diff --- .../precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index af5471bc5..8624d7aae 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -363,7 +363,7 @@ ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE -ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = FALSE +ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE From 26ceecd834ce2de300dfba5a07a24aef6358cd8a Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 07:15:44 -0600 Subject: [PATCH 21/28] turn off use case --- .github/parm/use_case_groups.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 3bb687f2c..0e9a05056 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -117,7 +117,7 @@ { "category": "precipitation", "index_list": "3-7", - "run": true + "run": false }, { "category": "precipitation", From d5ddda645c6f5cdefd282f346608797e0959efab Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 07:18:49 -0600 Subject: [PATCH 22/28] per #1816, rename output files generated by gen_ens_prod to reflect that tool instead of ensemble_stat -- this was done to make diffing output easier from the previous PR of changes, but the file names should now reflect the tool being used --- .../precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf | 4 ++-- .../precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf | 2 +- .../EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf | 2 +- .../EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf index 258be24d7..ef33e6a00 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf @@ -44,8 +44,8 @@ LOOP_ORDER = processes GEN_ENS_PROD_INPUT_DIR = {INPUT_BASE}/model_applications/precipitation/HRRRE/pcp_combine GEN_ENS_PROD_INPUT_TEMPLATE = hrrrebegin_end_incr(1,3,1,2)_{init?fmt=%Y%m%d%H}f{lead?fmt=%HHH}_A03.nc -GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/precipitation/EnsembleSTat_fcstHRRRE_FcstOnly_NetCDF/EnsembleStat -GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/ensemble_stat_{ENS_VAR1_NAME}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc +GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF/EnsembleStat +GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/gen_ens_prod_{ENS_VAR1_NAME}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc ### diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf index 8624d7aae..def657f8c 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf +++ b/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstWOFS_obsWOFS.conf @@ -55,7 +55,7 @@ GEN_ENS_PROD_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} GEN_ENS_PROD_INPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/ENS_MEM_??/wofs??_PCP_{init?fmt=%Y%m%d}_{init?fmt=%H%M}_{valid?fmt=%H%M}_A1.nc GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/{MODEL}/ensemble_stat -GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/ensemble_stat_{MODEL}_PCP_{init?fmt=%H%M}_{lead?fmt=%H%M}00L_A1_{init?fmt=%Y%m%d}_{valid?fmt=%H%M}00V_ens.nc +GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d?shift=-44100}/{init?fmt=%H%M}/gen_ens_prod_{MODEL}_PCP_{init?fmt=%H%M}_{lead?fmt=%H%M}00L_A1_{init?fmt=%Y%m%d}_{valid?fmt=%H%M}00V_ens.nc # EnsembleStat diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf index 1db04edbd..9d252c290 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf +++ b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf @@ -76,7 +76,7 @@ GEN_ENS_PROD_INPUT_DIR = {FCST_ENSEMBLE_STAT_INPUT_DIR} GEN_ENS_PROD_INPUT_TEMPLATE = {FCST_ENSEMBLE_STAT_INPUT_TEMPLATE} GEN_ENS_PROD_OUTPUT_DIR = {ENSEMBLE_STAT_OUTPUT_DIR} -GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/ensemble_stat_{ENSEMBLE_STAT_OUTPUT_PREFIX}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc +GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/gen_ens_prod_{ENSEMBLE_STAT_OUTPUT_PREFIX}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc ### # Field Info diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf index 3176dab1a..33071f3c5 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf +++ b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf @@ -56,7 +56,7 @@ GEN_ENS_PROD_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} GEN_ENS_PROD_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} GEN_ENS_PROD_OUTPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} -GEN_ENS_PROD_OUTPUT_TEMPLATE = ensemble_stat_{valid?fmt=%Y%m%d}_120000V_ens.nc +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{valid?fmt=%Y%m%d}_120000V_ens.nc FCST_REGRID_DATA_PLANE_RUN = True From a7ae3388b9d40d9986b13681bb7fa295313a4c21 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 07:37:17 -0600 Subject: [PATCH 23/28] per #1816, rename use cases that run GenEnsProd instead of EnsembleStat, moved short_range use cases to be in alphabetical order --- ...-GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.png} | Bin ...rod_fcstHRRR_fcstOnly_SurrogateSevere.png} | Bin ...> GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.py} | 65 ++++++------------ ...Prod_fcstHRRR_fcstOnly_SurrogateSevere.py} | 32 ++++----- internal_tests/use_cases/all_use_cases.txt | 28 ++++---- ...GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf} | 4 +- ...od_fcstHRRR_fcstOnly_SurrogateSevere.conf} | 2 +- 7 files changed, 55 insertions(+), 76 deletions(-) rename docs/_static/{precipitation-EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.png => precipitation-GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.png} (100%) rename docs/_static/{short_range-EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.png => short_range-GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.png} (100%) rename docs/use_cases/model_applications/precipitation/{EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.py => GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.py} (55%) rename docs/use_cases/model_applications/short_range/{EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.py => GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.py} (79%) rename parm/use_cases/model_applications/precipitation/{EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf => GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf} (95%) rename parm/use_cases/model_applications/short_range/{EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf => GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf} (98%) diff --git a/docs/_static/precipitation-EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.png b/docs/_static/precipitation-GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.png similarity index 100% rename from docs/_static/precipitation-EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.png rename to docs/_static/precipitation-GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.png diff --git a/docs/_static/short_range-EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.png b/docs/_static/short_range-GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.png similarity index 100% rename from docs/_static/short_range-EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.png rename to docs/_static/short_range-GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.png diff --git a/docs/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.py b/docs/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.py similarity index 55% rename from docs/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.py rename to docs/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.py index 360f80065..b6c80d64c 100644 --- a/docs/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.py +++ b/docs/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.py @@ -1,8 +1,8 @@ """ -Ensemble-Stat: Basic Post-Processing only -================================================================ +Gen-Ens-Prod: Basic Post-Processing only +======================================== -model_application/precipitation/EnsembleStat_fcstHRRRE +model_application/precipitation/GenEnsProd_fcstHRRRE _FcstOnly_NetCDF.conf """ @@ -25,7 +25,7 @@ # METplus Components # ------------------ # -# This use case runs Ensemble-Stat on HRRRE data from 3 members after +# This use case runs gen_ens_prod on HRRRE data from 3 members after # running it through pcp_combine to create a 3 hour precipitation accumulation ############################################################################### @@ -33,7 +33,7 @@ # ---------------- # # The following tools are used for each run time: -# EnsembleStat +# GenEnsProd # # This example loops by initialization time. For each initialization time # it will process forecast leads 3, 6, 9 and 12 @@ -70,12 +70,11 @@ # METplus Configuration # --------------------- # -# METplus first loads all of the configuration files found in parm/metplus_config, +# METplus first loads all of the configurations found in parm/metplus_config, # then it loads any configuration files passed to METplus via the command line -# with the -c option, i.e. -c parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf # # .. highlight:: bash -# .. literalinclude:: ../../../../parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf +# .. literalinclude:: ../../../../parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf ############################################################################## # MET Configuration @@ -89,39 +88,19 @@ # If there is a setting in the MET configuration file that is currently not supported by METplus you'd like to control, please refer to: # :ref:`Overriding Unsupported MET config file settings` # -# .. note:: See the :ref:`EnsembleStat MET Configuration` section of the User's Guide for more information on the environment variables used in the file below: +# .. note:: See the :ref:`GenEnsProd MET Configuration` section of the User's Guide for more information on the environment variables used in the file below: # # .. highlight:: bash -# .. literalinclude:: ../../../../parm/met_config/EnsembleStatConfig_wrapped +# .. literalinclude:: ../../../../parm/met_config/GenEnsProdConfig_wrapped ############################################################################## # Running METplus # --------------- # -# This use case can be run two ways: +# The command to run this use case is:: # -# 1) Passing in EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf then a user-specific system configuration file:: +# run_metplus.py /path/to/METplus/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf # -# run_metplus.py -c /path/to/METplus/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf -c /path/to/user_system.conf -# -# 2) Modifying the configurations in parm/metplus_config, then passing in EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf:: -# -# run_metplus.py -c /path/to/METplus/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf -# -# The former method is recommended. Whether you add them to a user-specific configuration file or modify the metplus_config files, the following variables must be set correctly: -# -# * **INPUT_BASE** - Path to directory where sample data tarballs are unpacked (See Datasets section to obtain tarballs). This is not required to run METplus, but it is required to run the examples in parm/use_cases -# * **OUTPUT_BASE** - Path where METplus output will be written. This must be in a location where you have write permissions -# * **MET_INSTALL_DIR** - Path to location where MET is installed locally -# -# Example User Configuration File:: -# -# [dir] -# INPUT_BASE = /path/to/sample/input/data -# OUTPUT_BASE = /path/to/output/dir -# MET_INSTALL_DIR = /path/to/met-X.Y -# -# **NOTE:** All of these items must be found under the [dir] section. # ############################################################################## @@ -133,22 +112,22 @@ # INFO: METplus has successfully finished running. # # Refer to the value set for **OUTPUT_BASE** to find where the output data was generated. -# Output for this use case will be found in model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF/EnsembleStat (relative to **OUTPUT_BASE**) +# Output for this use case will be found in model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF/GenEnsProd (relative to **OUTPUT_BASE**) # The following folder/file combination will be created: # # -201905191200 # -# * ensemble_stat_APCP_03_20190519_150000V_ens.nc -# * ensemble_stat_APCP_03_20190519_180000V_ens.nc -# * ensemble_stat_APCP_03_20190519_210000V_ens.nc -# * ensemble_stat_APCP_03_20190520_000000V_ens.nc +# * gen_ens_prod_APCP_03_20190519_150000V_ens.nc +# * gen_ens_prod_APCP_03_20190519_180000V_ens.nc +# * gen_ens_prod_APCP_03_20190519_210000V_ens.nc +# * gen_ens_prod_APCP_03_20190520_000000V_ens.nc # # -201905200000 # -# * ensemble_stat_APCP_03_20190520_030000V_ens.nc -# * ensemble_stat_APCP_03_20190520_060000V_ens.nc -# * ensemble_stat_APCP_03_20190520_090000V_ens.nc -# * ensemble_stat_APCP_03_20190520_120000V_ens.nc +# * gen_ens_prod_APCP_03_20190520_030000V_ens.nc +# * gen_ens_prod_APCP_03_20190520_060000V_ens.nc +# * gen_ens_prod_APCP_03_20190520_090000V_ens.nc +# * gen_ens_prod_APCP_03_20190520_120000V_ens.nc ############################################################################## @@ -157,7 +136,7 @@ # # .. note:: # -# * EnsembleStatToolUseCase +# * GenEnsProdToolUseCase # * NOAAHWTOrgUseCase # * PrecipitationAppUseCase # * NetCDFFileUseCase @@ -170,5 +149,5 @@ # # # -# sphinx_gallery_thumbnail_path = '_static/precipitation-EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.png' +# sphinx_gallery_thumbnail_path = '_static/precipitation-GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.png' # diff --git a/docs/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.py b/docs/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.py similarity index 79% rename from docs/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.py rename to docs/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.py index 2eb3b906d..c638b039d 100644 --- a/docs/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.py +++ b/docs/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.py @@ -1,10 +1,10 @@ """ -Surrogate Severe Calculation: PCPCombine, EnsembleStat, and RegridDataPlane -=================================================================================================== +Surrogate Severe Calculation: PCPCombine, GenEnsProd, and RegridDataPlane +========================================================================= model_applications/ short_range/ -EnsembleStat_fcstHRRR_fcstOnly +GenEnsProd_fcstHRRR_fcstOnly _SurrogateSevere.conf """ @@ -12,7 +12,7 @@ # Scientific Objective # -------------------- # -# Run PCPCombine, EnsembleStat, and RegridDataPlane tools to create surrogate severe probability +# Run PCPCombine, GenEnsProd, and RegridDataPlane tools to create surrogate severe probability # forecasts (SSPFs) for a given date. SSPFs are a severe weather forecasting tool and is a techniqu # used by the Storm Prediction Center (SPC) as well as others. SSPFs are based on updraft helicity # (UH; UH = ∫z0 to zt (ω * ζ) dz) since certain thresholds of UH have been shown as good proxies for# severe weather. SSPFs can be thought of as the perfect model forecast. They are derived as follows: @@ -44,25 +44,25 @@ # METplus Components # ------------------ # -# This use case runs the PCPCombine, EnsembleStat, and RegridDataPlane MET tools. +# This use case runs the PCPCombine, GenEnsProd, and RegridDataPlane MET tools. ################################################################################################### # METplus Workflow # ---------------- # # This workflow loops over the data by process, meaning that each MET tool will run over all times -# before moving onto the tool. PCPCombine is called first, followed by EnsembleStat, +# before moving onto the tool. PCPCombine is called first, followed by GenEnsProd, # and then, finally, RegridDataPlane. ################################################################################################### # METplus Configuration # --------------------- # -# METplus first loads all of the configuration files found in parm/metplus_config. Then, it loads -# any configuration files passed to METplus by the command line with the -c option. +# METplus first loads all of the configurations found in parm/metplus_config. +# Then it loads any configuration files passed to METplus by the command line. # # .. highlight:: bash -# .. literalinclude:: ../../../../parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf +# .. literalinclude:: ../../../../parm/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf ################################################################################################### # MET Configuration @@ -76,10 +76,10 @@ # If there is a setting in the MET configuration file that is currently not supported by METplus you'd like to control, please refer to: # :ref:`Overriding Unsupported MET config file settings` # -# .. note:: See the :ref:`EnsembleStat MET Configuration` section of the User's Guide for more information on the environment variables used in the file below: +# .. note:: See the :ref:`GenEnsProd MET Configuration` section of the User's Guide for more information on the environment variables used in the file below: # # .. highlight:: bash -# .. literalinclude:: ../../../../parm/met_config/EnsembleStatConfig_wrapped +# .. literalinclude:: ../../../../parm/met_config/GenEnsProdConfig_wrapped ################################################################################################### # Running METplus @@ -87,7 +87,7 @@ # # The command to run this use case is:: # -# run_metplus.py -c /path/to/METplus/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf +# run_metplus.py /path/to/METplus/parm/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf ################################################################################################### # Expected Output @@ -105,9 +105,9 @@ # # * 20190518/hrrr_ncep_2019051800f036.nc # -# **EnsembleStat output**: +# **GenEnsProd output**: # -# * ensemble_stat_20190519_120000V_ens.nc +# * gen_ens_prod_20190519_120000V_ens.nc # # **RegridDataPlane output**: # @@ -121,12 +121,12 @@ # .. note:: # # * PCPCombineUseCase -# * EnsembleStatUseCase +# * GenEnsProdUseCase # * RegridDataPlaneUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # # # -# sphinx_gallery_thumbnail_path = '_static/short_range-EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.png' +# sphinx_gallery_thumbnail_path = '_static/short_range-GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.png' # diff --git a/internal_tests/use_cases/all_use_cases.txt b/internal_tests/use_cases/all_use_cases.txt index a24f51938..c70cae161 100644 --- a/internal_tests/use_cases/all_use_cases.txt +++ b/internal_tests/use_cases/all_use_cases.txt @@ -71,19 +71,6 @@ Category: climate 1::MODE_fcstCESM_obsGPCP_AsianMonsoonPrecip::model_applications/climate/MODE_fcstCESM_obsGPCP_AsianMonsoonPrecip.conf -Category: short_range -0::EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField::model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf -1::MODE_fcstHRRR_obsMRMS_Hail_GRIB2::model_applications/short_range/MODE_fcstHRRR_obsMRMS_Hail_GRIB2.conf -2::EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere::model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf -3::GridStat_fcstHRRR_obsPracPerfect_SurrogateSevere::model_applications/short_range/GridStat_fcstHRRR_obsPracPerfect_SurrogateSevere.conf -4::GridStat_fcstHRRR_obsPracPerfect_SurrogateSevereProb::model_applications/short_range/GridStat_fcstHRRR_obsPracPerfect_SurrogateSevereProb.conf -5::Point2Grid_obsLSR_ObsOnly_PracticallyPerfect::model_applications/short_range/Point2Grid_obsLSR_ObsOnly_PracticallyPerfect.conf -6::GridStat_fcstFV3_obsGOES_BrightnessTempDmap:: model_applications/short_range/GridStat_fcstFV3_obsGOES_BrightnessTempDmap.conf -7::MODE_fcstFV3_obsGOES_BrightnessTemp::model_applications/short_range/MODE_fcstFV3_obsGOES_BrightnessTemp.conf,model_applications/short_range/MODE_fcstFV3_obsGOES_BrightnessTemp/ci_overrides.conf -8::MODE_fcstFV3_obsGOES_BrightnessTempObjs:: model_applications/short_range/MODE_fcstFV3_obsGOES_BrightnessTempObjs.conf -9::METdbLoad_fcstFV3_obsGoes_BrightnessTemp::model_applications/short_range/METdbLoad_fcstFV3_obsGoes_BrightnessTemp.conf:: metdataio_env,metviewer - - Category: data_assimilation 0::StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface::model_applications/data_assimilation/StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface.conf @@ -113,7 +100,7 @@ Category: medium_range Category: precipitation -0::EnsembleStat_fcstHRRRE_FcstOnly_NetCDF:: model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf +0::GenEnsProd_fcstHRRRE_FcstOnly_NetCDF:: model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf 1::GridStat_fcstHREFmean_obsStgIV_Gempak:: model_applications/precipitation/GridStat_fcstHREFmean_obsStgIV_Gempak.conf:: gempak_env 2::GridStat_fcstHREFmean_obsStgIV_NetCDF:: model_applications/precipitation/GridStat_fcstHREFmean_obsStgIV_NetCDF.conf 3::GridStat_fcstGFS_obsCCPA_GRIB:: model_applications/precipitation/GridStat_fcstGFS_obsCCPA_GRIB.conf @@ -149,6 +136,19 @@ Category: s2s_mjo 4:: UserScript_obsCFSR_obsOnly_MJO_ENSO:: model_applications/s2s_mjo/UserScript_obsCFSR_obsOnly_MJO_ENSO.conf:: spacetime_env, metdataio +Category: short_range +0::EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField::model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf +1::MODE_fcstHRRR_obsMRMS_Hail_GRIB2::model_applications/short_range/MODE_fcstHRRR_obsMRMS_Hail_GRIB2.conf +2::GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere::model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf +3::GridStat_fcstHRRR_obsPracPerfect_SurrogateSevere::model_applications/short_range/GridStat_fcstHRRR_obsPracPerfect_SurrogateSevere.conf +4::GridStat_fcstHRRR_obsPracPerfect_SurrogateSevereProb::model_applications/short_range/GridStat_fcstHRRR_obsPracPerfect_SurrogateSevereProb.conf +5::Point2Grid_obsLSR_ObsOnly_PracticallyPerfect::model_applications/short_range/Point2Grid_obsLSR_ObsOnly_PracticallyPerfect.conf +6::GridStat_fcstFV3_obsGOES_BrightnessTempDmap:: model_applications/short_range/GridStat_fcstFV3_obsGOES_BrightnessTempDmap.conf +7::MODE_fcstFV3_obsGOES_BrightnessTemp::model_applications/short_range/MODE_fcstFV3_obsGOES_BrightnessTemp.conf,model_applications/short_range/MODE_fcstFV3_obsGOES_BrightnessTemp/ci_overrides.conf +8::MODE_fcstFV3_obsGOES_BrightnessTempObjs:: model_applications/short_range/MODE_fcstFV3_obsGOES_BrightnessTempObjs.conf +9::METdbLoad_fcstFV3_obsGoes_BrightnessTemp::model_applications/short_range/METdbLoad_fcstFV3_obsGoes_BrightnessTemp.conf:: metdataio_env,metviewer + + Category: space_weather 0::GridStat_fcstGloTEC_obsGloTEC_vx7:: model_applications/space_weather/GridStat_fcstGloTEC_obsGloTEC_vx7.conf 1::GenVxMask_fcstGloTEC_FcstOnly_solar_altitude:: model_applications/space_weather/GenVxMask_fcstGloTEC_FcstOnly_solar_altitude.conf diff --git a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf b/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf similarity index 95% rename from parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf rename to parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf index ef33e6a00..c63e53d19 100644 --- a/parm/use_cases/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.conf +++ b/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf @@ -1,7 +1,7 @@ [config] # Documentation for this use case can be found at -# https://metplus.readthedocs.io/en/latest/generated/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF.html +# https://metplus.readthedocs.io/en/latest/generated/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.html # For additional information, please see the METplus Users Guide. # https://metplus.readthedocs.io/en/latest/Users_Guide @@ -44,7 +44,7 @@ LOOP_ORDER = processes GEN_ENS_PROD_INPUT_DIR = {INPUT_BASE}/model_applications/precipitation/HRRRE/pcp_combine GEN_ENS_PROD_INPUT_TEMPLATE = hrrrebegin_end_incr(1,3,1,2)_{init?fmt=%Y%m%d%H}f{lead?fmt=%HHH}_A03.nc -GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/precipitation/EnsembleStat_fcstHRRRE_FcstOnly_NetCDF/EnsembleStat +GEN_ENS_PROD_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF/GenEnsProd GEN_ENS_PROD_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}/gen_ens_prod_{ENS_VAR1_NAME}_{valid?fmt=%Y%m%d_%H%M%S}V_ens.nc diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf b/parm/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf similarity index 98% rename from parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf rename to parm/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf index 33071f3c5..e63c21a0e 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.conf +++ b/parm/use_cases/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.conf @@ -1,7 +1,7 @@ [config] # Documentation for this use case can be found at -# https://metplus.readthedocs.io/en/latest/generated/model_applications/short_range/EnsembleStat_fcstHRRR_fcstOnly_SurrogateSevere.html +# https://metplus.readthedocs.io/en/latest/generated/model_applications/short_range/GenEnsProd_fcstHRRR_fcstOnly_SurrogateSevere.html # For additional information, please see the METplus Users Guide. # https://metplus.readthedocs.io/en/latest/Users_Guide From 0e69e76b506e5093632f387b77abe2e83dc83c54 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 09:05:05 -0600 Subject: [PATCH 24/28] per #1816, fixed incorrect GenEnsProdConfig settings -- ensemble_flag contains climo and climo_cdp instead of rank, weight, or climo_cdf --- docs/Users_Guide/glossary.rst | 4 ++-- docs/Users_Guide/wrappers.rst | 6 +++--- .../gen_ens_prod/test_gen_ens_prod_wrapper.py | 16 ++++++++-------- metplus/wrappers/gen_ens_prod_wrapper.py | 4 ++-- .../met_tool_wrapper/GenEnsProd/GenEnsProd.conf | 2 +- .../GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf | 2 -- ...leStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf | 2 -- 7 files changed, 16 insertions(+), 20 deletions(-) diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index b5390441b..e78fb269a 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -8672,8 +8672,8 @@ METplus Configuration Glossary | *Used by:* GenEnsProd - GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF - Specify the value for 'ensemble_flag.climo_cdf' in the MET configuration file for GenEnsProd. + GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDP + Specify the value for 'ensemble_flag.climo_cdp' in the MET configuration file for GenEnsProd. | *Used by:* GenEnsProd diff --git a/docs/Users_Guide/wrappers.rst b/docs/Users_Guide/wrappers.rst index bf045de7c..0956b88be 100644 --- a/docs/Users_Guide/wrappers.rst +++ b/docs/Users_Guide/wrappers.rst @@ -1107,7 +1107,7 @@ METplus Configuration | :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_NEP` | :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP` | :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO` -| :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF` +| :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDP` | :term:`GEN_ENS_PROD_ENS_MEMBER_IDS` | :term:`GEN_ENS_PROD_CONTROL_ID` | :term:`GEN_ENS_PROD_MET_CONFIG_OVERRIDES` @@ -1408,8 +1408,8 @@ see :ref:`How METplus controls MET config file settings`. - ensemble_flag.nmep * - :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO` - ensemble_flag.climo - * - :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF` - - ensemble_flag.climo_cdf + * - :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDP` + - ensemble_flag.climo_cdp **${METPLUS_ENS_MEMBER_IDS}** diff --git a/internal_tests/pytests/wrappers/gen_ens_prod/test_gen_ens_prod_wrapper.py b/internal_tests/pytests/wrappers/gen_ens_prod/test_gen_ens_prod_wrapper.py index 87b7bad76..e793ba27b 100644 --- a/internal_tests/pytests/wrappers/gen_ens_prod/test_gen_ens_prod_wrapper.py +++ b/internal_tests/pytests/wrappers/gen_ens_prod/test_gen_ens_prod_wrapper.py @@ -149,11 +149,11 @@ def handle_input_dir(config): ({'GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP': 'FALSE', }, {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {nmep = FALSE;}'}), # 23 - ({'GEN_ENS_PROD_ENSEMBLE_FLAG_RANK': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {rank = FALSE;}'}), + ({'GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO': 'FALSE', }, + {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {climo = FALSE;}'}), # 24 - ({'GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT': 'FALSE', }, - {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {weight = FALSE;}'}), + ({'GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDP': 'FALSE', }, + {'METPLUS_ENSEMBLE_FLAG_DICT': 'ensemble_flag = {climo_cdp = FALSE;}'}), # 25 ({ 'GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON': 'FALSE', @@ -168,8 +168,8 @@ def handle_input_dir(config): 'GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY': 'FALSE', 'GEN_ENS_PROD_ENSEMBLE_FLAG_NEP': 'FALSE', 'GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP': 'FALSE', - 'GEN_ENS_PROD_ENSEMBLE_FLAG_RANK': 'FALSE', - 'GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT': 'FALSE', + 'GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO': 'FALSE', + 'GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDP': 'FALSE', }, { 'METPLUS_ENSEMBLE_FLAG_DICT': ('ensemble_flag = {latlon = FALSE;' @@ -178,8 +178,8 @@ def handle_input_dir(config): 'min = FALSE;max = FALSE;' 'range = FALSE;vld_count = FALSE;' 'frequency = FALSE;nep = FALSE;' - 'nmep = FALSE;rank = FALSE;' - 'weight = FALSE;}')}), + 'nmep = FALSE;climo = FALSE;' + 'climo_cdp = FALSE;}')}), # 26 ({'GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME': '/some/climo_mean/file.txt', }, {'METPLUS_CLIMO_MEAN_DICT': ('climo_mean = {file_name = ' diff --git a/metplus/wrappers/gen_ens_prod_wrapper.py b/metplus/wrappers/gen_ens_prod_wrapper.py index 1afc6bdac..ae137a1fc 100755 --- a/metplus/wrappers/gen_ens_prod_wrapper.py +++ b/metplus/wrappers/gen_ens_prod_wrapper.py @@ -48,8 +48,8 @@ class GenEnsProdWrapper(LoopTimesWrapper): 'frequency', 'nep', 'nmep', - 'rank', - 'weight', + 'climo', + 'climo_cdp', ] def __init__(self, config, instance=None): diff --git a/parm/use_cases/met_tool_wrapper/GenEnsProd/GenEnsProd.conf b/parm/use_cases/met_tool_wrapper/GenEnsProd/GenEnsProd.conf index bc11b9236..997d0d6f9 100644 --- a/parm/use_cases/met_tool_wrapper/GenEnsProd/GenEnsProd.conf +++ b/parm/use_cases/met_tool_wrapper/GenEnsProd/GenEnsProd.conf @@ -160,7 +160,7 @@ GEN_ENS_PROD_ENS_THRESH = 0.8 #GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE #GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = FALSE #GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE -#GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE +#GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDP = FALSE #GEN_ENS_PROD_ENS_MEMBER_IDS = #GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf b/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf index c63e53d19..18a5e568c 100644 --- a/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf +++ b/parm/use_cases/model_applications/precipitation/GenEnsProd_fcstHRRRE_FcstOnly_NetCDF.conf @@ -79,5 +79,3 @@ GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = FALSE -GEN_ENS_PROD_ENSEMBLE_FLAG_RANK = FALSE -GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT = FALSE diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf index 9d252c290..25e6f3c4a 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf +++ b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf @@ -227,5 +227,3 @@ GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = FALSE GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = FALSE -GEN_ENS_PROD_ENSEMBLE_FLAG_RANK = FALSE -GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT = FALSE \ No newline at end of file From d9d4ce635ef9a21a205309489e0bb2dad166138a Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:14:37 -0600 Subject: [PATCH 25/28] fixed/updated list of possible METplus config variables to set vld_thresh --- metplus/wrappers/ensemble_stat_wrapper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metplus/wrappers/ensemble_stat_wrapper.py b/metplus/wrappers/ensemble_stat_wrapper.py index 67f58169d..e31ff8267 100755 --- a/metplus/wrappers/ensemble_stat_wrapper.py +++ b/metplus/wrappers/ensemble_stat_wrapper.py @@ -239,12 +239,12 @@ def create_c_dict(self): self.add_met_config(name='vld_thresh', data_type='float', metplus_configs=[ - 'ENSEMBLE_STAT_FCST_VLD_THRESH', - 'FCST_ENSEMBLE_STAT_FCST_VLD_THRESH', 'ENSEMBLE_STAT_VLD_THRESH', + 'ENSEMBLE_STAT_VALID_THRESH', + 'ENSEMBLE_STAT_FCST_VLD_THRESH', 'ENSEMBLE_STAT_FCST_VALID_THRESH', + 'FCST_ENSEMBLE_STAT_VLD_THRESH', 'FCST_ENSEMBLE_STAT_VALID_THRESH', - 'ENSEMBLE_STAT_VALID_THRESH', 'ENSEMBLE_STAT_ENS_VLD_THRESH', ]) From 459b9baf1ca9b740f4c1c27ae7adc5e3535d803a Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:22:48 -0600 Subject: [PATCH 26/28] added note that GenEnsProd equivalent may be used in place of deprecated variables --- docs/Users_Guide/glossary.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index b5390441b..56489bb9a 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -5913,10 +5913,10 @@ METplus Configuration Glossary | *Used by:* EnsembleStat ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON - .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON` instead. + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON` or :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN - .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN` instead. + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN` or :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV` in :ref:`gen_ens_prod_wrapper` instead. @@ -5937,7 +5937,7 @@ METplus Configuration Glossary .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT - .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT` instead. + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT` or :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT` in :ref:`gen_ens_prod_wrapper` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY .. warning:: **DEPRECATED:** Please use :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY` in :ref:`gen_ens_prod_wrapper` instead. @@ -5952,7 +5952,7 @@ METplus Configuration Glossary .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RANK` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT - .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` instead. + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` or :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT` in :ref:`gen_ens_prod_wrapper` instead. GRID_STAT_MASK_GRID Specify the value for 'mask.grid' in the MET configuration file for GridStat. From 348d7f0e28ea2018d6920b773032edbcbf12ab46 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:23:37 -0600 Subject: [PATCH 27/28] per advice from @JohnHalleyGotway in PR review, change values to be consistent with previous outputs --- parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf | 2 +- .../EnsembleStat/EnsembleStat_python_embedding.conf | 2 +- .../EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf index 5877f0ec7..81233349e 100644 --- a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf +++ b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat.conf @@ -194,7 +194,7 @@ ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = FALSE #ENSEMBLE_STAT_OBS_QUALITY_INC = #ENSEMBLE_STAT_OBS_QUALITY_EXC = diff --git a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf index 3cf046e3e..95eea3c84 100644 --- a/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf +++ b/parm/use_cases/met_tool_wrapper/EnsembleStat/EnsembleStat_python_embedding.conf @@ -117,7 +117,7 @@ ENSEMBLE_STAT_NC_ORANK_FLAG_RAW = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = FALSE #ENSEMBLE_STAT_MET_OBS_ERR_TABLE = diff --git a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf index 1db04edbd..d050f8fb7 100644 --- a/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf +++ b/parm/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.conf @@ -189,7 +189,7 @@ ENSEMBLE_STAT_OUTPUT_FLAG_RELP = BOTH ENSEMBLE_STAT_NC_ORANK_FLAG_LATLON = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_MEAN = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_RANK = FALSE -ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = TRUE +ENSEMBLE_STAT_NC_ORANK_FLAG_PIT = FALSE ENSEMBLE_STAT_NC_ORANK_FLAG_VLD_COUNT = TRUE ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT = FALSE From 209eec40ac54b4c07aeec068d9c430653010bd0e Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:30:16 -0600 Subject: [PATCH 28/28] removed text that is not relevant because the variable does not exist in GenEnsProd --- docs/Users_Guide/glossary.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index 56489bb9a..7dd8f3b44 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -5952,7 +5952,7 @@ METplus Configuration Glossary .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_RANK` instead. ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT - .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` or :term:`GEN_ENS_PROD_ENSEMBLE_FLAG_WEIGHT` in :ref:`gen_ens_prod_wrapper` instead. + .. warning:: **DEPRECATED:** Please use :term:`ENSEMBLE_STAT_NC_ORANK_FLAG_WEIGHT` instead. GRID_STAT_MASK_GRID Specify the value for 'mask.grid' in the MET configuration file for GridStat.