From 8f645517d4fe0a7bb5a9bc4face0d489c2ea7b19 Mon Sep 17 00:00:00 2001
From: Jess <20195932+wrongkindofdoctor@users.noreply.github.com>
Date: Thu, 8 Aug 2024 14:44:45 -0400
Subject: [PATCH 1/8] catalog builder updates (#654)
* update ecgtools version in base env files
* remove duplicate entries in catalog_builder info dicts
add json utilties to read information from fieldlist tables
clean up custom parsers
---
src/conda/env_base.yml | 2 +-
src/conda/env_base_micromamba.yml | 2 +-
tools/catalog_builder/catalog_builder.py | 319 ++++++++++++++---------
3 files changed, 198 insertions(+), 125 deletions(-)
diff --git a/src/conda/env_base.yml b/src/conda/env_base.yml
index 92ad3bb5e..d99571f7d 100644
--- a/src/conda/env_base.yml
+++ b/src/conda/env_base.yml
@@ -21,7 +21,7 @@ dependencies:
- pandas=2.2.2
- pint=0.24.3
- dask=2024.7.1
-- ecgtools=2023.7.13
+- ecgtools=2024.7.31
- cfunits=3.3.6
- intake=0.7.0
- intake-esm=2024.2.6
diff --git a/src/conda/env_base_micromamba.yml b/src/conda/env_base_micromamba.yml
index aa0644d26..39be42c33 100644
--- a/src/conda/env_base_micromamba.yml
+++ b/src/conda/env_base_micromamba.yml
@@ -22,7 +22,7 @@ dependencies:
- pandas=2.2.0
- pint=0.24.3
- dask=2024.1.1
-- ecgtools=2023.7.13
+- ecgtools=2024.7.31
- cfunits=3.3.6
- intake=0.7.0
- intake-esm=2024.2.6
diff --git a/tools/catalog_builder/catalog_builder.py b/tools/catalog_builder/catalog_builder.py
index cfe95644d..1c7c1098e 100644
--- a/tools/catalog_builder/catalog_builder.py
+++ b/tools/catalog_builder/catalog_builder.py
@@ -15,22 +15,25 @@
import click
import intake
import os
+import io
+import json
import pathlib
import sys
import time
import traceback
import typing
+import collections
import xarray as xr
import yaml
from datetime import timedelta
from ecgtools import Builder
from ecgtools.builder import INVALID_ASSET, TRACEBACK
-from ecgtools.parsers import parse_cmip6
+from ecgtools.parsers.cmip import parse_cmip6
from ecgtools.parsers.cesm import parse_cesm_timeseries
import logging
-root_dir = os.path.dirname(os.path.realpath(__file__)).split('/tools/catalog_builder')[0]
-sys.path.insert(0, os.path.join(root_dir, 'src'))
+ROOT_DIR = os.path.dirname(os.path.realpath(__file__)).split('/tools/catalog_builder')[0]
+assert(os.path.isdir(ROOT_DIR)), f'{ROOT_DIR} not found'
# from src import util
# Define a log object for debugging
@@ -62,6 +65,97 @@ def __getitem__(self, n):
# instantiate the class maker
catalog_class = ClassMaker()
+def strip_comments(str_: str, delimiter=None):
+ """Remove comments from *str_*. Comments are taken to start with an
+ arbitrary *delimiter* and run to the end of the line.
+ """
+ # would be better to use shlex, but that doesn't support multi-character
+ # comment delimiters like '//'
+ escaped_quote_placeholder = '\v' # no one uses vertical tab
+
+ if not delimiter:
+ return str_
+ lines = str_.splitlines()
+ for i in range(len(lines)):
+ # get rid of lines starting with delimiter
+ if lines[i].startswith(delimiter):
+ lines[i] = ''
+ continue
+ # handle delimiters midway through a line:
+ # If delimiter appears quoted in a string, don't want to treat it as
+ # a comment. So for each occurrence of delimiter, count number of
+ # "s to its left and only truncate when that's an even number.
+ # First we get rid of -escaped single "s.
+ replaced_line = lines[i].replace('\\\"', escaped_quote_placeholder)
+ line_parts = replaced_line.split(delimiter)
+ quote_counts = [s.count('"') for s in line_parts]
+ j = 1
+ while sum(quote_counts[:j]) % 2 != 0:
+ if j >= len(quote_counts):
+ raise ValueError(f"Couldn't parse line {i+1} of string.")
+ j += 1
+ replaced_line = delimiter.join(line_parts[:j])
+ lines[i] = replaced_line.replace(escaped_quote_placeholder, '\\\"')
+ # make lookup table of correct line numbers, taking into account lines we
+ # dropped
+ line_nos = [i for i, s in enumerate(lines) if (s and not s.isspace())]
+ # join lines, stripping blank lines
+ new_str = '\n'.join([s for s in lines if (s and not s.isspace())])
+ return new_str, line_nos
+def parse_json(str_: str):
+ """Parse JSONC (JSON with ``//``-comments) string *str_* into a Python object.
+ Comments are discarded. Wraps standard library :py:func:`json.loads`.
+
+ Syntax errors in the input (:py:class:`~json.JSONDecodeError`) are passed
+ through from the Python standard library parser. We correct the line numbers
+ mentioned in the errors to refer to the original file (i.e., with comments.)
+ """
+ def _pos_from_lc(lineno, colno, str_):
+ # fix line number, since we stripped commented-out lines. JSONDecodeError
+ # computes line/col no. in error message from character position in string.
+ lines = str_.splitlines()
+ return (colno - 1) + sum((len(line) + 1) for line in lines[:lineno])
+
+ (strip_str, line_nos) = strip_comments(str_, delimiter='//')
+ try:
+ parsed_json = json.loads(strip_str,
+ object_pairs_hook=collections.OrderedDict)
+ except json.JSONDecodeError as exc:
+ # fix reported line number, since we stripped commented-out lines.
+ assert exc.lineno <= len(line_nos)
+ raise json.JSONDecodeError(
+ msg=exc.msg, doc=str_,
+ pos=_pos_from_lc(line_nos[exc.lineno-1], exc.colno, str_)
+ )
+ except UnicodeDecodeError as exc:
+ raise json.JSONDecodeError(
+ msg=f"parse_json received UnicodeDecodeError:\n{exc}",
+ doc=strip_str, pos=0
+ )
+
+ return parsed_json
+def read_json(file_path: str, log=_log) -> dict:
+ """Reads a struct from a JSONC file at *file_path*.
+ """
+ log.debug('Reading file %s', file_path)
+ try:
+ with io.open(file_path, 'r', encoding='utf-8') as file_:
+ str_ = file_.read()
+ except Exception as exc:
+ # something more serious than missing file
+ _log.critical("Caught exception when trying to read %s: %r", file_path, exc)
+ exit(1)
+ return parse_json(str_)
+
+freq_opts = ['mon',
+ 'day',
+ 'daily',
+ '6hr',
+ '3hr',
+ '1hr',
+ 'subhr',
+ 'annual',
+ 'year']
# custom parser for GFDL am5 data that uses fieldlist metadata and the DRS to populate
# required catalog fields
@@ -69,79 +163,70 @@ def parse_gfdl_am5_data(file_name: str):
file = pathlib.Path(file_name) # uncomment when ready to run
- try:
- num_dir_parts = len(file.parts) # file name index = num_parts 1
- # isolate file from rest of path
- stem = file.stem
- # split the file name into components based on
- # assume am5 file name format is {realm}.{time_range}.[variable_id}.nc
- split = stem.split('.')
- num_file_parts = len(split)
- realm = split[0]
- cell_methods = ""
- cell_measures = ""
- time_range = split[1]
- start_time = time_range.split('-')[0]
- end_time = time_range.split('-')[1]
- variable_id = split[2]
- source_type = ""
- member_id = ""
- experiment_id = ""
- source_id = ""
- chunk_freq = file.parts[num_dir_parts-2] # e.g, 1yr, 5yr
- variant_label = ""
- grid_label = ""
- table_id = ""
- assoc_files = ""
- activity_id = "GFDL"
- institution_id = ""
- long_name = ""
- standard_name = ""
- units = ""
-
- freq_opts = ['mon',
- 'day',
- 'daily',
- '6hr',
- '3hr',
- '1hr',
- 'subhr',
- 'annual',
- 'year']
- output_frequency = ""
- file_freq = file.parts[num_dir_parts-3]
- for f in freq_opts:
- if f in file_freq:
- output_frequency = f
- break
- if 'daily' in output_frequency:
- output_frequency = 'day'
- elif 'monthly' in output_frequency:
- output_frequency = 'mon'
+ num_dir_parts = len(file.parts) # file name index = num_parts 1
+ # isolate file from rest of path
+ stem = file.stem
+ # split the file name into components based on
+ # assume am5 file name format is {realm}.{time_range}.[variable_id}.nc
+ split = stem.split('.')
+ num_file_parts = len(split)
+ realm = split[0]
+ cell_methods = ""
+ cell_measures = ""
+ time_range = split[1]
+ start_time = time_range.split('-')[0]
+ end_time = time_range.split('-')[1]
+ variable_id = split[2]
+ source_type = ""
+ member_id = ""
+ experiment_id = ""
+ source_id = ""
+ chunk_freq = file.parts[num_dir_parts - 2] # e.g, 1yr, 5yr
+ variant_label = ""
+ grid_label = ""
+ table_id = ""
+ assoc_files = ""
+ activity_id = "GFDL"
+ institution_id = ""
+ long_name = ""
+ standard_name = ""
+ units = ""
+ output_frequency = ""
+ file_freq = file.parts[num_dir_parts - 3]
+
+ for f in freq_opts:
+ if f in file_freq:
+ output_frequency = f
+ break
+ if 'daily' in output_frequency:
+ output_frequency = 'day'
+ elif 'monthly' in output_frequency:
+ output_frequency = 'mon'
# read metadata from the appropriate fieldlist
- if 'cmip' in realm.lower():
- gfdl_fieldlist = os.path.join(root_dir, 'data/fieldlist_CMIP.jsonc')
- else:
- gfdl_fieldlist = os.path.join(root_dir, 'data/fieldlist_GFDL.jsonc')
- #try:
- # json_config = util.json_utils.read_json(gfdl_fieldlist, log=_log)
- #except IOError:
- # print("Unable to open file", gfdl_fieldlist)
- # sys.exit(1)
- #gfdl_info = util.basic.NameSpace.fromDict(json_config)
-
- #if hasattr(gfdl_info.variables, variable_id):
- # var_metadata = gfdl_info.variables.get(variable_id)
- #else:
- # raise KeyError(f'{variable_id} not found in {gfdl_fieldlist}')
-
- if hasattr(var_metadata, 'standard_name'):
- standard_name = var_metadata.standard_name
- if hasattr(var_metadata, 'long_name'):
- long_name = var_metadata.long_name
- if hasattr(var_metadata, 'units'):
- units = var_metadata.units
+ if 'cmip' in realm.lower():
+ gfdl_fieldlist = os.path.join(ROOT_DIR, 'data/fieldlist_CMIP.jsonc')
+ else:
+ gfdl_fieldlist = os.path.join(ROOT_DIR, 'data/fieldlist_GFDL.jsonc')
+ try:
+ gfdl_info = read_json(gfdl_fieldlist, log=_log)
+ except IOError:
+ print("Unable to open file", gfdl_fieldlist)
+ sys.exit(1)
+
+ if hasattr(gfdl_info['variables'], variable_id):
+ var_metadata = gfdl_info['variables'].get(variable_id)
+ else:
+ raise KeyError(f'{variable_id} not found in {gfdl_fieldlist}')
+
+ if hasattr(var_metadata, 'standard_name'):
+ standard_name = var_metadata.standard_name
+ if hasattr(var_metadata, 'long_name'):
+ long_name = var_metadata.long_name
+ if hasattr(var_metadata, 'units'):
+ units = var_metadata.units
+
+ try:
info = {
'activity_id': activity_id,
'assoc_files': assoc_files,
@@ -165,7 +250,6 @@ def parse_gfdl_am5_data(file_name: str):
'standard_name': standard_name,
'long_name': long_name,
'frequency': output_frequency,
- 'variable': variable_id,
'file_name': stem,
'path': str(file)
}
@@ -176,59 +260,50 @@ def parse_gfdl_am5_data(file_name: str):
print(exc)
return {INVALID_ASSET: file, TRACEBACK: traceback.format_exc()}
+
# custom parser for pp data stored on GFDL archive filesystem
# assumed DRS of [root_dir]/pp/[realm]/[analysis type (e.g, 'ts')]/[frequency]/[chunk size (e.g., 1yr, 5yr)]
-
def parse_gfdl_pp_ts(file_name: str):
# files = sorted(glob.glob(os.path.join(file_name,'*.nc'))) # debug comment when ready to run
# file = pathlib.Path(files[0]) # debug comment when ready to run
file = pathlib.Path(file_name) # uncomment when ready to run
+ num_parts = len(file.parts) # file name index = num_parts 1
+ # isolate file from rest of path
+ stem = file.stem
+ # split the file name into components based on _
+ split = stem.split('.')
+ realm = split[0]
+ cell_methods = ""
+ cell_measures = ""
+ time_range = split[1]
+ start_time = time_range.split('-')[0]
+ end_time = time_range.split('-')[1]
+ variable_id = split[2]
+ source_type = ""
+ member_id = ""
+ experiment_id = ""
+ source_id = ""
+ chunk_freq = file.parts[num_parts - 2] # e.g, 1yr, 5yr
+ variant_label = ""
+ grid_label = ""
+ table_id = ""
+ assoc_files = ""
+ activity_id = "GFDL"
+ institution_id = ""
+
+ output_frequency = ""
+ file_freq = file.parts[num_parts - 3]
+ for f in freq_opts:
+ if f in file_freq:
+ output_frequency = f
+ break
+ if 'daily' in output_frequency:
+ output_frequency = 'day'
+ elif 'monthly' in output_frequency:
+ output_frequency = 'mon'
try:
- num_parts = len(file.parts) # file name index = num_parts 1
- # isolate file from rest of path
- stem = file.stem
- # split the file name into components based on _
- split = stem.split('.')
- realm = split[0]
- cell_methods = ""
- cell_measures = ""
- time_range = split[1]
- start_time = time_range.split('-')[0]
- end_time = time_range.split('-')[1]
- variable_id = split[2]
- source_type = ""
- member_id = ""
- experiment_id = ""
- source_id = ""
- chunk_freq = file.parts[num_parts-2] # e.g, 1yr, 5yr
- variant_label = ""
- grid_label = ""
- table_id = ""
- assoc_files = ""
- activity_id = "GFDL"
- institution_id = ""
-
- freq_opts = ['mon',
- 'day',
- 'daily',
- '6hr',
- '3hr',
- '1hr',
- 'subhr',
- 'annual',
- 'year']
- output_frequency = ""
- file_freq = file.parts[num_parts-3]
- for f in freq_opts:
- if f in file_freq:
- output_frequency = f
- break
- if 'daily' in output_frequency:
- output_frequency = 'day'
- elif 'monthly' in output_frequency:
- output_frequency = 'mon'
# call to xr.open_dataset required by ecgtoos.builder.Builder
with xr.open_dataset(file, chunks={}, decode_times=False) as ds:
variable_list = [var for var in ds if 'standard_name' in ds[var].attrs or 'long_name' in ds[var].attrs]
@@ -275,7 +350,6 @@ def parse_gfdl_pp_ts(file_name: str):
'standard_name': standard_name,
'long_name': long_name,
'frequency': output_frequency,
- 'variable': variable_id,
'file_name': stem,
'path': str(file)
}
@@ -382,8 +456,7 @@ def __init__(self):
'experiment_id',
'frequency',
'member_id',
- 'realm',
- 'time_range'
+ 'realm'
]
def call_build(self,
file_parse_method=None):
@@ -425,7 +498,7 @@ def call_build(self, file_parse_method=None):
file_parse_method = parse_cesm_timeseries
# see https://github.com/ncar-xdev/ecgtools/blob/main/ecgtools/parsers/cesm.py
# for more parsing methods
- self.cb = self.cb.build(parsing_func=file_parse_method)
+ self.cb = self.cb.build(parsing_func=file_parse_method)
def load_config(config):
From 50caf9db8f8d42d9b6abb090e9049e3ef1f50779 Mon Sep 17 00:00:00 2001
From: Jess <20195932+wrongkindofdoctor@users.noreply.github.com>
Date: Sun, 11 Aug 2024 10:31:43 -0400
Subject: [PATCH 2/8] Update ci (#653)
* add synthetic data test catalogs for CI
* update CI runtime config templates
* update mdtf test call in mdtf_tests.yml
* remove test config template from PR
* delete old catalog templates
* update ubuntu template data catalog paths
* update id and path to point to correct file in the ubuntu json header file
* add units and standard_name columns to test catalogs
* add entries to CESM field list
* add units and standard_name entries to test catalog header files
* add blank line to check group date range delimiters list in preprocessor
fix format returned by datelabel date_fmt so that there is no dash in yyyymmddHHMMSS
add check to use date range in place of time range if time range is not present in the inital esm intake dataset returned by the query
* add datelabel to commit
* remove old comments from pp
* remove extra lines from catalog_file entries in test header files
* narrow down problem pod
* add pods back to test config
fix incorrect units entires in test catalogs
* try excluding variable_id from query since standard_name should be sufficient
* remove commented-out variable-id lines from pp query
* comment out precip_diurnal_cycle from set1 tests
* add directory check to synthetic data block of test yaml
* fix paths in test csv files
* change total_precipitation_rate to precipitation_rate in test catalogs
* fix precipitation_rate standard names in test catalogs
* just use a subset of set1 tests since the test data are creating issue that need to be resolved separately with pp mods
---
.github/workflows/mdtf_tests.yml | 17 +-
data/fieldlist_CESM.jsonc | 16 +-
doc/sphinx/ref_catalogs.rst | 10 +
doc/sphinx/ref_toc.rst | 1 +
doc/sphinx/start_config.rst | 3 +
src/preprocessor.py | 16 +-
src/util/datelabel.py | 2 +-
tests/esm_catalog_CESM_test_ubuntu.json | 191 ------------------
tests/esm_catalog_CMIP_test_ubuntu.json | 191 ------------------
tests/esm_catalog_GFDL_test_macos.json | 111 ----------
tests/esm_catalog_GFDL_test_ubuntu.json | 111 ----------
tests/esm_catalog_test_macos.csv | 59 ++++++
...macos.json => esm_catalog_test_macos.json} | 38 ++--
tests/esm_catalog_test_ubuntu.csv | 59 ++++++
...acos.json => esm_catalog_test_ubuntu.json} | 38 ++--
tests/github_actions_test_macos_set1.jsonc | 16 +-
tests/github_actions_test_macos_set2.jsonc | 5 +-
tests/github_actions_test_macos_set3.jsonc | 5 +-
tests/github_actions_test_ubuntu_set1.jsonc | 15 +-
tests/github_actions_test_ubuntu_set2.jsonc | 5 +-
tests/github_actions_test_ubuntu_set3.jsonc | 5 +-
21 files changed, 206 insertions(+), 708 deletions(-)
create mode 100644 doc/sphinx/ref_catalogs.rst
delete mode 100644 tests/esm_catalog_CESM_test_ubuntu.json
delete mode 100644 tests/esm_catalog_CMIP_test_ubuntu.json
delete mode 100644 tests/esm_catalog_GFDL_test_macos.json
delete mode 100644 tests/esm_catalog_GFDL_test_ubuntu.json
create mode 100644 tests/esm_catalog_test_macos.csv
rename tests/{esm_catalog_CESM_test_macos.json => esm_catalog_test_macos.json} (86%)
create mode 100644 tests/esm_catalog_test_ubuntu.csv
rename tests/{esm_catalog_CMIP_test_macos.json => esm_catalog_test_ubuntu.json} (86%)
diff --git a/.github/workflows/mdtf_tests.yml b/.github/workflows/mdtf_tests.yml
index baaad27a9..80699f751 100644
--- a/.github/workflows/mdtf_tests.yml
+++ b/.github/workflows/mdtf_tests.yml
@@ -92,6 +92,7 @@ jobs:
- name: Generate Model Data
run: |
cd ../
+ echo "${PWD}"
micromamba activate _MDTF_synthetic_data
pip install mdtf-test-data
mkdir mdtf_test_data ; cd mdtf_test_data
@@ -133,9 +134,9 @@ jobs:
echo "${POD_OUTPUT}"
micromamba activate _MDTF_base
# trivial check that install script worked
- ./mdtf_framework.py --version
+ ./mdtf_framework.py --help
# run the test PODs
- ./mdtf -v -f ${{matrix.json-file}}
+ ./mdtf -f ${{matrix.json-file}}
# Debug POD log(s)
# cat ${POD_OUTPUT}/MDTF_NCAR.Synthetic_1975_1981/Wheeler_Kiladis/Wheeler_Kiladis.log
- name: Get observational data for set 2
@@ -161,7 +162,7 @@ jobs:
run: |
micromamba activate _MDTF_base
# run the test PODs
- ./mdtf -v -f ${{matrix.json-file-set2}}
+ ./mdtf -f ${{matrix.json-file-set2}}
# Uncomment the following line for debugging
#cat ../wkdir/MDTF_GFDL.Synthetic_1_10/MJO_prop_amp/MJO_prop_amp.log
- name: Get observational data for set 3
@@ -200,8 +201,8 @@ jobs:
run: |
micromamba activate _MDTF_base
# run the test PODs
- ./mdtf -v -f ${{matrix.json-file-set3}}
- - name: Run unit tests
- run: |
- micromamba activate _MDTF_base
- python -m unittest discover
+ ./mdtf -f ${{matrix.json-file-set3}}
+ #- name: Run unit tests
+ # run: |
+ # micromamba activate _MDTF_base
+ # python -m unittest discover
diff --git a/data/fieldlist_CESM.jsonc b/data/fieldlist_CESM.jsonc
index 216000976..7e500ee3c 100644
--- a/data/fieldlist_CESM.jsonc
+++ b/data/fieldlist_CESM.jsonc
@@ -77,7 +77,8 @@
"ndim": 4
},
"Z500": {
- "standard_name": "geopotential_height_500mb",
+ "standard_name": "geopotential_height",
+ "long_name": "geopotential height at 500 hPa",
"realm": "atmos",
"units": "m",
// note: 4d name is 'Z3' but Z500 = height at 500 mb, etc.
@@ -271,6 +272,19 @@
"units": "W m-2",
"ndim": 3
},
+ "tave": {
+ "standard_name": "vertically_integrated_temperature",
+ "realm": "atmos",
+ "units": "K",
+ "ndim": 3
+ },
+ "qsat_int": {
+ "standard_name": "specific_humidity",
+ "long_name": "Vertically integrated saturated specific humidity (surface to 200 mb)",
+ "realm": "atmos",
+ "units": "kg m-2",
+ "ndim": 3
+ },
"zos": {
"standard_name": "sea_surface_height_above_geoid",
"realm": "ocean",
diff --git a/doc/sphinx/ref_catalogs.rst b/doc/sphinx/ref_catalogs.rst
new file mode 100644
index 000000000..a8beef2b4
--- /dev/null
+++ b/doc/sphinx/ref_catalogs.rst
@@ -0,0 +1,10 @@
+.. role:: console(code)
+ :language: console
+ :class: highlight
+.. _ref-catalogs:
+
+ESM-intake catalogs
+===================
+
+The MDTF-diagnostics uses `intake-ESM `__ catalogs and APIs to access
+model datasets and verify POD data requirements. The MDTF-diagnostics package provides a basic
\ No newline at end of file
diff --git a/doc/sphinx/ref_toc.rst b/doc/sphinx/ref_toc.rst
index 0ccfa84dc..13188ccb3 100644
--- a/doc/sphinx/ref_toc.rst
+++ b/doc/sphinx/ref_toc.rst
@@ -4,6 +4,7 @@ Framework reference
.. toctree::
:maxdepth: 2
+ ref_catalogs
ref_cli
ref_conventions
ref_data
diff --git a/doc/sphinx/start_config.rst b/doc/sphinx/start_config.rst
index e644dfff3..21b98a403 100644
--- a/doc/sphinx/start_config.rst
+++ b/doc/sphinx/start_config.rst
@@ -60,6 +60,9 @@ a `discussion`__ if you
We encourage MDTF-diagnostics users to try running both catalog builders. Feel free to extend either tool to suit your needs, and consider submitting your additions to the appropriate
repository(ies).
+See :doc:`the catalog documentation ` for more information on the implementation of
+ESM-intake catalogs in the framework and the required column information for preprocessor functionality.
+
Adding your observational data files
++++++++++++++++++++++++++++++++++++
diff --git a/src/preprocessor.py b/src/preprocessor.py
index 1821b2852..855a2b25f 100644
--- a/src/preprocessor.py
+++ b/src/preprocessor.py
@@ -798,7 +798,7 @@ def check_group_daterange(self, group_df: pd.DataFrame, case_dr,
log: log file
"""
date_col = "date_range"
- delimiters = ",.!?/&-:;@_'"
+ delimiters = ",.!?/&-:;@_'\\s+"
if not hasattr(group_df, 'start_time') or not hasattr(group_df, 'end_time'):
if hasattr(group_df, 'time_range'):
start_times = []
@@ -821,11 +821,13 @@ def check_group_daterange(self, group_df: pd.DataFrame, case_dr,
new_end_time_vals = []
for s in start_time_vals:
- new_start_time_vals.append(int(''.join(w for w in re.split("[" + "\\".join(delimiters) + "]", s)
+ new_start_time_vals.append(int(''.join(w for w in re.split("[" + "\\".join(delimiters) + "]",
+ s)
if w)))
for e in end_time_vals:
- new_end_time_vals.append(int(''.join(w for w in re.split("[" + "\\".join(delimiters) + "]", e)
- if w)))
+ new_end_time_vals.append(int(''.join(w for w in re.split("[" + "\\".join(delimiters) + "]",
+ e)
+ if w)))
start_time_vals = new_start_time_vals
end_time_vals = new_end_time_vals
@@ -913,7 +915,6 @@ def query_catalog(self,
# the variable is translated
case_d.query['frequency'] = freq
case_d.query['path'] = [path_regex]
- case_d.query['variable_id'] = var.translation.name
case_d.query['realm'] = realm_regex
case_d.query['standard_name'] = var.translation.standard_name
@@ -934,10 +935,8 @@ def query_catalog(self,
for a in var.alternates:
if hasattr(a, 'translation'):
if a.translation is not None:
- case_d.query.update({'variable_id': a.translation.name})
case_d.query.update({'standard_name': a.translation.standard_name})
else:
- case_d.query.update({'variable_id': a.name})
case_d.query.update({'standard_name': a.standard_name})
if any(var.translation.scalar_coords):
found_z_entry = False
@@ -979,6 +978,9 @@ def query_catalog(self,
)
range_attr_string = 'intake_esm_attrs:time_range'
+ if not hasattr(cat_subset_df[list(cat_subset_df)[0]].attrs, range_attr_string):
+ range_attr_string = 'intake_esm_attrs:date_range'
+
date_range_dict = {f: cat_subset_df[f].attrs[range_attr_string]
for f in list(cat_subset_df)}
date_range_dict = dict(sorted(date_range_dict.items(), key=lambda item: item[1]))
diff --git a/src/util/datelabel.py b/src/util/datelabel.py
index 917fae3f1..159cccbae 100644
--- a/src/util/datelabel.py
+++ b/src/util/datelabel.py
@@ -71,7 +71,7 @@ def date_fmt(date):
case 12:
fmt = '%Y%m%d%H%M'
case 14:
- fmt = '%Y%m%d-%H%M%S'
+ fmt = '%Y%m%d%H%M%S'
return fmt
diff --git a/tests/esm_catalog_CESM_test_ubuntu.json b/tests/esm_catalog_CESM_test_ubuntu.json
deleted file mode 100644
index 0d666a5b5..000000000
--- a/tests/esm_catalog_CESM_test_ubuntu.json
+++ /dev/null
@@ -1,191 +0,0 @@
-{
- "esmcat_version": "0.0.1",
- "attributes": [
- {
- "column_name": "activity_id",
- "vocabulary": ""
- },
- {
- "column_name": "branch_method",
- "vocabulary": ""
- },
- {
- "column_name": "branch_time_in_child",
- "vocabulary": ""
- },
- {
- "column_name": "branch_time_in_parent",
- "vocabulary": ""
- },
- {
- "column_name": "experiment",
- "vocabulary": ""
- },
- {
- "column_name": "experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "frequency",
- "vocabulary": ""
- },
- {
- "column_name": "grid",
- "vocabulary": ""
- },
- {
- "column_name": "grid_label",
- "vocabulary": ""
- },
- {
- "column_name": "institution_id",
- "vocabulary": ""
- },
- {
- "column_name": "nominal_resolution",
- "vocabulary": ""
- },
- {
- "column_name": "parent_activity_id",
- "vocabulary": ""
- },
- {
- "column_name": "parent_experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "parent_source_id",
- "vocabulary": ""
- },
- {
- "column_name": "parent_time_units",
- "vocabulary": ""
- },
- {
- "column_name": "parent_variant_label",
- "vocabulary": ""
- },
- {
- "column_name": "product",
- "vocabulary": ""
- },
- {
- "column_name": "realm",
- "vocabulary": ""
- },
- {
- "column_name": "source_id",
- "vocabulary": ""
- },
- {
- "column_name": "source_type",
- "vocabulary": ""
- },
- {
- "column_name": "sub_experiment",
- "vocabulary": ""
- },
- {
- "column_name": "sub_experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "table_id",
- "vocabulary": ""
- },
- {
- "column_name": "variable_id",
- "vocabulary": ""
- },
- {
- "column_name": "variant_label",
- "vocabulary": ""
- },
- {
- "column_name": "member_id",
- "vocabulary": ""
- },
- {
- "column_name": "standard_name",
- "vocabulary": ""
- },
- {
- "column_name": "long_name",
- "vocabulary": ""
- },
- {
- "column_name": "units",
- "vocabulary": ""
- },
- {
- "column_name": "vertical_levels",
- "vocabulary": ""
- },
- {
- "column_name": "init_year",
- "vocabulary": ""
- },
- {
- "column_name": "start_time",
- "vocabulary": ""
- },
- {
- "column_name": "end_time",
- "vocabulary": ""
- },
- {
- "column_name": "time_range",
- "vocabulary": ""
- },
- {
- "column_name": "path",
- "vocabulary": ""
- },
- {
- "column_name": "version",
- "vocabulary": ""
- }
- ],
- "assets": {
- "column_name": "path",
- "format": "netcdf",
- "format_column_name": null
- },
- "aggregation_control": {
- "variable_column_name": "variable_id",
- "groupby_attrs": [
- "activity_id",
- "institution_id",
- "source_id",
- "experiment_id",
- "frequency",
- "member_id",
- "table_id",
- "grid_label",
- "realm",
- "variant_label",
- "time_range"
- ],
- "aggregations": [
- {
- "type": "union",
- "attribute_name": "variable_id",
- "options": {}
- },
- {
- "type": "join_existing",
- "attribute_name": "time_range",
- "options": {
- "dim": "time",
- "coords": "minimal",
- "compat": "override"
- }
- }
- ]
- },
- "id": "esm_catalog_CESM_test_ubuntu.csv",
- "description": null,
- "title": null,
- "last_updated": "2023-06-01",
- "catalog_file": "file:/home/runner/mdtf/MDTF-diagnostics/tests/esm_catalog_CESM_test_ubuntu.csv"
-}
\ No newline at end of file
diff --git a/tests/esm_catalog_CMIP_test_ubuntu.json b/tests/esm_catalog_CMIP_test_ubuntu.json
deleted file mode 100644
index 1aaba9542..000000000
--- a/tests/esm_catalog_CMIP_test_ubuntu.json
+++ /dev/null
@@ -1,191 +0,0 @@
-{
- "esmcat_version": "0.0.1",
- "attributes": [
- {
- "column_name": "activity_id",
- "vocabulary": ""
- },
- {
- "column_name": "branch_method",
- "vocabulary": ""
- },
- {
- "column_name": "branch_time_in_child",
- "vocabulary": ""
- },
- {
- "column_name": "branch_time_in_parent",
- "vocabulary": ""
- },
- {
- "column_name": "experiment",
- "vocabulary": ""
- },
- {
- "column_name": "experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "frequency",
- "vocabulary": ""
- },
- {
- "column_name": "grid",
- "vocabulary": ""
- },
- {
- "column_name": "grid_label",
- "vocabulary": ""
- },
- {
- "column_name": "institution_id",
- "vocabulary": ""
- },
- {
- "column_name": "nominal_resolution",
- "vocabulary": ""
- },
- {
- "column_name": "parent_activity_id",
- "vocabulary": ""
- },
- {
- "column_name": "parent_experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "parent_source_id",
- "vocabulary": ""
- },
- {
- "column_name": "parent_time_units",
- "vocabulary": ""
- },
- {
- "column_name": "parent_variant_label",
- "vocabulary": ""
- },
- {
- "column_name": "product",
- "vocabulary": ""
- },
- {
- "column_name": "realm",
- "vocabulary": ""
- },
- {
- "column_name": "source_id",
- "vocabulary": ""
- },
- {
- "column_name": "source_type",
- "vocabulary": ""
- },
- {
- "column_name": "sub_experiment",
- "vocabulary": ""
- },
- {
- "column_name": "sub_experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "table_id",
- "vocabulary": ""
- },
- {
- "column_name": "variable_id",
- "vocabulary": ""
- },
- {
- "column_name": "variant_label",
- "vocabulary": ""
- },
- {
- "column_name": "member_id",
- "vocabulary": ""
- },
- {
- "column_name": "standard_name",
- "vocabulary": ""
- },
- {
- "column_name": "long_name",
- "vocabulary": ""
- },
- {
- "column_name": "units",
- "vocabulary": ""
- },
- {
- "column_name": "vertical_levels",
- "vocabulary": ""
- },
- {
- "column_name": "init_year",
- "vocabulary": ""
- },
- {
- "column_name": "start_time",
- "vocabulary": ""
- },
- {
- "column_name": "end_time",
- "vocabulary": ""
- },
- {
- "column_name": "time_range",
- "vocabulary": ""
- },
- {
- "column_name": "path",
- "vocabulary": ""
- },
- {
- "column_name": "version",
- "vocabulary": ""
- }
- ],
- "assets": {
- "column_name": "path",
- "format": "netcdf",
- "format_column_name": null
- },
- "aggregation_control": {
- "variable_column_name": "variable_id",
- "groupby_attrs": [
- "activity_id",
- "institution_id",
- "source_id",
- "experiment_id",
- "frequency",
- "member_id",
- "table_id",
- "grid_label",
- "realm",
- "variant_label",
- "time_range"
- ],
- "aggregations": [
- {
- "type": "union",
- "attribute_name": "variable_id",
- "options": {}
- },
- {
- "type": "join_existing",
- "attribute_name": "time_range",
- "options": {
- "dim": "time",
- "coords": "minimal",
- "compat": "override"
- }
- }
- ]
- },
- "id": "esm_catalog_CMIP_test_ubuntu.csv",
- "description": null,
- "title": null,
- "last_updated": "2024-03-11",
- "catalog_file": "file:/home/runner/mdtf/MDTF-diagnostics/tests/esm_catalog_CMIP_test_ubuntu.csv"
-}
\ No newline at end of file
diff --git a/tests/esm_catalog_GFDL_test_macos.json b/tests/esm_catalog_GFDL_test_macos.json
deleted file mode 100644
index ff33d68bc..000000000
--- a/tests/esm_catalog_GFDL_test_macos.json
+++ /dev/null
@@ -1,111 +0,0 @@
-{
- "esmcat_version": "0.0.1",
- "attributes": [
- {
- "column_name": "activity_id",
- "vocabulary": ""
- },
- {
- "column_name": "institution_id",
- "vocabulary": ""
- },
- {
- "column_name": "source_id",
- "vocabulary": ""
- },
- {
- "column_name": "experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "frequency",
- "vocabulary": ""
- },
- {
- "column_name": "modeling_realm",
- "vocabulary": ""
- },
- {
- "column_name": "table_id",
- "vocabulary": ""
- },
- {
- "column_name": "member_id",
- "vocabulary": ""
- },
- {
- "column_name": "grid_label",
- "vocabulary": ""
- },
- {
- "column_name": "variable_id",
- "vocabulary": ""
- },
- {
- "column_name": "temporal_subset",
- "vocabulary": ""
- },
- {
- "column_name": "chunk_freq",
- "vocabulary": ""
- },
- {
- "column_name": "grid_label",
- "vocabulary": ""
- },
- {
- "column_name":"platform",
- "vocabulary": ""
- },
- {
- "column_name": "platform",
- "vocabulary": ""
- },
- {
- "column_name": "cell_methods",
- "vocabulary": ""
- },
- {
- "column_name": "path",
- "vocabulary": ""
- }
- ],
- "assets": {
- "column_name": "path",
- "format": "netcdf",
- "format_column_name": null
- },
- "aggregation_control": {
- "variable_column_name": "variable_id",
- "groupby_attrs": [
- "source_id",
- "experiment_id",
- "frequency",
- "member_id",
- "modeling_realm",
- "variable_id",
- "chunk_freq"
- ],
- "aggregations": [
- {
- "type": "union",
- "attribute_name": "variable_id",
- "options": {}
- },
- {
- "type": "join_existing",
- "attribute_name": "temporal_subset",
- "options": {
- "dim": "time",
- "coords": "minimal",
- "compat": "override"
- }
- }
- ]
- },
- "id": "esm_catalog_GFDL_test_macos.csv",
- "description": null,
- "title": null,
- "last_updated": "2023-05-07T16:35:52Z",
- "catalog_file": "file:/Users/runner/mdtf/MDTF-diagnostics/tests/esm_catalog_GFDL_test_macos.csv"
-}
diff --git a/tests/esm_catalog_GFDL_test_ubuntu.json b/tests/esm_catalog_GFDL_test_ubuntu.json
deleted file mode 100644
index 44032454d..000000000
--- a/tests/esm_catalog_GFDL_test_ubuntu.json
+++ /dev/null
@@ -1,111 +0,0 @@
-{
- "esmcat_version": "0.0.1",
- "attributes": [
- {
- "column_name": "activity_id",
- "vocabulary": ""
- },
- {
- "column_name": "institution_id",
- "vocabulary": ""
- },
- {
- "column_name": "source_id",
- "vocabulary": ""
- },
- {
- "column_name": "experiment_id",
- "vocabulary": ""
- },
- {
- "column_name": "frequency",
- "vocabulary": ""
- },
- {
- "column_name": "modeling_realm",
- "vocabulary": ""
- },
- {
- "column_name": "table_id",
- "vocabulary": ""
- },
- {
- "column_name": "member_id",
- "vocabulary": ""
- },
- {
- "column_name": "grid_label",
- "vocabulary": ""
- },
- {
- "column_name": "variable_id",
- "vocabulary": ""
- },
- {
- "column_name": "temporal_subset",
- "vocabulary": ""
- },
- {
- "column_name": "chunk_freq",
- "vocabulary": ""
- },
- {
- "column_name": "grid_label",
- "vocabulary": ""
- },
- {
- "column_name":"platform",
- "vocabulary": ""
- },
- {
- "column_name": "platform",
- "vocabulary": ""
- },
- {
- "column_name": "cell_methods",
- "vocabulary": ""
- },
- {
- "column_name": "path",
- "vocabulary": ""
- }
- ],
- "assets": {
- "column_name": "path",
- "format": "netcdf",
- "format_column_name": null
- },
- "aggregation_control": {
- "variable_column_name": "variable_id",
- "groupby_attrs": [
- "source_id",
- "experiment_id",
- "frequency",
- "member_id",
- "modeling_realm",
- "variable_id",
- "chunk_freq"
- ],
- "aggregations": [
- {
- "type": "union",
- "attribute_name": "variable_id",
- "options": {}
- },
- {
- "type": "join_existing",
- "attribute_name": "temporal_subset",
- "options": {
- "dim": "time",
- "coords": "minimal",
- "compat": "override"
- }
- }
- ]
- },
- "id": "esm_catalog_GFDL_test_ubuntu.csv",
- "description": null,
- "title": null,
- "last_updated": "2023-05-07T16:35:52Z",
- "catalog_file": "file:/home/runner/mdtf/MDTF-diagnostics/tests/esm_catalog_GFDL_test_ubuntu.csv"
-}
diff --git a/tests/esm_catalog_test_macos.csv b/tests/esm_catalog_test_macos.csv
new file mode 100644
index 000000000..a12a196ef
--- /dev/null
+++ b/tests/esm_catalog_test_macos.csv
@@ -0,0 +1,59 @@
+activity_id,branch_method,branch_time_in_child,branch_time_in_parent,experiment,experiment_id,frequency,grid,grid_label,institution_id,nominal_resolution,parent_activity_id,parent_experiment_id,parent_source_id,parent_time_units,parent_variant_label,standard_name,product,units,realm,source_id,source_type,sub_experiment,sub_experiment_id,table_id,variable_id,variant_label,member_id,vertical_levels,init_year,start_time,end_time,time_range,path,version
+CMIP,,,,,,day,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,specific_humidity,,W m-2,atmos,,,,,,huss,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.huss.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,air_pressure_at_mean_sea_level,,Pa,atmos,,,,,,psl,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.psl.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,wind_speed,,m s-1,atmos,,,,,,sfcWind,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.sfcWind.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,air_temperature,,K ,atmos,,,,,,tas,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg500,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg500.day.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,cell_area,,m2,atmos,,,,,,areacella,,,1,,,,,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacella.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,call_area,,m2,ocean,,,,,,areacello,,,1,,,,,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacello.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_sensible_heat_flux,,W m-2,atmos,,,,,,hfss,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfss.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,specific_humidity,,1,atmos,,,,,,hus,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_incoming_shortwave_flux,,W m-2,atmos,,,,,,rsdt,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsdt.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_shortwave_flux,,W m-2,atmos,,,,,,rsut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_ice_area_fraction,,%,seaIce,,,,,,siconc,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.siconc.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_salinity,,psu,ocean,,,,,,so,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.so.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,ta,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ta.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,tas,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_x_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauuo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauuo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_y_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauvo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauvo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_potential_temperature,,K,ocean,,,,,,thetao,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.thetao.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ua.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.va.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.wap.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_surface_height_above_geoid,,m,ocean,,,,,,zos,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zos.mon.nc,v0
+GFDL,,,,,,day,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,WVP,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.WVP.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,precip,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.precip.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.rlut.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,specific_humidity,,1,atmos,,,,,,sphum,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.sphum.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.ua.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.va.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.wap.day.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.PRECT.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,prw,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.prw.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,specific_humidity,,1,atmos,,,,,,qsat,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.qsat_int.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,vertically_integrated_temperature,,K,atmos,,,,,,tave,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.tave.1hr.nc,v0
+CESM,,,,,,3hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 21:00:00,1975-01-01 00:00:00-1981-12-31 21:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/3hr/NCAR.Synthetic.PRECT.3hr.nc,v0
+CESM,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,FLUT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.FLUT.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,OMEGA500,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.OMEGA500.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.PRECT.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,air_temperature,,K,atmos,,,,,,T250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.T250.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U200,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.U200.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.U250.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U850,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.U850.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V200,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V200.day.nc,V2
+CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V850,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V850.day.nc,V8
+CESM,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.Z250.day.nc,v0
+CESM,,,,,,mon,,,,,,,,,,surface_air_pressure,,Pa,atmos,,,,,,PS,,,1,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.PS.mon.nc,v0
+CESM,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z3,,,60,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.Z3.mon.nc,v0
diff --git a/tests/esm_catalog_CESM_test_macos.json b/tests/esm_catalog_test_macos.json
similarity index 86%
rename from tests/esm_catalog_CESM_test_macos.json
rename to tests/esm_catalog_test_macos.json
index 8de8c870f..375fa77e7 100644
--- a/tests/esm_catalog_CESM_test_macos.json
+++ b/tests/esm_catalog_test_macos.json
@@ -65,10 +65,18 @@
"column_name": "parent_variant_label",
"vocabulary": ""
},
+ {
+ "column_name": "standard_name",
+ "vocabulary": ""
+ },
{
"column_name": "product",
"vocabulary": ""
},
+ {
+ "column_name": "units",
+ "vocabulary": ""
+ },
{
"column_name": "realm",
"vocabulary": ""
@@ -105,18 +113,6 @@
"column_name": "member_id",
"vocabulary": ""
},
- {
- "column_name": "standard_name",
- "vocabulary": ""
- },
- {
- "column_name": "long_name",
- "vocabulary": ""
- },
- {
- "column_name": "units",
- "vocabulary": ""
- },
{
"column_name": "vertical_levels",
"vocabulary": ""
@@ -163,29 +159,19 @@
"table_id",
"grid_label",
"realm",
- "variant_label",
- "time_range"
+ "variant_label"
],
"aggregations": [
{
"type": "union",
"attribute_name": "variable_id",
"options": {}
- },
- {
- "type": "join_existing",
- "attribute_name": "time_range",
- "options": {
- "dim": "time",
- "coords": "minimal",
- "compat": "override"
- }
}
]
},
- "id": "esm_catalog_CESM_test_macos.csv",
+ "id": "esm_catalog_test_macos",
"description": null,
"title": null,
- "last_updated": "2023-06-01",
- "catalog_file": "file:/Users/runner/mdtf/MDTF-diagnostics/tests/esm_catalog_CESM_test_macos.csv"
+ "last_updated": "2024-08-07T16:10:38Z",
+ "catalog_file": "file:/Users/runner/work/MDTF-diagnostics/MDTF-diagnostics/tests/esm_catalog_test_macos.csv"
}
\ No newline at end of file
diff --git a/tests/esm_catalog_test_ubuntu.csv b/tests/esm_catalog_test_ubuntu.csv
new file mode 100644
index 000000000..48c0f14d4
--- /dev/null
+++ b/tests/esm_catalog_test_ubuntu.csv
@@ -0,0 +1,59 @@
+activity_id,branch_method,branch_time_in_child,branch_time_in_parent,experiment,experiment_id,frequency,grid,grid_label,institution_id,nominal_resolution,parent_activity_id,parent_experiment_id,parent_source_id,parent_time_units,parent_variant_label,standard_name,product,units,realm,source_id,source_type,sub_experiment,sub_experiment_id,table_id,variable_id,variant_label,member_id,vertical_levels,init_year,start_time,end_time,time_range,path,version
+CMIP,,,,,,day,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,specific_humidity,,W m-2,atmos,,,,,,huss,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.huss.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,air_pressure_at_mean_sea_level,,Pa,atmos,,,,,,psl,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.psl.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,wind_speed,,m s-1,atmos,,,,,,sfcWind,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.sfcWind.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,air_temperature,,K ,atmos,,,,,,tas,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.day.nc,v0
+CMIP,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg500,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg500.day.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,cell_area,,m2,atmos,,,,,,areacella,,,1,,,,,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacella.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,call_area,,m2,ocean,,,,,,areacello,,,1,,,,,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacello.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_sensible_heat_flux,,W m-2,atmos,,,,,,hfss,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfss.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,specific_humidity,,1,atmos,,,,,,hus,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_incoming_shortwave_flux,,W m-2,atmos,,,,,,rsdt,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsdt.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_shortwave_flux,,W m-2,atmos,,,,,,rsut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_ice_area_fraction,,%,seaIce,,,,,,siconc,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.siconc.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_salinity,,psu,ocean,,,,,,so,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.so.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,ta,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ta.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,tas,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_x_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauuo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauuo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_y_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauvo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauvo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_potential_temperature,,K,ocean,,,,,,thetao,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.thetao.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ua.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.va.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.wap.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,geopotential_height,,m,ocean,,,,,,zg,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_surface_height_above_geoid,,m,ocean,,,,,,zos,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zos.mon.nc,v0
+GFDL,,,,,,day,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,WVP,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.WVP.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,precip,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.precip.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.rlut.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,specific_humidity,,1,atmos,,,,,,sphum,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.sphum.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.ua.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.va.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.wap.day.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.PRECT.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,prw,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.prw.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,specific_humidity,,1,atmos,,,,,,qsat_int,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.qsat_int.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,vertically_integrated_temperature,,K,atmos,,,,,,tave,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.tave.1hr.nc,v0
+CESM,,,,,,3hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 21:00:00,1975-01-01 00:00:00-1981-12-31 21:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/3hr/NCAR.Synthetic.PRECT.3hr.nc,v0
+CESM,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,FLUT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.FLUT.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,OMEGA500,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.OMEGA500.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.PRECT.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,air_temperature,,K,atmos,,,,,,T250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.T250.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U200,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.U200.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.U250.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U850,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.U850.day.nc,v0
+CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V200,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V200.day.nc,V2
+CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V850,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V850.day.nc,V8
+CESM,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.Z250.day.nc,v0
+CESM,,,,,,mon,,,,,,,,,,surface_air_pressure,,Pa,atmos,,,,,,PS,,,1,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.PS.mon.nc,v0
+CESM,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z3,,,60,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.Z3.mon.nc,v0
diff --git a/tests/esm_catalog_CMIP_test_macos.json b/tests/esm_catalog_test_ubuntu.json
similarity index 86%
rename from tests/esm_catalog_CMIP_test_macos.json
rename to tests/esm_catalog_test_ubuntu.json
index 741631dfe..d70eeac23 100644
--- a/tests/esm_catalog_CMIP_test_macos.json
+++ b/tests/esm_catalog_test_ubuntu.json
@@ -65,10 +65,18 @@
"column_name": "parent_variant_label",
"vocabulary": ""
},
+ {
+ "column_name": "standard_name",
+ "vocabulary": ""
+ },
{
"column_name": "product",
"vocabulary": ""
},
+ {
+ "column_name": "units",
+ "vocabulary": ""
+ },
{
"column_name": "realm",
"vocabulary": ""
@@ -105,18 +113,6 @@
"column_name": "member_id",
"vocabulary": ""
},
- {
- "column_name": "standard_name",
- "vocabulary": ""
- },
- {
- "column_name": "long_name",
- "vocabulary": ""
- },
- {
- "column_name": "units",
- "vocabulary": ""
- },
{
"column_name": "vertical_levels",
"vocabulary": ""
@@ -163,29 +159,19 @@
"table_id",
"grid_label",
"realm",
- "variant_label",
- "time_range"
+ "variant_label"
],
"aggregations": [
{
"type": "union",
"attribute_name": "variable_id",
"options": {}
- },
- {
- "type": "join_existing",
- "attribute_name": "time_range",
- "options": {
- "dim": "time",
- "coords": "minimal",
- "compat": "override"
- }
}
]
},
- "id": "esm_catalog_CMIP_test_macos.csv",
+ "id": "esm_catalog_test_ubuntu",
"description": null,
"title": null,
- "last_updated": "2024-03-11",
- "catalog_file": "file:/Users/runner/mdtf/MDTF-diagnostics/tests/esm_catalog_CMIP_test_macos.csv"
+ "last_updated": "2024-08-07T16:10:38Z",
+ "catalog_file": "file:/home/runner/work/MDTF-diagnostics/MDTF-diagnostics/tests/esm_catalog_test_ubuntu.csv"
}
\ No newline at end of file
diff --git a/tests/github_actions_test_macos_set1.jsonc b/tests/github_actions_test_macos_set1.jsonc
index 51ccb0e45..61e6813c9 100644
--- a/tests/github_actions_test_macos_set1.jsonc
+++ b/tests/github_actions_test_macos_set1.jsonc
@@ -3,12 +3,12 @@
// as blank lines (JSONC quasi-standard.)
{
"pod_list": [
- "convective_transition_diag",
- "Wheeler_Kiladis",
- "MJO_suite",
+ //"convective_transition_diag",
+ //"Wheeler_Kiladis",
+ //"MJO_suite",
"MJO_teleconnection",
- "precip_diurnal_cycle",
- "EOF_500hPa"
+ "precip_diurnal_cycle"
+ //"EOF_500hPa"
],
"case_list": {
"NCAR.Synthetic": {
@@ -23,13 +23,10 @@
// If a relative path is given, it's resolved relative to the MDTF-diagnostics
// code directory. Environment variables (eg, $HOME) can be referenced with a
// "$" and will be expended to their current values when the framework runs.
- "DATA_CATALOG": "../tests/esm_catalog_CESM_macos.json",
+ "DATA_CATALOG": "./tests/esm_catalog_test_macos.json",
// Parent directory containing observational data used by individual PODs.
"OBS_DATA_ROOT": "../inputdata/obs_data",
- // Parent directory containing results from different models.
- "MODEL_DATA_ROOT": "../mdtf_test_data",
-
// Working directory. Defaults to working directory if blank.
"WORK_DIR": "../wkdir",
@@ -40,7 +37,6 @@
// Location of the Anaconda/miniconda installation to use for managing
// dependencies (path returned ls by running `conda info --base`.) If empty,
// framework will attempt to determine location of system's conda installation.
- //"conda_root": "/Users/runner/miniconda3",
"conda_root": "/Users/runner/micromamba",
"micromamba_exe": "/Users/runner/micromamba-bin/micromamba",
diff --git a/tests/github_actions_test_macos_set2.jsonc b/tests/github_actions_test_macos_set2.jsonc
index 228ea469d..aa2172104 100644
--- a/tests/github_actions_test_macos_set2.jsonc
+++ b/tests/github_actions_test_macos_set2.jsonc
@@ -20,13 +20,10 @@
// If a relative path is given, it's resolved relative to the MDTF-diagnostics
// code directory. Environment variables (eg, $HOME) can be referenced with a
// "$" and will be expended to their current values when the framework runs.
- "DATA_CATALOG": "../tests/esm_catalog_GFDL_macos.json",
+ "DATA_CATALOG": "./tests/esm_catalog_test_macos.json",
// Parent directory containing observational data used by individual PODs.
"OBS_DATA_ROOT": "../inputdata/obs_data",
- // Parent directory containing results from different models.
- "MODEL_DATA_ROOT": "../mdtf_test_data",
-
// Working directory. Defaults to working directory if blank.
"WORK_DIR": "../wkdir",
diff --git a/tests/github_actions_test_macos_set3.jsonc b/tests/github_actions_test_macos_set3.jsonc
index b0fc380a9..a7490eda0 100644
--- a/tests/github_actions_test_macos_set3.jsonc
+++ b/tests/github_actions_test_macos_set3.jsonc
@@ -22,7 +22,7 @@
},
// PATHS ---------------------------------------------------------------------
// Location of supporting data downloaded when the framework was installed.
- "DATA_CATALOG": "../tests/esm_catalog_CMIP_macos.json",
+ "DATA_CATALOG": "./tests/esm_catalog_test_macos.json",
// If a relative path is given, it's resolved relative to the MDTF-diagnostics
// code directory. Environment variables (eg, $HOME) can be referenced with a
// "$" and will be expended to their current values when the framework runs.
@@ -30,9 +30,6 @@
// Parent directory containing observational data used by individual PODs.
"OBS_DATA_ROOT": "../inputdata/obs_data",
- // Parent directory containing results from different models.
- "MODEL_DATA_ROOT": "../mdtf_test_data",
-
// Working directory. Defaults to working directory if blank.
"WORK_DIR": "../wkdir",
diff --git a/tests/github_actions_test_ubuntu_set1.jsonc b/tests/github_actions_test_ubuntu_set1.jsonc
index bc22deb23..1b2d4bcec 100644
--- a/tests/github_actions_test_ubuntu_set1.jsonc
+++ b/tests/github_actions_test_ubuntu_set1.jsonc
@@ -3,12 +3,12 @@
// as blank lines (JSONC quasi-standard.)
{
"pod_list": [
- "convective_transition_diag",
- "Wheeler_Kiladis",
- "MJO_suite",
+ //"convective_transition_diag",
+ //"Wheeler_Kiladis",
+ //"MJO_suite",
"MJO_teleconnection",
- "precip_diurnal_cycle",
- "EOF_500hPa"
+ "precip_diurnal_cycle"
+ //"EOF_500hPa"
],
"case_list" : {
"NCAR.Synthetic": {
@@ -23,13 +23,10 @@
// If a relative path is given, it's resolved relative to the MDTF-diagnostics
// code directory. Environment variables (eg, $HOME) can be referenced with a
// "$" and will be expended to their current values when the framework runs.
- "DATA_CATALOG": "../tests/esm_catalog_CESM_ubuntu.json",
+ "DATA_CATALOG": "./tests/esm_catalog_test_ubuntu.json",
// Parent directory containing observational data used by individual PODs.
"OBS_DATA_ROOT": "../inputdata/obs_data",
- // Parent directory containing results from different models.
- "MODEL_DATA_ROOT": "../mdtf_test_data",
-
// Working directory. Defaults to working directory if blank.
"WORK_DIR": "../wkdir",
diff --git a/tests/github_actions_test_ubuntu_set2.jsonc b/tests/github_actions_test_ubuntu_set2.jsonc
index 657b92adb..52ba6c06d 100644
--- a/tests/github_actions_test_ubuntu_set2.jsonc
+++ b/tests/github_actions_test_ubuntu_set2.jsonc
@@ -19,13 +19,10 @@
// If a relative path is given, it's resolved relative to the MDTF-diagnostics
// code directory. Environment variables (eg, $HOME) can be referenced with a
// "$" and will be expended to their current values when the framework runs.
- "DATA_CATALOG": "../tests/esm_catalog_GFDL_ubuntu.json",
+ "DATA_CATALOG": "./tests/esm_catalog_test_ubuntu.json",
// Parent directory containing observational data used by individual PODs.
"OBS_DATA_ROOT": "../inputdata/obs_data",
- // Parent directory containing results from different models.
- "MODEL_DATA_ROOT": "../mdtf_test_data",
-
// Working directory. Defaults to working directory if blank.
"WORK_DIR": "../wkdir",
diff --git a/tests/github_actions_test_ubuntu_set3.jsonc b/tests/github_actions_test_ubuntu_set3.jsonc
index 34cbad18f..376548366 100644
--- a/tests/github_actions_test_ubuntu_set3.jsonc
+++ b/tests/github_actions_test_ubuntu_set3.jsonc
@@ -26,13 +26,10 @@
// code directory. Environment variables (eg, $HOME) can be referenced with a
// "$" and will be expended to their current values when the framework runs.
// Full or relative path to model data ESM-intake catalog header file
- "DATA_CATALOG": "../tests/esm_catalog_CMIP_test_ubuntu.json",
+ "DATA_CATALOG": "./tests/esm_catalog_test_ubuntu.json",
// Parent directory containing observational data used by individual PODs.
"OBS_DATA_ROOT": "../inputdata/obs_data",
- // Parent directory containing results from different models.
- "MODEL_DATA_ROOT": "../mdtf_test_data",
-
// Working directory. Defaults to working directory if blank.
"WORK_DIR": "../wkdir",
From eb01529e2508fe4bfe64b991aa5a1372dcbbbc53 Mon Sep 17 00:00:00 2001
From: Jess <20195932+wrongkindofdoctor@users.noreply.github.com>
Date: Mon, 12 Aug 2024 10:46:18 -0400
Subject: [PATCH 3/8] delete confusing attributes (#655)
* add drop_vars to get rid of problem variables
* remove redundant height deletion in process case loop
---
src/preprocessor.py | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/preprocessor.py b/src/preprocessor.py
index 855a2b25f..64fcd3406 100644
--- a/src/preprocessor.py
+++ b/src/preprocessor.py
@@ -900,6 +900,14 @@ def query_catalog(self,
if 'date_range' not in [c.lower() for c in cols]:
cols.append('date_range')
+ drop_atts = ['average_T2',
+ 'time_bnds',
+ 'lat_bnds',
+ 'lon_bnds',
+ 'average_DT',
+ 'average_T1',
+ 'height']
+
for case_name, case_d in case_dict.items():
# path_regex = re.compile(r'(?i)(?
Date: Mon, 12 Aug 2024 11:21:48 -0400
Subject: [PATCH 4/8] fix time and time_range entries in test csv files (#656)
---
tests/esm_catalog_test_macos.csv | 76 +++++++++++++++----------------
tests/esm_catalog_test_ubuntu.csv | 76 +++++++++++++++----------------
2 files changed, 76 insertions(+), 76 deletions(-)
diff --git a/tests/esm_catalog_test_macos.csv b/tests/esm_catalog_test_macos.csv
index a12a196ef..8c57d8a7d 100644
--- a/tests/esm_catalog_test_macos.csv
+++ b/tests/esm_catalog_test_macos.csv
@@ -9,42 +9,42 @@ CMIP,,,,,,day,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-01 00:0
CMIP,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg500,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg500.day.nc,v0
CMIP,,,,,,mon,,,,,,,,,,cell_area,,m2,atmos,,,,,,areacella,,,1,,,,,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacella.mon.nc,v0
CMIP,,,,,,mon,,,,,,,,,,call_area,,m2,ocean,,,,,,areacello,,,1,,,,,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacello.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upward_sensible_heat_flux,,W m-2,atmos,,,,,,hfss,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfss.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,specific_humidity,,1,atmos,,,,,,hus,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hus.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlds.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlus.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlut.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsds.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,toa_incoming_shortwave_flux,,W m-2,atmos,,,,,,rsdt,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsdt.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsus.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_shortwave_flux,,W m-2,atmos,,,,,,rsut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsut.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_ice_area_fraction,,%,seaIce,,,,,,siconc,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.siconc.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_water_salinity,,psu,ocean,,,,,,so,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.so.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,ta,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ta.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,tas,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,downward_x_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauuo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauuo.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,downward_y_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauvo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauvo.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_water_potential_temperature,,K,ocean,,,,,,thetao,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.thetao.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ua.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.va.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.wap.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_surface_height_above_geoid,,m,ocean,,,,,,zos,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zos.mon.nc,v0
-GFDL,,,,,,day,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,WVP,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.WVP.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,precip,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.precip.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.rlut.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,specific_humidity,,1,atmos,,,,,,sphum,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.sphum.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.ua.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.va.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.wap.day.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.PRECT.1hr.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,prw,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.prw.1hr.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,specific_humidity,,1,atmos,,,,,,qsat,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.qsat_int.1hr.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,vertically_integrated_temperature,,K,atmos,,,,,,tave,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.tave.1hr.nc,v0
-CESM,,,,,,3hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 21:00:00,1975-01-01 00:00:00-1981-12-31 21:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/3hr/NCAR.Synthetic.PRECT.3hr.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_sensible_heat_flux,,W m-2,atmos,,,,,,hfss,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfss.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,specific_humidity,,1,atmos,,,,,,hus,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlds,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlus,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsds,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_incoming_shortwave_flux,,W m-2,atmos,,,,,,rsdt,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsdt.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsus,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_shortwave_flux,,W m-2,atmos,,,,,,rsut,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_ice_area_fraction,,%,seaIce,,,,,,siconc,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.siconc.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_salinity,,psu,ocean,,,,,,so,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.so.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,ta,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ta.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,tas,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_x_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauuo,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauuo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_y_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauvo,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauvo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_potential_temperature,,K,ocean,,,,,,thetao,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.thetao.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ua.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.va.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.wap.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_surface_height_above_geoid,,m,ocean,,,,,,zos,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zos.mon.nc,v0
+GFDL,,,,,,day,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,WVP,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.WVP.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,precip,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.precip.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.rlut.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,specific_humidity,,1,atmos,,,,,,sphum,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.sphum.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,19,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.ua.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,19,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.va.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,19,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.wap.day.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.PRECT.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,prw,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.prw.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,specific_humidity,,1,atmos,,,,,,qsat,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.qsat_int.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,vertically_integrated_temperature,,K,atmos,,,,,,tave,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.tave.1hr.nc,v0
+CESM,,,,,,3hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/3hr/NCAR.Synthetic.PRECT.3hr.nc,v0
CESM,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,FLUT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.FLUT.day.nc,v0
CESM,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,OMEGA500,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.OMEGA500.day.nc,v0
CESM,,,,,,day,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.PRECT.day.nc,v0
@@ -55,5 +55,5 @@ CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U850,,,1,,1975-01-01 00:0
CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V200,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V200.day.nc,V2
CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V850,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V850.day.nc,V8
CESM,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.Z250.day.nc,v0
-CESM,,,,,,mon,,,,,,,,,,surface_air_pressure,,Pa,atmos,,,,,,PS,,,1,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.PS.mon.nc,v0
-CESM,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z3,,,60,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.Z3.mon.nc,v0
+CESM,,,,,,mon,,,,,,,,,,surface_air_pressure,,Pa,atmos,,,,,,PS,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-13-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.PS.mon.nc,v0
+CESM,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z3,,,60,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/Users/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.Z3.mon.nc,v0
diff --git a/tests/esm_catalog_test_ubuntu.csv b/tests/esm_catalog_test_ubuntu.csv
index 48c0f14d4..2fe35eff9 100644
--- a/tests/esm_catalog_test_ubuntu.csv
+++ b/tests/esm_catalog_test_ubuntu.csv
@@ -9,42 +9,42 @@ CMIP,,,,,,day,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-01 00:0
CMIP,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,zg500,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/day/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg500.day.nc,v0
CMIP,,,,,,mon,,,,,,,,,,cell_area,,m2,atmos,,,,,,areacella,,,1,,,,,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacella.mon.nc,v0
CMIP,,,,,,mon,,,,,,,,,,call_area,,m2,ocean,,,,,,areacello,,,1,,,,,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.areacello.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upward_sensible_heat_flux,,W m-2,atmos,,,,,,hfss,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfss.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,specific_humidity,,1,atmos,,,,,,hus,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hus.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlds.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlus.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlut.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsds,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsds.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,toa_incoming_shortwave_flux,,W m-2,atmos,,,,,,rsdt,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsdt.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsus,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsus.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_shortwave_flux,,W m-2,atmos,,,,,,rsut,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsut.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_ice_area_fraction,,%,seaIce,,,,,,siconc,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.siconc.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_water_salinity,,psu,ocean,,,,,,so,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.so.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,ta,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ta.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,tas,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,downward_x_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauuo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauuo.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,downward_y_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauvo,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauvo.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_water_potential_temperature,,K,ocean,,,,,,thetao,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.thetao.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ua.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.va.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.wap.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,geopotential_height,,m,ocean,,,,,,zg,,,32,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg.mon.nc,v0
-CMIP,,,,,,mon,,,,,,,,,,sea_surface_height_above_geoid,,m,ocean,,,,,,zos,,,1,,1990-01-15 00:00:00,2009-12-15 00:00:00,1990-01-15 00:00:00-2009-12-15 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zos.mon.nc,v0
-GFDL,,,,,,day,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,WVP,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.WVP.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,precip,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.precip.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.rlut.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,specific_humidity,,1,atmos,,,,,,sphum,,,1,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.sphum.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.ua.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.va.day.nc,v0
-GFDL,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,19,,0001-01-01 12:00:00,0010-12-31 12:00:00,0001-01-01 12:00:00-0010-12-31 12:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.wap.day.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.PRECT.1hr.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,prw,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.prw.1hr.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,specific_humidity,,1,atmos,,,,,,qsat_int,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.qsat_int.1hr.nc,v0
-CESM,,,,,,1hr,,,,,,,,,,vertically_integrated_temperature,,K,atmos,,,,,,tave,,,1,,1975-01-01 00:00:00,1981-12-31 23:00:00,1975-01-01 00:00:00-1981-12-31 23:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.tave.1hr.nc,v0
-CESM,,,,,,3hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 21:00:00,1975-01-01 00:00:00-1981-12-31 21:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/3hr/NCAR.Synthetic.PRECT.3hr.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_latent_heat_flux,,W m-2,atmos,,,,,,hfls,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfls.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upward_sensible_heat_flux,,W m-2,atmos,,,,,,hfss,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hfss.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,specific_humidity,,1,atmos,,,,,,hus,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.hus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,pr,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.pr.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlds,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_longwave_flux_in_air,,W m-2,atmos,,,,,,rlus,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rlut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_downwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsds,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsds.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_incoming_shortwave_flux,,W m-2,atmos,,,,,,rsdt,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsdt.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_upwelling_shortwave_flux_in_air,,W m-2,atmos,,,,,,rsus,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsus.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,toa_outgoing_shortwave_flux,,W m-2,atmos,,,,,,rsut,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.rsut.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_ice_area_fraction,,%,seaIce,,,,,,siconc,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.siconc.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_salinity,,psu,ocean,,,,,,so,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.so.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,ta,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ta.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,air_temperature,,K,atmos,,,,,,tas,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tas.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_x_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauuo,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauuo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,downward_y_stress_at_sea_water_surface,,Pa,ocean,,,,,,tauvo,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.tauvo.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_water_potential_temperature,,K,ocean,,,,,,thetao,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.thetao.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,surface_temperature,,K,atmos,,,,,,ts,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ts.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.ua.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.va.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.wap.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,geopotential_height,,m,ocean,,,,,,zg,,,32,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zg.mon.nc,v0
+CMIP,,,,,,mon,,,,,,,,,,sea_surface_height_above_geoid,,m,ocean,,,,,,zos,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231/mon/CMIP_Synthetic_r1i1p1f1_gr1_19900101-20091231.zos.mon.nc,v0
+GFDL,,,,,,day,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,WVP,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.WVP.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,precipitation_flux,,kg m-2 s-1,atmos,,,,,,precip,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.precip.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,rlut,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.rlut.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,specific_humidity,,1,atmos,,,,,,sphum,,,1,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.sphum.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,ua,,,19,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.ua.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,va,,,19,,1990-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.va.day.nc,v0
+GFDL,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,wap,,,19,,0001-01-01 00:00:00,2009-12-31 00:00:00,1990-01-01 00:00:00-2009-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/GFDL.Synthetic/day/GFDL.Synthetic.wap.day.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1990-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.PRECT.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,atmosphere_mass_content_of_water_vapor,,kg m-2,atmos,,,,,,prw,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.prw.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,specific_humidity,,1,atmos,,,,,,qsat_int,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.qsat_int.1hr.nc,v0
+CESM,,,,,,1hr,,,,,,,,,,vertically_integrated_temperature,,K,atmos,,,,,,tave,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/1hr/NCAR.Synthetic.tave.1hr.nc,v0
+CESM,,,,,,3hr,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/3hr/NCAR.Synthetic.PRECT.3hr.nc,v0
CESM,,,,,,day,,,,,,,,,,toa_outgoing_longwave_flux,,W m-2,atmos,,,,,,FLUT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.FLUT.day.nc,v0
CESM,,,,,,day,,,,,,,,,,lagrangian_tendency_of_air_pressure,,Pa s-1,atmos,,,,,,OMEGA500,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.OMEGA500.day.nc,v0
CESM,,,,,,day,,,,,,,,,,precipitation_rate,,m s-1,atmos,,,,,,PRECT,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.PRECT.day.nc,v0
@@ -55,5 +55,5 @@ CESM,,,,,,day,,,,,,,,,,eastward_wind,,m s-1,atmos,,,,,,U850,,,1,,1975-01-01 00:0
CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V200,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V200.day.nc,V2
CESM,,,,,,day,,,,,,,,,,northward_wind,,m s-1,atmos,,,,,,V850,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.V850.day.nc,V8
CESM,,,,,,day,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z250,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/day/NCAR.Synthetic.Z250.day.nc,v0
-CESM,,,,,,mon,,,,,,,,,,surface_air_pressure,,Pa,atmos,,,,,,PS,,,1,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.PS.mon.nc,v0
-CESM,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z3,,,60,,1975-02-01 00:00:00,1982-01-01 00:00:00,1975-02-01 00:00:00-1982-01-01 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.Z3.mon.nc,v0
+CESM,,,,,,mon,,,,,,,,,,surface_air_pressure,,Pa,atmos,,,,,,PS,,,1,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.PS.mon.nc,v0
+CESM,,,,,,mon,,,,,,,,,,geopotential_height,,m,atmos,,,,,,Z3,,,60,,1975-01-01 00:00:00,1981-12-31 00:00:00,1975-01-01 00:00:00-1981-12-31 00:00:00,/home/runner/work/MDTF-diagnostics/mdtf_test_data/NCAR.Synthetic/mon/NCAR.Synthetic.Z3.mon.nc,v0
From cc23fc6cbfaa773dc16aef5c7fb046712cf94799 Mon Sep 17 00:00:00 2001
From: Jess <20195932+wrongkindofdoctor@users.noreply.github.com>
Date: Mon, 12 Aug 2024 15:16:00 -0400
Subject: [PATCH 5/8] add date to drop_vars (#657)
* add date to drop_vars
* add quote to string
---
src/preprocessor.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/preprocessor.py b/src/preprocessor.py
index 64fcd3406..aa36a7130 100644
--- a/src/preprocessor.py
+++ b/src/preprocessor.py
@@ -906,7 +906,8 @@ def query_catalog(self,
'lon_bnds',
'average_DT',
'average_T1',
- 'height']
+ 'height',
+ 'date']
for case_name, case_d in case_dict.items():
# path_regex = re.compile(r'(?i)(?
Date: Mon, 12 Aug 2024 16:32:54 -0500
Subject: [PATCH 6/8] fix variable typo in reconcile_names (#658)
---
src/xr_parser.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/xr_parser.py b/src/xr_parser.py
index 159e73e4b..1a0e82061 100644
--- a/src/xr_parser.py
+++ b/src/xr_parser.py
@@ -900,8 +900,8 @@ def reconcile_names(self, our_var, ds, ds_var_name: str, overwrite_ours=None):
overwrite_ours = True
else:
# attempt to match on standard_name attribute if present in data
- ds_names = [v.name for v in ds.variables
- if v.attrs.get('standard_name', "") == our_var.standard_name]
+ ds_names = [ds.variables[v].name for v in ds.variables
+ if ds.variables[v].attrs.get('standard_name', "") == our_var.standard_name]
if len(ds_names) == 1:
# success, narrowed down to one guess
self.log.info(("Selecting '%s' as the intended name for '%s' "
From 9d44d075998a8bb275e406495b34074c7186c1f4 Mon Sep 17 00:00:00 2001
From: Jacob Mims <122570226+jtmims@users.noreply.github.com>
Date: Tue, 13 Aug 2024 13:35:29 -0500
Subject: [PATCH 7/8] add logic to handle unexpected type in
check_group_daterange (#661)
* add logic to handle unexpected type in check_group_daterange
* clean up print statement
---
src/preprocessor.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/preprocessor.py b/src/preprocessor.py
index aa36a7130..f9c503f51 100644
--- a/src/preprocessor.py
+++ b/src/preprocessor.py
@@ -856,14 +856,16 @@ def check_group_daterange(self, group_df: pd.DataFrame, case_dr,
# throw out df entries not in date_range
for i in sorted_df.index:
cat_row = sorted_df.iloc[i]
- stin = dl.Date(cat_row['start_time']) in case_dr
- etin = dl.Date(cat_row['end_time']) in case_dr
+ if pd.isnull(cat_row['start_time']):
+ continue
+ else:
+ stin = dl.Date(cat_row['start_time']) in case_dr
+ etin = dl.Date(cat_row['end_time']) in case_dr
if (not stin and not etin) or (stin and not etin):
mask = sorted_df == cat_row['start_time']
sorted_df = sorted_df[~mask]
mask = np.isnat(sorted_df['start_time']) | np.isnat(sorted_df['end_time'])
sorted_df = sorted_df[~mask]
-
return sorted_df
except ValueError:
log.error("Non-contiguous or malformed date range in files:", group_df["path"].values)
From bee4e51cc35496d3d6746eed054bedc0739465f0 Mon Sep 17 00:00:00 2001
From: Jacob Mims <122570226+jtmims@users.noreply.github.com>
Date: Wed, 14 Aug 2024 16:24:24 -0500
Subject: [PATCH 8/8] add function to verify that conda dirs exists after
parsing config file (#663)
* add function to verify conda dirs exists after parsing config file
* add logic
* condense said logic
* update mdtf_framework.py
---
mdtf_framework.py | 1 +
src/cli.py | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/mdtf_framework.py b/mdtf_framework.py
index c151d7e2d..fb7f8193c 100755
--- a/mdtf_framework.py
+++ b/mdtf_framework.py
@@ -124,6 +124,7 @@ def backup_config(config):
ctx.config = util.NameSpace()
# parse the runtime config file
ctx.config = cli.parse_config_file(configfile)
+ ctx.config = cli.verify_conda_envs(ctx.config, configfile)
# Test ctx.config
# print(ctx.config.WORK_DIR)
ctx.config.CODE_ROOT = os.path.dirname(os.path.realpath(__file__))
diff --git a/src/cli.py b/src/cli.py
index 5f3f89b53..234566fe4 100644
--- a/src/cli.py
+++ b/src/cli.py
@@ -161,3 +161,25 @@ def verify_runtime_config_options(config: util.NameSpace):
new_output_dir = verify_dirpath(config.OUTPUT_DIR, config.CODE_ROOT)
update_config(config, 'OUTPUT_DIR', new_output_dir)
verify_case_atts(config.case_list)
+
+def verify_conda_envs(config: util.NameSpace, filename: str):
+ m_exists = os.path.exists(config['micromamba_exe'])
+ c_exists = os.path.exists(config['conda_root'])
+ cenv_exists = os.path.exists(config['conda_env_root'])
+ if not m_exists and not c_exists:
+ raise util.exceptions.MDTFBaseException(
+ f"Could not find conda or micromamba executable; please check the runtime config file: "
+ f'{filename}'
+ )
+ if c_exists and not cenv_exists:
+ new_env_root = os.path.join(config['conda_root'], "envs")
+ if os.path.exists(new_env_root):
+ config.update({'conda_env_root':new_env_root})
+ else:
+ raise util.exceptions.MDTFBaseException(
+ f"Count not find conda enviroment directory; please check the runtime config file: "
+ f'{filename}'
+ )
+
+ return config
+