Skip to content

Commit

Permalink
Update develop-ref after #2803 and #2806 (#2808)
Browse files Browse the repository at this point in the history
* Store change of sonar.login to sonar.token.

* Hotfix to develop, updating aclocal.m4 and config.h.in to what is created when running bootstrap inside the dtcenter/met-base:v3.1 Docker image. Updates autoconf 2.69 output to 2.71.

* Adding -lnetcdf to configure_lib_args for NetCDF-CXX compilation

* Added eckit and atlas loads and paths

* Added atlas and eckit loads and paths

* Changing -j to "-j 5" as the recommended value

* Update ensemble-stat.rst

Fixed incorrect path to obs error table

* Updated values for GRIB2CLIB_NAME and BUFRLIB_NAME

* Updated for proj, eckit, and atlas

* Feature #2761 develop seneca (#2762)

* Per #2761, define runtime python version for testing  rather than using the default version which no longer exists in /usr/local

* Per #2761, fix  setting ci-skip-all

* Per #2761, patching test_util.R to use the -C command line option for ncdiff. I did test running comp_dir.sh with this change and confirmed that it now runs to completion.

* #2652 Added find_var_by_standard_name and separated common codes to find_xy_vars

* #2757 Get the email list from the environment variable MET_CRON_EMAIL_LIST__MET (or MET_CRON_EMAIL_LIST_)

* #2757 THe SonarQube token and URL are replaced by ujsing the environment variable SONAR_TOKEN_VALUE and SONAR_SERVER_URL

* #2757 The SonarQube token and URL are replaced with the pre-defined strings, SONAR_TOKEN_VALUE and SONAR_SERVER_URL

* Bugfix #2670 develop --enable-python (#2768)

* #2755 Added a header count and checking header count instead of using header id (hid)

* Update install_met_env.acorn_py3.10

* Update install_met_env.wcoss2_py3.10

* Feature #2776 cleanup (#2777)

* Per #2776, delete stale prob_pair_info.h/.cc, wwmca_utils.h/.cc, and rmw_analysis_utils.h/.cc files that were not being compiled by their Makefiles.

* Per #2776, update Makefile to compile the test_read_rmw utility.

* Per #2776, add Makefile for the vx_python3_utils test utility directory.

* add rpath for atlas and eckit lib dirs so dynamic libraries can be found when running on seneca

* only set -L and -I arguments for atlas and eckit if the appropriate environment variable is set -- this matches how it is handled for other external library dependencies

* Per #2776, just whitespace and capitalization

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>

* Bugfix #2782 develop MASSDEN (#2783)

* Per #2782, port over fixes from the bugfix_2782_main_v11.1_MASSDEN branch over to the bugfix branch for develop. Will also add new GRIB2 filtering options in this branch.

* Per #2782, add support for 4 new GRIB2 filtering options for GRIB2_aerosol_type, GRIB2_aerosol_interval_type, GRIB2_aerosol_size_lower, and GRIB2_aerosol_size_upper. These are useful in filtering the MASSDEN records in the RRFS smoke output files.

* Per #2782, fix aerosol_size_lower() and aersol_size_upper() inline definitions.

* Per #2782, add a unit test for GRIB2 table 4.48.

* Per #2782, switch from strict equality to using the is_eq() function when checking the GRIB2_aerosol_size_lower and upper values since they're doubles and not ints.

* Feature #2701 ismn (#2758)

* Add support for ISMN soil moisture data

* Per #2701, update ascii2nc.cc with the ismn file option.

* Per #2701, update ascii2nc docs

* Per #2701, store the depth for precip as 0.

* Per #2701, parse the ISMN observation value from the correct column.

* Per #2701, every time I run ascii2nc to I see a log message for 'DEBUG 1: Number of NDBC skipped files due to no lookup 0'. This is printed by the NdbcHandler destructor. Update the logic to only print a debug level 3 log message when the number of missing locations is greater than 0, 'DEBUG 3: Skipped 5 NDBC files whose locations are not defined in 'MET_BASE/table_files/ndbc_stations.xml'. Set the MET_NDBC_STATIONS environment variable to override this file.'

* Per #2701, as instructed by @anewman89, store the average of the depth values rather than the maximum value.

* Per #2701, add a test of processing the ISMN data through ascii2nc.

* Per #2701, fix parsing of year and month to subtract 1900 and 1, respectively.

* Per #2701, set use_var_id to true for ISMN inputs

