diff --git a/docs/Users_Guide/glossary.rst b/docs/Users_Guide/glossary.rst index d4ebf18ae6..8fcefc43ff 100644 --- a/docs/Users_Guide/glossary.rst +++ b/docs/Users_Guide/glossary.rst @@ -7613,6 +7613,11 @@ METplus Configuration Glossary | *Used by:* TCPairs + TC_PAIRS_CONSENSUS_WRITE_MEMBERS + Specify the value for the nth 'consensus.write_members' in the MET configuration file for TCPairs. + + | *Used by:* TCPairs + FCST_SERIES_ANALYSIS_PROB_THRESH Threshold values to be used for probabilistic data in series_analysis. The value can be a single item or a comma separated list of items that must start with a comparison operator (>,>=,==,!=,<,<=,gt,ge,eq,ne,lt,le). diff --git a/docs/Users_Guide/wrappers.rst b/docs/Users_Guide/wrappers.rst index 7febc1d79b..118e1d8723 100644 --- a/docs/Users_Guide/wrappers.rst +++ b/docs/Users_Guide/wrappers.rst @@ -8314,6 +8314,7 @@ METplus Configuration | :term:`TC_PAIRS_CONSENSUS_MEMBERS` | :term:`TC_PAIRS_CONSENSUS_REQUIRED` | :term:`TC_PAIRS_CONSENSUS_MIN_REQ` +| :term:`TC_PAIRS_CONSENSUS_WRITE_MEMBERS` | :term:`TC_PAIRS_SKIP_LEAD_SEQ` | :term:`TC_PAIRS_RUN_ONCE` | :term:`TC_PAIRS_CHECK_DUP` @@ -8589,6 +8590,9 @@ see :ref:`How METplus controls MET config file settings`. - consensus.required * - :term:`TC_PAIRS_CONSENSUS_MIN_REQ` - consensus.min_req + * - :term:`TC_PAIRS_CONSENSUS_WRITE_MEMBERS` + - consensus.write_members + **${METPLUS_CHECK_DUP}** diff --git a/internal/tests/pytests/wrappers/tc_pairs/test_tc_pairs_wrapper.py b/internal/tests/pytests/wrappers/tc_pairs/test_tc_pairs_wrapper.py index 958ae8aacb..62ad8b0863 100644 --- a/internal/tests/pytests/wrappers/tc_pairs/test_tc_pairs_wrapper.py +++ b/internal/tests/pytests/wrappers/tc_pairs/test_tc_pairs_wrapper.py @@ -338,27 +338,30 @@ def test_tc_pairs_storm_id_lists(metplus_config, config_overrides, ('INIT', {'TC_PAIRS_CONSENSUS1_NAME': 'name1', 'TC_PAIRS_CONSENSUS1_MEMBERS': 'member1a, member1b', 'TC_PAIRS_CONSENSUS1_REQUIRED': 'true, false', - 'TC_PAIRS_CONSENSUS1_MIN_REQ': '1'}, + 'TC_PAIRS_CONSENSUS1_MIN_REQ': '1', + 'TC_PAIRS_CONSENSUS1_WRITE_MEMBERS': 'false',}, {'METPLUS_CONSENSUS_LIST': ( 'consensus = [{name = "name1";members = ["member1a", "member1b"];' - 'required = [true, false];min_req = 1;}];' + 'required = [true, false];min_req = 1;write_members = FALSE;}];' )}), # 14: consensus 2 dictionaries ('INIT', {'TC_PAIRS_CONSENSUS1_NAME': 'name1', 'TC_PAIRS_CONSENSUS1_MEMBERS': 'member1a, member1b', 'TC_PAIRS_CONSENSUS1_REQUIRED': 'true, false', 'TC_PAIRS_CONSENSUS1_MIN_REQ': '1', + 'TC_PAIRS_CONSENSUS1_WRITE_MEMBERS': 'false', 'TC_PAIRS_CONSENSUS2_NAME': 'name2', 'TC_PAIRS_CONSENSUS2_MEMBERS': 'member2a, member2b', 'TC_PAIRS_CONSENSUS2_REQUIRED': 'false, true', - 'TC_PAIRS_CONSENSUS2_MIN_REQ': '2' + 'TC_PAIRS_CONSENSUS2_MIN_REQ': '2', + 'TC_PAIRS_CONSENSUS2_WRITE_MEMBERS': 'true', }, {'METPLUS_CONSENSUS_LIST': ( 'consensus = [' '{name = "name1";members = ["member1a", "member1b"];' - 'required = [true, false];min_req = 1;},' + 'required = [true, false];min_req = 1;write_members = FALSE;},' '{name = "name2";members = ["member2a", "member2b"];' - 'required = [false, true];min_req = 2;}];' + 'required = [false, true];min_req = 2;write_members = TRUE;}];' )}), # 15: valid_exc ('INIT', {'TC_PAIRS_VALID_EXCLUDE': '20141031_14'}, @@ -421,27 +424,30 @@ def test_tc_pairs_storm_id_lists(metplus_config, config_overrides, ('VALID', {'TC_PAIRS_CONSENSUS1_NAME': 'name1', 'TC_PAIRS_CONSENSUS1_MEMBERS': 'member1a, member1b', 'TC_PAIRS_CONSENSUS1_REQUIRED': 'true, false', - 'TC_PAIRS_CONSENSUS1_MIN_REQ': '1'}, + 'TC_PAIRS_CONSENSUS1_MIN_REQ': '1', + 'TC_PAIRS_CONSENSUS1_WRITE_MEMBERS': 'false',}, {'METPLUS_CONSENSUS_LIST': ( 'consensus = [{name = "name1";members = ["member1a", "member1b"];' - 'required = [true, false];min_req = 1;}];' + 'required = [true, false];min_req = 1;write_members = FALSE;}];' )}), # 35: consensus 2 dictionaries ('VALID', {'TC_PAIRS_CONSENSUS1_NAME': 'name1', 'TC_PAIRS_CONSENSUS1_MEMBERS': 'member1a, member1b', 'TC_PAIRS_CONSENSUS1_REQUIRED': 'true, false', 'TC_PAIRS_CONSENSUS1_MIN_REQ': '1', + 'TC_PAIRS_CONSENSUS1_WRITE_MEMBERS': 'false', 'TC_PAIRS_CONSENSUS2_NAME': 'name2', 'TC_PAIRS_CONSENSUS2_MEMBERS': 'member2a, member2b', 'TC_PAIRS_CONSENSUS2_REQUIRED': 'false, true', - 'TC_PAIRS_CONSENSUS2_MIN_REQ': '2' + 'TC_PAIRS_CONSENSUS2_MIN_REQ': '2', + 'TC_PAIRS_CONSENSUS2_WRITE_MEMBERS': 'true', }, {'METPLUS_CONSENSUS_LIST': ( 'consensus = [' '{name = "name1";members = ["member1a", "member1b"];' - 'required = [true, false];min_req = 1;},' + 'required = [true, false];min_req = 1;write_members = FALSE;},' '{name = "name2";members = ["member2a", "member2b"];' - 'required = [false, true];min_req = 2;}];' + 'required = [false, true];min_req = 2;write_members = TRUE;}];' )}), # 36: valid_exc ('VALID', {'TC_PAIRS_VALID_EXCLUDE': '20141031_14'}, diff --git a/metplus/util/doc_util.py b/metplus/util/doc_util.py index 812f9dc055..be0c043cf1 100755 --- a/metplus/util/doc_util.py +++ b/metplus/util/doc_util.py @@ -150,7 +150,7 @@ def print_doc_text(tool_name, input_dict): print("---------------------------------------------") print('\n==================================================\n') - print(f"In internal/tests/pytests/{tool_name}/" + print(f"In internal/tests/pytests/wrappers/{tool_name}/" f"test_{tool_name}_wrapper.py" "\n\nAdd the following items to " "the tests to ensure the new items are set properly. Note: " diff --git a/metplus/wrappers/tc_pairs_wrapper.py b/metplus/wrappers/tc_pairs_wrapper.py index 3e06230117..31b9999125 100755 --- a/metplus/wrappers/tc_pairs_wrapper.py +++ b/metplus/wrappers/tc_pairs_wrapper.py @@ -410,6 +410,7 @@ def _handle_consensus(self): 'members': 'list', 'required': ('list', 'remove_quotes'), 'min_req': 'int', + 'write_members': 'bool', } return_code = add_met_config_dict_list(config=self.config, app_name=self.app_name, diff --git a/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_extra_tropical.conf b/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_extra_tropical.conf index 15f2c69811..23c81e647c 100644 --- a/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_extra_tropical.conf +++ b/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_extra_tropical.conf @@ -104,6 +104,7 @@ TC_PAIRS_MISSING_VAL = -9999 #TC_PAIRS_CONSENSUS1_MEMBERS = #TC_PAIRS_CONSENSUS1_REQUIRED = #TC_PAIRS_CONSENSUS1_MIN_REQ = +#TC_PAIRS_CONSENSUS1_WRITE_MEMBERS = #TC_PAIRS_CHECK_DUP = diff --git a/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_tropical.conf b/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_tropical.conf index 26f1c27238..ab9d64900b 100644 --- a/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_tropical.conf +++ b/parm/use_cases/met_tool_wrapper/TCPairs/TCPairs_tropical.conf @@ -98,6 +98,7 @@ TC_PAIRS_DLAND_FILE = MET_BASE/tc_data/dland_global_tenth_degree.nc #TC_PAIRS_CONSENSUS1_MEMBERS = #TC_PAIRS_CONSENSUS1_REQUIRED = #TC_PAIRS_CONSENSUS1_MIN_REQ = +#TC_PAIRS_CONSENSUS1_WRITE_MEMBERS = #TC_PAIRS_CHECK_DUP =