Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance Ensemble-Stat and Gen-Ens-Prod to read all ensemble members from a single input file #1695

Closed
7 of 21 tasks
j-opatz opened this issue Mar 4, 2021 · 6 comments · Fixed by #2001, #2007 or #2012
Closed
7 of 21 tasks
Assignees
Labels
MET: Ensemble Verification requestor: NOAA/CPC NOAA Climate Prediction Center requestor: NOAA/other NOAA Laboratory, not otherwise specified type: new feature Make it do something new
Milestone

Comments

@j-opatz
Copy link
Contributor

j-opatz commented Mar 4, 2021

Describe the New Feature

In our discussions with CPC, we've been presented with NMME netCDF data files where all of the ensemble members are located in the same data structure in 1 file. CPC confirmed this is the normal structure for ensemble files, and has been encountered during work with other entities (e.g. NRL). While Python embedding is currently a viable solution to this file design type, there's a desire for MET's EnsembleStat tool to do this natively.

Acceptance Testing

Sample NMME file can be found on kiowa, under /d1/projects/MET/MET_test_data/CPC_NMME. Variables of interest are ensmem(ensmem) and fcst(ensmem,target,lat,lon)
Tests should successfully read in all ensemble members in datafile into EnsembleStat with available processing options mirroring what was available for individual member files.

Time Estimate

Estimate the amount of work required here.
Unknown until later date, input from Engineers

Sub-Issues

Consider breaking the new feature down into sub-issues.

  • Add a checkbox for each sub-issue here.

Relevant Deadlines

None

Funding Source

TBD when on a beta schedule

Define the Metadata

Assignee

  • Select engineer(s) or no engineer required
  • Select scientist(s) or no scientist required

Labels

  • Select component(s)
  • Select priority
  • Select requestor(s)

Projects and Milestone

  • Review projects and select relevant Repository and Organization ones or add "alert:NEED PROJECT ASSIGNMENT" label
  • Select milestone to next major version milestone or "Future Versions"

Define Related Issue(s)

Consider the impact to the other METplus components.

New Feature Checklist

See the METplus Workflow for details.

  • Complete the issue definition above, including the Time Estimate and Funding source.
  • Fork this repository or create a branch of develop.
    Branch name: feature_<Issue Number>_<Description>
  • Complete the development and test your changes.
  • Add/update log messages for easier debugging.
  • Add/update unit tests.
  • Add/update documentation.
  • Push local changes to GitHub.
  • Submit a pull request to merge into develop.
    Pull request: feature <Issue Number> <Description>
  • Define the pull request metadata, as permissions allow.
    Select: Reviewer(s), Project(s), Milestone, and Linked issues
  • Iterate until the reviewer(s) accept and merge your changes.
  • Delete your fork or branch.
  • Close this issue.
@j-opatz j-opatz added component: ensemble vx type: new feature Make it do something new priority: low Low Priority requestor: NOAA/other NOAA Laboratory, not otherwise specified alert: NEED MORE DEFINITION Not yet actionable, additional definition required alert: NEED ACCOUNT KEY Need to assign an account key to this issue alert: NEED CYCLE ASSIGNMENT Need to assign to a release development cycle labels Mar 4, 2021
@j-opatz j-opatz self-assigned this Mar 4, 2021
@TaraJensen TaraJensen removed the alert: NEED CYCLE ASSIGNMENT Need to assign to a release development cycle label May 25, 2021
@TaraJensen TaraJensen added this to To do in MET-10.1.0-beta2 (9/01/21) via automation May 25, 2021
@TaraJensen TaraJensen added this to the MET 10.1.0 milestone May 25, 2021
@JohnHalleyGotway JohnHalleyGotway added this to To do in MET-10.1.0-beta3 (10/06/21) via automation Aug 26, 2021
@JohnHalleyGotway JohnHalleyGotway moved this from To do to To do: Ensemble-Stat Reorg in MET-10.1.0-beta3 (10/06/21) Aug 26, 2021
@JohnHalleyGotway JohnHalleyGotway added the requestor: NOAA/CPC NOAA Climate Prediction Center label Sep 9, 2021
@JohnHalleyGotway
Copy link
Collaborator

Make sure to test solution with NOAA/CPC data.

@JohnHalleyGotway
Copy link
Collaborator

JohnHalleyGotway commented Oct 1, 2021

Note that we can also test this support using NOAA GEFS data:
https://nomads.ncep.noaa.gov/pub/data/nccf/com/gens/prod/
For example, the files in gefs.20211001/00/atmos/pgrb2sp25/gep[01-30].t00z.pgrb2s.0p25.f000 contain data for 30 members, and their GRIB2 headers identify each of the 30 members. We can literally just concatenate all the member files to put them in a single GRIB2 file.