* Per #2701, even though we're mapping obs data to GRIB code names and units, we want to encode them with use_var_id = true and so we need to keep track of those var_id values.

* Per #2701, fix typo in the name of the ascii2nc netcdf output file.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

* Feature 2753 comp script config (#2771)

* set dynamic library file extension to .dylib if running on MacOS and .so otherwise

* Added disabling of jasper documentation for compiliation on Hera

* Updated

* remove extra export of compiler env vars

* include full path to log file so it is easier to file the log file to examine when a command fails

* send cmake output to a log file

* remove redundant semi-colon

* use full path to log file so it is easier to examine on failure

* use run_cmd to catch if rm command fails

* Modifications for compilation on hera, gaea, and orion

* Updating

* fixed variable name

* clean up if/else statements

* set TIFF_LIBRARY_RELEASE argument to use full path to dynamic library file to prevent failure installing proj library

* set LDFLAGS so that LDFLAGS value set in the user's environment will also be used

* Updated based on gaea, orion, and hera installs

* Updated

* change extension of dynamic library files only if architecture is arm64 because older Macs still use .so

* added netcdf library to args to prevent error installing NetCDF-CXX when PROJ has been installed in the same run of the script -- PATH is set in the COMPILE_PROJ if block that causes this flag from being added automatically

* clean up how rpath and -L are added to LDFLAGS so that each entry is separate -- prevents errors installing on Mac arm64 because multiple rpath values aren't read using :. Also use MET_PROJLIB

* Updated

* removed -ltiff from MET libs

* only add path to rpath and -L arguments if they are not already included in LDFLAGS

* changed from using LIB_TIFF (full path to tiff lib file) to use TIFF_LIB_DIR (dir containing tiff lib file). Added TIFF_INCLUDE_DIR to proj compilation and -DJAS_ENABLE_DOC to jasper compliation taken from @jprestop branch

* update comments

* ensure all MET_* and MET_*LIB variables are added to the rpath for consistency

* remove unnecessary if block and only export LDFLAGS at the end of setting locally

* Updated

* Added section for adding <VALUE>/lib64 and rearranged placement of ADDTL_DIR

* Commenting out the running of the Jasper lib tests

* Updating and/or removing files

* Updating and/or removing files

* Latest udpates which include the addition of the tiff library for proj

* Remove commented out line.

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Make indentation consistent.

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Make indentation consistent.

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Make indentation consistent.

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* #2697 Share the temporary file for blocking

* #2697 Reduced the temporary files for pb2nc

* Moved typedef unixtime from vx_cal.h to time_array.h

* #2697 Changed static const to constexpr for SonarQube (code smell)

* Removing ${MAKE_ARGS} in some locations

Removing ${MAKE_ARGS} from "make install" and "make test" for MET.  Removing "met" prefix from met.configure.log because we really need config.log for any detail.  It is confusing to have met.configure.log when that does not contain useful information.

* #2673 Removed unused variable grid_x and grid_y

* #2673 Renamed the shadowed variable n to nd

* #2673 Use nullptr instead of literal 0

* #2673 Moved down namespace declarations. Removed unused variables

* #2673 Reduced the scope of variables

* #2673 Use nullptr instead of literal 0

* #2673 Removed unused variables

* #2673 Renamed ex to ex2 which becomes shadowed variable

* #2673 Removed always true condition

* #2673 Moved down namespace declarations. Use nullptr instead of literal 0

* #2673 Use nullptr instead of literal 0. Removed unused variables

* #2673 Moved down namespace declarations.

* #2673 Added namespace std to string

* #2673 Removed unsued variables. Check nullptr of gt

* #2673 Moved down namespace declarations.

* #2673 Added namespace std to string

* #2772 Added quit_msg

* Feature #2547 Read WRF output files natively (#2790)

* Per #2547, add the file_type = NETCDF_WRF configuration option.

* Per #2547, rename vx_data2d_nc_interp as vx_data2d_nc_wrf and vx_data2d_nccf as vx_data2d_nc_cf.

* Per #2547, rename nccf files as nc_cf for consistency throughout

* Per #2547, rename Pinterp classes as Wrf

* only set -L and -I arguments for atlas and eckit if the appropriate environment variable is set -- this matches how it is handled for other external library dependencies

* add rpath for atlas and eckit lib dirs so dynamic libraries can be found when running on seneca

* ignore directory automatically created by CLion

* rename pinterp variables and classes to Wrf

* more rename and fix typos

* per #2547, add support for reading WRF files by adding support for different X/Y/Z dimensions, read X/Y/Z dimension names when reading a field instead of storing them per file, track if data is staggered in X/Y/Z dimension (still need to add DataPlane function to destagger data), handle pressure field that also includes time dimension

* per #2547, add DataPlane function to handle staggering of grid

* per #2547, change file type returned from pinterp to wrf

* per #2547, call function to stagger DataPlane if necessary

* per #2547, keep store if variable is on pressure levels and only read pressure field if it is

* ignore cmake directory

* per #2547, support U_PL, U_ZL, U, and U<x> where <x> is an integer in is_u_wind and the same for is_v_wind

* change regex to match zero or more instances of a number after U or V instead of 1 or more to include the fields named U and V

* error and exit if var with unsupported subgrid dimension is processed

* clean up logging

* only destagger Z dimension for bottom_top_stag because other _stag Z dimensions don't need to be destaggered, clean up logic to read X/Y/Z dimension info

* Per #2547, instead of checking dimensions of all vars in file, check dimensions for the var that is being read. Only read pressure var if the z dimension matches the var to read. Set class variable DimNames instead of local gDimNames so dump function will work as expected

* per #2547, support reading variable that corresponds to dimension with different name as dimension and includes a time dimension, e.g. P_PL(Time, num_press_levels_stag)

* per #2547, added unit tests to process WRF out data with plot_data_plane and grid_stat

* merged develop and resolved conflicts

* rename lib from pinterp to wrf

* rename lib

* fixed incorrect merge changes

* fixed broken unit test format

* Per #2547, restore the mention of NAK.poly to Appendix B.

* Change model to WRF

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* change obtype to WRF

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* plot higher vertical level to get non-zero output

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* indentation

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* #2772 Use JSON for attrubutes and numpy serialization dor 2D data instead of NetCDF

* Hotfix to the develop branch after PR #2790 merged the feature_2547_wrf branch into develop. Rerunning bootstrap on the project machine seneca produces 2 small differences that should also be incorporated into develop.

* Feature 2588 install rewrite (#2791)

* updated first 3 sections

* updated spacing

* adding the Environment Variables to Run Script section

* adding in the remainder of the google doc changes

* trying to fix duplicate explicit target name issue

* fixing required_external_libraries_to_build_met links

* HDF4 testing double underscore

* adding double underscores for HDF5 and HDF-EOS2 and changing library back

* fixing HDF5 web link name

* Added formatting, made minor edits, removed manual build instructions sections

* Removed reference to sample-test-case which no longer exists

* Resolving errors

* Minor formatting change

* Updated apptainer instructions, new version references

* Formatting updates and removal of first person language

* fixed code blocks

* Resolving error

* Removed first person references

* Removed reference to met_directory_structure

* updated bolding, removed end section

* Changing X.Y.X references to X.Y.Z

* updating thru Using the compile_MET_all.sh Script

* fixing spacing for ATLAS web address

* Fixed broken internal reference to installation due to typo

* adding version numbers

* fixing Recommended-Components MET

* 3.4.2 section updates

* fixing spacing

* adding a period and more dropdown menus

* fixing spacing

* loose ends

* removing space

* removing bold

* External Library handling in compile_MET_all.sh section updates

* installation directory view

* installation directory after

* attempting to add figures via the web

updating Executing the compile_MET_all.sh script section

* fixing bolds, italics etc.

* updating last half of doc

* loose ends

* loose ends

* adding more dropdown menus

* fixing dropdown menu and testing automatic version

* testing automatic version

* confirmed automatic version cannot be added to italics or code blocks

* another round of updates

* fixing indents

* creating a table

* fixing table

* fixing table 2

* more loose end changes

* more changes

* hopefully final updates

* trying a fancy new csv table

* troubleshooting csv table

* correcting table name

* adding a grid table

* fixing grid table

* removing csv table

* Per #2588, update to the environment variables table.

* Delete docs/Users_Guide/environment_variables_table.csv

* Per #2785, add new example installation files

* updating small changes in the first half of the documentation

* new dropdown menu and fixing some links

* trying to fix line spacing in dropdown

* take 2 fixing spacing

* take 3 fix spacing

* env var order

* removing "s"

* small changes

* un capitalizing S

* A few minor changes

---------

Co-authored-by: j-opatz <jopatz@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Minor hotfix to develop to fix a typo in the comments of the PB2NC config files.

* Feature #2796 develop gha node20 (#2797)

* Per #2796, update actions/checkout@v3 to actions/checkout@v4.

* Per #2796, update to actions/upload-artifact@v4 and actions/setup-python@v5.

* Per #2796, update to download-artifact@v4 and actions/github-script@v7

* Feature #2796 develop gha_node20, fix artifact names (#2799)

* Per #2796, update actions/checkout@v3 to actions/checkout@v4.

* Per #2796, update to actions/upload-artifact@v4 and actions/setup-python@v5.

* Per #2796, update to download-artifact@v4 and actions/github-script@v7

* Per #2796, update testing workflow for update-artifact v4 version which requires unique artifact names. ci-run-unit

* Per #2796, merge the logs into a single artifact. ci-run-unit

* Per #2796, renaming rc_leads and rc as 1c and 2c, respectively for consistency purposes. Note that this commit should result in just a logs_compile artifact being created... and not doing the log merging step.

* Per #2796, update the compilation workflow to make the log artifact names unique.

* #2772 Change nan and inf to -9999 on reading ASCII input if failed to parse

* Feature #2801 warnings (#2802)

* Per #2801, add new time_offset_warning config option.

* Per #2810, update MetConfig class to parse and check the time_offset_warning config option.

* Per #2801, update Grid-Stat, MODE, PCP-Combine, Series-Analysis, Wavelet-Stat, and the WWMCA tool to call MetConfig::time_offset_warning() to decide whether to print a Warning or Debug(3) log message about initialization or valid time differences.

* Per #2801, no change to content. Just removing unneeded whitespace.

* Per #2801, remove extra empty line foromw m warning message.

* Per #2801, remove extra empty line from MODE warning messages.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

* #2772 Initial release, Separated from point.py

* #2772 Added point_nc.py

* #2772 Changed write_tmp_nc and read_tmp_nc to write_tmp_py and read_tmp_py

* #2772 Removed python_key_point_data & python_key_point_data_list and replaced them to tmp_point_var_name and tmp_point_data

* #2772 Renamed tmp_nc_base_name, tmp_nc_file_var_name & tmp_nc_point_var_name to tmp_py_base_name, tmp_file_var_name, & tmp_point_var_name

* #2772 More log messages for error

* #2772 Changed API (log_msg to log_message)

* #2772 Use met_point_nc_tools instead of met_point_tools

* #2772 Changed APIs

* #2772 Changed API

* #2772 Changed default temp output format to JSON ande numpoy serialization

* #2772 Allow to keep the temporary files by using the environment variable

* Added log message if the temprary fiule was not deleted

* Feature #2745 mvmode enhancements (#2779)

* Working mvmode with percentile thresholds and grid_type fixes, plus more unit tests

* separated multivar and traditional mode frontend classes to simplify the mode executive class design

* documentation changes to go with changes to percentiles and data_type

* Cleanup and bugfix to doc

* Bug fix to doc

* Another bugfix attempt

* synching up development.seneca with what is in the develop branch

* added clone() method to all the vx_data2d var_info classes

* Fix multivar_name/level definitions in UG

* bug fix regarding accessing the config to create a verification grid

* Update docs/Users_Guide/mode.rst

* Update docs/Users_Guide/mode.rst

* Per #2745, commit changes to Makefile.am/.in files after running bootstrap on this feature branch on seneca.

* Per #2745, no real code changes. Just whitespace.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: Tracy Hertneky <hertneky@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Per #2772, added MET_PYTHON_EXE to various test cases and removed what would have been a duplicate after adding MET_PYTHON_EXE

* Per #2772, add documentation about 3 new environment variables.

* Per #2772, tweak the wording.

* Fixing typo

* Feature #2772 python_embedding_tmp_file (#2807)

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>

* Feature #2805 filter_set_hdr (#2806)

* Per #2805, update STATAnalysisJob::dump_stat_line() to take an optional argument to indicate whether the set_hdr options should be applied. Update Stat-Analysis to only call dump_stat_line() with set_hdr for filter jobs.

* Per #2805, update User's Guide with -set_hdr info.

* Per #2805, the -set_hdr option doesn't apply to tc_stat

* Per #2805, modify one Stat-Analysis filter job to demonstrate that the -set_hdr job command option is now applied to the -dump_row output.

* Per #2805, enhance the R differencing logic to handle NA strings in the header columns. Previously, differences that include the NA string were ignored. This enhances the compareStatLty() function to handle NA strings properly.

* Per #2805, no real code change. Just whitespace.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: root <root@83062d57c5dd>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: Christina Kalb <kalb@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: Howard Soh <hsoh@ucar.edu>
Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: metplus-bot <97135045+metplus-bot@users.noreply.github.com>
Co-authored-by: lisagoodrich <33230218+lisagoodrich@users.noreply.github.com>
Co-authored-by: j-opatz <jopatz@ucar.edu>
Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com>
Co-authored-by: davidalbo <dave@ucar.edu>
Co-authored-by: Tracy Hertneky <hertneky@ucar.edu>
  • Loading branch information
15 people committed Feb 2, 2024
1 parent 1141a18 commit b2ea670
Show file tree
Hide file tree
Showing 25 changed files with 1,043 additions and 611 deletions.
110 changes: 84 additions & 26 deletions docs/Users_Guide/config_options.rst
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,49 @@ Where code is running in a production context, it is worth being familiar with
the binding / affinitization method on the particular system and building it
into any relevant scripting.

.. _met_keep_temp_file:

MET_KEEP_TEMP_FILE
------------------

The MET_KEEP_TEMP_FILE environment variable can be set to control the runtime
behavior of the MET tools. The MET tools write temporary files in several places
in the application and library code. By default, those temporary files are deleted
when they are no longer needed. However it can be useful for development, testing,
and debugging to keep them for further inspection. Setting this environment variable
to a value of :code:`yes` or :code:`true` instructs the MET tools to retain temporary
files instead of deleting them.

Note that doing so may fill up the temporary directory. It is the responsiblity of
the user to monitor the temporary directory usage and remove temporary files that
are no longer needed.

When running with this option, users are advised to refer to section
:numref:`config_tmp_dir` and write temporary files to a personal location rather than
the default shared :code:`/tmp` directory.

.. _met_python_debug:

MET_PYTHON_DEBUG
----------------

The MET_PYTHON_DEBUG environment variable can be set to enable debugging log messages
related to Python embedding. These log messages are disabled by default. The environment
variable can be set to a value of :code:`all` for all log messages, :code:`dataplane`
for log messages when reading gridded data, or :code:`point` for log messages when
reading point data.

.. _met_python_tmp_format:

MET_PYTHON_TMP_FORMAT
---------------------

The MET_PYTHON_TMP_FORMAT environment variable defines whether temporary files for
Python embedding should be written as NetCDF files or using JSON/NumPy serialization.
By default, they are written using JSON for attributes and NumPy serialization for data
to avoid NetCDF library conflicts between MET and Python. Setting this environment
variable to :code:`netcdf` enables the use of temporary NetCDF files instead.

Settings Common to Multiple Tools
=================================

Expand Down Expand Up @@ -3770,13 +3813,22 @@ Where "job_name" is set to one of the following:

* "filter"

To filter out the STAT or TCMPR lines matching the job filtering
criteria specified below and using the optional arguments below.
To filter out the STAT lines matching the job filtering criteria
specified below and using the optional arguments below.
The output STAT lines are written to the file specified using the
"-dump_row" argument.

Required Args: -dump_row

|
Optional Args:

.. code-block:: none
-set_hdr column_name value
May be used multiple times to override data written to the
output dump_row file.
|
* "summary"

Expand Down Expand Up @@ -3805,8 +3857,8 @@ Where "job_name" is set to one of the following:

* Format the -column option as LINE_TYPE:COLUMN.

|
|
Use the -derive job command option to automatically derive
statistics on the fly from input contingency tables and partial
sums.
Expand All @@ -3832,10 +3884,14 @@ Where "job_name" is set to one of the following:

.. code-block:: none
-by column_name to specify case information
-out_alpha to override default alpha value of 0.05
-derive to derive statistics on the fly
-column_union to summarize multiple columns
-by column_name
To specify case information.
-out_alpha
To override the default alpha value.
-derive
To derive statistics on the fly.
-column_union
To summarize multiple columns.
* "aggregate"

Expand All @@ -3852,8 +3908,8 @@ Where "job_name" is set to one of the following:
ISC, ECNT, RPS, RHIST, PHIST, RELP, SSVAR
Required Args: -line_type
|

|
* "aggregate_stat"

Expand Down Expand Up @@ -3887,8 +3943,8 @@ Where "job_name" is set to one of the following:
.. code-block:: none
-out_thresh or -out_fcst_thresh and -out_obs_thresh
When -out_line_type FHO, CTC, CTS, MCTC, MCTS,
PCT, PSTD, PJC, PRC
When -out_line_type FHO, CTC, CTS, MCTC, MCTS,
PCT, PSTD, PJC, PRC
Additional Optional Args for -line_type MPR:

Expand All @@ -3901,14 +3957,14 @@ Where "job_name" is set to one of the following:
-out_obs_wind_thresh
-out_wind_logic
When -out_line_type WDIR
Additional Optional Arg for:

.. code-block:: none
-line_type ORANK -out_line_type PHIST, SSVAR ...
-out_bin_size
Additional Optional Args for:

.. code-block:: none
Expand All @@ -3917,14 +3973,14 @@ Where "job_name" is set to one of the following:
-out_eclv_points
* "ss_index"

The skill score index job can be configured to compute a weighted
average of skill scores derived from a configurable set of
variables, levels, lead times, and statistics. The skill score
index is computed using two models, a forecast model and a
reference model. For each statistic in the index, a skill score
is computed as:

SS = 1 - (S[model]*S[model])/(S[reference]*S[reference])

Where S is the statistic.
Expand Down Expand Up @@ -4135,17 +4191,19 @@ Where "job_name" is set to one of the following:
"-rank_corr_flag value"
"-vif_flag value"
For aggregate and aggregate_stat job types:

.. code-block:: none
"-out_stat path" to write a .stat output file for the job
including the .stat header columns. Multiple
values for each header column are written as
a comma-separated list.
"-set_hdr col_name value" may be used multiple times to explicity
specify what should be written to the header
columns of the output .stat file.
-out_stat path
To write a .stat output file for aggregate and aggregate_stat jobs
including the .stat header columns. Multiple input values for each
header column are written to the output as a comma-separated list
of unique values.
-set_hdr col_name value
May be used multiple times to explicity specify what should be
written to the header columns of the output .stat file for
aggregate and aggregate_stat jobs or output dump_row file
for filter jobs.
When using the "-by" job command option, you may reference those columns
in the "-set_hdr" job command options. For example, when computing statistics
Expand Down
14 changes: 7 additions & 7 deletions docs/Users_Guide/stat-analysis.rst
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ The Stat-Analysis tool supports several additional job command options which may
This job command option is extremely useful. It can be used multiple times to specify a list of STAT header column names. When reading each input line, the Stat-Analysis tool concatenates together the entries in the specified columns and keeps track of the unique cases. It applies the logic defined for that job to each unique subset of data. For example, if your output was run over many different model names and masking regions, specify **-by MODEL,VX_MASK** to get output for each unique combination rather than having to run many very similar jobs.

.. code-block:: none
-column_min col_name value
-column_max col_name value
-column_eq col_name value
Expand All @@ -615,30 +615,30 @@ This job command option is extremely useful. It can be used multiple times to sp
The column filtering options may be used when the **-line_type** has been set to a single value. These options take two arguments, the name of the data column to be used followed by a value, string, or threshold to be applied. If multiple column_min/max/eq/thresh/str options are listed, the job will be performed on their intersection. Each input line is only retained if its value meets the numeric filtering criteria defined, matches one of the strings defined by the **-column_str** option, or does not match any of the string defined by the **-column_str_exc** option. Multiple filtering strings may be listed using commas. Defining thresholds in MET is described in :numref:`config_options`.

.. code-block:: none
-dump_row file
Each analysis job is performed over a subset of the input data. Filtering the input data down to a desired subset is often an iterative process. The **-dump_row** option may be used for each job to specify the name of an output file to which the exact subset of data used for that job will be written. When initially constructing Stat-Analysis jobs, users are strongly encouraged to use the option and check its contents to ensure that the analysis was actually done over the intended subset.

.. code-block:: none
-out_line_type name
This option specifies the desired output line type(s) for the **aggregate_stat** job type.

.. code-block:: none
-out_stat file
-set_hdr col_name string
The Stat-Analysis tool writes its output to either the log file or the file specified using the **-out** command line option. However the **aggregate** and **aggregate_stat** jobs create STAT output lines and the standard output written lacks the full set of STAT header columns. The **-out_stat** job command option may be used for these jobs to specify the name of an output file to which full STAT output lines should be written. When the **-out_stat** job command option is used for **aggregate** and **aggregate_stat** jobs the output is sent to the **-out_stat** file instead of the log or **-out** file.

Jobs will often combine output with multiple entries in the header columns. For example, a job may aggregate output with three different values in the **VX_MASK** column, such as "mask1", "mask2", and "mask3". The output **VX_MASK** column will contain the unique values encountered concatenated together with commas: "mask1,mask2,mask3". Alternatively, the **-set_hdr** option may be used to specify what should be written to the output header columns, such as "-set_hdr VX_MASK all_three_masks".
Jobs will often combine output with multiple entries in the header columns. For example, a job may aggregate output with three different values in the **VX_MASK** column, such as "mask1", "mask2", and "mask3". The output **VX_MASK** column will contain the unique values encountered concatenated together with commas: "mask1,mask2,mask3". Alternatively, the **-set_hdr** option may be used to specify what should be written to the output header columns, such as "-set_hdr VX_MASK all_three_masks". When **-set_hdr** is specified for **filter** jobs, it controls what is written to the **-dump_row** output file.

When using the "-out_stat" option to create a .stat output file and stratifying results using one or more "-by" job command options, those columns may be referenced in the "-set_hdr" option. When using multiple "-by" options, use "CASE" to reference the full case information string:

.. code-block:: none
-job aggregate_stat -line_type MPR -out_line_type CNT -by FCST_VAR,OBS_SID \
-set_hdr VX_MASK OBS_SID -set_hdr DESC CASE
Expand All @@ -662,7 +662,7 @@ When processing input MPR lines, these options may be used to define a masking g
When processing input MPR lines, these options are used to define the forecast, observation, or both thresholds to be applied when computing statistics. For categorical output line types (FHO, CTC, CTS, MCTC, MCTS) these define the categorical thresholds. For continuous output line types (SL1L2, SAL1L2, CNT), these define the continuous filtering thresholds and **-out_cnt_logic** defines how the forecast and observed logic should be combined.

.. code-block:: none
-out_fcst_wind_thresh thresh
-out_obs_wind_thresh thresh
-out_wind_thresh thresh
Expand Down
5 changes: 4 additions & 1 deletion internal/test_unit/R_test/test_util.R
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,10 @@ compareStatLty = function(stat1, stat2, lty, verb=0, strict=0){
# compare the information in the header columns
for(intCol in 2:21){
listMatch = apply(data.frame(dfV1[,intCol], dfV2[,intCol]), 1,
function(a){ a[1] == a[2] });
function(a){
same = (a[1] == a[2]) | (is.na(a[1]) & is.na(a[2]));
same[is.na(same)] = FALSE;
return(same); });
intNumDiff = sum( !listMatch[ !is.na(listMatch) ] );
if( 0 < intNumDiff ){
if( 1 <= verb ){
Expand Down
25 changes: 10 additions & 15 deletions internal/test_unit/xml/unit_python.xml
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@
<test name="python_numpy_point_stat">
<exec>&MET_BIN;/point_stat</exec>
<env>
<pair><name>MET_PYTHON_EXE</name> <value>&MET_PYTHON_EXE;</value></pair>
<pair><name>FCST_COMMAND</name> <value>&MET_BASE;/python/examples/read_ascii_numpy.py &DATA_DIR_PYTHON;/fcst.txt FCST</value></pair>
<pair><name>OBS_COMMAND</name> <value>&MET_BASE;/python/examples/read_ascii_numpy.py &DATA_DIR_PYTHON;/obs.txt OBS</value></pair>
</env>
Expand Down Expand Up @@ -480,21 +481,6 @@
</output>
</test>

<test name="python_point2grid_pb2nc_TMP">
<exec>&MET_BIN;/point2grid</exec>
<param> \
'PYTHON_NUMPY=&MET_BASE;/python/examples/read_met_point_obs.py &OUTPUT_DIR;/pb2nc/ndas.20120409.t12z.prepbufr.tm00.nc' \
G212 \
&OUTPUT_DIR;/python/pb2nc_TMP.nc \
-field 'name="TMP"; level="*"; valid_time="20120409_120000"; censor_thresh=[ &lt;0 ]; censor_val=[0];' \
-name TEMP \
-v 1
</param>
<output>
<grid_nc>&OUTPUT_DIR;/python/pb2nc_TMP.nc</grid_nc>
</output>
</test>

<!-- Invokes user-python logic to read a point obs -->
<test name="python_point2grid_pb2nc_TMP_user_python">
<exec>&MET_BIN;/point2grid</exec>
Expand Down Expand Up @@ -535,6 +521,7 @@
<test name="python_plot_point_obs_CONFIG">
<exec>&MET_BIN;/plot_point_obs</exec>
<env>
<pair><name>MET_PYTHON_EXE</name> <value>&MET_PYTHON_EXE;</value></pair>
<pair><name>TO_GRID</name> <value>NONE</value></pair>
</env>
<param> \
Expand All @@ -561,6 +548,7 @@
> &OUTPUT_DIR;/python/ensemble_stat/input_file_list; \
&MET_BIN;/ensemble_stat</exec>
<env>
<pair><name>MET_PYTHON_EXE</name> <value>&MET_PYTHON_EXE;</value></pair>
<pair><name>DESC</name> <value>NA</value></pair>
<pair><name>OBS_ERROR_FLAG</name> <value>FALSE</value></pair>
<pair><name>SKIP_CONST</name> <value>FALSE</value></pair>
Expand All @@ -587,6 +575,7 @@
<test name="python_point_stat_GRIB1_NAM_GDAS_WINDS">
<exec>&MET_BIN;/point_stat</exec>
<env>
<pair><name>MET_PYTHON_EXE</name> <value>&MET_PYTHON_EXE;</value></pair>
<pair><name>BEG_DS</name> <value>-1800</value></pair>
<pair><name>END_DS</name> <value>1800</value></pair>
<pair><name>OUTPUT_PREFIX</name> <value>GRIB1_NAM_GDAS_WINDS</value></pair>
Expand All @@ -605,6 +594,9 @@
</test>

<test name="python_plot_data_plane_SEMILATLON_ZONAL_MEAN">
<env>
<pair><name>MET_PYTHON_EXE</name> <value>&MET_PYTHON_EXE;</value></pair>
</env>
<exec>&MET_BIN;/plot_data_plane</exec>
<param> \
PYTHON_NUMPY \
Expand All @@ -619,6 +611,9 @@
</test>

<test name="python_pcp_combine_SEMILATLON_MERIDIONAL_MEAN">
<env>
<pair><name>MET_PYTHON_EXE</name> <value>&MET_PYTHON_EXE;</value></pair>
</env>
<exec>&MET_BIN;/pcp_combine</exec>
<param> \
-add PYTHON_NUMPY \
Expand Down
1 change: 1 addition & 0 deletions internal/test_unit/xml/unit_stat_analysis_ps.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
-job filter -line_type MPR -fcst_var TMP -fcst_lev Z2 -vx_mask DTC165 \
-column_str OBS_SID KDLN,KDHT,KDEN,KDLS,KDMA,KDMN,KDVT,KDEW \
-column_str_exc OBS_SID KDLN,KDHT \
-set_hdr DESC FILTER_OBS_SID \
-dump_row &OUTPUT_DIR;/stat_analysis_ps/POINT_STAT_FILTER_OBS_SID.stat \
-v 1
</param>
Expand Down
4 changes: 2 additions & 2 deletions scripts/python/examples/read_ascii_numpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
###########################################

def log(msg):
dataplane.log_msg(msg)
dataplane.log_message(msg)

def set_dataplane_attrs():
# attrs is a dictionary which contains attributes describing the dataplane.
Expand Down Expand Up @@ -95,5 +95,5 @@ def set_dataplane_attrs():
attrs = set_dataplane_attrs()
log("Attributes:\t" + repr(attrs))

# Sets fill_value if it exists
# Sets fill_value if it exists at the dataplane
#attrs['fill_value'] = 255 # for letter.txt
7 changes: 5 additions & 2 deletions scripts/python/examples/read_ascii_numpy_grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,11 @@
met_data = dataplane.read_2d_text_input(input_file)
print("Data Shape:\t" + repr(met_data.shape))
print("Data Type:\t" + repr(met_data.dtype))
except NameError:
print("Can't find the input file")
except NameError as ex:
print(" === ERROR from read_ascii_numpy_grid.py")
print(f" Exception: {type(ex)} {ex}")
print(f" sys.argv: {sys.argv}")
print(" Can't find the input file")

# attrs is a dictionary which contains attributes describing the dataplane.
# attrs should have 9 items, each of data type string:
Expand Down
2 changes: 1 addition & 1 deletion scripts/python/examples/read_ascii_xarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
###########################################

def log(msg):
dataplane.log_msg(msg)
dataplane.log_message(msg)

log("Python Script:\t" + repr(sys.argv[0]))

Expand Down
Loading

0 comments on commit b2ea670

Please sign in to comment.