From d8ca9b82df22cdd8bdea7410745e5ac96941e9f1 Mon Sep 17 00:00:00 2001 From: Will Mayfield Date: Thu, 10 Nov 2022 11:04:31 -0700 Subject: [PATCH 1/4] add python embedding script for IODAv2 files, conf, added to use case lists, and docs --- .github/parm/use_case_groups.json | 2 +- ...nalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.png | Bin 0 -> 91555 bytes ...Analysis_fcstGFS_HofX_obsIODAv2_PyEmbed.py | 155 ++++++++++++++++++ internal/tests/use_cases/all_use_cases.txt | 1 + ...alysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf | 85 ++++++++++ .../read_iodav2_mpr.py | 103 ++++++++++++ 6 files changed, 345 insertions(+), 1 deletion(-) create mode 100644 docs/_static/data_assimilation-StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.png create mode 100644 docs/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.py create mode 100644 parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf create mode 100644 parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py diff --git a/.github/parm/use_case_groups.json b/.github/parm/use_case_groups.json index 2f6814059a..8b90ce445e 100644 --- a/.github/parm/use_case_groups.json +++ b/.github/parm/use_case_groups.json @@ -56,7 +56,7 @@ }, { "category": "data_assimilation", - "index_list": "0", + "index_list": "0-1", "run": false }, { diff --git a/docs/_static/data_assimilation-StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.png b/docs/_static/data_assimilation-StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.png new file mode 100644 index 0000000000000000000000000000000000000000..633474d8683b9b8320b3f7bdafd894adddc1d599 GIT binary patch literal 91555 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 P8Gyjk)z4*}Q$iB}&-OxJ literal 0 HcmV?d00001 diff --git a/docs/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.py b/docs/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.py new file mode 100644 index 0000000000..dfb8a7d747 --- /dev/null +++ b/docs/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.py @@ -0,0 +1,155 @@ +""" +StatAnalysis: IODAv2 +=========================================================================== + +model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf + +""" + +########################################### +# Scientific Objective +# -------------------- +# +# This use case demonstrates the Stat-Analysis tool and ingestion of HofX NetCDF files +# that have been output from the Joint Effort for Data assimilation Integration (JEDI) +# data assimilation system. JEDI uses IODA version 2 formatted files, which are NetCDF files +# with certain requirements of variables and naming conventions. These files +# hold observations to be assimilated into forecasts, in this case taken from the JEDI software +# test data, which contained a small number of Global observation-forecast pairs +# derived from the hofx application. +# +# UFO is a component of HofX, which maps the background forecast to observation space +# to form O minus B pairs. The HofX application of JEDI takes the input IODAv2 files and +# adds an additional variable which is the forecast value as interpolated to the +# observation location. These HofX files are used as input to form Matched Pair (MPR) +# formatted lists via Python embedding. In this case, Stat-Analysis then performs an aggregate_stat +# job and outputs statistics in an ascii file. +# +# This use case adopts the IODAv2 formatted NetCDF files, which replace the previous variable +# formatting scheme to make use of NetCDF groups. + +############################################################################## +# Datasets +# -------- +# +# +# | **Data source:** JEDI HofX output files in IODAv2 format +# +# | **Location:** All of the input data required for this use case can be found in the met_test sample data tarball. Click here to the METplus releases page and download sample data for the appropriate release: https://github.com/dtcenter/METplus/releases +# | The tarball should be unpacked into the directory that you will set the value of INPUT_BASE. See `Running METplus`_ section for more information. +# | + +############################################################################## +# METplus Components +# ------------------ +# +# This use case utilizes the METplus StatAnalysis wrapper to search for +# files that are valid for the given case and generate a command to run +# the MET tool stat_analysis. + +############################################################################## +# METplus Workflow +# ---------------- +# +# StatAnalysis is the only tool called in this example. It processes the following +# run times: +# +# | **Valid:** 2018-04-15_00Z +# | **Forecast lead:** 0 hour +# | + +############################################################################## +# METplus Configuration +# --------------------- +# +# METplus first loads all of the configuration files 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/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf +# +# .. highlight:: bash +# .. literalinclude:: ../../../../parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf + +############################################################################## +# MET Configuration +# ----------------- +# +# METplus sets environment variables based on user settings in the METplus configuration file. +# See :ref:`How METplus controls MET config file settings` for more details. +# +# **YOU SHOULD NOT SET ANY OF THESE ENVIRONMENT VARIABLES YOURSELF! THEY WILL BE OVERWRITTEN BY METPLUS WHEN IT CALLS THE MET TOOLS!** +# +# 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:`StatAnalysis 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/STATAnalysisConfig_wrapped + +############################################################################## +# Python Embedding +# ---------------- +# +# This use case uses a Python embedding script to read input data +# +# parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py +# +# .. highlight:: python +# .. literalinclude:: ../../../../parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py +# + +############################################################################## +# Running METplus +# --------------- +# +# It is recommended to run this use case by: +# +# Passing in StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf then a user-specific system configuration file:: +# +# run_metplus.py -c /path/to/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf -c /path/to/user_system.conf +# +# The following METplus configuration variables must be set correctly to run this example.: +# +# * **INPUT_BASE** - Path to directory where sample data tarballs are unpacked (See Datasets section to obtain tarballs). +# * **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. +# + + +############################################################################## +# Expected Output +# --------------- +# +# A successful run will output the following both to the screen and to the logfile:: +# +# 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 StatAnalysis_IODAv2 (relative to **OUTPUT_BASE**) +# and will contain the following file: +# +# * dump.out + +############################################################################## +# Keywords +# -------- +# +# .. note:: +# +# * StatAnalysisToolUseCase +# * PythonEmbeddingFileUseCase +# * DataAssimilationUseCase +# +# Navigate to the :ref:`quick-search` page to discover other similar use cases. +# +# +# sphinx_gallery_thumbnail_path = '_static/data_assimilation-StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.png' diff --git a/internal/tests/use_cases/all_use_cases.txt b/internal/tests/use_cases/all_use_cases.txt index ef633503aa..b2e267992a 100644 --- a/internal/tests/use_cases/all_use_cases.txt +++ b/internal/tests/use_cases/all_use_cases.txt @@ -73,6 +73,7 @@ Category: climate Category: data_assimilation 0::StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface::model_applications/data_assimilation/StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface.conf +0::StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed::model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf Category: marine_and_cryosphere diff --git a/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf b/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf new file mode 100644 index 0000000000..cb3c5371cc --- /dev/null +++ b/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf @@ -0,0 +1,85 @@ +[config] + +# Documentation for this use case can be found at +# https://metplus.readthedocs.io/en/latest/generated/model_applications/data_assimilation/StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface.html + +# For additional information, please see the METplus Users Guide. +# https://metplus.readthedocs.io/en/latest/Users_Guide + +### +# Processes to run +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list +### + +PROCESS_LIST = StatAnalysis + + +### +# Time Info +# LOOP_BY options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +# LEAD_SEQ is the list of forecast leads to process +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control +### + +LOOP_BY = VALID + +VALID_TIME_FMT = %Y%m%d%H +VALID_BEG=2018041500 +VALID_END=2018041500 +VALID_INCREMENT = 12H + +LEAD_SEQ = 0 + + +### +# File I/O +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info +### + +MODEL1_STAT_ANALYSIS_LOOKIN_DIR = python {PARM_BASE}/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py {INPUT_BASE}/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/sample_hofx_output_sondes.nc4 + +STAT_ANALYSIS_OUTPUT_DIR = {OUTPUT_BASE}/StatAnalysis_IODAv2 +STAT_ANALYSIS_OUTPUT_TEMPLATE = job.out +MODEL1_STAT_ANALYSIS_DUMP_ROW_TEMPLATE = dump.out + + +### +# StatAnalysis Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#statanalysis +### + +MODEL1 = NA +MODEL1_OBTYPE = NA + +STAT_ANALYSIS_JOB_NAME = aggregate_stat +STAT_ANALYSIS_JOB_ARGS = -out_line_type CNT -dump_row [dump_row_file] -line_type MPR -by FCST_VAR + +MODEL_LIST = +DESC_LIST = +FCST_LEAD_LIST = +OBS_LEAD_LIST = +FCST_VALID_HOUR_LIST = +FCST_INIT_HOUR_LIST = +OBS_VALID_HOUR_LIST = +OBS_INIT_HOUR_LIST = +FCST_VAR_LIST = +OBS_VAR_LIST = +FCST_UNITS_LIST = +OBS_UNITS_LIST = +FCST_LEVEL_LIST = +OBS_LEVEL_LIST = +VX_MASK_LIST = +INTERP_MTHD_LIST = +INTERP_PNTS_LIST = +FCST_THRESH_LIST = +OBS_THRESH_LIST = +COV_THRESH_LIST = +ALPHA_LIST = +LINE_TYPE_LIST = + +GROUP_LIST_ITEMS = +LOOP_LIST_ITEMS = MODEL_LIST diff --git a/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py b/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py new file mode 100644 index 0000000000..de79edf64a --- /dev/null +++ b/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed/read_iodav2_mpr.py @@ -0,0 +1,103 @@ +from __future__ import print_function + +import pandas as pd +import os +from glob import glob +import sys +import xarray as xr +import datetime as dt + +######################################################################## + +print('Python Script:\t', sys.argv[0]) + +# Input is .nc or .nc4 file + +if len(sys.argv) == 2: + # Read the input file as the first argument + input_path = os.path.expandvars(sys.argv[1]) + try: + print("Input File:\t" + repr(input_path)) + + # Read all the needed groups + ioda_data = xr.open_dataset(input_path, group = 'MetaData') + ioda_hofx_data = xr.open_dataset(input_path, group = 'hofx') + + hofx_vars = list(ioda_hofx_data.keys()) + + # use dataframes + ioda_df = ioda_data.to_dataframe() + ioda_data.close() + + for var_name in hofx_vars: + ioda_df[var_name + '@hofx'] = ioda_hofx_data[var_name] + + # Add columns for needed attributes, for each variable present for hofx + for attribute in ['ObsValue', 'ObsType', 'EffectiveQC']: + ioda_attr_data = xr.open_dataset(input_path, group = attribute) + for var_name in hofx_vars: + ioda_df[var_name + '@' + attribute] = ioda_attr_data[var_name] + + ioda_attr_data.close() + ioda_hofx_data.close() + + nlocs = len(ioda_df.index) + print('Number of locations in set: ' + str(nlocs)) + + # Decode strings + time = list(ioda_df['datetime']) + + for i in range(0,nlocs): + temp = dt.datetime.strptime(time[i], '%Y-%m-%dT%H:%M:%SZ') + time[i] = temp.strftime('%Y%m%d_%H%M%S') + + ioda_df['datetime'] = time + + #set up MPR data + mpr_data = [] + + for var_name in hofx_vars: + + # Set up the needed columns + ioda_df_var = ioda_df[['datetime','station_id',var_name+'@ObsType', + 'latitude','longitude','air_pressure', + var_name+'@hofx',var_name+'@ObsValue', + var_name+'@EffectiveQC']] + + # Cute down to locations with valid ObsValues + ioda_df_var = ioda_df_var[abs(ioda_df_var[var_name+'@ObsValue']) < 1e6] + nlocs = len(ioda_df_var.index) + print(var_name+' has '+str(nlocs)+' valid obs.') + + # Add additional columns + ioda_df_var['lead'] = '000000' + ioda_df_var['MPR'] = 'MPR' + ioda_df_var['nobs'] = nlocs + ioda_df_var['index'] = range(0,nlocs) + ioda_df_var['varname'] = var_name + ioda_df_var['na'] = 'NA' + + # Arrange columns in MPR format + cols = ['na','na','lead','datetime','datetime','lead','datetime', + 'datetime','varname','na','lead','varname','na','na', + var_name+'@ObsType','na','na','lead','na','na','na','na','MPR', + 'nobs','index','station_id','latitude','longitude', + 'air_pressure','na',var_name+'@hofx',var_name+'@ObsValue', + var_name+'@EffectiveQC','na','na'] + + ioda_df_var = ioda_df_var[cols] + + # Into a list and all to strings + mpr_data = mpr_data + [list( map(str,i) ) for i in ioda_df_var.values.tolist() ] + + print("Total Length:\t" + repr(len(mpr_data))) + + except NameError: + print("Can't find the input file.") + print("HofX variables in this file:\t" + repr(hofx_vars)) +else: + print("ERROR: read_iodav2_mpr.py -> Must specify input file.\n") + sys.exit(1) + +######################################################################## + From f46d84ed3a2f872340d86c0ecc32426f80ba4914 Mon Sep 17 00:00:00 2001 From: Will Mayfield Date: Thu, 10 Nov 2022 11:08:40 -0700 Subject: [PATCH 2/4] update to conf file to fix comments --- .../StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf b/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf index cb3c5371cc..c93fce9401 100644 --- a/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf +++ b/parm/use_cases/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf @@ -1,7 +1,7 @@ [config] # Documentation for this use case can be found at -# https://metplus.readthedocs.io/en/latest/generated/model_applications/data_assimilation/StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface.html +# https://metplus.readthedocs.io/en/latest/generated/model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.html # For additional information, please see the METplus Users Guide. # https://metplus.readthedocs.io/en/latest/Users_Guide From a92254254213047011f4b6c68ebd2472cc505e0d Mon Sep 17 00:00:00 2001 From: Will Mayfield Date: Thu, 10 Nov 2022 11:15:58 -0700 Subject: [PATCH 3/4] update keyword in use cases file --- internal/tests/use_cases/all_use_cases.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/tests/use_cases/all_use_cases.txt b/internal/tests/use_cases/all_use_cases.txt index b2e267992a..a1a3604279 100644 --- a/internal/tests/use_cases/all_use_cases.txt +++ b/internal/tests/use_cases/all_use_cases.txt @@ -73,7 +73,7 @@ Category: climate Category: data_assimilation 0::StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface::model_applications/data_assimilation/StatAnalysis_fcstHAFS_obsPrepBufr_JEDI_IODA_interface.conf -0::StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed::model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf +0::StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed::model_applications/data_assimilation/StatAnalysis_fcstGFS_HofX_obsIODAv2_PyEmbed.conf:: py_embed Category: marine_and_cryosphere From 29ee340f6d77d4a93ca0c166f155193b5e368c39 Mon Sep 17 00:00:00 2001 From: George McCabe <23407799+georgemccabe@users.noreply.github.com> Date: Thu, 10 Nov 2022 15:50:55 -0700 Subject: [PATCH 4/4] apply fix to allow GHA tests to run from fork --- .github/jobs/docker_setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/docker_setup.sh b/.github/jobs/docker_setup.sh index ad20f64ecc..beaa7dd48c 100755 --- a/.github/jobs/docker_setup.sh +++ b/.github/jobs/docker_setup.sh @@ -67,7 +67,7 @@ fi # skip docker push if credentials are not set -if [ -z ${DOCKER_USERNAME+x} ] || [ -z ${DOCKER_PASSWORD+x} ]; then +if [ -z ${DOCKER_USERNAME} ] || [ -z ${DOCKER_PASSWORD} ]; then echo "DockerHub credentials not set. Skipping docker push" exit 0 fi