cat gep* > gepmem.t00z.pgrb2s.0p25.f000

Here's some 2m TMP records for each member:

wgrib2 gepmem.t00z.pgrb2s.0p25.f000 | grep TMP
10:4090980:d=2021100100:TMP:2 m above ground:anl:ENS=+1
33:15317808:d=2021100100:TMP:2 m above ground:anl:ENS=+2
...
654:319669475:d=2021100100:TMP:2 m above ground:anl:ENS=+29
677:331135932:d=2021100100:TMP:2 m above ground:anl:ENS=+30

Make sure that the changes for this issue also support GRIB records stored in this manner.

@JohnHalleyGotway
Copy link
Collaborator

@j-opatz consider this option for the logic...

Currently, the number of input ensemble member files defines the size of the ensemble. Ensemble-Stat attempts to read each field array entry listed in the config file from each of the input ensemble member files.

The issue we're trying solve is handling data files that contain multiple members, rather than just one. Since an ensemble of size 1 should probably be considered a degenerate case, we could consider adjusting the logic like this. If only one ensemble file is specified on the command line, do NOT define the ensemble as size 1. Instead, look in the config file and apply special processing logic. Each field array entry can contain multiple "level" settings. For example:

level = [ "(0,0,*,*)", "(0,1,*,*)", "(0,2,*,*)" ];

Use the number of level settings for each field to define the ensemble size. If we do this, we should require the number level entry for each field array to remain the same over all fields.
So the "name" string would have to remain the same, and only the "level" string would change.

Would that logic suffice?

@JohnHalleyGotway JohnHalleyGotway added this to To do in MET-10.1.0-beta4 (11/17/21) via automation Oct 6, 2021
@JohnHalleyGotway JohnHalleyGotway removed this from To do: Ensemble-Stat Reorg in MET-10.1.0-beta3 (10/06/21) Oct 6, 2021
@JohnHalleyGotway JohnHalleyGotway moved this from To do to To Do: Ensemble Verification in MET-10.1.0-beta4 (11/17/21) Oct 6, 2021
@JohnHalleyGotway JohnHalleyGotway removed this from To Do: Ensemble Verification in MET-10.1.0-beta4 (11/17/21) Nov 15, 2021
@JohnHalleyGotway JohnHalleyGotway added this to To do in MET-10.1.0-beta5 (1/14/22) via automation Nov 15, 2021
@j-opatz j-opatz added priority: high and removed priority: low Low Priority labels Dec 9, 2021
@georgemccabe georgemccabe changed the title Allow native reading of netCDF Ensemble file with all members included by EnsembleStat Allow native reading of Ensemble file with all members included by EnsembleStat and GenEnsProd Dec 27, 2021
@georgemccabe
Copy link
Collaborator

georgemccabe commented Dec 27, 2021

Notes from discussion with @JohnHalleyGotway on 12/27/2021:

  • Enhancements should be made for EnsembleStat and GenEnsProd, so put common logic into libraries as possible
  • Potential solution could involve adding a config variable called something like "ens_member_ids" which would be a list of strings to substitute into field info for each ensemble.

ens_member_ids = []; (default)
ens_member_ids = ["0", "1", "2", "3"];

Each value in the list could be substituted whenever a keyword such as MET_ENS_MEMBER_ID is found in the ens.field dictionary.

GRIB Example

name="name1"; level="L0"; GRIB_ens="+MET_ENS_MEMBER_ID";

NetCDF Example 1

name="name1"; level="(0,MET_ENS_MEMBER_OPTION,*,*)";

NetCDF Example 2

name="SFC_TMP_MEMMET_ENS_MEMBER_ID";

  • If multiple strings may be need to substituted into the field info, the "ens_member_ids" could also be set to a list of dictionaries similar to message_type_group_map. This could be a later enhancement since it may not be necessary.
ens_member_options = [
  {key="ID1"; val="0,1,2,3";},
  {key="ID2"; val="4,5,6,7";},
];

This would set MET_ENS_MEMBER_ID1 and MET_ENS_MEMBER_ID2 (MET_ENS_MEMBER_{key}) with each value in val. Both lists of values should be the same length.

  • We will need additional error checking to ensure that the ens_member_options list is only set if the file list is 1 and the list is not set if the file list is >1.
  • We will need to figure out how to handle the control member if set. Currently the control file is set with the -ctrl command line argument. The app errors out if this file is found in the ensemble file list, which would be true in this situation. We would need to specify the control member field info (with a new -ctrl_field argument?) to pull out the correct field.

