From 1983bd200a2d1b10810e0c16d6c50a98601be25f Mon Sep 17 00:00:00 2001 From: dougiesquire Date: Tue, 27 Feb 2024 15:59:12 +1100 Subject: [PATCH 1/5] add ACCESS-OM3 builder and basic tests --- src/access_nri_intake/source/builders.py | 85 ++++++++++++++++++++++++ src/access_nri_intake/source/utils.py | 4 ++ tests/test_source_utils.py | 41 ++++++++++++ 3 files changed, 130 insertions(+) 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..4ed9668 100644 --- a/src/access_nri_intake/source/utils.py +++ b/src/access_nri_intake/source/utils.py @@ -169,7 +169,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 +184,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})$", # ACCESS-OM3 ] # Frequency translations frequencies = { diff --git a/tests/test_source_utils.py b/tests/test_source_utils.py index b1afcce..097b4e5 100644 --- a/tests/test_source_utils.py +++ b/tests/test_source_utils.py @@ -104,6 +104,47 @@ "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.static", + ( + "GMOM_JRA_mom6_static", + None, + None, + ), + ), ], ) def test_parse_access_filename(filename, expected): From 69a43b4eff5eb7081c4daa8a8b3a827d7b92022e Mon Sep 17 00:00:00 2001 From: dougiesquire Date: Tue, 27 Feb 2024 16:33:56 +1100 Subject: [PATCH 2/5] update docs --- docs/datastores/builders.rst | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 `_. From bdf7f6b9e3668f4e90b746c0f689fbdd0a8406b4 Mon Sep 17 00:00:00 2001 From: dougiesquire Date: Tue, 27 Feb 2024 16:46:34 +1100 Subject: [PATCH 3/5] fix issue with sphinx autoapi --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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", From bbd8b122e035f89659d706f8131c169426cbed61 Mon Sep 17 00:00:00 2001 From: dougiesquire Date: Wed, 28 Feb 2024 16:28:59 +1100 Subject: [PATCH 4/5] add om3 test data and tests --- src/access_nri_intake/source/utils.py | 2 +- tests/data/access-om3/README | 1 + .../access-om3.109393186.gadi-pbs.err | 0 .../access-om3.109393186.gadi-pbs.out | 0 .../access-om3.109393326.gadi-pbs.err | 0 .../access-om3.109393326.gadi-pbs.out | 0 .../error_logs/env.109393186.gadi-pbs.yaml | 0 .../error_logs/env.109393326.gadi-pbs.yaml | 0 .../error_logs/job.109393186.gadi-pbs.yaml | 0 .../error_logs/job.109393326.gadi-pbs.yaml | 0 tests/data/access-om3/metadata.yaml | 7 + .../GMOM_JRA_WD.cice.h.1900-01-01.nc | Bin 0 -> 2140 bytes .../GMOM_JRA_WD.mom6.h.native_1900_01.nc | Bin 0 -> 2728 bytes .../GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc | Bin 0 -> 2484 bytes .../output000/GMOM_JRA_WD.mom6.h.static.nc | Bin 0 -> 1264 bytes .../output000/GMOM_JRA_WD.mom6.h.z_1900_01.nc | Bin 0 -> 2744 bytes .../GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc | Bin 0 -> 932 bytes tests/data/access-om3/output000/MOM_IC.nc | 0 tests/data/access-om3/output000/MOM_input | 0 tests/data/access-om3/output000/MOM_override | 0 .../output000/MOM_parameter_doc.all | 0 .../output000/MOM_parameter_doc.debugging | 0 .../output000/MOM_parameter_doc.layout | 0 .../output000/MOM_parameter_doc.short | 0 .../output000/Vertical_coordinate.nc | 0 .../data/access-om3/output000/access-om3.err | 0 .../data/access-om3/output000/access-om3.out | 0 .../output000/available_diags.000000 | 0 tests/data/access-om3/output000/config.yaml | 0 .../access-om3/output000/datm.streams.xml | 0 tests/data/access-om3/output000/datm_in | 0 tests/data/access-om3/output000/diag_table | 0 .../access-om3/output000/drof.streams.xml | 0 tests/data/access-om3/output000/drof_in | 0 tests/data/access-om3/output000/drv_in | 0 tests/data/access-om3/output000/env.yaml | 0 tests/data/access-om3/output000/fd.yaml | 0 tests/data/access-om3/output000/ice_in | 0 tests/data/access-om3/output000/input.nml | 0 tests/data/access-om3/output000/job.yaml | 0 .../access-om3/output000/logfile.000000.out | 0 .../access-om3/output000/manifests/exe.yaml | 0 .../access-om3/output000/manifests/input.yaml | 0 .../output000/manifests/restart.yaml | 0 .../data/access-om3/output000/nuopc.runconfig | 0 tests/data/access-om3/output000/nuopc.runseq | 0 tests/data/access-om3/output000/ocean.stats | 0 .../data/access-om3/output000/ocean.stats.nc | 0 .../access-om3/output000/ocean_geometry.nc | 0 tests/data/access-om3/output000/wav_in | 0 .../data/access-om3/output000/ww3_points.list | 0 tests/data/access-om3/output000/ww3_shel.nml | 0 .../GMOM_JRA_WD.cice.h.1900-01-02.nc | Bin 0 -> 2140 bytes .../GMOM_JRA_WD.mom6.h.native_1900_01.nc | Bin 0 -> 2728 bytes .../GMOM_JRA_WD.mom6.h.sfc_1900_01_03.nc | Bin 0 -> 2484 bytes .../output001/GMOM_JRA_WD.mom6.h.static.nc | Bin 0 -> 1264 bytes .../output001/GMOM_JRA_WD.mom6.h.z_1900_01.nc | Bin 0 -> 2744 bytes .../GMOM_JRA_WD.ww3.hi.1900-01-03-00000.nc | Bin 0 -> 932 bytes tests/data/access-om3/output001/MOM_IC.nc | 0 tests/data/access-om3/output001/MOM_input | 0 tests/data/access-om3/output001/MOM_override | 0 .../output001/MOM_parameter_doc.all | 0 .../output001/MOM_parameter_doc.debugging | 0 .../output001/MOM_parameter_doc.layout | 0 .../output001/MOM_parameter_doc.short | 0 .../output001/Vertical_coordinate.nc | 0 .../data/access-om3/output001/access-om3.err | 0 .../data/access-om3/output001/access-om3.out | 0 .../output001/available_diags.000000 | 0 tests/data/access-om3/output001/config.yaml | 0 .../access-om3/output001/datm.streams.xml | 0 tests/data/access-om3/output001/datm_in | 0 tests/data/access-om3/output001/diag_table | 0 .../access-om3/output001/drof.streams.xml | 0 tests/data/access-om3/output001/drof_in | 0 tests/data/access-om3/output001/drv_in | 0 tests/data/access-om3/output001/env.yaml | 0 tests/data/access-om3/output001/fd.yaml | 0 tests/data/access-om3/output001/ice_in | 0 tests/data/access-om3/output001/input.nml | 0 tests/data/access-om3/output001/job.yaml | 0 .../access-om3/output001/logfile.000000.out | 0 .../access-om3/output001/manifests/exe.yaml | 0 .../access-om3/output001/manifests/input.yaml | 0 .../output001/manifests/restart.yaml | 0 .../data/access-om3/output001/nuopc.runconfig | 0 tests/data/access-om3/output001/nuopc.runseq | 0 tests/data/access-om3/output001/ocean.stats | 0 .../data/access-om3/output001/ocean.stats.nc | 0 tests/data/access-om3/output001/wav_in | 0 .../data/access-om3/output001/ww3_points.list | 0 tests/data/access-om3/output001/ww3_shel.nml | 0 .../pbs_logs/1deg_jra55do_ry.e109393186 | 7 + .../pbs_logs/1deg_jra55do_ry.e109393326 | 7 + .../pbs_logs/1deg_jra55do_ry.e109493795 | 6 + .../pbs_logs/1deg_jra55do_ry.e109494482 | 6 + .../pbs_logs/1deg_jra55do_ry.o109393186 | 35 ++++ .../pbs_logs/1deg_jra55do_ry.o109393326 | 34 ++++ .../pbs_logs/1deg_jra55do_ry.o109493795 | 26 +++ .../pbs_logs/1deg_jra55do_ry.o109494482 | 30 ++++ .../GMOM_JRA_WD.cice.r.1900-01-02-00000.nc | 0 .../GMOM_JRA_WD.cpl.r.1900-01-02-00000.nc | 0 .../GMOM_JRA_WD.datm.r.1900-01-02-00000.nc | 0 .../GMOM_JRA_WD.drof.r.1900-01-02-00000.nc | 0 .../GMOM_JRA_WD.mom6.r.1900-01-02-00000.nc | 0 .../GMOM_JRA_WD.ww3.r.1900-01-02-00000 | 0 tests/data/access-om3/restart000/rpointer.atm | 1 + tests/data/access-om3/restart000/rpointer.cpl | 1 + tests/data/access-om3/restart000/rpointer.ice | 1 + tests/data/access-om3/restart000/rpointer.ocn | 1 + tests/data/access-om3/restart000/rpointer.rof | 1 + tests/data/access-om3/restart000/rpointer.wav | 1 + .../GMOM_JRA_WD.cice.r.1900-01-03-00000.nc | 0 .../GMOM_JRA_WD.cpl.r.1900-01-03-00000.nc | 0 .../GMOM_JRA_WD.datm.r.1900-01-03-00000.nc | 0 .../GMOM_JRA_WD.drof.r.1900-01-03-00000.nc | 0 .../GMOM_JRA_WD.mom6.r.1900-01-03-00000.nc | 0 .../GMOM_JRA_WD.ww3.r.1900-01-03-00000 | 0 tests/data/access-om3/restart001/rpointer.atm | 1 + tests/data/access-om3/restart001/rpointer.cpl | 1 + tests/data/access-om3/restart001/rpointer.ice | 1 + tests/data/access-om3/restart001/rpointer.ocn | 1 + tests/data/access-om3/restart001/rpointer.rof | 1 + tests/data/access-om3/restart001/rpointer.wav | 1 + tests/test_builders.py | 1 + tests/test_manager.py | 2 + tests/test_source_utils.py | 152 ++++++++++++++++++ 127 files changed, 327 insertions(+), 1 deletion(-) create mode 100644 tests/data/access-om3/README create mode 100644 tests/data/access-om3/error_logs/access-om3.109393186.gadi-pbs.err create mode 100644 tests/data/access-om3/error_logs/access-om3.109393186.gadi-pbs.out create mode 100644 tests/data/access-om3/error_logs/access-om3.109393326.gadi-pbs.err create mode 100644 tests/data/access-om3/error_logs/access-om3.109393326.gadi-pbs.out create mode 100644 tests/data/access-om3/error_logs/env.109393186.gadi-pbs.yaml create mode 100644 tests/data/access-om3/error_logs/env.109393326.gadi-pbs.yaml create mode 100644 tests/data/access-om3/error_logs/job.109393186.gadi-pbs.yaml create mode 100644 tests/data/access-om3/error_logs/job.109393326.gadi-pbs.yaml create mode 100644 tests/data/access-om3/metadata.yaml create mode 100644 tests/data/access-om3/output000/GMOM_JRA_WD.cice.h.1900-01-01.nc create mode 100644 tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.native_1900_01.nc create mode 100644 tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.sfc_1900_01_02.nc create mode 100644 tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.static.nc create mode 100644 tests/data/access-om3/output000/GMOM_JRA_WD.mom6.h.z_1900_01.nc create mode 100644 tests/data/access-om3/output000/GMOM_JRA_WD.ww3.hi.1900-01-02-00000.nc create mode 100644 tests/data/access-om3/output000/MOM_IC.nc create mode 100644 tests/data/access-om3/output000/MOM_input create mode 100644 tests/data/access-om3/output000/MOM_override create mode 100644 tests/data/access-om3/output000/MOM_parameter_doc.all create mode 100644 tests/data/access-om3/output000/MOM_parameter_doc.debugging create mode 100644 tests/data/access-om3/output000/MOM_parameter_doc.layout create mode 100644 tests/data/access-om3/output000/MOM_parameter_doc.short create mode 100644 tests/data/access-om3/output000/Vertical_coordinate.nc create mode 100644 tests/data/access-om3/output000/access-om3.err create mode 100644 tests/data/access-om3/output000/access-om3.out create mode 100644 tests/data/access-om3/output000/available_diags.000000 create mode 100644 tests/data/access-om3/output000/config.yaml create mode 100644 tests/data/access-om3/output000/datm.streams.xml create mode 100644 tests/data/access-om3/output000/datm_in create mode 100644 tests/data/access-om3/output000/diag_table create mode 100644 tests/data/access-om3/output000/drof.streams.xml create mode 100644 tests/data/access-om3/output000/drof_in create mode 100644 tests/data/access-om3/output000/drv_in create mode 100644 tests/data/access-om3/output000/env.yaml create mode 100644 tests/data/access-om3/output000/fd.yaml create mode 100644 tests/data/access-om3/output000/ice_in create mode 100644 tests/data/access-om3/output000/input.nml create mode 100644 tests/data/access-om3/output000/job.yaml create mode 100644 tests/data/access-om3/output000/logfile.000000.out create mode 100644 tests/data/access-om3/output000/manifests/exe.yaml create mode 100644 tests/data/access-om3/output000/manifests/input.yaml create mode 100644 tests/data/access-om3/output000/manifests/restart.yaml create mode 100644 tests/data/access-om3/output000/nuopc.runconfig create mode 100644 tests/data/access-om3/output000/nuopc.runseq create mode 100644 tests/data/access-om3/output000/ocean.stats create mode 100644 tests/data/access-om3/output000/ocean.stats.nc create mode 100644 tests/data/access-om3/output000/ocean_geometry.nc create mode 100644 tests/data/access-om3/output000/wav_in create mode 100644 tests/data/access-om3/output000/ww3_points.list create mode 100644 tests/data/access-om3/output000/ww3_shel.nml create mode 100644 tests/data/access-om3/output001/GMOM_JRA_WD.cice.h.1900-01-02.nc create mode 100644 tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.native_1900_01.nc create mode 100644 tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.sfc_1900_01_03.nc create mode 100644 tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.static.nc create mode 100644 tests/data/access-om3/output001/GMOM_JRA_WD.mom6.h.z_1900_01.nc create mode 100644 tests/data/access-om3/output001/GMOM_JRA_WD.ww3.hi.1900-01-03-00000.nc create mode 100644 tests/data/access-om3/output001/MOM_IC.nc create mode 100644 tests/data/access-om3/output001/MOM_input create mode 100644 tests/data/access-om3/output001/MOM_override create mode 100644 tests/data/access-om3/output001/MOM_parameter_doc.all create mode 100644 tests/data/access-om3/output001/MOM_parameter_doc.debugging create mode 100644 tests/data/access-om3/output001/MOM_parameter_doc.layout create mode 100644 tests/data/access-om3/output001/MOM_parameter_doc.short create mode 100644 tests/data/access-om3/output001/Vertical_coordinate.nc create mode 100644 tests/data/access-om3/output001/access-om3.err create mode 100644 tests/data/access-om3/output001/access-om3.out create mode 100644 tests/data/access-om3/output001/available_diags.000000 create mode 100644 tests/data/access-om3/output001/config.yaml create mode 100644 tests/data/access-om3/output001/datm.streams.xml create mode 100644 tests/data/access-om3/output001/datm_in create mode 100644 tests/data/access-om3/output001/diag_table create mode 100644 tests/data/access-om3/output001/drof.streams.xml create mode 100644 tests/data/access-om3/output001/drof_in create mode 100644 tests/data/access-om3/output001/drv_in create mode 100644 tests/data/access-om3/output001/env.yaml create mode 100644 tests/data/access-om3/output001/fd.yaml create mode 100644 tests/data/access-om3/output001/ice_in create mode 100644 tests/data/access-om3/output001/input.nml create mode 100644 tests/data/access-om3/output001/job.yaml create mode 100644 tests/data/access-om3/output001/logfile.000000.out create mode 100644 tests/data/access-om3/output001/manifests/exe.yaml create mode 100644 tests/data/access-om3/output001/manifests/input.yaml create mode 100644 tests/data/access-om3/output001/manifests/restart.yaml create mode 100644 tests/data/access-om3/output001/nuopc.runconfig create mode 100644 tests/data/access-om3/output001/nuopc.runseq create mode 100644 tests/data/access-om3/output001/ocean.stats create mode 100644 tests/data/access-om3/output001/ocean.stats.nc create mode 100644 tests/data/access-om3/output001/wav_in create mode 100644 tests/data/access-om3/output001/ww3_points.list create mode 100644 tests/data/access-om3/output001/ww3_shel.nml create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393186 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109393326 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109493795 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.e109494482 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393186 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109393326 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109493795 create mode 100644 tests/data/access-om3/pbs_logs/1deg_jra55do_ry.o109494482 create mode 100644 tests/data/access-om3/restart000/GMOM_JRA_WD.cice.r.1900-01-02-00000.nc create mode 100644 tests/data/access-om3/restart000/GMOM_JRA_WD.cpl.r.1900-01-02-00000.nc create mode 100644 tests/data/access-om3/restart000/GMOM_JRA_WD.datm.r.1900-01-02-00000.nc create mode 100644 tests/data/access-om3/restart000/GMOM_JRA_WD.drof.r.1900-01-02-00000.nc create mode 100644 tests/data/access-om3/restart000/GMOM_JRA_WD.mom6.r.1900-01-02-00000.nc create mode 100644 tests/data/access-om3/restart000/GMOM_JRA_WD.ww3.r.1900-01-02-00000 create mode 100644 tests/data/access-om3/restart000/rpointer.atm create mode 100644 tests/data/access-om3/restart000/rpointer.cpl create mode 100644 tests/data/access-om3/restart000/rpointer.ice create mode 100644 tests/data/access-om3/restart000/rpointer.ocn create mode 100644 tests/data/access-om3/restart000/rpointer.rof create mode 100644 tests/data/access-om3/restart000/rpointer.wav create mode 100644 tests/data/access-om3/restart001/GMOM_JRA_WD.cice.r.1900-01-03-00000.nc create mode 100644 tests/data/access-om3/restart001/GMOM_JRA_WD.cpl.r.1900-01-03-00000.nc create mode 100644 tests/data/access-om3/restart001/GMOM_JRA_WD.datm.r.1900-01-03-00000.nc create mode 100644 tests/data/access-om3/restart001/GMOM_JRA_WD.drof.r.1900-01-03-00000.nc create mode 100644 tests/data/access-om3/restart001/GMOM_JRA_WD.mom6.r.1900-01-03-00000.nc create mode 100644 tests/data/access-om3/restart001/GMOM_JRA_WD.ww3.r.1900-01-03-00000 create mode 100644 tests/data/access-om3/restart001/rpointer.atm create mode 100644 tests/data/access-om3/restart001/rpointer.cpl create mode 100644 tests/data/access-om3/restart001/rpointer.ice create mode 100644 tests/data/access-om3/restart001/rpointer.ocn create mode 100644 tests/data/access-om3/restart001/rpointer.rof create mode 100644 tests/data/access-om3/restart001/rpointer.wav diff --git a/src/access_nri_intake/source/utils.py b/src/access_nri_intake/source/utils.py index 4ed9668..034e0a0 100644 --- a/src/access_nri_intake/source/utils.py +++ b/src/access_nri_intake/source/utils.py @@ -184,7 +184,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})$", # ACCESS-OM3 + 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 0000000000000000000000000000000000000000..d66f4fd7d4a3441662eec79d5320fb93b85fb319 GIT binary patch literal 2140 zcmb_dTaOzx6wY3oy`eq;eS;%ah*sK6Gs$k%jzA*HDp0iBAXv3;49<*`xOME*cCzem z;~(&IctSk!9cMO;(p5pw(Rhw8=Ny0MI^DD0X02A+z}Uyw#@IBk@LlX}8nv8n2Q`s# z1wJz{CFU%9h;e|i6I9R@1MeSvd(pqhzyGn5zdXaTRxhjx(gcq=pWi=IVq~ljsvu!X z`oY>S!?m`AG_TR!F+ArPRkXGp~)kGWlFOudK<9 zs1V;N>|}zwSs&~8yrVT;OW{0?#axp7RTM#AQ~U8LmEtU=Nbgr_E+FZ89s{8RgoQ+?QU$^3s#kV(Mi{$^^S2oKbw5EPI!IoKK}ww#imJ)!g@Yd_7> zlv>T!Nk*o4?WxhH#+-yI5Krqhf(Tmh~N#a^$4+xv?&cvB7&2<-LO1xzMw!-gdCR@#fhdzk}}Q zNL2k|dANGUbH;_Ieu59M_n(9QTkQANu*13~_;u`uH`t}{TzDS}_Y=m==?c1a3-&tp z*0F3fQJ=?`^*NIQq#BX_*IFGnRFKZ%uxVy%4?X9slhu{RcrjA1W`tg07o?6xSfz|GqlB z;a$i68UFwX6^67xSFhR|rdfQUm3zF<(v*T*65q3Htd@ekj`^a2#yOuItaR0Qjt}Q3 z6aF!-pR)`P&TYoe^tM>sW4-({kq(`J0B35kih24zeE-E>?sIoB@YK(_&#aEl7Z3m9 L6VN{^8rOdVFYL*B literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ea016684826a1151c283b8adf2153b3a8132d71f GIT binary patch literal 2728 zcmd5;-ESL35O=?m!)5=tUF;Y0bTNJLtMbXoh>zJ8EW8qNLrLZL9nv&eIa z=b}}SWQsAb`y&eeB6K`-=ZC=+Ke*!8Sh~V<{V0w0RVb5B^@+4jwXnzpXEB$ovf=m= z-2dS4`0zgYN_4eJtZGw7$ zC9L$l4(?Pe8>`(|`JNs2az3rZvYUn?&h4{x ztVZ@1jy86|uLLTwCLU(;U(TdY`?5uwA5d+pUfrtK9?)iWbE{6e{Y^sUV=DK_2GR;s zLax1*_LGw6%UE=!cUrq*H!s=dDV2R11f?42a7-^ktoQR7$->hdU0-^&535zLTH`SP zmJ(uEIBFbcv7BpZ8_j(>?y++mWJ2s^qKu|{m1^Z4z59uYWRKmZk0`LVSKrvsZBt1) z6+T#^hVgSdU1fu`RcV_DN|^8Ao>zGSd&MjR%~OaSPC$VvV5jIYqQWmkn2sL8GRx+g zum5yw@bj}B=GP;YBuaO^{-sJ`T4yQM$^sxffRROC46$4d4Ik7Z13va{9!TA_0htbs zJtNM7GCuFY?khZb6anu`-%o2!2#jO=m%iVI@5B+eB~`1{TG{=Wt-GJQe^y+#POOM6 z0eP;nt_8;@^YK09^;LYE&hGy?zPI+t;@GH|_MXWSlRdT6ZFR*8^KW#mdaja@OVp-*~|w1M%n{#io*tVdF4x(G*f7>wv(Oo5>~ zK?OdKZHR=8=4y=kCQPBn)U{)BhTXqgoptWy+841u zRlj!OHi4bbPS4`;fh0++;e;BR|X9gi`ddRakDBlwTx{$KI;TDc&tkG*Q#v&)CNqjI0K* z{^}TMrljh zL`pN}(c_g(eTR5{*7;}fh>h^b_lB={o&U~(AE@0~{;X&IXcODf=g>@_ZeH_=U(;ik zCj5EK7xBpZAgPz7sD=z literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..eed33c5e950ac2919ef96a949d593fc904c4ddef GIT binary patch literal 2484 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3ec8fd00dc03e174d568739123d1a781a87fe160 GIT binary patch literal 932 zcma)5v2N5r5OvO%a2%ncK~zHrlI_^$B7r3&&|M5d3MYX?O0%&iXA67nc=wXKo|2LR zAqvEoq~Mn*=$Ki@QFIc5l}GRG&hG5nnelWMZ&{YbHYOXg>7qhH9>bFsPYKySkZWGL z^-*48bItOrjuw&<`gO$n=8(cMk3u9K=o~8l{C( z3hk7&1UCb@asq?v4p{}W7+xIC50h7Ko+n2$@BI9cmls~}#P?l4aQ)Erd3ZAY&u!)j zmi>AzhOH_{)xPI@`|#jpU11{@2u~r`x{3DoWLkUb#G``_ zOzZ5LXHn>UdF-Wi#hch3@;$f6w#fzuF;7j-8BLA}Z8FX&*J$7>wtU$J)kSSS<==;M51-t`8tP7mYt zc+5AojW}l|s=wuFOfi8PPA|K}nx3cdUno}J`}}4eeQ$5xabICt%S?ePWQuUrf&ut` vWWMhFC>15jOtds*tvj+VQ8dQczw_J0+tt1Av~+RW{ZyB=v7Y_9Yc~D?s-LSS literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e510a1a477cd2b2efb219f52a6085834782b24c0 GIT binary patch literal 2140 zcmb_d+m0JW5cOW;y`ek+d4rN7L?W#xws#jL7D!lL8G?3W1gqpNLwlxechc^5dd6P% z+xP=MheyN%=gioS<*WiCjHai$yQ-^BRaez?&bynHN@W9MA7dM1)4jsC+}m_!Ip5CB zSQjhExxPy==h;Jy1B{*A_(G5E#uxe7-0t)^&YH}lhwl!|#Sy6~B_tr~;;td%@Xv|RdB+hdu!*Un$Nc&0;U zyo;ThBfgXP@ffzLk2*eYTPrtOg-k|jrbYj%lHA_N$yaBRs++c4 z?u<;9`*1^9@_u^(n_br84rsm(;0L?0K{`+iEawN#urZWQztX;)S*G)f>JjUqZ;t2b)( zX5^B86xhE4HbzWkI+tseNfI>Tmol7$1U)sNQ@J!wTBoJMd&b8Dt7bmXqtd4%>`jap zr}HEol>1xHI=uz|7ce^KUFji|3c<)^o)U5v)uS_c@Vy`Fi5hD8Mn-u)X+3)65+7xQ z2nUa)gPVQJ8Jc`F?MFxl3UNH79p?Nl#`e`k`wEn?=EGWIO|X{starn=X;{d7dL_eP zQb}-!I*3)Mn`v6+_s-OrqCjw#`i@dP3|eQg^C2H$gL`9>Wd>?z%1-C?wuAkRH&6fg z9dtiNqT1(6<|>bK;=)rs#Ru4X&p`hz_IqpC;oTDaI`+c_cC9iN-v5RBF>y0pLAP$f zUd7%zmW_Gs+;$(IK$R%up~wR@M7W2@$l`{JTJs?_4m-m{mp@1L@_#p>fCPJSTEJg}Bn*5kc3e#y4UUiD7=_LlLZ#D~RX)u*qaYw?d_4buPj z)!{;R9s6he0SGD#X@Ra@wzmeRt>T4N_IPErOBGuZ?d&>lwPMsUFB@nvC+}dTs}_8G zn4={8F|PA@hJ(3H{G_+t#Xaif&qN1w0s)+f$EwKF_u>05{<6>A#lTa&V4qnX?Jpkw MMGoknb6Twb24928hX4Qo literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..35e5ed1385c6803eb264a63bb936a1f1a98b1789 GIT binary patch literal 2728 zcmd5;UvC>l5O)$gAtsjk0HT0OM@XoEY{xcf0ZS-}?3h1F;tE?0AjD==X)NL_h7v$M0aGjqS0yH>lip3CLda29bE zaORB&IZ_(ya*|NuF9OSx?)uEX;-^>q4obIhmQLfaBLc2JmOXB)YA%n2&eALxVS@Q3 zbpN|2-IIIZ3g$_rjTpj6@W9nz*dX9AQW3O{dM7Ysnm6G?RCYf3^w2qLzLU%iZg@BuX5gZf^xw%6Qy2O71;UK8Z-8x55%R3>12ZkQ@l zuAPB&b(u|g#60fw>sM^!l5O{);=R~4D%l; zQ4AZWt!^62x#XtR?m%~p&S8)m&`T|pguB&R^)9^mkqY@3-G&dqH)h=2-IYUC)uSpN zEJI7VnH^6UKOR(vDkLSEZ_z!^<0R}A(+srxB(^vqN|++-6dgoV@PGwz@(?yrw$^^} zr(4sXA0HrJ3We4}dd}ohCAX|oh@~(D5FCV&yvt^^+zu2Tlq>~4?cF@)(lb7&5zIXU z%z{uZ?vdT+aN;Nuyf1z4*R7B+PUHXd{WbC(FybMHTCG;E*dMY@`?L42itAR-u*d)* z&sNs8;P7NNzDKyeimzeqKFjgFdL-Syi!K}6cNk6D<0vMY^vsB^%3TTJZ}=2s91ghc z3`wqTpgxY`G5&2PrELX-TN;F?4V<(l`-GikJQq;5cK+k^SEQ@3oZY{UWA3%^+$x`M z_c((yY>yG#SB6U?SO9$<+LDeVTTDCDC!LTRU%6@jEK~n%hMY;b2ogH;6FQw!!cY@P zg?ygdU>c2PY78bSh)EBrZO32@+kd;Jv$hYiiRTD8QYgSdIZG?=FS{b@l(3UamqqSU z{odA`IS(mrXPn0En8mm$r}Jl2d`vv~fi#P6!pm~L|84E1_Va8i(mbyv?GE$D0#1P} zy@xhWyT?a|_t6W)O{#-DfU_}eZ%+l-?~?v{2LEuh^$EG}0QN z^?w!j3*-w>&|tk}k+2Y<+@`hj1o`#Mw?tYiR5#0h?6};EIM)tmn)>f5+`sI@SP5xB zs!&M8JoR{CV%H)bpLO;be1=AFWP8JxxXym(kRMdLtNbaY{zw&>J4z5hq}1MMB` aCklse+yUZ{ens>Vo=5)mxeVsi?)?c5W-gKd literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2440636b0287d2ed7e18c7aba7667de2bdff9fe6 GIT binary patch literal 2484 zcmcgu-H+Qu5chqP<0AS1Y5^4u2-G6o`I4wDZ6rib$%PN~E{H@Fo_rg7V{dEk2Jbp@ z-gxAJ2Oj&#J3{cnd;cIL_!F2}$2lhrAXSu=*E72_JNujQ?5sQ8-lpR?8`$@;Z&NoS z;Yg`%%4tD~pGB4@-Oc=xKfv)G_WF62^hC_{r*goJRkij=pZbmwCY~FnJwG_>pWT5# zuuv*(gb!oE<3NL9qnN{3rO-JYoPp0YZ^Or^?0xpdiTAKemaj0al`oj#fj6c-agJ=> zU@2!lk7Kp8#7$Ik$BkTV7;fZBpKR2^R0N)xO)8l7QXXb8ODl4;PNTy9*7@-X@q3Zb zMy0cI{-=jLfF2(~>n=2JwOe=Ft$WaFv~IOQ`j0gn_2Fm=M(INet~Zi_K4ep#vXFbj z<|W%&u-zdX1&~LFO`Z>+^IoIjHJa$yziSX=XY0JvFR@=pZaUo_^e2c1 zozj57v``XmyAAg?-26l(e1b^fLx_x-w2zOauUtKLap56!R8WzG!bI7~^;JSj)ZeFl zUdCR-zF#`s9n!ST3!;=mlzaOgW>EYki?br=yEwPeeeIX)`ETFfN4}m2t%VG|=|aU> z)!E6UFq9D3C?~c9HltxJR=7~IGPy~1?E#mei9n5EjtnpgLIo%zyDwqKR{IuT3+%%t z&HXRf-y-aQ9{U^`jYjjxKFGH1V{xqW>-xa3)Bq)$JxR|vhbyc8eTU;q|60~Aompxx z^4mPGe{Y`3;Gev!`t}3*P}Z@s7LiZHuZvwB)8FtMWR{G$tpr7^uAn|GxxiOhBdal@ zJy&z@dHpNxZ?jyKwQZv~GEUuRF_!^LS8CVpdH=!b$>)dy^S0DMp7MNGs+hA0iJaY$ z%CP=eo@BK}NwQN*dGTb8oYqhy-zknX{;&Lg)n+U?4HhL!g{|!r+cN$?BEN;D6p6D% zFKmQ?c)~+xcD0V|;M~T=&-w32*VT}!eASojfQKDiw=P$%4mg8BmX7h#fgw+93C&Vl zybkCd@)B+$Wur|P-=+Jhop2_xq!%=wQ}VnGBqEISwM?V2;!{~4U$N_9am%5qQ@7ub zO+!z}v7(tG9%V)Q+Y1Ku>UbkkDg`Tb@v7#`!@bEb&n){zv7%ayt@bOvs{aDzHz2wi z#{-OG%DMJ9)AW0=E}pMPFi}DpkSY<9#XvP%m@Kdn#eJ*i;VU$Pt$Nle!}mH=g`)@u-xa Vymtdgfb^X?eS1z}PVGG9@LwD!{NMlp literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b77bc7ba0a1a652fddc1b8533138e883191e1eb2 GIT binary patch literal 1264 zcmcIk&2G~`5Kfw;rEPMjNT4~kQsShcKPVE1Dk1!+NhE?OoScolu@~&!;N3*YjXN)Z z#53>?5j+DD2M!!LAn^*!*cc2{P!5bVp52-8?Dy^LZoAW6%O$dfhQ@14KX&A4y!bIL z<9r>p(w~K05paE14!Ma_b44_iPg*j<1U&Imz2n}XcLc6ro>bZh2PT3Ct_H)#0f&i- zpnYrD1BYqeg4>vE-@AWepLM9hrWXmoAhUN{}KWJTVwi?IKY%~vAAf2ZgY6Gav!Q(1WvPy;-sJXE4tNUb^vF&CN zTA>P$EZ@?GAumfhe+&|iLccvo@r)!l?M@d4Qywt{s$tF}EtG^qt6?3&?j05KDf2ko z1mBoxt6rCmvh>8lAFI$-ZYJUhiU2_JIBJtj-NqMnvew`}Za z@Q?+wWFyI!AH80DMq3Gm)MN|J(wyX(|Tox2Z0@O<13ezp!(ZJgm_ZoG@Qm*h$Bkz zJ$_=YO2!V#C;4Ao%PCjRG+l-BcwRe2?tdZruRK5CTG_jq@++YK*M3|CP drWDVoH?LOj-o9AnR?il3a5Y?9dHH4Z{X8$AE-DqUD~depP=}^Hq5o&BJ-m^X9mh zxi4{Fv?`V?(dP9all)wG=tme}@BAo)n(4z!eU;~yxvw4f<3kn6^j&=_Eq1b9?l_CS zWR;D^m*D=_k4}zuC{UuSO=?w}I!Z=CN>;QYNgb0=&QDi2LRALkFRKiMX1z%LrZP-}pCMxjls8_(WoXBoJ z5=mj5tz(qgUpU^}hrS%D)S6_J&;N8T13Hu~+IoX(+x6GB>$M%)s%~x9Nw+^wY2$=8 z24q8Ng;__e{gw{Wbuo~M=t}>rcByVXRhwtD5zsJPuR)H+lHUj>4vQhl{d?%w-mF&r zYK>j|yLCYK7LFSyxepgw+D7w`PI?TAolA+)rOIf!Td7v=(kt(nSoRn$y+xt5z53>+ zZktNlsqn#dYM7v~(p5I>w<>KDV-xzTxaS$};9NQPym^Lc#}7zw37jeW%%tc85%sg+ zmw0Zj`RtFkhCe^vV|^`FX{vPBA3WXSP48LiYh^(UZs5jZAVwIjM1~J)krN(kH}6T^ zwIP`fjgb*YL79NpVD}n#ZsjlW$g!W*+$6Y-_FrOu5!i`6ZcD0GtF;aHW3}#n?*3VR z-8!`*u>{7sjJo0+pDg`_9m}w@ChC7402ZN)|mcQ z4oUapmUI;%i`8}B&#n9kKT26jy9w|X4SZVQjxp?mJJWn#;<>qtABMlMoWbjLVzE^c}D{b@zS zS+3$b5J@nV!?#l@{0H#e@8!PxcG7pmb^M;n-$DltmPL+(Gt)8ur}>xLUlc=?$9gU+ zc^p3xNjNg~A5=O%xp%OCpHVP(@;$7BS0!yCDSBA)N-fjpKM|*6ZNPWG*-fNOeJN6WTFm19 zb0PJN(w4M|m1f?f&MVsw9P9aA7vI5$Y=m2}K14h&e&YZK@^==VwH%K&iOoKRW@5T| z1rvXOj3G_n`G_y#R>T88C%(UU3_RfQbbLyj&irT1E3;#BqbYm*_a-bM1NotOJMW#q z@Uc7YUF(@tSv5e|z=_4cJV44X$)H=zbH=7{qKNs??r)g#ygm2yyeD4_o%ZB(`207& kUVOIud;AsF_I9%k`!C-iXe>X4e8lHje`!2NW9ioZ05(Q1mH+?% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..147dbc263a5a3cfbd41ff3afabf4a36c964f938b GIT binary patch literal 932 zcma)5!EVz)5Ow3Egiuag5U1e=lI_|~DuE>qRZ@eHN+giz(QNH$Vqvdc@1{-e96548 zhy&tFdf=zHF|)3#DiVT~NAK;l?mDtVecdnJZm2W)shUo?r$soa6g#D;l@?AR zv{O_P+zjN}2@GypWEIR}czHZOPF}w~OipIr<>lC0=3emJ_gz15{juxw@MQX*+sqRz z`^|LDj5U9dsHd|S<~25g9;4s_8b=%iw038vTF2_Pg&M3*^rKXBD6^#uW_7z#oFs)p-?QKi}RUz+Z)7MJ&d>G zG2hlU^P72ey}f Date: Fri, 1 Mar 2024 15:20:09 +1100 Subject: [PATCH 5/5] parse start_ and end_date even for fx freq if there is a time coordinate --- src/access_nri_intake/source/utils.py | 12 ++++++++++-- tests/test_source_utils.py | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/access_nri_intake/source/utils.py b/src/access_nri_intake/source/utils.py index 034e0a0..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]: diff --git a/tests/test_source_utils.py b/tests/test_source_utils.py index ab5f32f..30347ba 100644 --- a/tests/test_source_utils.py +++ b/tests/test_source_utils.py @@ -544,8 +544,8 @@ def test_parse_access_filename(filename, expected): "GMOM_JRA_WD_ww3_hi_XXXX_XX_XX_XXXXX", "1900-01-02-00000", "fx", # WW3 provides no time bounds - "none", - "none", + "1900-01-02, 00:00:00", + "1900-01-02, 00:00:00", ["EF", "mapsta"], ["1D spectral density", "map status"], ["", ""],