diff --git a/docs/conf.py b/docs/conf.py index 3952efc..12600aa 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -45,7 +45,7 @@ # autoapi directives autoapi_dirs = ["../src/access_nri_intake"] autoapi_add_toctree_entry = False -autoapi_ignore = ["*/.ipynb_checkpoints", "*/_version.py", "*/__init__.py"] +autoapi_ignore = ["*/.ipynb_checkpoints", "*/_version.py"] autoapi_python_class_content = "both" autoapi_options = [ "members", diff --git a/docs/datastores/builders.rst b/docs/datastores/builders.rst index cb2efac..541a416 100644 --- a/docs/datastores/builders.rst +++ b/docs/datastores/builders.rst @@ -12,7 +12,7 @@ The access-nri-intake package is installed in the :code:`hh5` and :code:`xp65` a users can install it into their own environment (see :ref:`installation` for details). The Builders can be imported from the :code:`access_nri_intake.source.builders` submodule. -There are currently three Builders available. Their core public APIs are given below (their full APIs can be +There are currently four Builders available. Their core public APIs are given below (their full APIs can be found in :ref:`source_api`). .. note:: @@ -39,8 +39,15 @@ ACCESS-CM2 output: :code:`AccessCm2Builder` :special-members: __init__, build, save :noindex: +ACCESS-OM3 output: :code:`AccessOm3Builder` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. autoclass:: access_nri_intake.source.builders.AccessOm3Builder + :special-members: __init__, build, save + :noindex: + .. note:: If you have ACCESS model output that isn't compatible with the existing set of Builders, check out the :ref:`builder_create` section or open an issue - `here `_. \ No newline at end of file + `here `_. diff --git a/src/access_nri_intake/source/builders.py b/src/access_nri_intake/source/builders.py index 0d55435..4b485af 100644 --- a/src/access_nri_intake/source/builders.py +++ b/src/access_nri_intake/source/builders.py @@ -266,6 +266,91 @@ def parser(file): return {INVALID_ASSET: file, TRACEBACK: traceback.format_exc()} +class AccessOm3Builder(BaseBuilder): + """Intake-ESM datastore builder for ACCESS-OM3 COSIMA datasets""" + + def __init__(self, path): + """ + Initialise a AccessOm3Builder + + Parameters + ---------- + path : str or list of str + Path or list of paths to crawl for assets/files. + """ + + kwargs = dict( + path=path, + depth=2, + exclude_patterns=[ + "*restart*", + "*MOM_IC.nc", + "*ocean_geometry.nc", + "*ocean.stats.nc", + "*Vertical_coordinate.nc", + ], + include_patterns=["*.nc"], + data_format="netcdf", + groupby_attrs=["file_id", "frequency"], + aggregations=[ + { + "type": "join_existing", + "attribute_name": "start_date", + "options": { + "dim": "time", + "combine": "by_coords", + }, + }, + ], + ) + + super().__init__(**kwargs) + + @staticmethod + def parser(file): + try: + ( + filename, + file_id, + _, + frequency, + start_date, + end_date, + variable_list, + variable_long_name_list, + variable_standard_name_list, + variable_cell_methods_list, + variable_units_list, + ) = parse_access_ncfile(file) + + if ("mom6" in filename) or ("ww3" in filename): + realm = "ocean" + elif "cice" in filename: + realm = "seaIce" + else: + raise ParserError(f"Cannot determine realm for file {file}") + + info = { + "path": str(file), + "realm": realm, + "variable": variable_list, + "frequency": frequency, + "start_date": start_date, + "end_date": end_date, + "variable_long_name": variable_long_name_list, + "variable_standard_name": variable_standard_name_list, + "variable_cell_methods": variable_cell_methods_list, + "variable_units": variable_units_list, + "filename": filename, + "file_id": file_id, + } + + return info + + except Exception: + return {INVALID_ASSET: file, TRACEBACK: traceback.format_exc()} + + class AccessEsm15Builder(BaseBuilder): """Intake-ESM datastore builder for ACCESS-ESM1.5 datasets""" diff --git a/src/access_nri_intake/source/utils.py b/src/access_nri_intake/source/utils.py index df3f636..481d57b 100644 --- a/src/access_nri_intake/source/utils.py +++ b/src/access_nri_intake/source/utils.py @@ -80,8 +80,8 @@ def _todate(t): return cftime.num2date(t, time_var.units, calendar=time_var.calendar) time_format = "%Y-%m-%d, %H:%M:%S" - start_date = "none" - end_date = "none" + ts = None + te = None frequency = "fx" has_time = time_dim in ds @@ -137,7 +137,15 @@ def _todate(t): if has_time & (frequency != "fx"): if not has_bounds: ts, te = _guess_start_end_dates(ts, te, frequency) + + if ts is None: + start_date = "none" + else: start_date = ts.strftime(time_format) + + if te is None: + end_date = "none" + else: end_date = te.strftime(time_format) if frequency[0]: @@ -169,7 +177,10 @@ def parse_access_filename(filename): """ # ACCESS output file patterns + # TODO: these should be defined per driver to prevent new patterns from breaking old drivers not_multi_digit = "(?:\\d(?!\\d)|[^\\d](?=\\d)|[^\\d](?!\\d))" + om3_components = "(?:cice|mom6|ww3)" + ymds = "\\d{4}[_,-]\\d{2}[_,-]\\d{2}[_,-]\\d{5}" ymd = "\\d{4}[_,-]\\d{2}[_,-]\\d{2}" ym = "\\d{4}[_,-]\\d{2}" y = "\\d{4}" @@ -181,6 +192,7 @@ def parse_access_filename(filename): r"^ocean.*[^\d]_(\d{2})$", # A few wierd files in ACCESS-OM2 01deg_jra55v13_ryf9091 r"^.*\.p.(\d{6})_.*", # ACCESS-CM2 atmosphere r"^.*\.p.-(\d{6})_.*", # ACCESS-ESM1.5 atmosphere + rf"[^\.]*\.{om3_components}\..*({ymds}|{ymd}|{ym})$", # ACCESS-OM3 ] # Frequency translations frequencies = { diff --git a/tests/data/access-om3/README b/tests/data/access-om3/README new file mode 100644 index 0000000..affa2ef --- /dev/null +++ b/tests/data/access-om3/README @@ -0,0 +1 @@ +These files were copied from a test run using an early version of ACCESS-OM3 and subsequently stripped to a test dataset that includes only single variables/grid points diff --git a/tests/data/access-om3/error_logs/access-om3.109393186.gadi-pbs.err b/tests/data/access-om3/error_logs/access-om3.109393186.gadi-pbs.err new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/access-om3.109393186.gadi-pbs.out b/tests/data/access-om3/error_logs/access-om3.109393186.gadi-pbs.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/access-om3.109393326.gadi-pbs.err b/tests/data/access-om3/error_logs/access-om3.109393326.gadi-pbs.err new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/access-om3.109393326.gadi-pbs.out b/tests/data/access-om3/error_logs/access-om3.109393326.gadi-pbs.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/env.109393186.gadi-pbs.yaml b/tests/data/access-om3/error_logs/env.109393186.gadi-pbs.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/env.109393326.gadi-pbs.yaml b/tests/data/access-om3/error_logs/env.109393326.gadi-pbs.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/job.109393186.gadi-pbs.yaml b/tests/data/access-om3/error_logs/job.109393186.gadi-pbs.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/error_logs/job.109393326.gadi-pbs.yaml b/tests/data/access-om3/error_logs/job.109393326.gadi-pbs.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/metadata.yaml b/tests/data/access-om3/metadata.yaml new file mode 100644 index 0000000..2d0e4ff --- /dev/null +++ b/tests/data/access-om3/metadata.yaml @@ -0,0 +1,7 @@ +experiment_uuid: 4cf0c4ee-09c9-4675-ae1f-ce46f0d848ed +created: '2024-02-27' +name: MOM6-CICE6-WW3-1deg_jra55do_ryf-4cf0c4ee +model: ACCESS-OM3 +url: git@github.com:COSIMA/MOM6-CICE6-WW3.git +contact: dougiesquire +email: dougiesquire@gmail.com diff --git a/tests/data/access-om3/output000/GMOM_JRA_WD.cice.h.1900-01-01.nc b/tests/data/access-om3/output000/GMOM_JRA_WD.cice.h.1900-01-01.nc new file mode 100644 index 0000000..d66f4fd Binary files /dev/null and b/tests/data/access-om3/output000/GMOM_JRA_WD.cice.h.1900-01-01.nc differ diff --git a/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.native_1900_01.nc b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.native_1900_01.nc new file mode 100644 index 0000000..ea01668 Binary files /dev/null and b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.native_1900_01.nc differ diff --git a/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc new file mode 100644 index 0000000..eed33c5 Binary files /dev/null and b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc differ diff --git a/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.static.nc b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.static.nc new file mode 100644 index 0000000..1693160 Binary files /dev/null and b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.static.nc differ diff --git a/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.z_1900_01.nc b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.z_1900_01.nc new file mode 100644 index 0000000..b710c35 Binary files /dev/null and b/tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.z_1900_01.nc differ diff --git a/tests/data/access-om3/output000/GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc b/tests/data/access-om3/output000/GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc new file mode 100644 index 0000000..3ec8fd0 Binary files /dev/null and b/tests/data/access-om3/output000/GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc differ diff --git a/tests/data/access-om3/output000/MOM_IC.nc b/tests/data/access-om3/output000/MOM_IC.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/MOM_input b/tests/data/access-om3/output000/MOM_input new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/MOM_override b/tests/data/access-om3/output000/MOM_override new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/MOM_parameter_doc.all b/tests/data/access-om3/output000/MOM_parameter_doc.all new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/MOM_parameter_doc.debugging b/tests/data/access-om3/output000/MOM_parameter_doc.debugging new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/MOM_parameter_doc.layout b/tests/data/access-om3/output000/MOM_parameter_doc.layout new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/MOM_parameter_doc.short b/tests/data/access-om3/output000/MOM_parameter_doc.short new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/Vertical_coordinate.nc b/tests/data/access-om3/output000/Vertical_coordinate.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/access-om3.err b/tests/data/access-om3/output000/access-om3.err new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/access-om3.out b/tests/data/access-om3/output000/access-om3.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/available_diags.000000 b/tests/data/access-om3/output000/available_diags.000000 new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/config.yaml b/tests/data/access-om3/output000/config.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/datm.streams.xml b/tests/data/access-om3/output000/datm.streams.xml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/datm_in b/tests/data/access-om3/output000/datm_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/diag_table b/tests/data/access-om3/output000/diag_table new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/drof.streams.xml b/tests/data/access-om3/output000/drof.streams.xml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/drof_in b/tests/data/access-om3/output000/drof_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/drv_in b/tests/data/access-om3/output000/drv_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/env.yaml b/tests/data/access-om3/output000/env.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/fd.yaml b/tests/data/access-om3/output000/fd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/ice_in b/tests/data/access-om3/output000/ice_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/input.nml b/tests/data/access-om3/output000/input.nml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/job.yaml b/tests/data/access-om3/output000/job.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/logfile.000000.out b/tests/data/access-om3/output000/logfile.000000.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/manifests/exe.yaml b/tests/data/access-om3/output000/manifests/exe.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/manifests/input.yaml b/tests/data/access-om3/output000/manifests/input.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/manifests/restart.yaml b/tests/data/access-om3/output000/manifests/restart.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/nuopc.runconfig b/tests/data/access-om3/output000/nuopc.runconfig new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/nuopc.runseq b/tests/data/access-om3/output000/nuopc.runseq new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/ocean.stats b/tests/data/access-om3/output000/ocean.stats new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/ocean.stats.nc b/tests/data/access-om3/output000/ocean.stats.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/ocean_geometry.nc b/tests/data/access-om3/output000/ocean_geometry.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/wav_in b/tests/data/access-om3/output000/wav_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/ww3_points.list b/tests/data/access-om3/output000/ww3_points.list new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output000/ww3_shel.nml b/tests/data/access-om3/output000/ww3_shel.nml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/GMOM_JRA_WD.cice.h.1900-01-02.nc b/tests/data/access-om3/output001/GMOM_JRA_WD.cice.h.1900-01-02.nc new file mode 100644 index 0000000..e510a1a Binary files /dev/null and b/tests/data/access-om3/output001/GMOM_JRA_WD.cice.h.1900-01-02.nc differ diff --git a/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.native_1900_01.nc b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.native_1900_01.nc new file mode 100644 index 0000000..35e5ed1 Binary files /dev/null and b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.native_1900_01.nc differ diff --git a/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.sfc_1900_01_03.nc b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.sfc_1900_01_03.nc new file mode 100644 index 0000000..2440636 Binary files /dev/null and b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.sfc_1900_01_03.nc differ diff --git a/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.static.nc b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.static.nc new file mode 100644 index 0000000..b77bc7b Binary files /dev/null and b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.static.nc differ diff --git a/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.z_1900_01.nc b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.z_1900_01.nc new file mode 100644 index 0000000..8bb4e41 Binary files /dev/null and b/tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.z_1900_01.nc differ diff --git a/tests/data/access-om3/output001/GMOM_JRA_WD.ww3.hi.1900-01-03-00000.nc b/tests/data/access-om3/output001/GMOM_JRA_WD.ww3.hi.1900-01-03-00000.nc new file mode 100644 index 0000000..147dbc2 Binary files /dev/null and b/tests/data/access-om3/output001/GMOM_JRA_WD.ww3.hi.1900-01-03-00000.nc differ diff --git a/tests/data/access-om3/output001/MOM_IC.nc b/tests/data/access-om3/output001/MOM_IC.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/MOM_input b/tests/data/access-om3/output001/MOM_input new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/MOM_override b/tests/data/access-om3/output001/MOM_override new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/MOM_parameter_doc.all b/tests/data/access-om3/output001/MOM_parameter_doc.all new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/MOM_parameter_doc.debugging b/tests/data/access-om3/output001/MOM_parameter_doc.debugging new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/MOM_parameter_doc.layout b/tests/data/access-om3/output001/MOM_parameter_doc.layout new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/MOM_parameter_doc.short b/tests/data/access-om3/output001/MOM_parameter_doc.short new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/Vertical_coordinate.nc b/tests/data/access-om3/output001/Vertical_coordinate.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/access-om3.err b/tests/data/access-om3/output001/access-om3.err new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/access-om3.out b/tests/data/access-om3/output001/access-om3.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/available_diags.000000 b/tests/data/access-om3/output001/available_diags.000000 new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/config.yaml b/tests/data/access-om3/output001/config.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/datm.streams.xml b/tests/data/access-om3/output001/datm.streams.xml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/datm_in b/tests/data/access-om3/output001/datm_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/diag_table b/tests/data/access-om3/output001/diag_table new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/drof.streams.xml b/tests/data/access-om3/output001/drof.streams.xml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/drof_in b/tests/data/access-om3/output001/drof_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/drv_in b/tests/data/access-om3/output001/drv_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/env.yaml b/tests/data/access-om3/output001/env.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/fd.yaml b/tests/data/access-om3/output001/fd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/ice_in b/tests/data/access-om3/output001/ice_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/input.nml b/tests/data/access-om3/output001/input.nml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/job.yaml b/tests/data/access-om3/output001/job.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/logfile.000000.out b/tests/data/access-om3/output001/logfile.000000.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/manifests/exe.yaml b/tests/data/access-om3/output001/manifests/exe.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/manifests/input.yaml b/tests/data/access-om3/output001/manifests/input.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/manifests/restart.yaml b/tests/data/access-om3/output001/manifests/restart.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/nuopc.runconfig b/tests/data/access-om3/output001/nuopc.runconfig new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/nuopc.runseq b/tests/data/access-om3/output001/nuopc.runseq new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/ocean.stats b/tests/data/access-om3/output001/ocean.stats new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/ocean.stats.nc b/tests/data/access-om3/output001/ocean.stats.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/wav_in b/tests/data/access-om3/output001/wav_in new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/ww3_points.list b/tests/data/access-om3/output001/ww3_points.list new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/output001/ww3_shel.nml b/tests/data/access-om3/output001/ww3_shel.nml new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393186 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393186 new file mode 100644 index 0000000..40a1be6 --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393186 @@ -0,0 +1,7 @@ +Loading parallelio/2.5.10 + Loading requirement: hdf5/1.14.1-2 netcdf-c/4.9.2 netcdf-fortran/4.6.0 +Currently Loaded Modulefiles: + 1) openmpi/4.1.4(default) 4) hdf5/1.14.1-2 7) parallelio/2.5.10 + 2) pbs 5) netcdf-c/4.9.2 + 3) intel-compiler/2021.6.0 6) netcdf-fortran/4.6.0 +payu: Model exited with error code 233; aborting. diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393326 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393326 new file mode 100644 index 0000000..8252da8 --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393326 @@ -0,0 +1,7 @@ +Loading parallelio/2.5.10 + Loading requirement: hdf5/1.14.1-2 netcdf-c/4.9.2 netcdf-fortran/4.6.0 +Currently Loaded Modulefiles: + 1) openmpi/4.1.4(default) 4) hdf5/1.14.1-2 7) parallelio/2.5.10 + 2) pbs 5) netcdf-c/4.9.2 + 3) intel-compiler/2021.6.0 6) netcdf-fortran/4.6.0 +payu: Model exited with error code 14; aborting. diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109493795 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109493795 new file mode 100644 index 0000000..11c4407 --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109493795 @@ -0,0 +1,6 @@ +Loading parallelio/2.5.10 + Loading requirement: hdf5/1.14.1-2 netcdf-c/4.9.2 netcdf-fortran/4.6.0 +Currently Loaded Modulefiles: + 1) openmpi/4.1.4(default) 4) hdf5/1.14.1-2 7) parallelio/2.5.10 + 2) pbs 5) netcdf-c/4.9.2 + 3) intel-compiler/2021.6.0 6) netcdf-fortran/4.6.0 diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109494482 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109494482 new file mode 100644 index 0000000..d1078f9 --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109494482 @@ -0,0 +1,6 @@ +Loading parallelio/2.5.10 + Loading requirement: hdf5/1.14.1-2 netcdf-c/4.9.2 netcdf-fortran/4.6.0 +Currently Loaded Modulefiles: + 1) pbs 4) hdf5/1.14.1-2 7) parallelio/2.5.10 + 2) openmpi/4.1.4(default) 5) netcdf-c/4.9.2 + 3) intel-compiler/2021.6.0 6) netcdf-fortran/4.6.0 diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393186 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393186 new file mode 100644 index 0000000..f50226a --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393186 @@ -0,0 +1,35 @@ +laboratory path: /scratch/tm70/ds0092/access-om3 +binary path: /scratch/tm70/ds0092/access-om3/bin +input path: /scratch/tm70/ds0092/access-om3/input +work path: /scratch/tm70/ds0092/access-om3/work +archive path: /scratch/tm70/ds0092/access-om3/archive +Pre-existing archive found at: /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3. Experiment name will remain: MOM6-CICE6-WW3 +nruns: 1 nruns_per_submit: 1 subrun: 1 +Loading input manifest: manifests/input.yaml +Loading restart manifest: manifests/restart.yaml +Loading exe manifest: manifests/exe.yaml +Setting up access-om3 +Checking exe and input manifests +Updating full hashes for 1 files in manifests/exe.yaml +Creating restart manifest +Writing manifests/restart.yaml +Writing manifests/exe.yaml +payu: Found modules in /opt/Modules/v4.3.0 +mpirun -wdir /scratch/tm70/ds0092/access-om3/work/MOM6-CICE6-WW3 -np 48 /scratch/tm70/ds0092/access-om3/work/MOM6-CICE6-WW3/access-om3-MOM6-CICE6-WW3-3965e25 +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/access-om3.err /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/access-om3.109393186.gadi-pbs.err +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/access-om3.out /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/access-om3.109393186.gadi-pbs.out +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/job.yaml /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/job.109393186.gadi-pbs.yaml +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/env.yaml /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/env.109393186.gadi-pbs.yaml + +====================================================================================== + Resource Usage on 2024-02-27 13:57:27: + Job Id: 109393186.gadi-pbs + Project: tm70 + Exit Status: 1 + Service Units: 1.01 + NCPUs Requested: 48 NCPUs Used: 48 + CPU Time Used: 00:04:23 + Memory Requested: 192.0GB Memory Used: 20.95GB + Walltime requested: 01:00:00 Walltime Used: 00:00:38 + JobFS requested: 10.0GB JobFS used: 0B +====================================================================================== diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393326 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393326 new file mode 100644 index 0000000..939ba7d --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393326 @@ -0,0 +1,34 @@ +laboratory path: /scratch/tm70/ds0092/access-om3 +binary path: /scratch/tm70/ds0092/access-om3/bin +input path: /scratch/tm70/ds0092/access-om3/input +work path: /scratch/tm70/ds0092/access-om3/work +archive path: /scratch/tm70/ds0092/access-om3/archive +nruns: 1 nruns_per_submit: 1 subrun: 1 +Loading input manifest: manifests/input.yaml +Loading restart manifest: manifests/restart.yaml +Loading exe manifest: manifests/exe.yaml +Setting up access-om3 +Checking exe and input manifests +Updating full hashes for 1 files in manifests/exe.yaml +Creating restart manifest +Writing manifests/restart.yaml +Writing manifests/exe.yaml +payu: Found modules in /opt/Modules/v4.3.0 +mpirun -wdir /scratch/tm70/ds0092/access-om3/work/MOM6-CICE6-WW3 -np 48 /scratch/tm70/ds0092/access-om3/work/MOM6-CICE6-WW3/access-om3-MOM6-CICE6-WW3-3965e25 +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/access-om3.err /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/access-om3.109393326.gadi-pbs.err +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/access-om3.out /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/access-om3.109393326.gadi-pbs.out +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/job.yaml /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/job.109393326.gadi-pbs.yaml +/g/data/tm70/ds0092/model/payu/MOM6-CICE6-WW3/env.yaml /scratch/tm70/ds0092/access-om3/archive/MOM6-CICE6-WW3/error_logs/env.109393326.gadi-pbs.yaml + +====================================================================================== + Resource Usage on 2024-02-27 14:02:41: + Job Id: 109393326.gadi-pbs + Project: tm70 + Exit Status: 1 + Service Units: 0.88 + NCPUs Requested: 48 NCPUs Used: 48 + CPU Time Used: 00:11:19 + Memory Requested: 192.0GB Memory Used: 34.53GB + Walltime requested: 01:00:00 Walltime Used: 00:00:33 + JobFS requested: 10.0GB JobFS used: 0B +====================================================================================== diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109493795 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109493795 new file mode 100644 index 0000000..68af65e --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109493795 @@ -0,0 +1,26 @@ +laboratory path: /scratch/tm70/ds0092/access-om3 +binary path: /scratch/tm70/ds0092/access-om3/bin +input path: /scratch/tm70/ds0092/access-om3/input +work path: /scratch/tm70/ds0092/access-om3/work +archive path: /scratch/tm70/ds0092/access-om3/archive +nruns: 1 nruns_per_submit: 1 subrun: 1 +Loading input manifest: manifests/input.yaml +Loading restart manifest: manifests/restart.yaml +Loading exe manifest: manifests/exe.yaml +Setting up access-om3 +Checking exe and input manifests +Updating full hashes for 1 files in manifests/exe.yaml +Creating restart manifest + +====================================================================================== + Resource Usage on 2024-02-28 12:33:28: + Job Id: 109493795.gadi-pbs + Project: tm70 + Exit Status: 271 (Linux Signal 15 SIGTERM Termination) + Service Units: 9.84 + NCPUs Requested: 48 NCPUs Used: 48 + CPU Time Used: 04:38:57 + Memory Requested: 192.0GB Memory Used: 47.51GB + Walltime requested: 01:00:00 Walltime Used: 00:06:09 + JobFS requested: 10.0GB JobFS used: 8.16MB +====================================================================================== diff --git a/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109494482 b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109494482 new file mode 100644 index 0000000..59119cc --- /dev/null +++ b/tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109494482 @@ -0,0 +1,30 @@ +laboratory path: /scratch/tm70/ds0092/access-om3 +binary path: /scratch/tm70/ds0092/access-om3/bin +input path: /scratch/tm70/ds0092/access-om3/input +work path: /scratch/tm70/ds0092/access-om3/work +archive path: /scratch/tm70/ds0092/access-om3/archive +nruns: 1 nruns_per_submit: 1 subrun: 1 +Loading input manifest: manifests/input.yaml +Loading restart manifest: manifests/restart.yaml +Loading exe manifest: manifests/exe.yaml +Setting up access-om3 +Checking exe and input manifests +Updating full hashes for 1 files in manifests/exe.yaml +Creating restart manifest +Writing manifests/restart.yaml +Writing manifests/exe.yaml +payu: Found modules in /opt/Modules/v4.3.0 +mpirun -wdir /scratch/tm70/ds0092/access-om3/work/MOM6-CICE6-WW3 -np 48 /scratch/tm70/ds0092/access-om3/work/MOM6-CICE6-WW3/access-om3-MOM6-CICE6-WW3 + +====================================================================================== + Resource Usage on 2024-02-28 12:37:35: + Job Id: 109494482.gadi-pbs + Project: tm70 + Exit Status: 0 + Service Units: 4.13 + NCPUs Requested: 48 NCPUs Used: 48 + CPU Time Used: 01:51:24 + Memory Requested: 192.0GB Memory Used: 46.95GB + Walltime requested: 01:00:00 Walltime Used: 00:02:35 + JobFS requested: 10.0GB JobFS used: 8.16MB +====================================================================================== diff --git a/tests/data/access-om3/restart000/GMOM_JRA_WD.cice.r.1900-01-02-00000.nc b/tests/data/access-om3/restart000/GMOM_JRA_WD.cice.r.1900-01-02-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart000/GMOM_JRA_WD.cpl.r.1900-01-02-00000.nc b/tests/data/access-om3/restart000/GMOM_JRA_WD.cpl.r.1900-01-02-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart000/GMOM_JRA_WD.datm.r.1900-01-02-00000.nc b/tests/data/access-om3/restart000/GMOM_JRA_WD.datm.r.1900-01-02-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart000/GMOM_JRA_WD.drof.r.1900-01-02-00000.nc b/tests/data/access-om3/restart000/GMOM_JRA_WD.drof.r.1900-01-02-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart000/GMOM_JRA_WD.mom6.r.1900-01-02-00000.nc b/tests/data/access-om3/restart000/GMOM_JRA_WD.mom6.r.1900-01-02-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart000/GMOM_JRA_WD.ww3.r.1900-01-02-00000 b/tests/data/access-om3/restart000/GMOM_JRA_WD.ww3.r.1900-01-02-00000 new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart000/rpointer.atm b/tests/data/access-om3/restart000/rpointer.atm new file mode 100644 index 0000000..7da3930 --- /dev/null +++ b/tests/data/access-om3/restart000/rpointer.atm @@ -0,0 +1 @@ +GMOM_JRA_WD.datm.r.1900-01-02-00000.nc diff --git a/tests/data/access-om3/restart000/rpointer.cpl b/tests/data/access-om3/restart000/rpointer.cpl new file mode 100644 index 0000000..1b42550 --- /dev/null +++ b/tests/data/access-om3/restart000/rpointer.cpl @@ -0,0 +1 @@ +GMOM_JRA_WD.cpl.r.1900-01-02-00000.nc diff --git a/tests/data/access-om3/restart000/rpointer.ice b/tests/data/access-om3/restart000/rpointer.ice new file mode 100644 index 0000000..fb3009b --- /dev/null +++ b/tests/data/access-om3/restart000/rpointer.ice @@ -0,0 +1 @@ +./GMOM_JRA_WD.cice.r.1900-01-02-00000.nc diff --git a/tests/data/access-om3/restart000/rpointer.ocn b/tests/data/access-om3/restart000/rpointer.ocn new file mode 100644 index 0000000..a3fad97 --- /dev/null +++ b/tests/data/access-om3/restart000/rpointer.ocn @@ -0,0 +1 @@ +GMOM_JRA_WD.mom6.r.1900-01-02-00000.nc diff --git a/tests/data/access-om3/restart000/rpointer.rof b/tests/data/access-om3/restart000/rpointer.rof new file mode 100644 index 0000000..e1b3a07 --- /dev/null +++ b/tests/data/access-om3/restart000/rpointer.rof @@ -0,0 +1 @@ +GMOM_JRA_WD.drof.r.1900-01-02-00000.nc diff --git a/tests/data/access-om3/restart000/rpointer.wav b/tests/data/access-om3/restart000/rpointer.wav new file mode 100644 index 0000000..eb008de --- /dev/null +++ b/tests/data/access-om3/restart000/rpointer.wav @@ -0,0 +1 @@ +GMOM_JRA_WD.ww3.r.1900-01-02-00000 \ No newline at end of file diff --git a/tests/data/access-om3/restart001/GMOM_JRA_WD.cice.r.1900-01-03-00000.nc b/tests/data/access-om3/restart001/GMOM_JRA_WD.cice.r.1900-01-03-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart001/GMOM_JRA_WD.cpl.r.1900-01-03-00000.nc b/tests/data/access-om3/restart001/GMOM_JRA_WD.cpl.r.1900-01-03-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart001/GMOM_JRA_WD.datm.r.1900-01-03-00000.nc b/tests/data/access-om3/restart001/GMOM_JRA_WD.datm.r.1900-01-03-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart001/GMOM_JRA_WD.drof.r.1900-01-03-00000.nc b/tests/data/access-om3/restart001/GMOM_JRA_WD.drof.r.1900-01-03-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart001/GMOM_JRA_WD.mom6.r.1900-01-03-00000.nc b/tests/data/access-om3/restart001/GMOM_JRA_WD.mom6.r.1900-01-03-00000.nc new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart001/GMOM_JRA_WD.ww3.r.1900-01-03-00000 b/tests/data/access-om3/restart001/GMOM_JRA_WD.ww3.r.1900-01-03-00000 new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/access-om3/restart001/rpointer.atm b/tests/data/access-om3/restart001/rpointer.atm new file mode 100644 index 0000000..38d0ba8 --- /dev/null +++ b/tests/data/access-om3/restart001/rpointer.atm @@ -0,0 +1 @@ +GMOM_JRA_WD.datm.r.1900-01-03-00000.nc diff --git a/tests/data/access-om3/restart001/rpointer.cpl b/tests/data/access-om3/restart001/rpointer.cpl new file mode 100644 index 0000000..42dbd88 --- /dev/null +++ b/tests/data/access-om3/restart001/rpointer.cpl @@ -0,0 +1 @@ +GMOM_JRA_WD.cpl.r.1900-01-03-00000.nc diff --git a/tests/data/access-om3/restart001/rpointer.ice b/tests/data/access-om3/restart001/rpointer.ice new file mode 100644 index 0000000..7cf2d92 --- /dev/null +++ b/tests/data/access-om3/restart001/rpointer.ice @@ -0,0 +1 @@ +./GMOM_JRA_WD.cice.r.1900-01-03-00000.nc diff --git a/tests/data/access-om3/restart001/rpointer.ocn b/tests/data/access-om3/restart001/rpointer.ocn new file mode 100644 index 0000000..79dccdf --- /dev/null +++ b/tests/data/access-om3/restart001/rpointer.ocn @@ -0,0 +1 @@ +GMOM_JRA_WD.mom6.r.1900-01-03-00000.nc diff --git a/tests/data/access-om3/restart001/rpointer.rof b/tests/data/access-om3/restart001/rpointer.rof new file mode 100644 index 0000000..1c9d05f --- /dev/null +++ b/tests/data/access-om3/restart001/rpointer.rof @@ -0,0 +1 @@ +GMOM_JRA_WD.drof.r.1900-01-03-00000.nc diff --git a/tests/data/access-om3/restart001/rpointer.wav b/tests/data/access-om3/restart001/rpointer.wav new file mode 100644 index 0000000..27e48ce --- /dev/null +++ b/tests/data/access-om3/restart001/rpointer.wav @@ -0,0 +1 @@ +GMOM_JRA_WD.ww3.r.1900-01-03-00000 \ No newline at end of file diff --git a/tests/test_builders.py b/tests/test_builders.py index 2d63ecf..e180919 100644 --- a/tests/test_builders.py +++ b/tests/test_builders.py @@ -23,6 +23,7 @@ 7, ), (["access-esm1-5"], "AccessEsm15Builder", {"ensemble": False}, 11, 11, 11), + (["access-om3"], "AccessOm3Builder", {}, 12, 12, 6), ], ) def test_builder_build( diff --git a/tests/test_manager.py b/tests/test_manager.py index 953d215..0367baf 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -13,6 +13,7 @@ AccessCm2Builder, AccessEsm15Builder, AccessOm2Builder, + AccessOm3Builder, ) @@ -35,6 +36,7 @@ def test_CatalogManager_init(tmp_path): (AccessOm2Builder, "access-om2", {}), (AccessCm2Builder, "access-cm2/by578", {"ensemble": False}), (AccessEsm15Builder, "access-esm1-5", {"ensemble": False}), + (AccessOm3Builder, "access-om3", {}), ], ) def test_CatalogManager_build_esm(tmp_path, test_data, builder, basedir, kwargs): diff --git a/tests/test_source_utils.py b/tests/test_source_utils.py index b1afcce..30347ba 100644 --- a/tests/test_source_utils.py +++ b/tests/test_source_utils.py @@ -104,6 +104,55 @@ "rregionPrydz_temp_xflux_adv", ("rregionPrydz_temp_xflux_adv", None, None), ), + # Example ACCESS-OM3 filenames + ( + "GMOM_JRA_WD.ww3.hi.1958-01-02-00000", + ( + "GMOM_JRA_WD_ww3_hi_XXXX_XX_XX_XXXXX", + "1958-01-02-00000", + None, + ), + ), + ( + "GMOM_JRA.cice.h.1900-01-01", + ( + "GMOM_JRA_cice_h_XXXX_XX_XX", + "1900-01-01", + None, + ), + ), + ( + "GMOM_JRA.mom6.ocean_sfc_1900_01_01", + ( + "GMOM_JRA_mom6_ocean_sfc_XXXX_XX_XX", + "1900_01_01", + None, + ), + ), + ( + "GMOM_JRA.mom6.sfc_1900_01_01", + ( + "GMOM_JRA_mom6_sfc_XXXX_XX_XX", + "1900_01_01", + None, + ), + ), + ( + "GMOM_JRA.mom6.sfc_1900_01", + ( + "GMOM_JRA_mom6_sfc_XXXX_XX", + "1900_01", + None, + ), + ), + ( + "GMOM_JRA.mom6.static", + ( + "GMOM_JRA_mom6_static", + None, + None, + ), + ), ], ) def test_parse_access_filename(filename, expected): @@ -360,6 +409,150 @@ def test_parse_access_filename(filename, expected): ["mmol/m^3", "days"], ), ), + ( + "access-om3/output000/GMOM_JRA_WD.mom6.h.native_1900_01.nc", + ( + "GMOM_JRA_WD.mom6.h.native_1900_01.nc", + "GMOM_JRA_WD_mom6_h_native_XXXX_XX", + "1900_01", + "1mon", + "1900-01-01, 00:00:00", + "1900-02-01, 00:00:00", + ["average_DT", "average_T1", "average_T2", "thetao", "time_bnds"], + [ + "Length of average period", + "Start time for average period", + "End time for average period", + "Sea Water Potential Temperature", + "time axis boundaries", + ], + ["", "", "", "sea_water_potential_temperature", ""], + ["", "", "", "area:mean zl:mean yh:mean xh:mean time: mean", ""], + [ + "days", + "days since 0001-01-01 00:00:00", + "days since 0001-01-01 00:00:00", + "degC", + "days since 0001-01-01 00:00:00", + ], + ), + ), + ( + "access-om3/output000/GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc", + ( + "GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc", + "GMOM_JRA_WD_mom6_h_sfc_XXXX_XX_XX", + "1900_01_02", + "1day", + "1900-01-01, 00:00:00", + "1900-01-02, 00:00:00", + ["average_DT", "average_T1", "average_T2", "time_bnds", "tos"], + [ + "Length of average period", + "Start time for average period", + "End time for average period", + "time axis boundaries", + "Sea Surface Temperature", + ], + ["", "", "", "", "sea_surface_temperature"], + ["", "", "", "", "area:mean yh:mean xh:mean time: mean"], + [ + "days", + "days since 0001-01-01 00:00:00", + "days since 0001-01-01 00:00:00", + "days since 0001-01-01 00:00:00", + "degC", + ], + ), + ), + ( + "access-om3/output000/GMOM_JRA_WD.mom6.h.static.nc", + ( + "GMOM_JRA_WD.mom6.h.static.nc", + "GMOM_JRA_WD_mom6_h_static", + None, + "fx", + "none", + "none", + ["geolat", "geolon"], + ["Latitude of tracer (T) points", "Longitude of tracer (T) points"], + ["", ""], + ["time: point", "time: point"], + ["degrees_north", "degrees_east"], + ), + ), + ( + "access-om3/output000/GMOM_JRA_WD.mom6.h.z_1900_01.nc", + ( + "GMOM_JRA_WD.mom6.h.z_1900_01.nc", + "GMOM_JRA_WD_mom6_h_z_XXXX_XX", + "1900_01", + "1mon", + "1900-01-01, 00:00:00", + "1900-02-01, 00:00:00", + ["average_DT", "average_T1", "average_T2", "thetao", "time_bnds"], + [ + "Length of average period", + "Start time for average period", + "End time for average period", + "Sea Water Potential Temperature", + "time axis boundaries", + ], + ["", "", "", "sea_water_potential_temperature", ""], + ["", "", "", "area:mean z_l:mean yh:mean xh:mean time: mean", ""], + [ + "days", + "days since 0001-01-01 00:00:00", + "days since 0001-01-01 00:00:00", + "degC", + "days since 0001-01-01 00:00:00", + ], + ), + ), + ( + "access-om3/output000/GMOM_JRA_WD.cice.h.1900-01-01.nc", + ( + "GMOM_JRA_WD.cice.h.1900-01-01.nc", + "GMOM_JRA_WD_cice_h_XXXX_XX_XX", + "1900-01-01", + "1day", + "1900-01-01, 00:00:00", + "1900-01-02, 00:00:00", + ["TLAT", "TLON", "aice", "tarea", "time_bounds"], + [ + "T grid center latitude", + "T grid center longitude", + "ice area (aggregate)", + "area of T grid cells", + "time interval endpoints", + ], + ["", "", "", "", ""], + ["", "", "time: mean", "", ""], + [ + "degrees_north", + "degrees_east", + "1", + "m^2", + "days since 0000-01-01 00:00:00", + ], + ), + ), + ( + "access-om3/output000/GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc", + ( + "GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc", + "GMOM_JRA_WD_ww3_hi_XXXX_XX_XX_XXXXX", + "1900-01-02-00000", + "fx", # WW3 provides no time bounds + "1900-01-02, 00:00:00", + "1900-01-02, 00:00:00", + ["EF", "mapsta"], + ["1D spectral density", "map status"], + ["", ""], + ["", ""], + ["m2 s", "unitless"], + ), + ), ], ) def test_parse_access_ncfile(test_data, filename, expected):