@georgemccabe georgemccabe linked a pull request Jan 11, 2022 that will close this issue
14 tasks
@TaraJensen TaraJensen moved this from In progress to Pull request review in MET-10.1.0-beta5 (1/14/22) Jan 12, 2022
georgemccabe added a commit that referenced this issue Jan 12, 2022
…bles to other test config files for consistency
georgemccabe added a commit that referenced this issue Jan 13, 2022
…nsProd. Function to get raw magic string (before env var is substituted) tries to read the level value which is not set when using Python Embedding
MET-10.1.0-beta5 (1/14/22) automation moved this from Pull request review to Done Jan 14, 2022
JohnHalleyGotway added a commit that referenced this issue Jan 14, 2022
@georgemccabe
Copy link
Collaborator

georgemccabe commented Jan 14, 2022

A few notes:

  • The NetCDF test example demonstrating the new functionality results in warnings because the timing information cannot be read properly by MET.

WARNING: parse_cf_time_string() -> Unsupported time step in the CF convention time unit "months since 1960-01-01 00:00:00"

"months" is not currently a supported time interval in MET (see

if(tok.has("second") ||
tok.has("seconds") ||
tok.has("s")) sec_per_unit = 1;
else if(tok.has("minute") ||
tok.has("minutes") ||
tok.has("min")) sec_per_unit = 60;
else if(tok.has("hour") ||
tok.has("hours") ||
tok.has("hr") ||
tok.has("h")) sec_per_unit = 3600;
else if(tok.has("day") ||
tok.has("days") ||
tok.has("d")) sec_per_unit = 86400;
else {
mlog << Warning << "\n" << method_name
<< "Unsupported time step in the CF convention time unit \""
<< str << "\"\n\n";
return;
}
). In theory this time unit could be supported in MET because months and years can be computed if a relative time is available.

  • When reading multiple files, the tools will skip files that don't exist and still process the available data as long as the ens.vld_thresh threshold is met. However, when reading fields from a single file, the tools will error if a field is not found. If there is a chance that a single file with multiple ensembles data set may sometimes not include all of the same ensembles at a given time, then enhancements will be needed to support skipping these ensembles properly.

@georgemccabe georgemccabe reopened this Jan 14, 2022
MET-10.1.0-beta5 (1/14/22) automation moved this from Done to In progress Jan 14, 2022
JohnHalleyGotway added a commit that referenced this issue Jan 14, 2022
…, if specifed, at the end of the forecast file list rather than the beginning. This makes the logic for reading all members from the same input file easier.
georgemccabe added a commit that referenced this issue Jan 14, 2022
… a single input file and specifying a control member
@georgemccabe georgemccabe linked a pull request Jan 14, 2022 that will close this issue
14 tasks
@JohnHalleyGotway JohnHalleyGotway moved this from In progress to Pull request review in MET-10.1.0-beta5 (1/14/22) Jan 14, 2022
@JohnHalleyGotway JohnHalleyGotway removed alert: NEED MORE DEFINITION Not yet actionable, additional definition required alert: NEED ACCOUNT KEY Need to assign an account key to this issue labels Jan 15, 2022
@JohnHalleyGotway JohnHalleyGotway changed the title Allow native reading of Ensemble file with all members included by EnsembleStat and GenEnsProd Enhance EnsembleStat and GenEnsProd to read all ensemble members from a single input file Jan 15, 2022
JohnHalleyGotway added a commit that referenced this issue Jan 15, 2022
… for missing ensemble member files. In ensemble_stat replace ctrl_index with ctrl_file_index. That defines the index of the fcst_file_list in which the control member is stored (i.e. the end of the array, if it was specified at all). Compute ctrl_data_index as the number of VALID forecast files minus 1. Pass that value to the library code to define where the control member value lives.
MET-10.1.0-beta5 (1/14/22) automation moved this from Pull request review to Done Jan 15, 2022
JohnHalleyGotway added a commit that referenced this issue Jan 16, 2022
…semble-Stat config files added for this issue don't define a random number generator seed. This results in different output for each run and prevents the regression test from producing repeatable results. Defining the seed here to fix that.
JohnHalleyGotway added a commit that referenced this issue Feb 3, 2022
* Per #1906, modify code to pass entire path to make_temp_file_name instead of only the filename so that the function can tell whether or not the file exists. (#1952)

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* Feature 1761 percent thresh (#1956)

* Per issue #1761 in set_perc() adding code to get FBIAS numeric value, like 1.0 or 0.9, etc. SL

* Per issue #1761: in set_perc(), modified actual percentile calculation at end to use the extracted FBIAS numeric value (float). SL

* Per issue #1761: modified the check on the perc_thresh_freq_bias, just has to be > 0 now. SL

* Per issue #1761: cleaned up code in set_perc(). SL

* Per #1761, updates to Simple_Node::set_perc() to handle variable frequency bias amounts.
Changes include:
- Reverting the formatting of this back to how it originally was in the develop branch. In general, just match the formatting of the existing file, so as the minimize the number of difference lines.
- Add logic to adjust the percentile to be found based on the requested FBIAS value. Multiplying or dividing the percentile by the FBIAS value depends on the inequality type and whether we're bias adjusting the forecast or observation data.
- Adjust the log messages slightly.

Please be aware that I'm not totally confident in these changes. They warrant much more testing. This logic is very, very confusing.

* Per #1761, call compute_percentile() when double-checking the percentile values.

* Per #1761, remove unused variable.

* Per #1761, add warning for percentiles > 100.

* Per #1761. In set_perc(), after testing cleaned up code. SL

* Per issue #1761: adding new config file for testing dynamic FBIAS values. SL

* Per issue #1761: added new unit test for dynamic FBIAS values when running grid_stat. SL

* Per issue #1761, modified FBIAS section to indicated that the user can use dynamic values that are not 1.0. SL

* Update met/docs/Users_Guide/config_options.rst

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

* Update met/docs/Users_Guide/config_options.rst

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

* Update met/docs/Users_Guide/config_options.rst

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Per issue #1761, set nc_pairs_flag = FALSE. SL

Co-authored-by: Seth Linden <linden@kiowa.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Feature 1905 ens_ctrl (#1955)

Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com>

* Hotfix after merging changing for #1761. Updating the list of expected output files.

* Per #1905, committing a hotfix directly to the develop branch. Reverting the logic for computing the ensemble range back to what it was previously. The new version produced very slight differences in the 6-th or 7-th decimal place when compared to previous results. There's not good reason for these changes which were caused by the order of operations in casting from doubles to floats. Reverting back to the old logic prevents diffs for anyone else downstream and is the prudent choice.

* Feature 1957 ascii2nc_python (#1958)

* Feature 1949 cf netcdf documentaton (#1951)

* #1949 Added CF compliant NetCDF into data IO

* #1949 Added commas

* #1948 Some corrections for typo and added the links for CF attributes

* #1948 Added Performance with NetCDF input data

* #1949 Corrected tyoe and applied Juloie's suggestions

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

* Feature 1968 ens_ctrl (#1969)

* Feature 1809 gen prob (#1967)

* Feature 1970 v10.1.0-beta4 (#1973)

* Fix tiny typo in plot_data_plane usage statement.

* Hotfix for the develop branch to get met-10.1.0-beta4 compiling on WCOSS. The intel compiler does not allow adjacent >> characters when defining maps.

* Updating the beta4 release date from 11/16 to 11/17 since the beta4 release needs to be recreated.

* Update the MET PR template to list expected changes up front.

* Bugfix 1976 develop cdist (#1979)

* #1936 Excludes precip3hr, precip6hr, precip12hr, and precip10min from required variables for MESONET

* Per #1985, correcting typo found while creating V10.0.1 in the develop branch as well.

* Per #1985, VERY minor change to fix alignment of titles in Point-Stat... updating the develop branch.

* #1936 Added an unit test for newer MESONET file

* Feature 1989 sort (#1990)

* Feature 1991 VCNT (#1992)

* Feature 1993 grid_mask (#1994)

* #1844 Added vx_pointdata_python

* #1844 Added vx_pointdata_python to PYTHON_LIBS & make file for vx_pointdata_python

* #1844 Added vx_pointdata_python to SUBDIRS

* #1844 Initial release

* #1844 Added met_point_data.cc & met_point_data.h

* #1844 NcHeaderData is renamed to MetPointHeader and moved to met_point_dataq.h

* #1844 NcPointObsData is derived from MetPointObsData. Many methods are moved to the base class MetPointObsData

* #1844 Moved varianbles and methods to the base class MetPointData

* #1844 override the obs_data pointer to the derived class

* #1844 Added pyobject_as_bool & pyobject_as_string_array

* #1844 Cleanup include statements and addpointdata_python.h if python is enabled

* #18443 Support python embedding

* #1844 Initial release

* #1844 Make buf_size const

* Add GitHub Actions workflow to trigger METplus testing workflow (#2002)

* changed names of inputs to send to METplus to match changes to METplus repo

* #1965 Excludes the duplicated variable names from multiple input files

* #1965 Processed with the raw variable names and update them when the output is saved.

* #1965 Added unit test ioda2nc_same_input

* #1965 Processed with the raw variable names and update them when the output is saved.

* #1965 Added unit test ioda2nc_same_input

* #1965 initialize var_idx

* Update the development environment for seneca to add /usr/local/nco/bin and /usr/local/netcdf/bin to the path. Also define MET_TEST_RSCRIPT to point to a new enough version of RSCRIPT that has the ncdf4 package 1.17 or later.

* send email address of user who triggered event to METplus workflow as input

* Fixup the Rscript diffing logic to support running the nightly build on seneca. The problem here is that the ncdiff -x -v command line options that worked in version 4.7.0 NO LONGER work in 4.9.2. Added a check to skip over the time_bounds variable when processing the ncdiff output.

* No real changes here. Just formatting

* Feature 1974 message_type_group_map (#1999)

Co-authored-by: Howard Soh <hsoh@kiowa.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Feature 1996 uninitialized variables (#2004)

Co-authored-by: Howard Soh <hsoh@kiowa.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Feature 1695 ensemble single file (gen_ens_prod) (#2001)

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

* Feature 1965 NB faile with time summary by ioda2nc (#2008)

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

* Feature 1810 shapes (#2005)

* #1844 Added log message for use_var_id

* #1844 Get use_var_id for python embedding

* #1844 Initial release

* #1844 Added met_point_obs.py and read_met_point_obs.py

* #1844 Added 4 unit test for python embedding of MET point data

* More changes to test_util.R to account for differences between 4.7.0 and 4.9.2 of ncdiff. The earlier version reported 0 diffs for the time_bounds, lat, lon, latitude, and longitude variables while the newer version reports their raw values. Simply ignore these variables for now. This isn't a great solution but when we reimplement this testing logic in python, we can address this issue then.

* #1844 Added python embedding for point observation data

* Feature 1926 gridstat openmp (#1977)

Co-authored-by: johnhg <johnhg@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* feature 1695 ensemble single file (ensemble_stat) (#2007)

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

* Committing directly to the develop branch. Removing many, many instances of MET_BUILD_BASE and a couple instances of MET_BASE from the examples listed in Appendix A. The inconsistent use of these variables will only cause confusion. Removing them will help avoid that confusion. Big picture... MET_BASE defines the installed 'share/met' directory. It can be used to reference the location of map or polyline files. MET_BUILD_BASE is only used in the context of the test scripts. There, it's defined as the top-level source code directory in which the code was compiled. Its used to reference the location of sample data files or Rscript included in the tarball. I left a couple references to these variables in Appendix A where thier use is not confusing. But I removed all instances which are used to the define the location of the 'bin' directory. Instead, let's just assume the MET binaries are already in their path... or the user knows where to find them.

* feature 2011 v10.1.0-beta5 (#2014)

* feature 1695 fix issues with ensemble changes (#2012)

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

* Hotfix for #1695 committed directly to the develop branch. The new Ensemble-Stat config files added for this issue don't define a random number generator seed. This results in different output for each run and prevents the regression test from producing repeatable results. Defining the seed here to fix that.

* Adding George to email list for the nightly build.

* Fix the links for the met-10.1.0-beta5 release notes.

* #1844 Make met_point_obs as abstract class

* #1844 correctedb for loop end condition on processing obs bdata

* Feature 1546 unit_tests (#2021)

* #2020 Added SonarQube related varibales

* #2020 Initial release

* #2015 Avoid the repeasted debug message if derived varibales are disabled

* #1996 Initialize right and left

* #1966 Call clear() instead of reset memory for Header variable

* #1966 Make sure the levels from variable  does not exceed the maxLevel

* #1966 Removed unreachable codes

* #1966 Do not write into NetcDF if empty data

* #2015 Corrected "retained or derived" count

* Feature 1546 CI testing (#2029)

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

* fixed broken workflow by setting environment variable expected for docker build script

* add missing docker tag from push command

* added correct docker tag value

* fixed incorrect truth data version for updating -ref reference data

* Updating develop with changes to the unit tests names. Renaming unit_test.yml to a more generic testing.yml name since it compiles AND/OR runs unit tests. Also make the job names more concise so its easier to see what's running in the action summary window on GitHub.

* fixed directory to copy truth data into -- copy command was copying the content of the directory, not including the directory itself

* Per #1907, added warning about switch from Ensemble-Stat to Gen-Ens-Prod (#2032)

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* 2028 Check null for header data

* Removed un-reachable code

* #2028 Check if the pointer (d) is null

* #2015 Changed warning to debug message

* #2028 Passing two dimensionl cur and dim array

* #2028 Set obs_data

* Feature 2003 briercl (#2034)

Co-authored-by: jprestop <jpresto@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>
Co-authored-by: Seth Linden <linden@ucar.edu>
Co-authored-by: Seth Linden <linden@kiowa.rap.ucar.edu>
Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com>
Co-authored-by: hsoh-u <hsoh@ucar.edu>
Co-authored-by: Howard Soh <hsoh@kiowa.rap.ucar.edu>
Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: John Halley Gotway <johnhg@seneca.rap.ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: mo-mglover <78152252+mo-mglover@users.noreply.github.com>
Co-authored-by: John Halley Gotway <johnhg@kiowa.rap.ucar.edu>
Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
JohnHalleyGotway added a commit that referenced this issue Feb 12, 2022
* Per #1906, modify code to pass entire path to make_temp_file_name instead of only the filename so that the function can tell whether or not the file exists. (#1952)

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* Feature 1761 percent thresh (#1956)

* Per issue #1761 in set_perc() adding code to get FBIAS numeric value, like 1.0 or 0.9, etc. SL

* Per issue #1761: in set_perc(), modified actual percentile calculation at end to use the extracted FBIAS numeric value (float). SL

* Per issue #1761: modified the check on the perc_thresh_freq_bias, just has to be > 0 now. SL

* Per issue #1761: cleaned up code in set_perc(). SL

* Per #1761, updates to Simple_Node::set_perc() to handle variable frequency bias amounts.
Changes include:
- Reverting the formatting of this back to how it originally was in the develop branch. In general, just match the formatting of the existing file, so as the minimize the number of difference lines.
- Add logic to adjust the percentile to be found based on the requested FBIAS value. Multiplying or dividing the percentile by the FBIAS value depends on the inequality type and whether we're bias adjusting the forecast or observation data.
- Adjust the log messages slightly.

Please be aware that I'm not totally confident in these changes. They warrant much more testing. This logic is very, very confusing.

* Per #1761, call compute_percentile() when double-checking the percentile values.

* Per #1761, remove unused variable.

* Per #1761, add warning for percentiles > 100.

* Per #1761. In set_perc(), after testing cleaned up code. SL

* Per issue #1761: adding new config file for testing dynamic FBIAS values. SL

* Per issue #1761: added new unit test for dynamic FBIAS values when running grid_stat. SL

* Per issue #1761, modified FBIAS section to indicated that the user can use dynamic values that are not 1.0. SL

* Update met/docs/Users_Guide/config_options.rst

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

* Update met/docs/Users_Guide/config_options.rst

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

* Update met/docs/Users_Guide/config_options.rst

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Update test/config/GridStatConfig_fbias_perc_thresh

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

* Per issue #1761, set nc_pairs_flag = FALSE. SL

Co-authored-by: Seth Linden <linden@kiowa.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Feature 1905 ens_ctrl (#1955)

Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com>

* Hotfix after merging changing for #1761. Updating the list of expected output files.

* Per #1905, committing a hotfix directly to the develop branch. Reverting the logic for computing the ensemble range back to what it was previously. The new version produced very slight differences in the 6-th or 7-th decimal place when compared to previous results. There's not good reason for these changes which were caused by the order of operations in casting from doubles to floats. Reverting back to the old logic prevents diffs for anyone else downstream and is the prudent choice.

* Feature 1957 ascii2nc_python (#1958)

* Feature 1949 cf netcdf documentaton (#1951)

* #1949 Added CF compliant NetCDF into data IO

* #1949 Added commas

* #1948 Some corrections for typo and added the links for CF attributes

* #1948 Added Performance with NetCDF input data

* #1949 Corrected tyoe and applied Juloie's suggestions

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

* Feature 1968 ens_ctrl (#1969)

* Feature 1809 gen prob (#1967)

* Feature 1970 v10.1.0-beta4 (#1973)

* Fix tiny typo in plot_data_plane usage statement.

* Hotfix for the develop branch to get met-10.1.0-beta4 compiling on WCOSS. The intel compiler does not allow adjacent >> characters when defining maps.

* Updating the beta4 release date from 11/16 to 11/17 since the beta4 release needs to be recreated.

* Update the MET PR template to list expected changes up front.

* Bugfix 1976 develop cdist (#1979)

* #1936 Excludes precip3hr, precip6hr, precip12hr, and precip10min from required variables for MESONET

* Per #1985, correcting typo found while creating V10.0.1 in the develop branch as well.

* Per #1985, VERY minor change to fix alignment of titles in Point-Stat... updating the develop branch.

* #1936 Added an unit test for newer MESONET file

* Feature 1989 sort (#1990)

* Feature 1991 VCNT (#1992)

* Feature 1993 grid_mask (#1994)

* #1844 Added vx_pointdata_python

* #1844 Added vx_pointdata_python to PYTHON_LIBS & make file for vx_pointdata_python

* #1844 Added vx_pointdata_python to SUBDIRS

* #1844 Initial release

* #1844 Added met_point_data.cc & met_point_data.h

* #1844 NcHeaderData is renamed to MetPointHeader and moved to met_point_dataq.h

* #1844 NcPointObsData is derived from MetPointObsData. Many methods are moved to the base class MetPointObsData

* #1844 Moved varianbles and methods to the base class MetPointData

* #1844 override the obs_data pointer to the derived class

* #1844 Added pyobject_as_bool & pyobject_as_string_array

* #1844 Cleanup include statements and addpointdata_python.h if python is enabled

* #18443 Support python embedding

* #1844 Initial release

* #1844 Make buf_size const

* Add GitHub Actions workflow to trigger METplus testing workflow (#2002)

* changed names of inputs to send to METplus to match changes to METplus repo

* #1965 Excludes the duplicated variable names from multiple input files

* #1965 Processed with the raw variable names and update them when the output is saved.

* #1965 Added unit test ioda2nc_same_input

* #1965 Processed with the raw variable names and update them when the output is saved.

* #1965 Added unit test ioda2nc_same_input

* #1965 initialize var_idx

* Update the development environment for seneca to add /usr/local/nco/bin and /usr/local/netcdf/bin to the path. Also define MET_TEST_RSCRIPT to point to a new enough version of RSCRIPT that has the ncdf4 package 1.17 or later.

* send email address of user who triggered event to METplus workflow as input

* Fixup the Rscript diffing logic to support running the nightly build on seneca. The problem here is that the ncdiff -x -v command line options that worked in version 4.7.0 NO LONGER work in 4.9.2. Added a check to skip over the time_bounds variable when processing the ncdiff output.

* No real changes here. Just formatting

* Feature 1974 message_type_group_map (#1999)

Co-authored-by: Howard Soh <hsoh@kiowa.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Feature 1996 uninitialized variables (#2004)

Co-authored-by: Howard Soh <hsoh@kiowa.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Feature 1695 ensemble single file (gen_ens_prod) (#2001)

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

* Feature 1965 NB faile with time summary by ioda2nc (#2008)

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

* Feature 1810 shapes (#2005)

* #1844 Added log message for use_var_id

* #1844 Get use_var_id for python embedding

* #1844 Initial release

* #1844 Added met_point_obs.py and read_met_point_obs.py

* #1844 Added 4 unit test for python embedding of MET point data

* More changes to test_util.R to account for differences between 4.7.0 and 4.9.2 of ncdiff. The earlier version reported 0 diffs for the time_bounds, lat, lon, latitude, and longitude variables while the newer version reports their raw values. Simply ignore these variables for now. This isn't a great solution but when we reimplement this testing logic in python, we can address this issue then.

* #1844 Added python embedding for point observation data

* Feature 1926 gridstat openmp (#1977)

Co-authored-by: johnhg <johnhg@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* feature 1695 ensemble single file (ensemble_stat) (#2007)

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

* Committing directly to the develop branch. Removing many, many instances of MET_BUILD_BASE and a couple instances of MET_BASE from the examples listed in Appendix A. The inconsistent use of these variables will only cause confusion. Removing them will help avoid that confusion. Big picture... MET_BASE defines the installed 'share/met' directory. It can be used to reference the location of map or polyline files. MET_BUILD_BASE is only used in the context of the test scripts. There, it's defined as the top-level source code directory in which the code was compiled. Its used to reference the location of sample data files or Rscript included in the tarball. I left a couple references to these variables in Appendix A where thier use is not confusing. But I removed all instances which are used to the define the location of the 'bin' directory. Instead, let's just assume the MET binaries are already in their path... or the user knows where to find them.

* feature 2011 v10.1.0-beta5 (#2014)

* feature 1695 fix issues with ensemble changes (#2012)

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

* Hotfix for #1695 committed directly to the develop branch. The new Ensemble-Stat config files added for this issue don't define a random number generator seed. This results in different output for each run and prevents the regression test from producing repeatable results. Defining the seed here to fix that.

* Adding George to email list for the nightly build.

* Fix the links for the met-10.1.0-beta5 release notes.

* #1844 Make met_point_obs as abstract class

* #1844 correctedb for loop end condition on processing obs bdata

* Feature 1546 unit_tests (#2021)

* #2020 Added SonarQube related varibales

* #2020 Initial release

* #2015 Avoid the repeasted debug message if derived varibales are disabled

* #1996 Initialize right and left

* #1966 Call clear() instead of reset memory for Header variable

* #1966 Make sure the levels from variable  does not exceed the maxLevel

* #1966 Removed unreachable codes

* #1966 Do not write into NetcDF if empty data

* #2015 Corrected "retained or derived" count

* Feature 1546 CI testing (#2029)

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

* fixed broken workflow by setting environment variable expected for docker build script

* add missing docker tag from push command

* added correct docker tag value

* fixed incorrect truth data version for updating -ref reference data

* Updating develop with changes to the unit tests names. Renaming unit_test.yml to a more generic testing.yml name since it compiles AND/OR runs unit tests. Also make the job names more concise so its easier to see what's running in the action summary window on GitHub.

* fixed directory to copy truth data into -- copy command was copying the content of the directory, not including the directory itself

* Per #1907, added warning about switch from Ensemble-Stat to Gen-Ens-Prod (#2032)

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* 2028 Check null for header data

* Removed un-reachable code

* #2028 Check if the pointer (d) is null

* #2015 Changed warning to debug message

* #2028 Passing two dimensionl cur and dim array

* #2028 Set obs_data

* Feature 2003 briercl (#2034)

* do not run testing workflow if changes are isolated to the met/docs directory

* Per #2013, changed source and README.  ci-run-unit (#2039)

* Feature 1055 read rot latlon (#2041)

* CI: output summary of differences in GHA log to easily see results without having to download the log artifact

* #2027 Added a debug message

* #2027 ci-run-unit Changed wind thres

* #2027 ci-run-unit Increased the precision to debug message

* print end of script after error summary, ci-run-unit

* #2027 Increased the buffer and cheking the status of sprintf

* Feature 1998 standard sections (#2038)

* fixing section headers to be consistent with METplus #1998

* fixing section headers to be consistent with METplus #1998

* fixing section headers to be consistent with METplus #1998 missed one

* fixing section headers to be consistent with METplus #1998 try again

* fixing section headers to be consistent with METplus #1998 I had it right the first time

* fixing section headers to be consistent with METplus #1998

* fixing section headers to be consistent with METplus #1998 fixing mistake

* fixing section headers to be consistent with METplus #1998

* fixing section headers to be consistent with METplus #1998

* fixing section headers to be consistent with METplus #1998

* fixing section headers to be consistent with METplus #1998

* fixing section header underscore to dash #1998

* updating TOC vs ref 1998

* updating TOC vs ref 1998 completed

* trying to fix link #1998

* trying to fix link adding reference back in #1998

* updating TOC again underscore vs dash #1998

* updating TOC again underscore vs dash #1998

* updating TOC vs ref 1998 try

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998 take 2

* standardizing TOC sections #1998 take 3

* re-standardizing TOC sections #1998

* re-standardizing TOC sections #1998

* re-standardizing TOC sections #1998

* re-standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998

* updating questions into the TOC.  test #1998

* updating questions into the TOC. #1998

* standardizing TOC sections #1998

* standardizing TOC sections #1998 fixing typo

* standardizing TOC sections #1998 fixing typo

* standardizing TOC sections #1998 fixing typo

* standardizing TOC sections #1998 fixing typo

* standardizing TOC sections #1998 fixing typo

* standardizing TOC sections #1998 fixing typo

* cleaning up questions. removing section title from questions.

* adding a period #1989.

* adding the line breaks back in to match other formatting within MET #1989.

* Changed some "^^^" to "----"

* Changed "###" to "***"

Co-authored-by: jprestop <jpresto@ucar.edu>

* Update met_stats.cc

#2047 Removed the debug message

* Update met_stats.cc

Removing variable that was set but never used because SonarQube might complain about that, like Fortify does.

* Feature 2040 parse timing (#2048)

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>

* CI: Add logic to auto update input data (#2046)

* Bugfix 2045 develop hira (#2049)

Co-authored-by: jprestop <jpresto@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>
Co-authored-by: Seth Linden <linden@ucar.edu>
Co-authored-by: Seth Linden <linden@kiowa.rap.ucar.edu>
Co-authored-by: j-opatz <59586397+j-opatz@users.noreply.github.com>
Co-authored-by: hsoh-u <hsoh@ucar.edu>
Co-authored-by: Howard Soh <hsoh@kiowa.rap.ucar.edu>
Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: John Halley Gotway <johnhg@seneca.rap.ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: mo-mglover <78152252+mo-mglover@users.noreply.github.com>
Co-authored-by: John Halley Gotway <johnhg@kiowa.rap.ucar.edu>
Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: davidalbo <dave@ucar.edu>
Co-authored-by: lisagoodrich <33230218+lisagoodrich@users.noreply.github.com>
@JohnHalleyGotway JohnHalleyGotway changed the title Enhance EnsembleStat and GenEnsProd to read all ensemble members from a single input file Enhance Ensemble0Stat and Gen-Ens-Prod to read all ensemble members from a single input file Mar 10, 2022
@JohnHalleyGotway JohnHalleyGotway changed the title Enhance Ensemble0Stat and Gen-Ens-Prod to read all ensemble members from a single input file Enhance Ensemble-Stat and Gen-Ens-Prod to read all ensemble members from a single input file Apr 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
MET: Ensemble Verification requestor: NOAA/CPC NOAA Climate Prediction Center requestor: NOAA/other NOAA Laboratory, not otherwise specified type: new feature Make it do something new
Projects
No open projects
4 participants