From cafd4c28378adc8ad30622f55e12236fdb1b52d5 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Wed, 18 Mar 2026 09:00:42 -0500 Subject: [PATCH 01/34] format/fix docstrings --- tests/test_utils.py | 81 ++++++++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index d1e4c9fa..89cb4df6 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,12 +1,14 @@ """Utilities for ngen-forcing tests.""" -from dataclasses import dataclass import json import logging import os import typing +from dataclasses import dataclass +import numpy as np import pytest +import shapely from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.bmi_model import ( NWMv3_Forcing_Engine_BMI_model, @@ -24,16 +26,24 @@ from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.general_utils import ( JSON_NOT_SERIALIZABLE_SENTINEL, ExpectVsActualError, - serialize_to_json, assert_equal_with_tol, + serialize_to_json, ) +try: + import esmpy as ESMF +except ImportError: + import ESMF + OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" def assert_no_not_serializable_sentinel(json_str: str) -> None: - """Inspect the provided string and raise an error if it contains - the sentinel indicating that it contains objects that could not be serialized to JSON.""" + """Assert no not serializable sentinel. + + Inspect the provided string and raise an error if it contains + the sentinel indicating that it contains objects that could not be serialized to JSON. + """ if not isinstance(json_str, str): raise TypeError(f"Expected type str for json_str, but got {type(json_str)}") if JSON_NOT_SERIALIZABLE_SENTINEL in json_str: @@ -44,19 +54,23 @@ def assert_no_not_serializable_sentinel(json_str: str) -> None: @dataclass class ClassAttrFetcher: - """Class attribute fetcher, for helping to collect data + """Fetach class Attributes. + + Class attribute fetcher, for helping to collect data from various in-memory objects in a parameterized way when building test results json files. The string dunder of this class is used to build a test result data key. - Parameters: + Parameters + ---------- fixture_attr_name: The name of the high-level fixture attribute that contains the desired child attribute, e.g. "wrf_hydro_geo_meta" child_attr_name: The name of the child attribute to be collected, e.g. "element_ids". + """ fixture_attr_name: str @@ -64,20 +78,26 @@ class ClassAttrFetcher: @property def results_key_name(self) -> str: + """Get the key name to be used in test results data for this attribute.""" return f"{self.fixture_attr_name}__{self.child_attr_name}" def __str__(self) -> str: + """Return string representation of the ClassAttrFetcher.""" return self.results_key_name def get( self, fixture_instance: typing.Any, serialize_and_deserialize: bool = False ) -> typing.Any: - """From the fixture, fetch the parent class instance, + """Get attribute value. + + From the fixture, fetch the parent class instance, and the value of the child attribute, and return that value. - Parameters + Args: + ---- fixture_instance: the fixture instance which contains the attributes to fetch from serialize_and_deserialize: if true, the returned attribute will be serialized to JSON and then deserialized before returned. + """ parent = getattr(fixture_instance, self.fixture_attr_name) child = getattr(parent, self.child_attr_name) @@ -88,10 +108,12 @@ def get( class BMIForcingFixture: """Minimal class of classes for running BMI forcing. + For example usage, see: tests/esmf_regrid/test_esmf_regrid.test_regrid. """ def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model): + """Initialize BMIForcingFixture.""" self.bmi_model: NWMv3_Forcing_Engine_BMI_model = bmi_model self.mpi_config: MpiConfig = bmi_model._mpi_meta self.config_options: ConfigOptions = bmi_model._job_meta @@ -110,17 +132,21 @@ def __init__( keys_to_check: tuple[str], ): """Writers of regrid tests must call the methods in this order. This is enforced by state attributes. + self.pre_regrid() self.run_regrid() self.check_regrid_results() self.post_regrid() - Parameters: + Args: + ---- + bmi_model: the BMI model to be used in the test fixture regrid_func: The regrid function that is being tested. force_key: Should agree with the regrid function being tested, e.g. see ginputfunc.forcing_map extra_attrs: These are extra attributes to be added to the test results JSON, to supplement the primary InputForcings attributes. regrid_arrays_to_trim_extra_elements: These are output arrays which can contain extra unused elements which need to be removed during an equality check. keys_to_check: These are keys to include in the "expected" test results json, and are checked for equality versus "actual" results from regrid operation. + """ super().__init__(bmi_model=bmi_model) @@ -136,9 +162,11 @@ def __init__( self._state = None # Test fixture state used to help ensure things happen in the right order def cull_force_keys_not_used_this_test(self) -> None: - """Remove force keys that are not used during this test. For example, - Short Range contains 2 total force keys, one for HRRR and one for RAP, - but we only want to test one at a time, so remove the other one.""" + """Remove force keys that are not used during this test. + + For example, Short Range contains 2 total force keys, one for HRRR and one for RAP, + but we only want to test one at a time, so remove the other one. + """ tmp = {k: v for k, v in self.input_forcing_mod.items() if k == self.force_key} if len(tmp) != 1: raise ValueError( @@ -155,7 +183,7 @@ def cull_force_keys_not_used_this_test(self) -> None: @property def serialized_file_suffix(self) -> str: - """Suffix for the file name for expected test results""" + """Suffix for the file name for expected test results.""" gpkg_basename = os.path.splitext( os.path.basename(self.config_options.geopackage) )[0] @@ -185,7 +213,7 @@ def regrid_results_file_name_actual(self) -> str: return file_path def pre_regrid(self) -> None: - """Run various timing setup methods and preprocessing steps needed *before* each regrid call""" + """Run various timing setup methods and preprocessing steps needed *before* each regrid call.""" if self._state not in (None, "post_ran"): raise ValueError( f"In pre_regrid, expected state to be either None or 'post_ran' but got {repr(self._state)}. The test is set up incorrectly." @@ -264,12 +292,13 @@ def set_input_forcings_skip_flags(self) -> None: def run_regrid(self, arg1: typing.Any) -> None: """Run the regrid function. - Parameters: - arg1 is the first argument to the regrid function, which can vary. + Args: + ---- + arg1: The first argument to the regrid function, which can vary. For example is may be `input_forcings`, or `supplemental_precip`, or potentially others. Subsequent arguments to the regrid function should be standard and do not need to be provided by the test caller. - """ + """ if self._state != "pre_ran": raise ValueError( f"In run_regrid, expected state to 'pre_ran' but got {repr(self._state)}. The test is set up incorrectly." @@ -303,6 +332,7 @@ def remove_extra_data_from_regrid_results( self, input_forcings: InputForcings ) -> dict: """Validate some high-level aspects of the InputForcings object, such as length and sequence of some arrays. + Then build a dictionary equivalent of it, and trim some of the arrays to the needed size for tests, and return that dictionary. Resulting output numerical arrays of regridding process may contain extra elements that are @@ -317,11 +347,14 @@ def remove_extra_data_from_regrid_results( We assert that this is the case by confirming that index 8 does not exist in `input_map_output`. Then we remove that element from the right end of `regridded_forcings1` and `regridded_forcings2`. - Parameters: - input_forcings is the InputForcings object immediately after a ESMF regridding has occurred. + Args: + ---- + input_forcings: The InputForcings object immediately after a ESMF regridding has occurred. Returns: + ------- A dictionary representation of input_forcings, but with some arrays trimmed and some keys dropped. + """ ### This is returned after being modified. input_forcings_deserial = json.loads(serialize_to_json(input_forcings)) @@ -412,12 +445,14 @@ def remove_extra_data_from_regrid_results( def check_regrid_results(self, input_forcings: InputForcings) -> None: """Check the regrid results against previously serialized expected results data, which should be in the repository. + Run this with a certain OS var to set up fresh test results expected data files. - Parameters: - input_forcings is the InputForcings object immediately after a ESMF regridding has occurred. - """ + Args: + ---- + input_forcings: The InputForcings object immediately after a ESMF regridding has occurred. + """ if self._state != "regrid_ran": raise ValueError( f"In check_regrid_results, expected state to 'regrid_ran' but got {repr(self._state)}. The test is set up incorrectly." @@ -497,7 +532,7 @@ def check_regrid_results(self, input_forcings: InputForcings) -> None: ) from e def post_regrid(self) -> None: - """Run various timing setup methods and postprocessing steps needed *after* each regrid call""" + """Run various timing setup methods and postprocessing steps needed *after* each regrid call.""" if self._state != "regrid_ran": raise ValueError( f"In post_regrid, expected state to 'regrid_ran' but got {repr(self._state)}. The test is set up incorrectly." From dec39567829727bf9efa231edbdefc3d55be4fbd Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Wed, 18 Mar 2026 09:31:36 -0500 Subject: [PATCH 02/34] format docstrings in conftest --- tests/conftest.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 2fdec931..a1ff722d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,21 +1,23 @@ """Conventional pytest file conftest.py. Automatically discovered and implicitly imported by pytest.""" import pytest +from test_utils import BMIForcingFixture, BMIForcingFixture_Regrid from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.bmi_model import ( NWMv3_Forcing_Engine_BMI_model, ) -from test_utils import BMIForcingFixture, BMIForcingFixture_Regrid - @pytest.fixture def bmi_forcing_fixture(request) -> BMIForcingFixture: - """Constructor for minimal class of classes for running BMI forcing. + """Construct minimal class of classes for running BMI forcing. + + Constructor for minimal class of classes for running BMI forcing. For example usage, see: tests/esmf_regrid/test_esmf_regrid.test_regrid. - Parameters: - request is a built-in convention for pytest.fixture. It may be passed from @pytest.mark.parametrize usage elsewhere. + Args: + request: A built-in convention for pytest.fixture. It may be passed from @pytest.mark.parametrize usage elsewhere. + """ (config_file,) = request.param bmi_model = NWMv3_Forcing_Engine_BMI_model() @@ -32,11 +34,14 @@ def bmi_forcing_fixture(request) -> BMIForcingFixture: def bmi_forcing_fixture_regrid( request, ) -> BMIForcingFixture_Regrid: - """Constructor for minimal class of classes for running forcing ESMF regrid functions. + """Construct minimal class of callas for running forcing ESMF regrid functions. + + Constructor for minimal class of classes for running forcing ESMF regrid functions. For example usage, see: tests/esmf_regrid/test_esmf_regrid.test_regrid. - Parameters: - request is a built-in convention for pytest.fixture. It may be passed from @pytest.mark.parametrize usage elsewhere. + Args: + request: A built-in convention for pytest.fixture. It may be passed from @pytest.mark.parametrize usage elsewhere. + """ ( regrid_func, From 4b76797c02add502eff1c5607ecf8be855cdb938 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Thu, 19 Mar 2026 13:24:39 -0500 Subject: [PATCH 03/34] add tests for geomod and inputforcing --- tests/conftest.py | 71 ++- tests/geomod/test_geomod.py | 72 +++ tests/input_forcing/test_input_forcing.py | 72 +++ ...t_expected_geomod_after_update_step_1.json | 80 +++ ...t_expected_geomod_after_update_step_2.json | 80 +++ ...t_expected_geomod_after_update_step_3.json | 80 +++ .../test_expected_geomod_finalize.json | 80 +++ .../test_expected_geomod_init.json | 80 +++ ...ted_input_forcing_after_update_step_1.json | 521 ++++++++++++++++++ ...ted_input_forcing_after_update_step_2.json | 521 ++++++++++++++++++ ...ted_input_forcing_after_update_step_3.json | 521 ++++++++++++++++++ .../test_expected_input_forcing_finalize.json | 521 ++++++++++++++++++ .../test_expected_input_forcing_init.json | 96 ++++ tests/test_utils.py | 194 +++++++ 14 files changed, 2988 insertions(+), 1 deletion(-) create mode 100644 tests/geomod/test_geomod.py create mode 100644 tests/input_forcing/test_input_forcing.py create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_finalize.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_init.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_finalize.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_init.json diff --git a/tests/conftest.py b/tests/conftest.py index a1ff722d..e3de97ac 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,12 @@ """Conventional pytest file conftest.py. Automatically discovered and implicitly imported by pytest.""" import pytest -from test_utils import BMIForcingFixture, BMIForcingFixture_Regrid +from test_utils import ( + BMIForcingFixture, + BMIForcingFixture_GeoMod, + BMIForcingFixture_InputForcing, + BMIForcingFixture_Regrid, +) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.bmi_model import ( NWMv3_Forcing_Engine_BMI_model, @@ -67,3 +72,67 @@ def bmi_forcing_fixture_regrid( regrid_arrays_to_trim_extra_elements=regrid_arrays_to_trim_extra_elements, keys_to_check=keys_to_check, ) + + +@pytest.fixture +def bmi_forcing_fixture_geomod( + request, +) -> BMIForcingFixture_GeoMod: + """Construct minimal class of classes for running forcing GeoMod. + + Constructor for minimal class of classes for running forcing GeoMod. + + For example usage, see: tests/geomod/test_geomod.test_geomod. + + Args: + request: A built-in convention for pytest.fixture. It may be passed from @pytest.mark.parametrize usage elsewhere. + + """ + ( + config_file, + keys_to_check, + ) = request.param + + bmi_model = NWMv3_Forcing_Engine_BMI_model() + bmi_model.initialize_with_params( + config_file=config_file, + b_date=None, + geogrid=None, + output_path=None, + ) + return BMIForcingFixture_GeoMod( + bmi_model=bmi_model, + keys_to_check=keys_to_check, + ) + + +@pytest.fixture +def bmi_forcing_fixture_input_forcing( + request, +) -> BMIForcingFixture_InputForcing: + """Construct minimal class of callas for running forcing input_forcing. + + Constructor for minimal class of classes for running forcing input_forcing. + + For example usage, see: tests/forcing_input/test_forcing_input.test_forcing_input. + + Args: + request: A built-in convention for pytest.fixture. It may be passed from @pytest.mark.parametrize usage elsewhere. + + """ + ( + config_file, + keys_to_check, + ) = request.param + + bmi_model = NWMv3_Forcing_Engine_BMI_model() + bmi_model.initialize_with_params( + config_file=config_file, + b_date=None, + geogrid=None, + output_path=None, + ) + return BMIForcingFixture_InputForcing( + bmi_model=bmi_model, + keys_to_check=keys_to_check, + ) diff --git a/tests/geomod/test_geomod.py b/tests/geomod/test_geomod.py new file mode 100644 index 00000000..3667a493 --- /dev/null +++ b/tests/geomod/test_geomod.py @@ -0,0 +1,72 @@ +"""pytest tests for GeoMod. + +Setup requirements: + 1. Create the forcing config.yml files using RTE. + 2. Enter the RTE devcontainer. + +Usage: + The initial test data was generated using RTE to create a calibration realization + for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, + using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. + + Run like this for a typical test run (checking against existing test output data) + Single processor: ( cd src/ngen-forcing && pytest ) + Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) + + Run like this to create new test output data (created expected outputs for subsequent tests): + Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest ) + Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest ) +""" + +import importlib.util +import os + +import pytest + +### Load import tests.test_utils as test_utils, referring explicitly to its path. +### This explicit load is necessary since March 2026 versions of ngen which introduced /ngen-app/ngen/extern/topoflow-glacier/tests +spec = importlib.util.spec_from_file_location( + "tests.test_utils", os.path.abspath("tests/test_utils.py") +) +test_utils = importlib.util.module_from_spec(spec) +spec.loader.exec_module(test_utils) + + +### This disables a LOG call which was causing a crash at ioMod.py: LOG.debug(f"Wgrib2 command: {Wgrib2Cmd}", True) +os.environ["MFE_SILENT"] = "true" + + +RETRO_FORCING_CONFIG_FILE__AORC_CONUS = ( + "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Input/forcing_config/aorc_config.yml" +) +FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" + +COMPOSITE_KEYS_TO_CHECK = () + + +@pytest.mark.parametrize( + "bmi_forcing_fixture_geomod", + [(RETRO_FORCING_CONFIG_FILE__AORC_CONUS, COMPOSITE_KEYS_TO_CHECK)], + indirect=True, +) +def test_geomod( + bmi_forcing_fixture_geomod: test_utils.BMIForcingFixture_GeoMod, # pyright: ignore +) -> None: + """Pytest function for testing GeoMod functionality.""" + ### Total number of timesteps needs to be at least 2, since the 1st one behaves differently than the others, e.g. see `if config_options.current_output_step == 1` throughout the code. + total_timesteps = 3 + + fixt = bmi_forcing_fixture_geomod + if len(fixt.input_forcing_mod) != 1: + raise ValueError( + f"Expected 1 key for input_forcing_mod, got {len(fixt.input_forcing_mod)}: {list(fixt.input_forcing_mod.keys())}" + ) + + fixt.after_intitialization_check() + for i in range(total_timesteps): + fixt.bmi_model.update() + fixt.after_bmi_model_update( + current_output_step=i + 1, + ) + fixt.bmi_model.finalize() + fixt.after_finalize() diff --git a/tests/input_forcing/test_input_forcing.py b/tests/input_forcing/test_input_forcing.py new file mode 100644 index 00000000..efc8b5fb --- /dev/null +++ b/tests/input_forcing/test_input_forcing.py @@ -0,0 +1,72 @@ +"""pytest tests for InputForcings. + +Setup requirements: + 1. Create the forcing config.yml files using RTE. + 2. Enter the RTE devcontainer. + +Usage: + The initial test data was generated using RTE to create a calibration realization + for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, + using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. + + Run like this for a typical test run (checking against existing test output data) + Single processor: ( cd src/ngen-forcing && pytest ) + Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) + + Run like this to create new test output data (created expected outputs for subsequent tests): + Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest ) + Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest ) +""" + +import importlib.util +import os + +import pytest + +### Load import tests.test_utils as test_utils, referring explicitly to its path. +### This explicit load is necessary since March 2026 versions of ngen which introduced /ngen-app/ngen/extern/topoflow-glacier/tests +spec = importlib.util.spec_from_file_location( + "tests.test_utils", os.path.abspath("tests/test_utils.py") +) +test_utils = importlib.util.module_from_spec(spec) +spec.loader.exec_module(test_utils) + + +### This disables a LOG call which was causing a crash at ioMod.py: LOG.debug(f"Wgrib2 command: {Wgrib2Cmd}", True) +os.environ["MFE_SILENT"] = "true" + + +RETRO_FORCING_CONFIG_FILE__AORC_CONUS = ( + "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Input/forcing_config/aorc_config.yml" +) +FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" + +COMPOSITE_KEYS_TO_CHECK = () + + +@pytest.mark.parametrize( + "bmi_forcing_fixture_input_forcing", + [(RETRO_FORCING_CONFIG_FILE__AORC_CONUS, COMPOSITE_KEYS_TO_CHECK)], + indirect=True, +) +def test_input_forcing( + bmi_forcing_fixture_input_forcing: test_utils.BMIForcingFixture_InputForcing, # pyright: ignore +) -> None: + """Pytest function for testing InputForcing functionality.""" + ### Total number of timesteps needs to be at least 2, since the 1st one behaves differently than the others, e.g. see `if config_options.current_output_step == 1` throughout the code. + total_timesteps = 3 + + fixt = bmi_forcing_fixture_input_forcing + if len(fixt.input_forcing_mod) != 1: + raise ValueError( + f"Expected 1 key for input_forcing_mod, got {len(fixt.input_forcing_mod)}: {list(fixt.input_forcing_mod.keys())}" + ) + + fixt.after_intitialization_check() + for i in range(total_timesteps): + fixt.bmi_model.update() + fixt.after_bmi_model_update( + current_output_step=i + 1, + ) + fixt.bmi_model.finalize() + fixt.after_finalize() diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json new file mode 100644 index 00000000..58fe31cf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json @@ -0,0 +1,80 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": "hash_2312573261074997727", + "element_ids_global": "hash_2312573261074997727", + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": "hash_975758762163698829", + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": "hash_3903810840982700583", + "longitude_grid_elem": null, + "mesh_inds": "hash_-5572467575970536340", + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json new file mode 100644 index 00000000..58fe31cf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json @@ -0,0 +1,80 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": "hash_2312573261074997727", + "element_ids_global": "hash_2312573261074997727", + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": "hash_975758762163698829", + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": "hash_3903810840982700583", + "longitude_grid_elem": null, + "mesh_inds": "hash_-5572467575970536340", + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json new file mode 100644 index 00000000..58fe31cf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json @@ -0,0 +1,80 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": "hash_2312573261074997727", + "element_ids_global": "hash_2312573261074997727", + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": "hash_975758762163698829", + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": "hash_3903810840982700583", + "longitude_grid_elem": null, + "mesh_inds": "hash_-5572467575970536340", + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_finalize.json b/tests/test_data/expected_results/test_expected_geomod_finalize.json new file mode 100644 index 00000000..58fe31cf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_finalize.json @@ -0,0 +1,80 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": "hash_2312573261074997727", + "element_ids_global": "hash_2312573261074997727", + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": "hash_975758762163698829", + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": "hash_3903810840982700583", + "longitude_grid_elem": null, + "mesh_inds": "hash_-5572467575970536340", + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_init.json b/tests/test_data/expected_results/test_expected_geomod_init.json new file mode 100644 index 00000000..58fe31cf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_init.json @@ -0,0 +1,80 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": "hash_2312573261074997727", + "element_ids_global": "hash_2312573261074997727", + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": "hash_975758762163698829", + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": "hash_3903810840982700583", + "longitude_grid_elem": null, + "mesh_inds": "hash_-5572467575970536340", + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json new file mode 100644 index 00000000..d792a0ab --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json @@ -0,0 +1,521 @@ +{ + "12": { + "_cycle_freq": null, + "_file_ext": ".grib2", + "_grib_vars": "hash_3736094543897741916", + "_keyValue": 12, + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": "hash_5016244700800676350", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", + "file_type": "GRIB2", + "final_forcings": null, + "final_forcings_elem": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "height": "hash_-6283689849391707346", + "height_elem": null, + "inDir": "s3://null", + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": { + "_Print": null, + "_dst_file": null, + "_dst_file_type": null, + "_dst_frac_field": null, + "_dst_mask_values": null, + "_dstfield": { + "_data": "hash_5016244700800676350", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "_extrap_dist_exponent": null, + "_extrap_method": 0, + "_extrap_num_src_pnts": null, + "_factor_index_list": null, + "_factor_list": null, + "_finalized": false, + "_ignore_degenerate": null, + "_meta": {}, + "_norm_type": null, + "_num_factors": null, + "_pole_method": null, + "_ptr_fil": null, + "_ptr_fl": null, + "_regrid_method": 0, + "_regrid_pole_npoints": null, + "_routehandle": {}, + "_src_file": null, + "_src_file_type": null, + "_src_frac_field": null, + "_src_mask_values": [ + 0, + -9999 + ], + "_srcfield": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "_unmapped_action": 1 + }, + "regridObj_elem": null, + "regridOpt": 1, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": "hash_-7292364244999661789", + "regridded_mask_AORC": "hash_-7413896075511359965", + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null + } +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json new file mode 100644 index 00000000..9f5a9c20 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json @@ -0,0 +1,521 @@ +{ + "12": { + "_cycle_freq": null, + "_file_ext": ".grib2", + "_grib_vars": "hash_3736094543897741916", + "_keyValue": 12, + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": "hash_5540138208808446357", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", + "file_type": "GRIB2", + "final_forcings": null, + "final_forcings_elem": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "height": "hash_-6283689849391707346", + "height_elem": null, + "inDir": "s3://null", + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": { + "_Print": null, + "_dst_file": null, + "_dst_file_type": null, + "_dst_frac_field": null, + "_dst_mask_values": null, + "_dstfield": { + "_data": "hash_5540138208808446357", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "_extrap_dist_exponent": null, + "_extrap_method": 0, + "_extrap_num_src_pnts": null, + "_factor_index_list": null, + "_factor_list": null, + "_finalized": false, + "_ignore_degenerate": null, + "_meta": {}, + "_norm_type": null, + "_num_factors": null, + "_pole_method": null, + "_ptr_fil": null, + "_ptr_fl": null, + "_regrid_method": 0, + "_regrid_pole_npoints": null, + "_routehandle": {}, + "_src_file": null, + "_src_file_type": null, + "_src_frac_field": null, + "_src_mask_values": [ + 0, + -9999 + ], + "_srcfield": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "_unmapped_action": 1 + }, + "regridObj_elem": null, + "regridOpt": 1, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": "hash_-7292364244999661789", + "regridded_mask_AORC": "hash_-7413896075511359965", + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null + } +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json new file mode 100644 index 00000000..a95cfde6 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json @@ -0,0 +1,521 @@ +{ + "12": { + "_cycle_freq": null, + "_file_ext": ".grib2", + "_grib_vars": "hash_3736094543897741916", + "_keyValue": 12, + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": "hash_-2070609901991932425", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": null, + "final_forcings_elem": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "height": "hash_-6283689849391707346", + "height_elem": null, + "inDir": "s3://null", + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": { + "_Print": null, + "_dst_file": null, + "_dst_file_type": null, + "_dst_frac_field": null, + "_dst_mask_values": null, + "_dstfield": { + "_data": "hash_-2070609901991932425", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "_extrap_dist_exponent": null, + "_extrap_method": 0, + "_extrap_num_src_pnts": null, + "_factor_index_list": null, + "_factor_list": null, + "_finalized": false, + "_ignore_degenerate": null, + "_meta": {}, + "_norm_type": null, + "_num_factors": null, + "_pole_method": null, + "_ptr_fil": null, + "_ptr_fl": null, + "_regrid_method": 0, + "_regrid_pole_npoints": null, + "_routehandle": {}, + "_src_file": null, + "_src_file_type": null, + "_src_frac_field": null, + "_src_mask_values": [ + 0, + -9999 + ], + "_srcfield": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "_unmapped_action": 1 + }, + "regridObj_elem": null, + "regridOpt": 1, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": "hash_-7292364244999661789", + "regridded_mask_AORC": "hash_-7413896075511359965", + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null + } +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize.json new file mode 100644 index 00000000..a95cfde6 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize.json @@ -0,0 +1,521 @@ +{ + "12": { + "_cycle_freq": null, + "_file_ext": ".grib2", + "_grib_vars": "hash_3736094543897741916", + "_keyValue": 12, + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": "hash_-2070609901991932425", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": null, + "final_forcings_elem": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "height": "hash_-6283689849391707346", + "height_elem": null, + "inDir": "s3://null", + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": { + "_Print": null, + "_dst_file": null, + "_dst_file_type": null, + "_dst_frac_field": null, + "_dst_mask_values": null, + "_dstfield": { + "_data": "hash_-2070609901991932425", + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + "hash_3903810840982700583", + "hash_975758762163698829" + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "_extrap_dist_exponent": null, + "_extrap_method": 0, + "_extrap_num_src_pnts": null, + "_factor_index_list": null, + "_factor_list": null, + "_finalized": false, + "_ignore_degenerate": null, + "_meta": {}, + "_norm_type": null, + "_num_factors": null, + "_pole_method": null, + "_ptr_fil": null, + "_ptr_fl": null, + "_regrid_method": 0, + "_regrid_pole_npoints": null, + "_routehandle": {}, + "_src_file": null, + "_src_file_type": null, + "_src_frac_field": null, + "_src_mask_values": [ + 0, + -9999 + ], + "_srcfield": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "_unmapped_action": 1 + }, + "regridObj_elem": null, + "regridOpt": 1, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": "hash_-7292364244999661789", + "regridded_mask_AORC": "hash_-7413896075511359965", + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null + } +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_init.json b/tests/test_data/expected_results/test_expected_input_forcing_init.json new file mode 100644 index 00000000..bf83f6ba --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_init.json @@ -0,0 +1,96 @@ +{ + "12": { + "_cycle_freq": null, + "_file_ext": null, + "_grib_vars": null, + "_keyValue": 12, + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "enforce": 0, + "esmf_field_in": null, + "esmf_field_in_elem": null, + "esmf_field_out": null, + "esmf_field_out_elem": null, + "esmf_grid_in": null, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_in1": null, + "file_in2": null, + "file_type": "GRIB2", + "final_forcings": null, + "final_forcings_elem": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "height": "hash_-6283689849391707346", + "height_elem": null, + "inDir": "s3://null", + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": null, + "nx_local": null, + "nx_local_corner": null, + "ny_global": null, + "ny_local": null, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": null, + "regridObj_elem": null, + "regridOpt": 1, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": "hash_-6966909609089680735", + "regridded_mask_AORC": "hash_-7413896075511359965", + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": null, + "x_lower_bound_corner": null, + "x_upper_bound": null, + "x_upper_bound_corner": null, + "y_lower_bound": null, + "y_lower_bound_corner": null, + "y_upper_bound": null, + "y_upper_bound_corner": null + } +} \ No newline at end of file diff --git a/tests/test_utils.py b/tests/test_utils.py index 89cb4df6..f321b61c 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -38,6 +38,35 @@ OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" +def convert_long_lists(data, max_length=5): + """Recursively iterate over a nested data dictionary and convert all lists longer than max_length to a hash. + + Args: + data: The data structure to process (dict, list, or other) + max_length: Maximum list length before conversion (default: 10) + + Returns: + Modified copy of the data structure + + """ + if isinstance(data, dict): + return { + key: convert_long_lists(value, max_length) for key, value in data.items() + } + elif isinstance(data, list): + if len(data) > max_length: + if isinstance(data[0],list): + for i,val in enumerate(data): + if len(val)>max_length: + data[i]=f"hash_{hash(tuple(val))}" + else: + return f"hash_{hash(tuple(data))}" + else: + return [convert_long_lists(item, max_length) for item in data] + else: + return data + + def assert_no_not_serializable_sentinel(json_str: str) -> None: """Assert no not serializable sentinel. @@ -121,6 +150,171 @@ def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model): self.input_forcing_mod: dict = self.bmi_model._input_forcing_mod +class BMIForcingFixture_Class(BMIForcingFixture): + """Test fixture for GeoMod tests. Writers of geomod tests should use this class as the basis for their test fixtures, and call the methods in the order specified in the docstring of __init__(). This is enforced by state attributes.""" + + def __init__( + self, + bmi_model: NWMv3_Forcing_Engine_BMI_model, + keys_to_check: tuple[str] = (), + ): + """Initialize BMIForcingFixture_GeoMod. Writers of geomod tests must call the methods in this order. This is enforced by state attributes. + + Args: + ---- + bmi_model: The BMI model to be used in the test fixture + keys_to_check: The keys to check + + """ + super().__init__(bmi_model=bmi_model) + + self.keys_to_check = keys_to_check + + self.expected_sub_dir = "test_data/expected_results" + self.actual_sub_dir = "test_data/actual_results" + self.test_dir = os.path.dirname(os.path.abspath(__file__)) + + def deserial_actual( + self, suffix: str, current_output_step: str = "", write_to_file: bool = True + ) -> dict: + """Get the actual metadata results as a deserialized dictionary.""" + deserial_actual = json.loads(serialize_to_json(self.test_class)) + if self.keys_to_check: + deserial_actual = { + k: v for k, v in deserial_actual.item() if k in self.keys_to_check + } + deserial_actual = convert_long_lists(deserial_actual) + if write_to_file: + self.write_json( + deserial_actual, + self.actual_results_file_path(suffix, current_output_step), + ) + return deserial_actual + + def write_json(self, dictionary_to_write: dict, json_path: str): + """Write the deserialized results to a JSON file.""" + json_str = serialize_to_json(dictionary_to_write, sort_keys=True) + with open(json_path, "w") as f: + f.write(json_str) + + def deserial_expected(self, suffix: str, current_output_step: str = "") -> dict: + """Get the expected metadata results as a deserialized dictioanry.""" + ### NOTE this should be rarely used, only when updating the test expected outputs dataset + file_path = self.expected_results_file_path(suffix, current_output_step) + + if os.environ.get(OS_VAR__CREATE_TEST_EXPECT_DATA, "").lower() == "true": + # Dump current results to disk, to save it as "expected" results for later test runs. + # Should only be used when committing new test results to the repository. + logging.warning(f"Writing test data: {file_path}") + deserial_expected = self.deserial_actual( + suffix, current_output_step, write_to_file=False + ) + with open(file_path, "w") as f: + f.write(serialize_to_json(deserial_expected, sort_keys=True)) + return deserial_expected + else: + try: + with open(file_path) as f: + return json.load(f) + except FileNotFoundError as e: + raise FileNotFoundError( + f"Could not find {file_path}. Try running the test using OS var {OS_VAR__CREATE_TEST_EXPECT_DATA}=true first to set up the test results expected data." + ) from e + + def after_intitialization_check(self): + """Run checks after initialization but before any run has been called. + + This is useful for checking the state of the model immediately after initialization, before any updates have occurred. + """ + self.compare(self.deserial_actual("init"), self.deserial_expected("init")) + + def compare(self, actual: dict, expected: dict): + """Compare actual vs expected results.""" + try: + assert_equal_with_tol(expect=expected, actual=actual) + except ExpectVsActualError as e: + raise RuntimeError( + f"Unexpected results compared to {self.regrid_results_file_name_expect}: {e}" + ) from e + + def after_bmi_model_update(self, current_output_step: int): + """Run checks after bmi_model.update() has been called. + + Args: + ---- + current_output_step: The current output step, which can be used to conditionally run different checks on the first step vs subsequent steps, since the first step behaves differently in some ways. + + """ + self.compare( + self.deserial_actual("after_update", f"_step_{current_output_step}"), + self.deserial_expected("after_update", f"_step_{current_output_step}"), + ) + + def after_finalize(self): + """Run checks after bmi_model.finalize() has been called.""" + self.compare( + self.deserial_actual("finalize"), self.deserial_expected("finalize") + ) + + def actual_results_file_path( + self, suffix: str, current_output_step: str = "" + ) -> str: + """Get the file path for the actual metadata results JSON file.""" + return f"{self.test_dir}/{self.actual_sub_dir}/test_actual_{self.test_file_name_prefix}_{suffix}{current_output_step}.json" + + def expected_results_file_path( + self, suffix: str, current_output_step: str = "" + ) -> str: + """Get the file path for the expected metadata results JSON file.""" + return f"{self.test_dir}/{self.expected_sub_dir}/test_expected_{self.test_file_name_prefix}_{suffix}{current_output_step}.json" + + +class BMIForcingFixture_GeoMod(BMIForcingFixture_Class): + """Test fixture for GeoMod tests. Writers of geomod tests should use this class as the basis for their test fixtures, and call the methods in the order specified in the docstring of __init__(). This is enforced by state attributes.""" + + def __init__( + self, + bmi_model: NWMv3_Forcing_Engine_BMI_model, + keys_to_check: tuple = (), + ): + """Initialize BMIForcingFixture_GeoMod. Writers of geomod tests must call the methods in this order. This is enforced by state attributes. + + Args: + ---- + bmi_model: the BMI model to be used in the test fixture + keys_to_chek: The keys to check + + """ + super().__init__( + bmi_model=bmi_model, + keys_to_check=keys_to_check, + ) + self.test_class = self.wrf_hydro_geo_meta + + self.test_file_name_prefix = "geomod" + + +class BMIForcingFixture_InputForcing(BMIForcingFixture_Class): + """Test fixture for InputForcing tests. Writers of input forcing tests should use this class as the basis for their test fixtures, and call the methods in the order specified in the docstring of __init__(). This is enforced by state attributes.""" + + def __init__( + self, + bmi_model: NWMv3_Forcing_Engine_BMI_model, + keys_to_check: tuple = (), + ): + """Initialize BMIForcingFixture_InputForcing. Writers of input forcing tests must call the methods in this order. This is enforced by state attributes. + + Args: + ---- + bmi_model: the BMI model to be used in the test fixture + keys_to_chek: The keys to check + + """ + super().__init__(bmi_model=bmi_model, keys_to_check=keys_to_check) + self.test_class = self.input_forcing_mod + self.test_file_name_prefix = "input_forcing" + + class BMIForcingFixture_Regrid(BMIForcingFixture): def __init__( self, From 4e5ef0b72e28e3000c0db78c35af514666cd6819 Mon Sep 17 00:00:00 2001 From: Matt Deshotel Date: Fri, 20 Mar 2026 12:11:09 -0500 Subject: [PATCH 04/34] add arg to allow new attributes in actual results --- .../NextGen_Forcings_Engine/general_utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py index 953af214..84688900 100644 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py @@ -73,6 +73,7 @@ def assert_equal_with_tol( keys_to_check: tuple | None = None, absolute_tolerance: float = 1e-6, relative_tolerance: float = 1e-10, + new_keys_in_actual_ok: bool = False, ): """Assert that the key,value pairs in `expect` have matching key,value pairs in `actual`, with numerical tolerance. It is okay if actual has extra keys that are not present in expect. @@ -93,10 +94,11 @@ def assert_equal_with_tol( errors.append(KeyError(f"Missing keys from actual: {keys_missing_from_actual}")) keys_missing_from_expected = set(keys_to_check) - set(expect) - if keys_missing_from_expected: - errors.append( - KeyError(f"Missing keys from expected: {keys_missing_from_expected}") - ) + if not new_keys_in_actual_ok: + if keys_missing_from_expected: + errors.append( + KeyError(f"Missing keys from expected: {keys_missing_from_expected}") + ) for k in keys_to_check: ### Check key existence From 4f0e10266d8b9a666c0a329e8d6cc582360476df Mon Sep 17 00:00:00 2001 From: Matt Deshotel Date: Fri, 20 Mar 2026 12:13:08 -0500 Subject: [PATCH 05/34] add grid type arg to dynamically get the correct bmi model class --- tests/conftest.py | 14 ++++++++++---- tests/esmf_regrid/test_esmf_regrid.py | 4 ++++ tests/geomod/test_geomod.py | 3 ++- tests/input_forcing/test_input_forcing.py | 3 ++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index e3de97ac..b26d013d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,6 +9,7 @@ ) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.bmi_model import ( + BMIMODEL, NWMv3_Forcing_Engine_BMI_model, ) @@ -55,9 +56,10 @@ def bmi_forcing_fixture_regrid( extra_attrs, regrid_arrays_to_trim_extra_elements, keys_to_check, + grid_type, ) = request.param - bmi_model = NWMv3_Forcing_Engine_BMI_model() + bmi_model = BMIMODEL[grid_type]() bmi_model.initialize_with_params( config_file=config_file, b_date=None, @@ -91,9 +93,10 @@ def bmi_forcing_fixture_geomod( ( config_file, keys_to_check, + grid_type, ) = request.param - bmi_model = NWMv3_Forcing_Engine_BMI_model() + bmi_model = BMIMODEL[grid_type]() bmi_model.initialize_with_params( config_file=config_file, b_date=None, @@ -110,7 +113,7 @@ def bmi_forcing_fixture_geomod( def bmi_forcing_fixture_input_forcing( request, ) -> BMIForcingFixture_InputForcing: - """Construct minimal class of callas for running forcing input_forcing. + """Construct minimal class of class for running forcing input_forcing. Constructor for minimal class of classes for running forcing input_forcing. @@ -123,9 +126,11 @@ def bmi_forcing_fixture_input_forcing( ( config_file, keys_to_check, + grid_type, + force_key, ) = request.param - bmi_model = NWMv3_Forcing_Engine_BMI_model() + bmi_model = BMIMODEL[grid_type]() bmi_model.initialize_with_params( config_file=config_file, b_date=None, @@ -135,4 +140,5 @@ def bmi_forcing_fixture_input_forcing( return BMIForcingFixture_InputForcing( bmi_model=bmi_model, keys_to_check=keys_to_check, + force_key=force_key, ) diff --git a/tests/esmf_regrid/test_esmf_regrid.py b/tests/esmf_regrid/test_esmf_regrid.py index 18b77eab..010113a1 100644 --- a/tests/esmf_regrid/test_esmf_regrid.py +++ b/tests/esmf_regrid/test_esmf_regrid.py @@ -88,6 +88,7 @@ COMPOSITE_KEYS_TO_CHECK: tuple[str] = REGRID_KEYS_TO_CHECK + tuple( _.results_key_name for _ in EXTRA_ATTRS ) +GRID_TYPE = "hydrofabric" # ["gridded","hydrofabric","unstructured"] @pytest.mark.parametrize( @@ -100,6 +101,7 @@ EXTRA_ATTRS, REGRID_ARRAYS_TO_TRIM_EXTRA_ELEMENTS, COMPOSITE_KEYS_TO_CHECK, + GRID_TYPE, ), ( regrid_conus_hrrr, @@ -108,6 +110,7 @@ EXTRA_ATTRS, REGRID_ARRAYS_TO_TRIM_EXTRA_ELEMENTS, COMPOSITE_KEYS_TO_CHECK, + GRID_TYPE, ), ( regrid_conus_rap, @@ -116,6 +119,7 @@ EXTRA_ATTRS, REGRID_ARRAYS_TO_TRIM_EXTRA_ELEMENTS, COMPOSITE_KEYS_TO_CHECK, + GRID_TYPE, ), ], indirect=True, diff --git a/tests/geomod/test_geomod.py b/tests/geomod/test_geomod.py index 3667a493..ad780469 100644 --- a/tests/geomod/test_geomod.py +++ b/tests/geomod/test_geomod.py @@ -42,11 +42,12 @@ FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" COMPOSITE_KEYS_TO_CHECK = () +GRID_TYPE = "hydrofabric" # ["gridded","hydrofabric","unstructured"] @pytest.mark.parametrize( "bmi_forcing_fixture_geomod", - [(RETRO_FORCING_CONFIG_FILE__AORC_CONUS, COMPOSITE_KEYS_TO_CHECK)], + [(RETRO_FORCING_CONFIG_FILE__AORC_CONUS, COMPOSITE_KEYS_TO_CHECK, GRID_TYPE)], indirect=True, ) def test_geomod( diff --git a/tests/input_forcing/test_input_forcing.py b/tests/input_forcing/test_input_forcing.py index efc8b5fb..0ff773db 100644 --- a/tests/input_forcing/test_input_forcing.py +++ b/tests/input_forcing/test_input_forcing.py @@ -42,11 +42,12 @@ FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" COMPOSITE_KEYS_TO_CHECK = () +GRID_TYPE = "hydrofabric" # ["gridded","hydrofabric","unstructured"] @pytest.mark.parametrize( "bmi_forcing_fixture_input_forcing", - [(RETRO_FORCING_CONFIG_FILE__AORC_CONUS, COMPOSITE_KEYS_TO_CHECK)], + [(RETRO_FORCING_CONFIG_FILE__AORC_CONUS, COMPOSITE_KEYS_TO_CHECK, GRID_TYPE, 12)], indirect=True, ) def test_input_forcing( From 61a3ede0b518607eeb2ad0fb6db6f352c9f02f86 Mon Sep 17 00:00:00 2001 From: Matt Deshotel Date: Fri, 20 Mar 2026 12:15:06 -0500 Subject: [PATCH 06/34] add method to convert class attibutes and properties to a dictionary --- tests/test_utils.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index f321b61c..37cce302 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -178,11 +178,9 @@ def deserial_actual( self, suffix: str, current_output_step: str = "", write_to_file: bool = True ) -> dict: """Get the actual metadata results as a deserialized dictionary.""" - deserial_actual = json.loads(serialize_to_json(self.test_class)) - if self.keys_to_check: - deserial_actual = { - k: v for k, v in deserial_actual.item() if k in self.keys_to_check - } + deserial_actual = json.loads( + serialize_to_json(self.test_class_as_dict, sort_keys=True) + ) deserial_actual = convert_long_lists(deserial_actual) if write_to_file: self.write_json( @@ -231,12 +229,29 @@ def after_intitialization_check(self): def compare(self, actual: dict, expected: dict): """Compare actual vs expected results.""" try: - assert_equal_with_tol(expect=expected, actual=actual) + assert_equal_with_tol( + expect=expected, actual=actual, new_keys_in_actual_ok=True + ) except ExpectVsActualError as e: raise RuntimeError( - f"Unexpected results compared to {self.regrid_results_file_name_expect}: {e}" + f"Unexpected results compared to the expected results json: {e}" ) from e + @property + def test_class_as_dict(self): + """Get the attributes of the test class as a dictionary, where the keys are the attribute names and the values are the attribute values. + + This is useful for serializing the test class to JSON for comparison against expected results. + """ + data = {} + # parrent_class_dict=self.test_class.__class__.__base__.__dict__ + # child_class_dict=self.test_class.__class__.__dict__ + for key in dir(self.test_class): + val = getattr(self.test_class, key) + if not callable(val) and not key.startswith("__"): + data[key] = val + return data + def after_bmi_model_update(self, current_output_step: int): """Run checks after bmi_model.update() has been called. From 93308a1b3c8701e2278fe646912ba8519e0c9235 Mon Sep 17 00:00:00 2001 From: Matt Deshotel Date: Fri, 20 Mar 2026 12:15:33 -0500 Subject: [PATCH 07/34] rename wrf_hydro_geo_meta to geometa --- tests/test_utils.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 37cce302..443757d0 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -20,7 +20,7 @@ InputForcings, ) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.geoMod import ( - GeoMetaWrfHydro, + GeoMeta, ) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.parallel import MpiConfig from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.general_utils import ( @@ -55,10 +55,10 @@ def convert_long_lists(data, max_length=5): } elif isinstance(data, list): if len(data) > max_length: - if isinstance(data[0],list): - for i,val in enumerate(data): - if len(val)>max_length: - data[i]=f"hash_{hash(tuple(val))}" + if isinstance(data[0], list): + for i, val in enumerate(data): + if len(val) > max_length: + data[i] = f"hash_{hash(tuple(val))}" else: return f"hash_{hash(tuple(data))}" else: @@ -95,7 +95,7 @@ class ClassAttrFetcher: ---------- fixture_attr_name: The name of the high-level fixture attribute that contains - the desired child attribute, e.g. "wrf_hydro_geo_meta" + the desired child attribute, e.g. "geo_meta" child_attr_name: The name of the child attribute to be collected, e.g. "element_ids". @@ -146,7 +146,7 @@ def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model): self.bmi_model: NWMv3_Forcing_Engine_BMI_model = bmi_model self.mpi_config: MpiConfig = bmi_model._mpi_meta self.config_options: ConfigOptions = bmi_model._job_meta - self.wrf_hydro_geo_meta: GeoMetaWrfHydro = bmi_model._wrf_hydro_geo_meta + self.geo_meta: GeoMeta = bmi_model.geo_meta self.input_forcing_mod: dict = self.bmi_model._input_forcing_mod @@ -304,7 +304,7 @@ def __init__( bmi_model=bmi_model, keys_to_check=keys_to_check, ) - self.test_class = self.wrf_hydro_geo_meta + self.test_class = self.geo_meta self.test_file_name_prefix = "geomod" @@ -316,6 +316,7 @@ def __init__( self, bmi_model: NWMv3_Forcing_Engine_BMI_model, keys_to_check: tuple = (), + force_key: int = None, ): """Initialize BMIForcingFixture_InputForcing. Writers of input forcing tests must call the methods in this order. This is enforced by state attributes. @@ -326,7 +327,8 @@ def __init__( """ super().__init__(bmi_model=bmi_model, keys_to_check=keys_to_check) - self.test_class = self.input_forcing_mod + self.force_key = force_key + self.test_class = self.input_forcing_mod[self.force_key] self.test_file_name_prefix = "input_forcing" @@ -430,7 +432,7 @@ def pre_regrid(self) -> None: config_options = self.config_options mpi_config = self.mpi_config - wrf_hydro_geo_meta = self.wrf_hydro_geo_meta + geo_meta = self.geo_meta supp_pcp_mod = self.bmi_model._supp_pcp_mod output_obj = self.bmi_model._output_obj input_forcing_mod = self.bmi_model._input_forcing_mod @@ -471,7 +473,7 @@ def pre_regrid(self) -> None: ( future_time, config_options, - wrf_hydro_geo_meta, + geo_meta, input_forcing_mod, supp_pcp_mod, mpi_config, @@ -480,7 +482,7 @@ def pre_regrid(self) -> None: ) = model.loop_through_forcing_products( future_time, config_options, - wrf_hydro_geo_meta, + geo_meta, input_forcing_mod, supp_pcp_mod, mpi_config, @@ -518,9 +520,9 @@ def run_regrid(self, arg1: typing.Any) -> None: # out_file=f"tmp_regrid_inputs{self.serialized_file_suffix}.json", # sort_keys=True, # ) - # wrf_hydro_geo_meta_json_str = serialize_to_json( - # self.wrf_hydro_geo_meta, - # out_file=f"tmp_wrf_hydro_geo_meta{self.serialized_file_suffix}.json", + # geo_meta_json_str = serialize_to_json( + # self.geo_meta, + # out_file=f"tmp_geo_meta{self.serialized_file_suffix}.json", # sort_keys=True, # ) @@ -530,7 +532,7 @@ def run_regrid(self, arg1: typing.Any) -> None: self.regrid_func( arg1, config_options=self.config_options, - wrf_hydro_geo_meta=self.wrf_hydro_geo_meta, + geo_meta=self.geo_meta, mpi_config=self.mpi_config, ) logging.info(f"Done calling regrid function: {self.regrid_func.__name__}") From 0b81d4f2529540d2f1660626120c75ea4e69f050 Mon Sep 17 00:00:00 2001 From: Matt Deshotel Date: Tue, 24 Mar 2026 11:46:29 -0500 Subject: [PATCH 08/34] map old variable names to new names --- .../NextGen_Forcings_Engine/core/consts.py | 940 ++++++++++++++++++ tests/test_utils.py | 27 +- 2 files changed, 963 insertions(+), 4 deletions(-) create mode 100644 NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/consts.py diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/consts.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/consts.py new file mode 100644 index 00000000..b38bd561 --- /dev/null +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/consts.py @@ -0,0 +1,940 @@ +from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core import ( + regrid, + time_handling, +) +from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.timeInterpMod import ( + nearest_neighbor, + no_interpolation, + weighted_average, +) + +CONSTS = { + "geoMod": { + "GeoMeta": [ + "nodeCoords", + "centerCoords", + "inds", + "esmf_lat", + "esmf_lon", + ], + "UnstructuredGeoMeta": [ + "x_lower_bound", + "x_upper_bound", + "y_lower_bound", + "y_upper_bound", + "dx_meters", + "dy_meters", + "element_ids", + "element_ids_global", + "sina_grid", + "cosa_grid", + "esmf_lat", + "esmf_lon", + ], + "HydrofabricGeoMeta": [ + "nx_local_elem", + "ny_local_elem", + "x_lower_bound", + "x_upper_bound", + "y_lower_bound", + "y_upper_bound", + "nx_global_elem", + "ny_global_elem", + "dx_meters", + "dy_meters", + "mesh_inds_elem", + "height_elem", + "sina_grid", + "cosa_grid", + "slope_elem", + "slp_azi_elem", + "esmf_lat", + "esmf_lon", + "latitude_grid_elem", + "longitude_grid_elem", + ], + "GriddedGeoMeta": [ + "nx_local_elem", + "ny_local_elem", + "nx_global_elem", + "ny_global_elem", + "element_ids", + "element_ids_global", + "lat_bounds", + "lon_bounds", + "mesh_inds", + "mesh_inds_elem", + "height_elem", + "slope_elem", + "slp_azi_elem", + "latitude_grid_elem", + "longitude_grid_elem", + ], + }, + "bmi_model": { + "extension_map": { + "gridded": "GRIDDED", + "hydrofabric": "HYDROFABRIC", + "unstructured": "MESH", + }, + "_output_var_names": [ + "U2D_ELEMENT", + "V2D_ELEMENT", + "LWDOWN_ELEMENT", + "SWDOWN_ELEMENT", + "T2D_ELEMENT", + "Q2D_ELEMENT", + "PSFC_ELEMENT", + "RAINRATE_ELEMENT", + ], + "_output_var_names_unstructured": [ + "U2D_NODE", + "V2D_NODE", + "LWDOWN_NODE", + "SWDOWN_NODE", + "T2D_NODE", + "Q2D_NODE", + "PSFC_NODE", + "RAINRATE_NODE", + "LQFRAC_NODE", + ], + "_var_name_units_map": { + "U2D_ELEMENT": ["10-m U-component of wind", "m/s"], + "V2D_ELEMENT": ["10-m V-component of wind", "m/s"], + "T2D_ELEMENT": ["2-m Air Temperature", "K"], + "Q2D_ELEMENT": ["2-m Specific Humidity", "kg/kg"], + "LWDOWN_ELEMENT": [ + "Surface downward long-wave radiation flux", + "W/m^2", + ], + "SWDOWN_ELEMENT": [ + "Surface downward short-wave radiation flux", + "W/m^2", + ], + "PSFC_ELEMENT": ["Surface Pressure", "Pa"], + "RAINRATE_ELEMENT": ["Surface Precipitation Rate", "mm/s"], + }, + "_var_name_units_map_unstructured": { + "U2D_NODE": ["10-m U-component of wind", "m/s"], + "V2D_NODE": ["10-m V-component of wind", "m/s"], + "T2D_NODE": ["2-m Air Temperature", "K"], + "Q2D_NODE": ["2-m Specific Humidity", "kg/kg"], + "LWDOWN_NODE": [ + "Surface downward long-wave radiation flux", + "W/m^2", + ], + "SWDOWN_NODE": [ + "Surface downward short-wave radiation flux", + "W/m^2", + ], + "PSFC_NODE": ["Surface Pressure", "Pa"], + "RAINRATE_NODE": ["Surface Precipitation Rate", "mm/s"], + }, + }, + "forcingInputMod": { + "InputForcings": [ + "nx_global", + "ny_global", + "nx_local", + "ny_local", + "nx_local_corner", + "ny_local_corner", + "x_lower_bound", + "x_upper_bound", + "y_lower_bound", + "y_upper_bound", + "x_lower_bound_corner", + "x_upper_bound_corner", + "y_lower_bound_corner", + "y_upper_bound_corner", + "outFreq", + "lapseGrid", + "rqiClimoGrid", + "nwmPRISM_numGrid", + "nwmPRISM_denGrid", + "esmf_lats", + "esmf_lons", + "esmf_grid_in", + "esmf_grid_in_elem", + "regridObj", + "regridObj_elem", + "esmf_field_in", + "esmf_field_in_elem", + "esmf_field_out", + "esmf_field_out_elem", + # -------------------------------- + # Only used for CFSv2 bias correction + # as bias correction needs to take + # place prior to regridding. + "coarse_input_forcings1", + "coarse_input_forcings2", + # -------------------------------- + "regridded_forcings1", + "regridded_forcings2", + "globalPcpRate1", + "globalPcpRate2", + "regridded_forcings1_elem", + "regridded_forcings2_elem", + "globalPcpRate1_elem", + "globalPcpRate2_elem", + "ndv", + "file_in1", + "file_in2", + "fcst_hour1", + "fcst_hour2", + "fcst_date1", + "fcst_date2", + "height_elem", + "tmpFile", + "tmpFileHeight", + "regridded_precip1", + "regridded_precip2", + "regridded_precip1_elem", + "regridded_precip2_elem", + "_grib_vars", + "_cycle_freq", + ], + "InputForcingsGridded": [ + "t2dTmp_elem", + "psfcTmp_elem", + "final_forcings_elem", + "height_elem", + "regridded_mask_elem", + "regridded_mask_elem_AORC", + ], + "InputForcingsHydrofabric": [ + "final_forcings_elem", + "height_elem", + "regridded_mask_elem", + "regridded_mask_elem_AORC", + "t2dTmp_elem", + "psfcTmp_elem", + ], + "PRODUCT_NAME": { + 1: "NLDAS2_GRIB1", + 2: "NARR_GRIB1", + 3: "GFS_Production_GRIB2", + 4: "NAM_Conus_Nest_GRIB2", + 5: "HRRR_Conus_GRIB2", + 6: "RAP_Conus_GRIB2", + 7: "CFSv2_6Hr_Global_GRIB2", + 8: "WRF_ARW_Hawaii_GRIB2", + 9: "GFS_Production_025d_GRIB2", + 10: "Custom_NetCDF_Hourly", + 11: "Custom_NetCDF_Hourly", + 12: "AORC", + 13: "NAM_Nest_3km_Hawaii", + 14: "NAM_Nest_3km_PuertoRico", + 15: "NAM_Nest_3km_Alaska", + 16: "NAM_Nest_3km_Hawaii_Radiation-Only", + 17: "NAM_Nest_3km_PuertoRico_Radiation-Only", + 18: "WRF_ARW_PuertoRico_GRIB2", + 19: "HRRR_Alaska_GRIB2", + 20: "Alaska_AnA", + 21: "AORC_Alaska", + 22: "Alaska_ExtAnA", + 23: "ERA5", + 24: "NBM", + 25: "NDFD", + 26: "HRRR_15min", + 27: "NWM", + }, + "CYCLE_FREQ": { + 1: 60, + 2: 180, + 3: 360, + 4: 360, + 5: 60, + 6: 60, + 7: 360, + 8: 1440, + 9: 360, + 10: -9999, + 11: -9999, + 12: -9999, + 13: 360, + 14: 360, + 15: 360, + 16: 360, + 17: 360, + 18: 1440, + 19: 180, + 20: 180, + 21: -9999, + 22: 180, + 23: -9999, + 24: 60, + 25: 1440, + 26: 15, + 27: -9999, + }, + "GRIB_VARS": { + 1: ["TMP", "SPFH", "UGRD", "VGRD", "PRATE", "DSWRF", "DLWRF", "PRES"], + 2: None, + 3: [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "PRATE", + "DSWRF", + "DLWRF", + "PRES", + "CPOFP", + ], + 4: None, + 5: [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES", + "CPOFP", + ], + 6: [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES", + "FROZR", + ], + 7: ["TMP", "SPFH", "UGRD", "VGRD", "PRATE", "DSWRF", "DLWRF", "PRES"], + 8: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "PRES"], + 9: ["TMP", "SPFH", "UGRD", "VGRD", "PRATE", "DSWRF", "DLWRF", "PRES"], + 10: None, + 11: None, + 12: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 13: ["TMP", "SPFH", "UGRD", "VGRD", "PRATE", "DSWRF", "DLWRF", "PRES"], + 14: ["TMP", "SPFH", "UGRD", "VGRD", "PRATE", "DSWRF", "DLWRF", "PRES"], + 15: ["TMP", "SPFH", "UGRD", "VGRD", "PRATE", "DSWRF", "DLWRF", "PRES"], + 16: ["DSWRF", "DLWRF"], + 17: ["DSWRF", "DLWRF"], + 18: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "PRES"], + 19: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 20: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 21: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 22: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 23: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 24: ["TMP", "APCP"], + 25: ["TMP", "WDIR", "WSPD", "APCP"], + 26: ["TMP", "SPFH", "UGRD", "VGRD", "APCP", "DSWRF", "DLWRF", "PRES"], + 27: [ + "T2D", + "Q2D", + "U2D", + "V2D", + "RAINRATE", + "SWDOWN", + "LWDOWN", + "PSFC", + ], + }, + "GRIB_LEVELS": { + 1: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 2: None, + 3: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + "surface", + ], + 4: None, + 5: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + "surface", + ], + 6: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + "surface", + ], + 7: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 8: [ + "80 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + ], + 9: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 10: None, + 11: None, + 12: None, + 13: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 14: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 15: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 16: ["surface", "surface"], + 17: ["surface", "surface"], + 18: [ + "80 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + ], + 19: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 20: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 21: None, + 22: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 23: None, + 24: ["2 m above ground", "surface"], + 25: [ + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + ], + 26: [ + "2 m above ground", + "2 m above ground", + "10 m above ground", + "10 m above ground", + "surface", + "surface", + "surface", + "surface", + ], + 27: None, + }, + "NET_CDF_VARS_NAMES": { + 1: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 2: None, + 3: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "PRATE_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + "CPOFP_surface", + ], + 4: None, + 5: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + "CPOFP_surface", + ], + 6: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + "FROZR_surface", + ], + 7: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "PRATE_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 8: [ + "TMP_80maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "PRES_surface", + ], + 9: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "PRATE_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 10: ["T2D", "Q2D", "U10", "V10", "RAINRATE", "DSWRF", "DLWRF", "PRES"], + 11: ["T2D", "Q2D", "U10", "V10", "RAINRATE", "DSWRF", "DLWRF", "PRES"], + 12: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 13: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "PRATE_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 14: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "PRATE_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 15: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "PRATE_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 16: ["DSWRF_surface", "DLWRF_surface"], + 17: ["DSWRF_surface", "DLWRF_surface"], + 18: [ + "TMP_80maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "PRES_surface", + ], + 19: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 20: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 21: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 22: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 23: ["t2m", "d2m", "u10", "v10", "mtpr", "msdwswrf", "msdwlwrf", "sp"], + 24: ["TMP_2maboveground", "APCP_surface"], + 25: [ + "TMP_2maboveground", + "WDIR_10maboveground", + "WIND_10maboveground", + "APCP_surface", + ], + 26: [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface", + ], + 27: ["T2D", "Q2D", "U2D", "V2D", "RAINRATE", "SWDOWN", "LWDOWN", "PSFC"], + }, + "GRIB_MES_IDX": { + 1: None, + 2: None, + 3: None, + 4: None, + 5: None, + 6: None, + 7: None, + 8: None, + 9: [33, 34, 39, 40, 43, 88, 91, 6], + 10: None, + 11: None, + 12: None, + 13: None, + 14: None, + 15: None, + 16: None, + 17: None, + 18: None, + 19: None, + 20: None, + 21: None, + 22: None, + 23: None, + 24: None, + 25: None, + 26: None, + 27: None, + }, + "INPUT_MAP_OUTPUT": { + 1: [4, 5, 0, 1, 3, 7, 2, 6], + 2: None, + 3: [4, 5, 0, 1, 3, 7, 2, 6, 8], + 4: None, + 5: [4, 5, 0, 1, 3, 7, 2, 6, 8], + 6: [4, 5, 0, 1, 3, 7, 2, 6, 8], + 7: [4, 5, 0, 1, 3, 7, 2, 6], + 8: [4, 5, 0, 1, 3, 6], + 9: [4, 5, 0, 1, 3, 7, 2, 6], + 10: [4, 5, 0, 1, 3, 7, 2, 6], + 11: [4, 5, 0, 1, 3, 7, 2, 6], + 12: [4, 5, 0, 1, 3, 7, 2, 6], + 13: [4, 5, 0, 1, 3, 7, 2, 6], + 14: [4, 5, 0, 1, 3, 7, 2, 6], + 15: [4, 5, 0, 1, 3, 7, 2, 6], + 16: [7, 2], + 17: [7, 2], + 18: [4, 5, 0, 1, 3, 6], + 19: [4, 5, 0, 1, 3, 7, 2, 6], + 20: [4, 5, 0, 1, 3, 7, 2, 6], + 21: [4, 5, 0, 1, 3, 7, 2, 6], + 22: [4, 5, 0, 1, 3, 7, 2, 6], + 23: [4, 5, 0, 1, 3, 7, 2, 6], + 24: [4, 3], + 25: [4, 0, 1, 3], + 26: [4, 5, 0, 1, 3, 7, 2, 6], + 27: [4, 5, 0, 1, 3, 7, 2, 6], + }, + "FORECAST_HORIZONS": { + 1: None, + 2: None, + 3: None, + 4: None, + 5: [ + 18, + 18, + 18, + 18, + 18, + 18, + 36, + 18, + 18, + 18, + 18, + 18, + 36, + 18, + 18, + 18, + 18, + 18, + 36, + 18, + 18, + 18, + 18, + 18, + ], + 6: [ + 21, + 21, + 21, + 39, + 21, + 21, + 21, + 21, + 21, + 39, + 21, + 21, + 21, + 21, + 21, + 39, + 21, + 21, + 21, + 21, + 21, + 39, + 21, + 21, + ], + 7: None, + 8: None, + 9: None, + 10: None, + 11: None, + 12: None, + 13: None, + 14: None, + 15: None, + 16: None, + 17: None, + 18: None, + 19: None, + 20: None, + 21: None, + 22: None, + 23: None, + 24: None, + 25: None, + 26: [ + 18, + 18, + 18, + 18, + 18, + 18, + 36, + 18, + 18, + 18, + 18, + 18, + 36, + 18, + 18, + 18, + 18, + 18, + 36, + 18, + 18, + 18, + 18, + 18, + ], + 27: None, + }, + "FIND_NEIGHBOR_FILES_MAP": { + 1: time_handling.find_nldas_neighbors, + 3: time_handling.find_gfs_neighbors, + 5: time_handling.find_input_neighbors, + 6: time_handling.find_input_neighbors, + 7: time_handling.find_cfsv2_neighbors, + 8: time_handling.find_hourly_wrf_arw_neighbors, + 9: time_handling.find_gfs_neighbors, + 10: time_handling.find_custom_hourly_neighbors, + 11: time_handling.find_custom_hourly_neighbors, + 12: time_handling.find_aorc_neighbors, + 13: time_handling.find_nam_nest_neighbors, + 14: time_handling.find_nam_nest_neighbors, + 15: time_handling.find_nam_nest_neighbors, + 16: time_handling.find_nam_nest_neighbors, + 17: time_handling.find_nam_nest_neighbors, + 18: time_handling.find_hourly_wrf_arw_neighbors, + 19: time_handling.find_ak_hrrr_neighbors, + 20: time_handling.find_ak_hrrr_neighbors, + 21: time_handling.find_aorc_neighbors, + 22: time_handling.find_ak_hrrr_neighbors, + 23: time_handling.find_era5_neighbors, + 24: time_handling.find_hourly_nbm_neighbors, + 25: time_handling.find_ndfd_neighbors, + 26: time_handling.find_input_neighbors, + 27: time_handling.find_nwm_neighbors, + }, + "REGRID_MAP": { + 1: regrid.regrid_conus_rap, + 3: regrid.regrid_gfs, + 5: regrid.regrid_conus_hrrr, + 6: regrid.regrid_conus_rap, + 7: regrid.regrid_cfsv2, + 8: regrid.regrid_hourly_wrf_arw, + 9: regrid.regrid_gfs, + 10: regrid.regrid_custom_hourly_netcdf, + 11: regrid.regrid_custom_hourly_netcdf, + 12: regrid.regrid_custom_hourly_netcdf, + 13: regrid.regrid_nam_nest, + 14: regrid.regrid_nam_nest, + 15: regrid.regrid_nam_nest, + 16: regrid.regrid_nam_nest, + 17: regrid.regrid_nam_nest, + 18: regrid.regrid_hourly_wrf_arw, + 19: regrid.regrid_conus_hrrr, + 20: regrid.regrid_conus_hrrr, + 21: regrid.regrid_custom_hourly_netcdf, + 22: regrid.regrid_conus_hrrr, + 23: regrid.regrid_era5, + 24: regrid.regrid_hourly_nbm, + 25: regrid.regrid_ndfd, + 26: regrid.regrid_conus_hrrr, + 27: regrid.regrid_nwm, + }, + "TEMPORAL_INTERPOLATE_INPUTS_MAP": { + 0: no_interpolation, + 1: nearest_neighbor, + 2: weighted_average, + }, + "FILE_EXT": { + "GRIB1": ".grb", + "GRIB2": ".grib2", + "NETCDF": ".nc", + "NETCDF4": ".nc4", + "NWM": ".LDASIN_DOMAIN1", + "ZARR": ".zarr", + }, + }, + "test_utils": { + "OLD_NEW_VAR_MAP": { + "q2dBiasCorrectOpt": "q2BiasCorrectOpt", + "paramDir": "dScaleParamDirs", + "border": "ignored_border_widths", + "regridOpt": "regrid_opt", + "userFcstHorizon": "fcst_input_horizons", + "inDir": "input_force_dirs", + "swDowscaleOpt": "swDownscaleOpt", + "t2dBiasCorrectOpt": "t2BiasCorrectOpt", + "userCycleOffset": "fcst_input_offsets", + "windBiasCorrectOpt": "windBiasCorrect", + "timeInterpOpt": "forceTemoralInterp", + "enforce": "input_force_mandatory", + "file_type": "input_force_types", + } + }, +} diff --git a/tests/test_utils.py b/tests/test_utils.py index 443757d0..7a54a2fd 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -4,7 +4,9 @@ import logging import os import typing +from collections import OrderedDict from dataclasses import dataclass +from pathlib import Path import numpy as np import pytest @@ -16,6 +18,7 @@ from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.config import ( ConfigOptions, ) +from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.consts import CONSTS from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.forcingInputMod import ( InputForcings, ) @@ -30,6 +33,8 @@ serialize_to_json, ) +CONSTS = CONSTS[Path(__file__).stem] + try: import esmpy as ESMF except ImportError: @@ -38,7 +43,7 @@ OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" -def convert_long_lists(data, max_length=5): +def convert_long_lists(data, max_length=None): """Recursively iterate over a nested data dictionary and convert all lists longer than max_length to a hash. Args: @@ -49,6 +54,8 @@ def convert_long_lists(data, max_length=5): Modified copy of the data structure """ + if max_length is None: + return data if isinstance(data, dict): return { key: convert_long_lists(value, max_length) for key, value in data.items() @@ -181,7 +188,9 @@ def deserial_actual( deserial_actual = json.loads( serialize_to_json(self.test_class_as_dict, sort_keys=True) ) - deserial_actual = convert_long_lists(deserial_actual) + # order and reverse so private attributes are last + deserial_actual = OrderedDict(reversed(list(deserial_actual.items()))) + deserial_actual = convert_long_lists(deserial_actual, 10) if write_to_file: self.write_json( deserial_actual, @@ -213,7 +222,17 @@ def deserial_expected(self, suffix: str, current_output_step: str = "") -> dict: else: try: with open(file_path) as f: - return json.load(f) + deserial_expected = json.load(f) + + deserial_expected_new_keys = {} + # map old keys to new keys + for key, val in deserial_expected.items(): + if key in CONSTS["OLD_NEW_VAR_MAP"].keys(): + deserial_expected_new_keys[CONSTS["OLD_NEW_VAR_MAP"][key]] = val + else: + deserial_expected_new_keys[key] = val + # order and reverse so private attributes are last + return OrderedDict(reversed(list(deserial_expected_new_keys.items()))) except FileNotFoundError as e: raise FileNotFoundError( f"Could not find {file_path}. Try running the test using OS var {OS_VAR__CREATE_TEST_EXPECT_DATA}=true first to set up the test results expected data." @@ -248,7 +267,7 @@ def test_class_as_dict(self): # child_class_dict=self.test_class.__class__.__dict__ for key in dir(self.test_class): val = getattr(self.test_class, key) - if not callable(val) and not key.startswith("__"): + if not callable(val) and not key.startswith("_"): data[key] = val return data From 4f3a3aa98e6d1147ff82fd2c2db39eea15f83a3b Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 24 Mar 2026 13:28:48 -0500 Subject: [PATCH 09/34] add support for serializing functions as string --- tests/conftest.py | 8 +- ...t_expected_geomod_after_update_step_1.json | 70 +- ...t_expected_geomod_after_update_step_2.json | 70 +- ...t_expected_geomod_after_update_step_3.json | 70 +- .../test_expected_geomod_finalize.json | 70 +- .../test_expected_geomod_init.json | 70 +- ...ted_input_forcing_after_update_step_1.json | 1058 ++++++++++------- ...ted_input_forcing_after_update_step_2.json | 1058 ++++++++++------- ...ted_input_forcing_after_update_step_3.json | 1058 ++++++++++------- .../test_expected_input_forcing_finalize.json | 1058 ++++++++++------- .../test_expected_input_forcing_init.json | 384 ++++-- tests/test_utils.py | 29 +- 12 files changed, 3143 insertions(+), 1860 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index b26d013d..d0a51540 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,7 +9,7 @@ ) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.bmi_model import ( - BMIMODEL, + # BMIMODEL, NWMv3_Forcing_Engine_BMI_model, ) @@ -59,7 +59,7 @@ def bmi_forcing_fixture_regrid( grid_type, ) = request.param - bmi_model = BMIMODEL[grid_type]() + bmi_model = NWMv3_Forcing_Engine_BMI_model() bmi_model.initialize_with_params( config_file=config_file, b_date=None, @@ -96,7 +96,7 @@ def bmi_forcing_fixture_geomod( grid_type, ) = request.param - bmi_model = BMIMODEL[grid_type]() + bmi_model = NWMv3_Forcing_Engine_BMI_model() bmi_model.initialize_with_params( config_file=config_file, b_date=None, @@ -130,7 +130,7 @@ def bmi_forcing_fixture_input_forcing( force_key, ) = request.param - bmi_model = BMIMODEL[grid_type]() + bmi_model = NWMv3_Forcing_Engine_BMI_model() bmi_model.initialize_with_params( config_file=config_file, b_date=None, diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json index 58fe31cf..dc6b5caf 100644 --- a/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json @@ -4,8 +4,24 @@ "crs_atts": null, "dx_meters": null, "dy_meters": null, - "element_ids": "hash_2312573261074997727", - "element_ids_global": "hash_2312573261074997727", + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], "esmf_grid": { "_area": [ null, @@ -18,8 +34,24 @@ "hash_4066407811557226096" ], [ - "hash_3903810840982700583", - "hash_975758762163698829" + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] ] ], "_finalized": false, @@ -47,12 +79,36 @@ "height_elem": null, "inds": null, "lat_bounds": "hash_4066407811557226096", - "latitude_grid": "hash_975758762163698829", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], "latitude_grid_elem": null, "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": "hash_3903810840982700583", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], "longitude_grid_elem": null, - "mesh_inds": "hash_-5572467575970536340", + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], "mesh_inds_elem": null, "nodeCoords": null, "nx_global": 7, diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json index 58fe31cf..dc6b5caf 100644 --- a/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json @@ -4,8 +4,24 @@ "crs_atts": null, "dx_meters": null, "dy_meters": null, - "element_ids": "hash_2312573261074997727", - "element_ids_global": "hash_2312573261074997727", + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], "esmf_grid": { "_area": [ null, @@ -18,8 +34,24 @@ "hash_4066407811557226096" ], [ - "hash_3903810840982700583", - "hash_975758762163698829" + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] ] ], "_finalized": false, @@ -47,12 +79,36 @@ "height_elem": null, "inds": null, "lat_bounds": "hash_4066407811557226096", - "latitude_grid": "hash_975758762163698829", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], "latitude_grid_elem": null, "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": "hash_3903810840982700583", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], "longitude_grid_elem": null, - "mesh_inds": "hash_-5572467575970536340", + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], "mesh_inds_elem": null, "nodeCoords": null, "nx_global": 7, diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json index 58fe31cf..dc6b5caf 100644 --- a/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json @@ -4,8 +4,24 @@ "crs_atts": null, "dx_meters": null, "dy_meters": null, - "element_ids": "hash_2312573261074997727", - "element_ids_global": "hash_2312573261074997727", + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], "esmf_grid": { "_area": [ null, @@ -18,8 +34,24 @@ "hash_4066407811557226096" ], [ - "hash_3903810840982700583", - "hash_975758762163698829" + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] ] ], "_finalized": false, @@ -47,12 +79,36 @@ "height_elem": null, "inds": null, "lat_bounds": "hash_4066407811557226096", - "latitude_grid": "hash_975758762163698829", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], "latitude_grid_elem": null, "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": "hash_3903810840982700583", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], "longitude_grid_elem": null, - "mesh_inds": "hash_-5572467575970536340", + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], "mesh_inds_elem": null, "nodeCoords": null, "nx_global": 7, diff --git a/tests/test_data/expected_results/test_expected_geomod_finalize.json b/tests/test_data/expected_results/test_expected_geomod_finalize.json index 58fe31cf..dc6b5caf 100644 --- a/tests/test_data/expected_results/test_expected_geomod_finalize.json +++ b/tests/test_data/expected_results/test_expected_geomod_finalize.json @@ -4,8 +4,24 @@ "crs_atts": null, "dx_meters": null, "dy_meters": null, - "element_ids": "hash_2312573261074997727", - "element_ids_global": "hash_2312573261074997727", + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], "esmf_grid": { "_area": [ null, @@ -18,8 +34,24 @@ "hash_4066407811557226096" ], [ - "hash_3903810840982700583", - "hash_975758762163698829" + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] ] ], "_finalized": false, @@ -47,12 +79,36 @@ "height_elem": null, "inds": null, "lat_bounds": "hash_4066407811557226096", - "latitude_grid": "hash_975758762163698829", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], "latitude_grid_elem": null, "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": "hash_3903810840982700583", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], "longitude_grid_elem": null, - "mesh_inds": "hash_-5572467575970536340", + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], "mesh_inds_elem": null, "nodeCoords": null, "nx_global": 7, diff --git a/tests/test_data/expected_results/test_expected_geomod_init.json b/tests/test_data/expected_results/test_expected_geomod_init.json index 58fe31cf..dc6b5caf 100644 --- a/tests/test_data/expected_results/test_expected_geomod_init.json +++ b/tests/test_data/expected_results/test_expected_geomod_init.json @@ -4,8 +4,24 @@ "crs_atts": null, "dx_meters": null, "dy_meters": null, - "element_ids": "hash_2312573261074997727", - "element_ids_global": "hash_2312573261074997727", + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], "esmf_grid": { "_area": [ null, @@ -18,8 +34,24 @@ "hash_4066407811557226096" ], [ - "hash_3903810840982700583", - "hash_975758762163698829" + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] ] ], "_finalized": false, @@ -47,12 +79,36 @@ "height_elem": null, "inds": null, "lat_bounds": "hash_4066407811557226096", - "latitude_grid": "hash_975758762163698829", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], "latitude_grid_elem": null, "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": "hash_3903810840982700583", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], "longitude_grid_elem": null, - "mesh_inds": "hash_-5572467575970536340", + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], "mesh_inds_elem": null, "nodeCoords": null, "nx_global": 7, diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json index d792a0ab..776a8f89 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json @@ -1,173 +1,13 @@ { - "12": { - "_cycle_freq": null, - "_file_ext": ".grib2", - "_grib_vars": "hash_3736094543897741916", - "_keyValue": 12, - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": "hash_5016244700800676350", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { "_area": [ null, null, @@ -251,271 +91,627 @@ null ] }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", - "file_type": "GRIB2", - "final_forcings": null, - "final_forcings_elem": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "height": "hash_-6283689849391707346", - "height_elem": null, - "inDir": "s3://null", - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj": { - "_Print": null, - "_dst_file": null, - "_dst_file_type": null, - "_dst_frac_field": null, - "_dst_mask_values": null, - "_dstfield": { - "_data": "hash_5016244700800676350", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99160.26249161118, + 99751.30173387309, + 99866.56459840063, + 99835.52273003284, + 100140.1144036002, + 99762.71103274089, + 98958.290765121 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" ], - "_xd": 0 - }, - "_extrap_dist_exponent": null, - "_extrap_method": 0, - "_extrap_num_src_pnts": null, - "_factor_index_list": null, - "_factor_list": null, + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], "_finalized": false, - "_ignore_degenerate": null, + "_mask": [ + null, + null + ], "_meta": {}, - "_norm_type": null, - "_num_factors": null, - "_pole_method": null, - "_ptr_fil": null, - "_ptr_fl": null, - "_regrid_method": 0, - "_regrid_pole_npoints": null, - "_routehandle": {}, - "_src_file": null, - "_src_file_type": null, - "_src_frac_field": null, - "_src_mask_values": [ - 0, - -9999 + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 ], - "_srcfield": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "_unmapped_action": 1 + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} }, - "regridObj_elem": null, - "regridOpt": 1, - "regridded_forcings1": null, - "regridded_forcings1_elem": null, - "regridded_forcings2": null, - "regridded_forcings2_elem": null, - "regridded_mask": "hash_-7292364244999661789", - "regridded_mask_AORC": "hash_-7413896075511359965", - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null - } + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 7.987401246651457e-44, + 8.127531093083939e-44, + 8.267660939516421e-44, + 8.407790785948902e-44, + 8.547920632381384e-44, + 8.688050478813866e-44, + 8.828180325246348e-44 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + 1.4293244336113134e-43, + 2.5924021590009116e-43, + 1.821688003622262e-43, + 1.8497139729087585e-43, + 1.2611686178923354e-43, + 1.5834672646870433e-43, + 1.7376100957627732e-43 + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.6255062186167878e-43, + 6.305843089461677e-44, + 6.866362475191604e-44, + 6.866362475191604e-44, + 7.286752014489049e-44, + 7.707141553786494e-44, + 6.726232628759122e-44 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 7.987401246651457e-44, + 8.127531093083939e-44, + 8.267660939516421e-44, + 8.407790785948902e-44, + 8.547920632381384e-44, + 8.688050478813866e-44, + 8.828180325246348e-44 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + -1.0785462456106835e+22, + 3.33200748847155e-41, + 0.0, + 0.0, + 7.006492321624085e-45, + 0.0, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json index 9f5a9c20..742930da 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json @@ -1,173 +1,13 @@ { - "12": { - "_cycle_freq": null, - "_file_ext": ".grib2", - "_grib_vars": "hash_3736094543897741916", - "_keyValue": 12, - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": "hash_5540138208808446357", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { "_area": [ null, null, @@ -251,271 +91,627 @@ null ] }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", - "file_type": "GRIB2", - "final_forcings": null, - "final_forcings_elem": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "height": "hash_-6283689849391707346", - "height_elem": null, - "inDir": "s3://null", - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj": { - "_Print": null, - "_dst_file": null, - "_dst_file_type": null, - "_dst_frac_field": null, - "_dst_mask_values": null, - "_dstfield": { - "_data": "hash_5540138208808446357", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99263.83797955123, + 99864.20759754519, + 99984.1178572765, + 99951.00373610242, + 100253.86506548879, + 99872.71103274089, + 99065.63984167964 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" ], - "_xd": 0 - }, - "_extrap_dist_exponent": null, - "_extrap_method": 0, - "_extrap_num_src_pnts": null, - "_factor_index_list": null, - "_factor_list": null, + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], "_finalized": false, - "_ignore_degenerate": null, + "_mask": [ + null, + null + ], "_meta": {}, - "_norm_type": null, - "_num_factors": null, - "_pole_method": null, - "_ptr_fil": null, - "_ptr_fl": null, - "_regrid_method": 0, - "_regrid_pole_npoints": null, - "_routehandle": {}, - "_src_file": null, - "_src_file_type": null, - "_src_frac_field": null, - "_src_mask_values": [ - 0, - -9999 + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 ], - "_srcfield": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "_unmapped_action": 1 + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} }, - "regridObj_elem": null, - "regridOpt": 1, - "regridded_forcings1": null, - "regridded_forcings1_elem": null, - "regridded_forcings2": null, - "regridded_forcings2_elem": null, - "regridded_mask": "hash_-7292364244999661789", - "regridded_mask_AORC": "hash_-7413896075511359965", - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null - } + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + 1.4293244336113134e-43, + 2.5924021590009116e-43, + 1.821688003622262e-43, + 1.8497139729087585e-43, + 1.2611686178923354e-43, + 1.5834672646870433e-43, + 1.7376100957627732e-43 + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 7.987401246651457e-44, + 8.127531093083939e-44, + 8.267660939516421e-44, + 8.407790785948902e-44, + 8.547920632381384e-44, + 8.688050478813866e-44, + 8.828180325246348e-44 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + -1.0785462456106835e+22, + 3.33200748847155e-41, + 0.0, + 0.0, + 7.006492321624085e-45, + 0.0, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json index a95cfde6..e3025940 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json @@ -1,173 +1,13 @@ { - "12": { - "_cycle_freq": null, - "_file_ext": ".grib2", - "_grib_vars": "hash_3736094543897741916", - "_keyValue": 12, - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": "hash_-2070609901991932425", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { "_area": [ null, null, @@ -251,271 +91,627 @@ null ] }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", - "file_type": "GRIB2", - "final_forcings": null, - "final_forcings_elem": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "height": "hash_-6283689849391707346", - "height_elem": null, - "inDir": "s3://null", - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj": { - "_Print": null, - "_dst_file": null, - "_dst_file_type": null, - "_dst_frac_field": null, - "_dst_mask_values": null, - "_dstfield": { - "_data": "hash_-2070609901991932425", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99363.83797955124, + 99970.04062791045, + 100085.72479451672, + 100059.85331996171, + 100370.1144036002, + 99988.90210915556, + 99170.00124612782 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" ], - "_xd": 0 - }, - "_extrap_dist_exponent": null, - "_extrap_method": 0, - "_extrap_num_src_pnts": null, - "_factor_index_list": null, - "_factor_list": null, + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], "_finalized": false, - "_ignore_degenerate": null, + "_mask": [ + null, + null + ], "_meta": {}, - "_norm_type": null, - "_num_factors": null, - "_pole_method": null, - "_ptr_fil": null, - "_ptr_fl": null, - "_regrid_method": 0, - "_regrid_pole_npoints": null, - "_routehandle": {}, - "_src_file": null, - "_src_file_type": null, - "_src_frac_field": null, - "_src_mask_values": [ - 0, - -9999 + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 ], - "_srcfield": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "_unmapped_action": 1 + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} }, - "regridObj_elem": null, - "regridOpt": 1, - "regridded_forcings1": null, - "regridded_forcings1_elem": null, - "regridded_forcings2": null, - "regridded_forcings2_elem": null, - "regridded_mask": "hash_-7292364244999661789", - "regridded_mask_AORC": "hash_-7413896075511359965", - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null - } + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + 1.4293244336113134e-43, + 2.5924021590009116e-43, + 1.821688003622262e-43, + 1.8497139729087585e-43, + 1.2611686178923354e-43, + 1.5834672646870433e-43, + 1.7376100957627732e-43 + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + -1.0785462456106835e+22, + 3.33200748847155e-41, + 0.0, + 0.0, + 7.006492321624085e-45, + 0.0, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize.json index a95cfde6..e3025940 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_finalize.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize.json @@ -1,173 +1,13 @@ { - "12": { - "_cycle_freq": null, - "_file_ext": ".grib2", - "_grib_vars": "hash_3736094543897741916", - "_keyValue": 12, - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": "hash_-2070609901991932425", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { "_area": [ null, null, @@ -251,271 +91,627 @@ null ] }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", - "file_type": "GRIB2", - "final_forcings": null, - "final_forcings_elem": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "height": "hash_-6283689849391707346", - "height_elem": null, - "inDir": "s3://null", - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj": { - "_Print": null, - "_dst_file": null, - "_dst_file_type": null, - "_dst_frac_field": null, - "_dst_mask_values": null, - "_dstfield": { - "_data": "hash_-2070609901991932425", - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - "hash_3903810840982700583", - "hash_975758762163698829" - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99363.83797955124, + 99970.04062791045, + 100085.72479451672, + 100059.85331996171, + 100370.1144036002, + 99988.90210915556, + 99170.00124612782 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" ], - "_xd": 0 - }, - "_extrap_dist_exponent": null, - "_extrap_method": 0, - "_extrap_num_src_pnts": null, - "_factor_index_list": null, - "_factor_list": null, + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], "_finalized": false, - "_ignore_degenerate": null, + "_mask": [ + null, + null + ], "_meta": {}, - "_norm_type": null, - "_num_factors": null, - "_pole_method": null, - "_ptr_fil": null, - "_ptr_fl": null, - "_regrid_method": 0, - "_regrid_pole_npoints": null, - "_routehandle": {}, - "_src_file": null, - "_src_file_type": null, - "_src_frac_field": null, - "_src_mask_values": [ - 0, - -9999 + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 ], - "_srcfield": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "_unmapped_action": 1 + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} }, - "regridObj_elem": null, - "regridOpt": 1, - "regridded_forcings1": null, - "regridded_forcings1_elem": null, - "regridded_forcings2": null, - "regridded_forcings2_elem": null, - "regridded_mask": "hash_-7292364244999661789", - "regridded_mask_AORC": "hash_-7413896075511359965", - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null - } + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + 1.4293244336113134e-43, + 2.5924021590009116e-43, + 1.821688003622262e-43, + 1.8497139729087585e-43, + 1.2611686178923354e-43, + 1.5834672646870433e-43, + 1.7376100957627732e-43 + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + -1.0785462456106835e+22, + 3.33200748847155e-41, + 0.0, + 0.0, + 7.006492321624085e-45, + 0.0, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_init.json b/tests/test_data/expected_results/test_expected_input_forcing_init.json index bf83f6ba..f4f6ea8a 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_init.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_init.json @@ -1,96 +1,292 @@ { - "12": { - "_cycle_freq": null, - "_file_ext": null, - "_grib_vars": null, - "_keyValue": 12, - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "enforce": 0, - "esmf_field_in": null, - "esmf_field_in_elem": null, - "esmf_field_out": null, - "esmf_field_out_elem": null, - "esmf_grid_in": null, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_in1": null, - "file_in2": null, - "file_type": "GRIB2", - "final_forcings": null, - "final_forcings_elem": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "height": "hash_-6283689849391707346", - "height_elem": null, - "inDir": "s3://null", - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": null, - "nx_local": null, - "nx_local_corner": null, - "ny_global": null, - "ny_local": null, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj": null, - "regridObj_elem": null, - "regridOpt": 1, - "regridded_forcings1": null, - "regridded_forcings1_elem": null, - "regridded_forcings2": null, - "regridded_forcings2_elem": null, - "regridded_mask": "hash_-6966909609089680735", - "regridded_mask_AORC": "hash_-7413896075511359965", - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": null, - "x_lower_bound_corner": null, - "x_upper_bound": null, - "x_upper_bound_corner": null, - "y_lower_bound": null, - "y_lower_bound_corner": null, - "y_upper_bound": null, - "y_upper_bound_corner": null - } + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": null, + "esmf_field_in_elem": null, + "esmf_field_out": null, + "esmf_field_out_elem": null, + "esmf_grid_in": null, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": null, + "file_in2": null, + "file_type": "GRIB2", + "final_forcings": [ + [ + 5.04587704748543e-310, + 0.0, + 0.0, + 0.0, + 5e-324, + 5.04677747939827e-310, + 5.04677379939497e-310 + ], + [ + 0.0, + 1.69759663327e-313, + 1.2672592387899188e+232, + 6.3675e-320, + 5.0467737993928e-310, + 5.04677584503855e-310, + 9.97338021986e-313 + ], + [ + 6.185055752319095e+223, + 0.0, + 4.45619116355e-313, + 4.45619116113e-313, + 4.45619116113e-313, + 2.12199579106e-313, + 2.12199579146e-313 + ], + [ + 7.0025861116e-313, + 8.2757835865e-313, + 9.54898106137e-313, + 4.443903475535331e+252, + 6.5011e-319, + 0.0, + 0.0 + ], + [ + 0.0, + 5.04677571747323e-310, + 0.0, + 6.3675e-320, + 5.04677584503855e-310, + 1.00132312984912e-307, + 1.0639652826483053e+224 + ], + [ + 9.460901258052355e-308, + 5.035031584769189e+175, + 5.629751621824283e+188, + 5.296690847510652e+180, + 7.503220339358932e+247, + 6.988967804345117e+228, + 0.0 + ], + [ + 5.04677584516864e-310, + 5.0467775253452e-310, + 2.504798052037015e+262, + 6.048563642883464e-153, + 8.804038043558825e+199, + 9.7015828508133e+189, + 1.2336464110660583e+243 + ], + [ + 1.1444861950382266e+243, + 6.240235453373994e-85, + 3.503154846220036e+151, + 5.652500097044448e+188, + 1.991107419855827e+209, + 5.264891576090009e+170, + 7.691529923878102e+218 + ], + [ + 3.180440796836019e-153, + 8.804498740248215e+199, + 2.912550248154219e-14, + 2.0957227050864829e+214, + 8.748324789902571e+189, + 3.8098505405804724e+180, + 5.232537636e-315 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + 1.4293244336113134e-43, + 2.5924021590009116e-43, + 1.821688003622262e-43, + 1.8497139729087585e-43, + 1.2611686178923354e-43, + 1.5834672646870433e-43, + 1.7376100957627732e-43 + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": null, + "nx_local": null, + "nx_local_corner": null, + "ny_global": null, + "ny_local": null, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": null, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": [ + -1.5113385669212863e+22, + 3.33200748847155e-41, + 0.0, + 0.0, + 7.006492321624085e-45, + 0.0, + NaN + ], + "regridded_mask_AORC": [ + -1.0785462456106835e+22, + 3.33200748847155e-41, + 0.0, + 0.0, + 7.006492321624085e-45, + 0.0, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": null, + "x_lower_bound_corner": null, + "x_upper_bound": null, + "x_upper_bound_corner": null, + "y_lower_bound": null, + "y_lower_bound_corner": null, + "y_upper_bound": null, + "y_upper_bound_corner": null } \ No newline at end of file diff --git a/tests/test_utils.py b/tests/test_utils.py index 7a54a2fd..a96f40b0 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -3,6 +3,7 @@ import json import logging import os +import types import typing from collections import OrderedDict from dataclasses import dataclass @@ -23,7 +24,7 @@ InputForcings, ) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.geoMod import ( - GeoMeta, + GeoMetaWrfHydro, ) from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.core.parallel import MpiConfig from NextGen_Forcings_Engine_BMI.NextGen_Forcings_Engine.general_utils import ( @@ -33,6 +34,7 @@ serialize_to_json, ) +INPUT_FORCING_CONSTS = CONSTS["forcingInputMod"] CONSTS = CONSTS[Path(__file__).stem] try: @@ -43,6 +45,24 @@ OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" +def convert_functions_to_strings(d): + """Convert functions in a nexted dictionary to strings.""" + INPUT_FORCING_CONSTS["REGRID_MAP"] + for key, value in d.items(): + if isinstance(value, dict): + # Recursively call the function for nested dictionaries + convert_functions_to_strings(value) + elif isinstance(value, types.FunctionType): + # Convert function to its name string + d[key] = value.__name__ + elif isinstance(value, list): + # Handle lists, which might also contain functions in complex structures + for i, item in enumerate(value): + if isinstance(item, types.FunctionType): + value[i] = item.__name__ + return d + + def convert_long_lists(data, max_length=None): """Recursively iterate over a nested data dictionary and convert all lists longer than max_length to a hash. @@ -153,7 +173,7 @@ def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model): self.bmi_model: NWMv3_Forcing_Engine_BMI_model = bmi_model self.mpi_config: MpiConfig = bmi_model._mpi_meta self.config_options: ConfigOptions = bmi_model._job_meta - self.geo_meta: GeoMeta = bmi_model.geo_meta + self.geo_meta: GeoMetaWrfHydro = bmi_model._wrf_hydro_geo_meta self.input_forcing_mod: dict = self.bmi_model._input_forcing_mod @@ -186,10 +206,13 @@ def deserial_actual( ) -> dict: """Get the actual metadata results as a deserialized dictionary.""" deserial_actual = json.loads( - serialize_to_json(self.test_class_as_dict, sort_keys=True) + serialize_to_json( + convert_functions_to_strings(self.test_class_as_dict), sort_keys=True + ) ) # order and reverse so private attributes are last deserial_actual = OrderedDict(reversed(list(deserial_actual.items()))) + # deserial_actual = convert_functions_to_strings(deserial_actual) deserial_actual = convert_long_lists(deserial_actual, 10) if write_to_file: self.write_json( From 20679200cb617db39adba4a346b9e828c36b091a Mon Sep 17 00:00:00 2001 From: Matthew Deshotel Date: Thu, 26 Mar 2026 16:20:18 -0500 Subject: [PATCH 10/34] use ordered dict --- .../NextGen_Forcings_Engine/general_utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py index 84688900..99e433ee 100644 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py @@ -3,6 +3,7 @@ import json import logging import typing +from collections import OrderedDict import numpy as np @@ -104,12 +105,16 @@ def assert_equal_with_tol( ### Check key existence try: v_expect = expect[k] + if isinstance(v_expect, dict): + v_expect = OrderedDict(sorted(list(v_expect.items()))) except KeyError: errors.append(KeyError(f"Key {k} is missing from expected")) continue try: v_actual = actual[k] + if isinstance(v_actual, dict): + v_actual = OrderedDict(sorted(list(v_actual.items()))) except KeyError: msg = f"Key {k} is missing from actual" errors.append(KeyError(msg)) @@ -164,7 +169,7 @@ def assert_equal_with_tol( errors.append( ValueError( - f"Objects not equal, and numerical tolerances (atol={absolute_tolerance} rtol={relative_tolerance}) exceeded for at least one element. {v_expect} vs {v_actual}." + f"Objects not equal, and numerical tolerances (atol={absolute_tolerance} rtol={relative_tolerance}) exceeded for {k}. {v_expect} vs {v_actual}." ) ) From 02e9f55b90e6391e2b96fb6ac3141d57f8a012b5 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Fri, 27 Mar 2026 14:49:10 -0500 Subject: [PATCH 11/34] add read me for test --- pytest.ini | 2 + tests/README.md | 123 ++++++++++++++++++++++ tests/esmf_regrid/test_esmf_regrid.py | 20 ---- tests/geomod/test_geomod.py | 20 ---- tests/input_forcing/test_input_forcing.py | 20 ---- 5 files changed, 125 insertions(+), 60 deletions(-) create mode 100644 tests/README.md diff --git a/pytest.ini b/pytest.ini index 4dc7646f..5ac5cbe6 100644 --- a/pytest.ini +++ b/pytest.ini @@ -6,3 +6,5 @@ log_cli_level = INFO addopts = --full-trace -vv testpaths = tests/esmf_regrid + tests/geomod + tests/input_forcing diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 00000000..b4384717 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,123 @@ +# Tests README + +This directory contains tests for the NextGen Forcing BMI Engine. + +The initial test data was generated using RTE to create a calibration realization +for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, +using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. +## Test Structure + +The test suite is organized into the following modules: + +- **`esmf_regrid/`** - Tests for ESMF regridding functionality +- **`geomod/`** - Tests for geographic modeling components +- **`input_forcing/`** - Tests for input forcing data processing +- **`nextgen_forcings_ewts/`** - Tests for EWTS (Early Warning Tactical System) forcings +- **`test_utils.py`** - Shared test utilities and fixtures +- **`conftest.py`** - Pytest configuration and shared fixtures + +## Prerequisites + +### Required Dependencies + +The test suite requires Python 3.11 or higher. Install the package with test dependencies: + +```bash +# From the repository root directory +pip install -e ".[develop]" +``` + +Or install pytest directly: + +```bash +pip install pytest +``` + +### Additional Requirements + +Ensure all main package dependencies are installed. From the repository root: + +```bash +pip install -e . +``` + +## Running Tests + +### Run All Tests + +```bash +Single processor: (cd src/ngen-forcing && pytest ) +Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) +``` +### Run Specific Test Modules + +Run tests for a specific module: + +```bash +# ESMF regridding tests +Single processor: (cd src/ngen-forcing && pytest tests/esmf_regrid) +Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest tests/esmf_regrid) + +# GeoMod tests +Single processor: (cd src/ngen-forcing && pytest tests/geomod) +Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest tests/geomod) + +# Input forcing tests +Single processor: (cd src/ngen-forcing && pytest tests/input_forcing) +Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest tests/input_forcing) +``` + +Create new test output data (creates expected outputs for subsequent tests) +```bash +# ESMF regridding tests +Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest tests/esmf_regrid) +Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/esmf_regrid) + +# GeoMod tests +Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest tests/geomod) +Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/geomod) + +# Input forcing tests +Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest tests/input_forcing) +Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/input_forcing) +``` +## Test Configuration + +The test suite is configured via `pytest.ini` at the repository root: + +- **Python path**: Set to repository root (`.`) +- **Logging**: Enabled with INFO level (DEBUG available by uncommenting) +- **Verbosity**: Full trace with verbose output (`-vv`) +- **Test paths**: Pre-configured to discover tests in `esmf_regrid`, `geomod`, and `input_forcing` + + +## Test Data + +Test data is stored in the `test_data/` directory. Tests may reference files from this location for input data and expected results validation. + +## Writing New Tests + +When adding new tests: + +1. Place test files in the appropriate subdirectory +2. Name test files with the `test_*.py` prefix +3. Name test functions with the `test_*` prefix +4. Use fixtures from `conftest.py` for common setup +5. Place test data files in `test_data/` with descriptive names + +Example test structure: + +```python +import pytest + +def test_my_feature(): + """Test description.""" + # Arrange + input_data = ... + + # Act + result = function_under_test(input_data) + + # Assert + assert result == expected_output +``` diff --git a/tests/esmf_regrid/test_esmf_regrid.py b/tests/esmf_regrid/test_esmf_regrid.py index 010113a1..358512f1 100644 --- a/tests/esmf_regrid/test_esmf_regrid.py +++ b/tests/esmf_regrid/test_esmf_regrid.py @@ -1,23 +1,3 @@ -"""pytest tests for ESMF regrid functions. - -Setup requirements: - 1. Create the forcing config.yml files using RTE. - 2. Enter the RTE devcontainer. - -Usage: - The initial test data was generated using RTE to create a calibration realization - for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, - using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. - - Run like this for a typical test run (checking against existing test output data) - Single processor: ( cd src/ngen-forcing && pytest ) - Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) - - Run like this to create new test output data (created expected outputs for subsequent tests): - Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest ) - Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest ) -""" - import importlib.util import logging import os diff --git a/tests/geomod/test_geomod.py b/tests/geomod/test_geomod.py index ad780469..2716f062 100644 --- a/tests/geomod/test_geomod.py +++ b/tests/geomod/test_geomod.py @@ -1,23 +1,3 @@ -"""pytest tests for GeoMod. - -Setup requirements: - 1. Create the forcing config.yml files using RTE. - 2. Enter the RTE devcontainer. - -Usage: - The initial test data was generated using RTE to create a calibration realization - for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, - using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. - - Run like this for a typical test run (checking against existing test output data) - Single processor: ( cd src/ngen-forcing && pytest ) - Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) - - Run like this to create new test output data (created expected outputs for subsequent tests): - Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest ) - Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest ) -""" - import importlib.util import os diff --git a/tests/input_forcing/test_input_forcing.py b/tests/input_forcing/test_input_forcing.py index 0ff773db..17bb3bd5 100644 --- a/tests/input_forcing/test_input_forcing.py +++ b/tests/input_forcing/test_input_forcing.py @@ -1,23 +1,3 @@ -"""pytest tests for InputForcings. - -Setup requirements: - 1. Create the forcing config.yml files using RTE. - 2. Enter the RTE devcontainer. - -Usage: - The initial test data was generated using RTE to create a calibration realization - for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, - using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. - - Run like this for a typical test run (checking against existing test output data) - Single processor: ( cd src/ngen-forcing && pytest ) - Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) - - Run like this to create new test output data (created expected outputs for subsequent tests): - Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest ) - Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest ) -""" - import importlib.util import os From aae9450126c1c9a949805e90e6d4c5d9ab16b2e1 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Sat, 28 Mar 2026 12:10:29 -0500 Subject: [PATCH 12/34] add rank and number of processors to test json filename --- tests/test_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index a96f40b0..8ba7b16c 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -317,13 +317,13 @@ def actual_results_file_path( self, suffix: str, current_output_step: str = "" ) -> str: """Get the file path for the actual metadata results JSON file.""" - return f"{self.test_dir}/{self.actual_sub_dir}/test_actual_{self.test_file_name_prefix}_{suffix}{current_output_step}.json" + return f"{self.test_dir}/{self.actual_sub_dir}/test_actual_{self.test_file_name_prefix}_{suffix}_n{self.mpi_config.size}_rank{self.mpi_config.rank}_{current_output_step}.json" def expected_results_file_path( self, suffix: str, current_output_step: str = "" ) -> str: """Get the file path for the expected metadata results JSON file.""" - return f"{self.test_dir}/{self.expected_sub_dir}/test_expected_{self.test_file_name_prefix}_{suffix}{current_output_step}.json" + return f"{self.test_dir}/{self.expected_sub_dir}/test_expected_{self.test_file_name_prefix}_{suffix}_n{self.mpi_config.size}_rank{self.mpi_config.rank}_{current_output_step}.json" class BMIForcingFixture_GeoMod(BMIForcingFixture_Class): From a3dea19203e6fd90a76f3f0f1ec843c6ae8e69aa Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Sat, 28 Mar 2026 12:11:01 -0500 Subject: [PATCH 13/34] repalce np.empty with np.full --- .../core/forcingInputMod.py | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py index 6948fb98..e42d5a90 100755 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py @@ -1139,56 +1139,56 @@ def init_dict( input_dict[force_key].grib_vars = input_dict[force_key].grib_vars[:-1] if config_options.grid_type == "gridded": - input_dict[force_key].final_forcings = np.empty( + input_dict[force_key].final_forcings = np.full( [force_count, geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], - np.float64, + np.nan, ) - input_dict[force_key].height = np.empty( - [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.float32 + input_dict[force_key].height = np.full( + [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan ) - input_dict[force_key].regridded_mask = np.empty( - [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.float32 + input_dict[force_key].regridded_mask = np.full( + [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan ) - input_dict[force_key].regridded_mask_AORC = np.empty( - [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.float32 + input_dict[force_key].regridded_mask_AORC = np.full( + [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan ) elif config_options.grid_type == "unstructured": - input_dict[force_key].final_forcings = np.empty( - [force_count, geo_meta_wrf_hydro.ny_local], np.float64 + input_dict[force_key].final_forcings = np.full( + [force_count, geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].height = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].height = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].regridded_mask = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].regridded_mask = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].regridded_mask_AORC = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].regridded_mask_AORC = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].final_forcings_elem = np.empty( - [force_count, geo_meta_wrf_hydro.ny_local_elem], np.float64 + input_dict[force_key].final_forcings_elem = np.full( + [force_count, geo_meta_wrf_hydro.ny_local_elem], np.nan ) - input_dict[force_key].height_elem = np.empty( - [geo_meta_wrf_hydro.ny_local_elem], np.float32 + input_dict[force_key].height_elem = np.full( + [geo_meta_wrf_hydro.ny_local_elem], np.nan ) - input_dict[force_key].regridded_mask_elem = np.empty( - [geo_meta_wrf_hydro.ny_local_elem], np.float32 + input_dict[force_key].regridded_mask_elem = np.full( + [geo_meta_wrf_hydro.ny_local_elem], np.nan ) - input_dict[force_key].regridded_mask_elem_AORC = np.empty( - [geo_meta_wrf_hydro.ny_local_elem], np.float32 + input_dict[force_key].regridded_mask_elem_AORC = np.full( + [geo_meta_wrf_hydro.ny_local_elem], np.nan ) elif config_options.grid_type == "hydrofabric": - input_dict[force_key].final_forcings = np.empty( - [force_count, geo_meta_wrf_hydro.ny_local], np.float64 + input_dict[force_key].final_forcings = np.full( + [force_count, geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].height = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].height = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].regridded_mask = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].regridded_mask = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].regridded_mask_AORC = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].regridded_mask_AORC = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) # Obtain custom input cycle frequencies if force_key == 10 or force_key == 11: From 4cf93f1581530a06da93169aca0350f73116d4a4 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Sat, 28 Mar 2026 12:11:46 -0500 Subject: [PATCH 14/34] add new arg to control the mapping of old variable names to new --- tests/README.md | 14 ++++++++++---- tests/conftest.py | 20 ++++++++++++++++++++ tests/test_utils.py | 35 +++++++++++++++++++++++++---------- 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/tests/README.md b/tests/README.md index b4384717..5e9b261e 100644 --- a/tests/README.md +++ b/tests/README.md @@ -55,15 +55,15 @@ Run tests for a specific module: ```bash # ESMF regridding tests -Single processor: (cd src/ngen-forcing && pytest tests/esmf_regrid) +Single processor: ( cd src/ngen-forcing && pytest tests/esmf_regrid) Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest tests/esmf_regrid) # GeoMod tests -Single processor: (cd src/ngen-forcing && pytest tests/geomod) +Single processor: ( cd src/ngen-forcing && pytest tests/geomod) Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest tests/geomod) - + # Input forcing tests -Single processor: (cd src/ngen-forcing && pytest tests/input_forcing) +Single processor: ( cd src/ngen-forcing && pytest tests/input_forcing) Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest tests/input_forcing) ``` @@ -81,6 +81,12 @@ Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest tests/input_forcing) Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/input_forcing) ``` + +In the rare case where you want to create new `expected` data and run the tests using `old` variable names use the following: +```bash +Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest tests/input_forcing --map_old_to_new_var_names False) +Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/input_forcing --map_old_to_new_var_names False) +``` ## Test Configuration The test suite is configured via `pytest.ini` at the repository root: diff --git a/tests/conftest.py b/tests/conftest.py index d0a51540..04eca8b0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -109,6 +109,15 @@ def bmi_forcing_fixture_geomod( ) +def pytest_addoption(parser): + parser.addoption( + "--map_old_to_new_var_names", + action="store", + dest="map_old_to_new_var_names", + help="Argument to specify if old variables names should be mapped to new variable names.", + ) + + @pytest.fixture def bmi_forcing_fixture_input_forcing( request, @@ -137,8 +146,19 @@ def bmi_forcing_fixture_input_forcing( geogrid=None, output_path=None, ) + map_old_to_new_var_names = request.config.getoption("map_old_to_new_var_names") + if map_old_to_new_var_names is None: + map_old_to_new_var_names = True + elif map_old_to_new_var_names == "False": + map_old_to_new_var_names = False + else: + raise ValueError( + f"Unexpected value for arg: map_old_to_new_var_names. Expected True or False; recieved: {map_old_to_new_var_names}" + ) + return BMIForcingFixture_InputForcing( bmi_model=bmi_model, keys_to_check=keys_to_check, force_key=force_key, + map_old_to_new_var_names=map_old_to_new_var_names, ) diff --git a/tests/test_utils.py b/tests/test_utils.py index 8ba7b16c..e80b8a83 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -184,6 +184,7 @@ def __init__( self, bmi_model: NWMv3_Forcing_Engine_BMI_model, keys_to_check: tuple[str] = (), + map_old_to_new_var_names: bool = True, ): """Initialize BMIForcingFixture_GeoMod. Writers of geomod tests must call the methods in this order. This is enforced by state attributes. @@ -196,6 +197,7 @@ def __init__( super().__init__(bmi_model=bmi_model) self.keys_to_check = keys_to_check + self.map_old_to_new_var_names = map_old_to_new_var_names self.expected_sub_dir = "test_data/expected_results" self.actual_sub_dir = "test_data/actual_results" @@ -246,21 +248,27 @@ def deserial_expected(self, suffix: str, current_output_step: str = "") -> dict: try: with open(file_path) as f: deserial_expected = json.load(f) - - deserial_expected_new_keys = {} - # map old keys to new keys - for key, val in deserial_expected.items(): - if key in CONSTS["OLD_NEW_VAR_MAP"].keys(): - deserial_expected_new_keys[CONSTS["OLD_NEW_VAR_MAP"][key]] = val - else: - deserial_expected_new_keys[key] = val + if self.map_old_to_new_var_names: + deserial_expected = self.map_old_to_new_variable_names( + deserial_expected + ) # order and reverse so private attributes are last - return OrderedDict(reversed(list(deserial_expected_new_keys.items()))) + return OrderedDict(reversed(list(deserial_expected.items()))) except FileNotFoundError as e: raise FileNotFoundError( f"Could not find {file_path}. Try running the test using OS var {OS_VAR__CREATE_TEST_EXPECT_DATA}=true first to set up the test results expected data." ) from e + def map_old_to_new_variable_names(self, data: dict) -> dict: + """Map old variable names to new variable names in the expected results data.""" + data_new_keys = {} + for key, val in data.items(): + if key in CONSTS["OLD_NEW_VAR_MAP"].keys(): + data_new_keys[CONSTS["OLD_NEW_VAR_MAP"][key]] = val + else: + data_new_keys[key] = val + return data_new_keys + def after_intitialization_check(self): """Run checks after initialization but before any run has been called. @@ -359,6 +367,7 @@ def __init__( bmi_model: NWMv3_Forcing_Engine_BMI_model, keys_to_check: tuple = (), force_key: int = None, + map_old_to_new_var_names: bool = True, ): """Initialize BMIForcingFixture_InputForcing. Writers of input forcing tests must call the methods in this order. This is enforced by state attributes. @@ -366,9 +375,15 @@ def __init__( ---- bmi_model: the BMI model to be used in the test fixture keys_to_chek: The keys to check + force_key: Key for the forcing type + map_old_to_new_var_names: whether to map old variable names to new variable names in the expected results data, which is needed when updating the test expected outputs dataset but should be false for regular test runs. """ - super().__init__(bmi_model=bmi_model, keys_to_check=keys_to_check) + super().__init__( + bmi_model=bmi_model, + keys_to_check=keys_to_check, + map_old_to_new_var_names=map_old_to_new_var_names, + ) self.force_key = force_key self.test_class = self.input_forcing_mod[self.force_key] self.test_file_name_prefix = "input_forcing" From 25eaa393cd26ac120717cb89507b53263c78008d Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Sat, 28 Mar 2026 12:12:05 -0500 Subject: [PATCH 15/34] update expected test data --- ..._geomod_after_update_n1_rank0__step_1.json | 136 ++++ ..._geomod_after_update_n1_rank0__step_2.json | 136 ++++ ..._geomod_after_update_n1_rank0__step_3.json | 136 ++++ ..._geomod_after_update_n2_rank0__step_1.json | 118 +++ ..._geomod_after_update_n2_rank0__step_2.json | 118 +++ ..._geomod_after_update_n2_rank0__step_3.json | 118 +++ ..._geomod_after_update_n2_rank1__step_1.json | 112 +++ ..._geomod_after_update_n2_rank1__step_2.json | 112 +++ ..._geomod_after_update_n2_rank1__step_3.json | 112 +++ ...st_expected_geomod_finalize_n1_rank0_.json | 136 ++++ ...st_expected_geomod_finalize_n2_rank0_.json | 118 +++ ...st_expected_geomod_finalize_n2_rank1_.json | 112 +++ .../test_expected_geomod_init_n1_rank0_.json | 136 ++++ .../test_expected_geomod_init_n2_rank0_.json | 118 +++ .../test_expected_geomod_init_n2_rank1_.json | 112 +++ ...forcing_after_update_n1_rank0__step_1.json | 717 ++++++++++++++++++ ...forcing_after_update_n1_rank0__step_2.json | 717 ++++++++++++++++++ ...forcing_after_update_n1_rank0__step_3.json | 717 ++++++++++++++++++ ...forcing_after_update_n2_rank0__step_1.json | 618 +++++++++++++++ ...forcing_after_update_n2_rank0__step_2.json | 618 +++++++++++++++ ...forcing_after_update_n2_rank0__step_3.json | 618 +++++++++++++++ ...forcing_after_update_n2_rank1__step_1.json | 585 ++++++++++++++ ...forcing_after_update_n2_rank1__step_2.json | 585 ++++++++++++++ ...forcing_after_update_n2_rank1__step_3.json | 585 ++++++++++++++ ...cted_input_forcing_finalize_n1_rank0_.json | 717 ++++++++++++++++++ ...cted_input_forcing_finalize_n2_rank0_.json | 618 +++++++++++++++ ...cted_input_forcing_finalize_n2_rank1_.json | 585 ++++++++++++++ ...expected_input_forcing_init_n1_rank0_.json | 292 +++++++ ...expected_input_forcing_init_n2_rank0_.json | 256 +++++++ ...expected_input_forcing_init_n2_rank1_.json | 244 ++++++ 30 files changed, 10302 insertions(+) create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_1.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_2.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_3.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_1.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_2.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_3.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_1.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_2.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_3.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_finalize_n1_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank1_.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_init_n1_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_init_n2_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_geomod_init_n2_rank1_.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_1.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_2.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_3.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_1.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_1.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_3.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_finalize_n1_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank1_.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_init_n1_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank0_.json create mode 100644 tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank1_.json diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_1.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_1.json new file mode 100644 index 00000000..dc6b5caf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_1.json @@ -0,0 +1,136 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_2.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_2.json new file mode 100644 index 00000000..dc6b5caf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_2.json @@ -0,0 +1,136 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_3.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_3.json new file mode 100644 index 00000000..dc6b5caf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n1_rank0__step_3.json @@ -0,0 +1,136 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_1.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_1.json new file mode 100644 index 00000000..2acf30ba --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_1.json @@ -0,0 +1,118 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 4, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 4, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_2.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_2.json new file mode 100644 index 00000000..2acf30ba --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_2.json @@ -0,0 +1,118 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 4, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 4, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_3.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_3.json new file mode 100644 index 00000000..2acf30ba --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank0__step_3.json @@ -0,0 +1,118 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 4, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 4, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_1.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_1.json new file mode 100644 index 00000000..a3f11c93 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_1.json @@ -0,0 +1,112 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": null, + "latitude_grid": [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": null, + "longitude_grid": [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 3, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 3, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_2.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_2.json new file mode 100644 index 00000000..a3f11c93 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_2.json @@ -0,0 +1,112 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": null, + "latitude_grid": [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": null, + "longitude_grid": [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 3, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 3, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_3.json b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_3.json new file mode 100644 index 00000000..a3f11c93 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_after_update_n2_rank1__step_3.json @@ -0,0 +1,112 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": null, + "latitude_grid": [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": null, + "longitude_grid": [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 3, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 3, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_finalize_n1_rank0_.json b/tests/test_data/expected_results/test_expected_geomod_finalize_n1_rank0_.json new file mode 100644 index 00000000..dc6b5caf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_finalize_n1_rank0_.json @@ -0,0 +1,136 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank0_.json b/tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank0_.json new file mode 100644 index 00000000..2acf30ba --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank0_.json @@ -0,0 +1,118 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 4, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 4, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank1_.json b/tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank1_.json new file mode 100644 index 00000000..a3f11c93 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_finalize_n2_rank1_.json @@ -0,0 +1,112 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": null, + "latitude_grid": [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": null, + "longitude_grid": [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 3, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 3, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_init_n1_rank0_.json b/tests/test_data/expected_results/test_expected_geomod_init_n1_rank0_.json new file mode 100644 index 00000000..dc6b5caf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_init_n1_rank0_.json @@ -0,0 +1,136 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 7, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 7, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_init_n2_rank0_.json b/tests/test_data/expected_results/test_expected_geomod_init_n2_rank0_.json new file mode 100644 index 00000000..2acf30ba --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_init_n2_rank0_.json @@ -0,0 +1,118 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": "hash_4066407811557226096", + "latitude_grid": [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ], + "latitude_grid_elem": null, + "lon_bounds": "hash_-4728106294047550556", + "longitude_grid": [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 0, + 1, + 2, + 3 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 4, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 4, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_init_n2_rank1_.json b/tests/test_data/expected_results/test_expected_geomod_init_n2_rank1_.json new file mode 100644 index 00000000..a3f11c93 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_geomod_init_n2_rank1_.json @@ -0,0 +1,112 @@ +{ + "centerCoords": null, + "cosa_grid": null, + "crs_atts": null, + "dx_meters": null, + "dy_meters": null, + "element_ids": [ + 11470, + 11475, + 11476 + ], + "element_ids_global": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "esmf_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "esmf_lat": null, + "esmf_lon": null, + "height": null, + "height_elem": null, + "inds": null, + "lat_bounds": null, + "latitude_grid": [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ], + "latitude_grid_elem": null, + "lon_bounds": null, + "longitude_grid": [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + "longitude_grid_elem": null, + "mesh_inds": [ + 4, + 5, + 6 + ], + "mesh_inds_elem": null, + "nodeCoords": null, + "nx_global": 7, + "nx_global_elem": null, + "nx_local": 3, + "nx_local_elem": null, + "ny_global": 7, + "ny_global_elem": null, + "ny_local": 3, + "ny_local_elem": null, + "sina_grid": null, + "slope": null, + "slope_elem": null, + "slp_azi": null, + "slp_azi_elem": null, + "spatial_global_atts": null, + "x_coord_atts": null, + "x_coords": null, + "x_lower_bound": null, + "x_upper_bound": null, + "y_coord_atts": null, + "y_coords": null, + "y_lower_bound": null, + "y_upper_bound": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_1.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_1.json new file mode 100644 index 00000000..797e0fd1 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_1.json @@ -0,0 +1,717 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99160.26249161118, + 99751.30173387309, + 99866.56459840063, + 99835.52273003284, + 100140.1144036002, + 99762.71103274089, + 98958.290765121 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 7.987401246651457e-44, + 8.127531093083939e-44, + 8.267660939516421e-44, + 8.407790785948902e-44, + 8.547920632381384e-44, + 8.688050478813866e-44, + 8.828180325246348e-44 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.6255062186167878e-43, + 6.305843089461677e-44, + 6.866362475191604e-44, + 6.866362475191604e-44, + 7.286752014489049e-44, + 7.707141553786494e-44, + 6.726232628759122e-44 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 7.987401246651457e-44, + 8.127531093083939e-44, + 8.267660939516421e-44, + 8.407790785948902e-44, + 8.547920632381384e-44, + 8.688050478813866e-44, + 8.828180325246348e-44 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_2.json new file mode 100644 index 00000000..6e61a1bf --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_2.json @@ -0,0 +1,717 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99263.83797955123, + 99864.20759754519, + 99984.1178572765, + 99951.00373610242, + 100253.86506548879, + 99872.71103274089, + 99065.63984167964 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 7.987401246651457e-44, + 8.127531093083939e-44, + 8.267660939516421e-44, + 8.407790785948902e-44, + 8.547920632381384e-44, + 8.688050478813866e-44, + 8.828180325246348e-44 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_3.json new file mode 100644 index 00000000..67a6c576 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n1_rank0__step_3.json @@ -0,0 +1,717 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99363.83797955124, + 99970.04062791045, + 100085.72479451672, + 100059.85331996171, + 100370.1144036002, + 99988.90210915556, + 99170.00124612782 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_1.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_1.json new file mode 100644 index 00000000..1c3479b5 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_1.json @@ -0,0 +1,618 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 14, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99160.26249161118, + 99751.30173387309, + 99866.56459840063, + 99835.52273003284 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 4 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 9.18803377088496e-41, + 4.364694391755724e-40, + 0.0, + -6.165852519510108e+34 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 9.18915480965642e-41, + 4.350345095481038e-40, + 0.0, + 0.11376953125 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 9.18803377088496e-41, + 4.364694391755724e-40, + 0.0, + -6.165852519510108e+34 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 14, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json new file mode 100644 index 00000000..2a8e3f58 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json @@ -0,0 +1,618 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 14, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99263.83797955123, + 99864.20759754519, + 99984.1178572765, + 99951.00373610242 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 4 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 9.18803377088496e-41, + 4.364694391755724e-40, + 0.0, + -6.165852519510108e+34 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 14, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json new file mode 100644 index 00000000..3198b0e9 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json @@ -0,0 +1,618 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 14, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99363.83797955124, + 99970.04062791045, + 100085.72479451672, + 100059.85331996171 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 4 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 14, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_1.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_1.json new file mode 100644 index 00000000..641b95a6 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_1.json @@ -0,0 +1,585 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 14, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 100140.1144036002, + 99762.71103274089, + 98958.290765121 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 3 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5638655642978847e-09, + 0.0, + 0.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5638655642978847e-09, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5638655642978847e-09, + 0.0, + 0.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 14, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json new file mode 100644 index 00000000..b15f95c2 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json @@ -0,0 +1,585 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 14, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 100253.86506548879, + 99872.71103274089, + 99065.63984167964 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 3 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5638655642978847e-09, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 14, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_3.json new file mode 100644 index 00000000..094eaadb --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_3.json @@ -0,0 +1,585 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 14, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 100370.1144036002, + 99988.90210915556, + 99170.00124612782 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 3 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5638655642978847e-09, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 14, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n1_rank0_.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n1_rank0_.json new file mode 100644 index 00000000..67a6c576 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n1_rank0_.json @@ -0,0 +1,717 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99363.83797955124, + 99970.04062791045, + 100085.72479451672, + 100059.85331996171, + 100370.1144036002, + 99988.90210915556, + 99170.00124612782 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-4728106294047550556", + "hash_4066407811557226096" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834, + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741, + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 653, + 7 + ], + "_size_owned": [ + 653, + 7 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 7 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 28, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 28, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json new file mode 100644 index 00000000..3198b0e9 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json @@ -0,0 +1,618 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 0, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 14, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 99363.83797955124, + 99970.04062791045, + 100085.72479451672, + 100059.85331996171 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_-2029877471422530764", + "hash_-2626201295507711994" + ], + [ + [ + -72.04918711744217, + -72.0498876679477, + -72.05118870198277, + -72.04754380872834 + ], + [ + 41.824530105139985, + 41.79153684369973, + 41.739617787523294, + 41.68903878715741 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 496, + 4 + ], + "_size_owned": [ + 496, + 4 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 4 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 0, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 14, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 0, + "y_lower_bound_corner": null, + "y_upper_bound": 14, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank1_.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank1_.json new file mode 100644 index 00000000..094eaadb --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank1_.json @@ -0,0 +1,585 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": { + "_data": null, + "_finalized": false, + "_grid": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "_lower_bounds": [ + 14, + 0 + ], + "_meta": {}, + "_name": "AORC_NATIVE", + "_ndbounds": null, + "_rank": 2, + "_staggerloc": 0, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 28, + 14 + ], + "_xd": 0 + }, + "esmf_field_in_elem": null, + "esmf_field_out": { + "_data": [ + 100370.1144036002, + 99988.90210915556, + 99170.00124612782 + ], + "_finalized": false, + "_grid": { + "_area": [ + null, + null + ], + "_coord_sys": null, + "_coords": [ + [ + "hash_7251470926797134324", + "hash_-8431632255294118507" + ], + [ + [ + -72.0554434265969, + -72.03341338948294, + -72.07444419922648 + ], + [ + 41.66453348086255, + 41.721705460500516, + 41.77940007526497 + ] + ] + ], + "_finalized": false, + "_mask": [ + null, + null + ], + "_meta": {}, + "_parametric_dim": 2, + "_rank": 1, + "_size": [ + 327, + 3 + ], + "_size_owned": [ + 157, + 3 + ], + "_spatial_dim": null, + "_struct": {} + }, + "_lower_bounds": [ + 0 + ], + "_meta": {}, + "_name": "AORCFORCING_REGRIDDED", + "_ndbounds": null, + "_rank": 1, + "_staggerloc": 1, + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + 3 + ], + "_xd": 0 + }, + "esmf_field_out_elem": null, + "esmf_grid_in": { + "_area": [ + null, + null, + null, + null + ], + "_areatype": 6, + "_coord_sys": 1, + "_coords": [ + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ], + [ + null, + null + ] + ], + "_decount": 1, + "_finalized": false, + "_has_corners": false, + "_lower_bounds": [ + [ + 14, + 0 + ], + null, + null, + null + ], + "_mask": [ + null, + null, + null, + null + ], + "_max_index": [ + 28, + 14 + ], + "_meta": {}, + "_ndims": 2, + "_num_peri_dims": 0, + "_ocgis": {}, + "_periodic_dim": null, + "_pole_dim": null, + "_pole_kind": null, + "_rank": 2, + "_size": [ + [ + 14, + 14 + ], + null, + null, + null + ], + "_staggerloc": [ + true, + false, + false, + false + ], + "_struct": {}, + "_type": 6, + "_upper_bounds": [ + [ + 28, + 14 + ], + null, + null, + null + ] + }, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", + "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", + "file_type": "GRIB2", + "final_forcings": [ + [ + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0 + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": 14, + "nx_local": 14, + "nx_local_corner": null, + "ny_global": 28, + "ny_local": 14, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": [ + [ + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5638655642978847e-09, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + -9999.0, + -9999.0, + -9999.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": 0, + "x_lower_bound_corner": null, + "x_upper_bound": 14, + "x_upper_bound_corner": null, + "y_lower_bound": 14, + "y_lower_bound_corner": null, + "y_upper_bound": 28, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_init_n1_rank0_.json b/tests/test_data/expected_results/test_expected_input_forcing_init_n1_rank0_.json new file mode 100644 index 00000000..238cfa4c --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_init_n1_rank0_.json @@ -0,0 +1,292 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": null, + "esmf_field_in_elem": null, + "esmf_field_out": null, + "esmf_field_out_elem": null, + "esmf_grid_in": null, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": null, + "file_in2": null, + "file_type": "GRIB2", + "final_forcings": [ + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": null, + "nx_local": null, + "nx_local_corner": null, + "ny_global": null, + "ny_local": null, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": null, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": null, + "x_lower_bound_corner": null, + "x_upper_bound": null, + "x_upper_bound_corner": null, + "y_lower_bound": null, + "y_lower_bound_corner": null, + "y_upper_bound": null, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank0_.json b/tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank0_.json new file mode 100644 index 00000000..302e1df0 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank0_.json @@ -0,0 +1,256 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": null, + "esmf_field_in_elem": null, + "esmf_field_out": null, + "esmf_field_out_elem": null, + "esmf_grid_in": null, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": null, + "file_in2": null, + "file_type": "GRIB2", + "final_forcings": [ + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN, + NaN + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": null, + "nx_local": null, + "nx_local_corner": null, + "ny_global": null, + "ny_local": null, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": null, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": [ + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": null, + "x_lower_bound_corner": null, + "x_upper_bound": null, + "x_upper_bound_corner": null, + "y_lower_bound": null, + "y_lower_bound_corner": null, + "y_upper_bound": null, + "y_upper_bound_corner": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank1_.json b/tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank1_.json new file mode 100644 index 00000000..db9a46a1 --- /dev/null +++ b/tests/test_data/expected_results/test_expected_input_forcing_init_n2_rank1_.json @@ -0,0 +1,244 @@ +{ + "border": 0, + "coarse_input_forcings1": null, + "coarse_input_forcings2": null, + "cycle_freq": -9999, + "enforce": 0, + "esmf_field_in": null, + "esmf_field_in_elem": null, + "esmf_field_out": null, + "esmf_field_out_elem": null, + "esmf_grid_in": null, + "esmf_grid_in_elem": null, + "esmf_lats": null, + "esmf_lons": null, + "fcst_date1": null, + "fcst_date2": null, + "fcst_hour1": null, + "fcst_hour2": null, + "file_ext": ".grib2", + "file_in1": null, + "file_in2": null, + "file_type": "GRIB2", + "final_forcings": [ + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ], + [ + NaN, + NaN, + NaN + ] + ], + "final_forcings_elem": null, + "find_neighbor_files_map": { + "1": "find_nldas_neighbors", + "10": "find_custom_hourly_neighbors", + "11": "find_custom_hourly_neighbors", + "12": "find_aorc_neighbors", + "13": "find_nam_nest_neighbors", + "14": "find_nam_nest_neighbors", + "15": "find_nam_nest_neighbors", + "16": "find_nam_nest_neighbors", + "17": "find_nam_nest_neighbors", + "18": "find_hourly_wrf_arw_neighbors", + "19": "find_ak_hrrr_neighbors", + "20": "find_ak_hrrr_neighbors", + "21": "find_aorc_neighbors", + "22": "find_ak_hrrr_neighbors", + "23": "find_era5_neighbors", + "24": "find_hourly_nbm_neighbors", + "25": "find_ndfd_neighbors", + "26": "find_input_neighbors", + "27": "find_nwm_neighbors", + "3": "find_gfs_neighbors", + "5": "find_conus_hrrr_neighbors", + "6": "find_conus_rap_neighbors", + "7": "find_cfsv2_neighbors", + "8": "find_hourly_wrf_arw_neighbors", + "9": "find_gfs_neighbors" + }, + "forecast_horizons": null, + "globalPcpRate1": null, + "globalPcpRate1_elem": null, + "globalPcpRate2": null, + "globalPcpRate2_elem": null, + "grib_levels": null, + "grib_mes_idx": null, + "grib_vars": [ + "TMP", + "SPFH", + "UGRD", + "VGRD", + "APCP", + "DSWRF", + "DLWRF", + "PRES" + ], + "height": [ + NaN, + NaN, + NaN + ], + "height_elem": null, + "inDir": "s3://null", + "input_map_output": [ + 4, + 5, + 0, + 1, + 3, + 7, + 2, + 6 + ], + "keyValue": 12, + "lapseGrid": null, + "lwBiasCorrectOpt": 0, + "ndv": null, + "netcdf_var_names": [ + "TMP_2maboveground", + "SPFH_2maboveground", + "UGRD_10maboveground", + "VGRD_10maboveground", + "APCP_surface", + "DSWRF_surface", + "DLWRF_surface", + "PRES_surface" + ], + "nwmPRISM_denGrid": null, + "nwmPRISM_numGrid": null, + "nx_global": null, + "nx_local": null, + "nx_local_corner": null, + "ny_global": null, + "ny_local": null, + "ny_local_corner": null, + "outFreq": null, + "paramDir": "/ngen-app/data", + "precipBiasCorrectOpt": 0, + "precipDownscaleOpt": 0, + "product_name": "AORC", + "psfcBiasCorrectOpt": 0, + "psfcDownscaleOpt": 0, + "psfcTmp": null, + "psfcTmp_elem": null, + "q2dBiasCorrectOpt": 0, + "q2dDownscaleOpt": 0, + "regridComplete": false, + "regridObj": null, + "regridObj_elem": null, + "regridOpt": 1, + "regrid_map": { + "1": "regrid_conus_rap", + "10": "regrid_custom_hourly_netcdf", + "11": "regrid_custom_hourly_netcdf", + "12": "regrid_custom_hourly_netcdf", + "13": "regrid_nam_nest", + "14": "regrid_nam_nest", + "15": "regrid_nam_nest", + "16": "regrid_nam_nest", + "17": "regrid_nam_nest", + "18": "regrid_hourly_wrf_arw", + "19": "regrid_conus_hrrr", + "20": "regrid_conus_hrrr", + "21": "regrid_custom_hourly_netcdf", + "22": "regrid_conus_hrrr", + "23": "regrid_era5", + "24": "regrid_hourly_nbm", + "25": "regrid_ndfd", + "26": "regrid_conus_hrrr", + "27": "regrid_nwm", + "3": "regrid_gfs", + "5": "regrid_conus_hrrr", + "6": "regrid_conus_rap", + "7": "regrid_cfsv2", + "8": "regrid_hourly_wrf_arw", + "9": "regrid_gfs" + }, + "regridded_forcings1": null, + "regridded_forcings1_elem": null, + "regridded_forcings2": null, + "regridded_forcings2_elem": null, + "regridded_mask": [ + NaN, + NaN, + NaN + ], + "regridded_mask_AORC": [ + NaN, + NaN, + NaN + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null, + "rqiClimoGrid": null, + "rstFlag": 0, + "skip": false, + "swBiasCorrectOpt": 0, + "swDowscaleOpt": 0, + "t2dBiasCorrectOpt": 0, + "t2dDownscaleOpt": 0, + "t2dTmp": null, + "t2dTmp_elem": null, + "temporal_interpolate_inputs_map": { + "0": "no_interpolation", + "1": "nearest_neighbor", + "2": "weighted_average" + }, + "timeInterpOpt": 0, + "tmpFile": null, + "tmpFileHeight": null, + "userCycleOffset": 0, + "userFcstHorizon": 4260, + "windBiasCorrectOpt": 0, + "x_lower_bound": null, + "x_lower_bound_corner": null, + "x_upper_bound": null, + "x_upper_bound_corner": null, + "y_lower_bound": null, + "y_lower_bound_corner": null, + "y_upper_bound": null, + "y_upper_bound_corner": null +} \ No newline at end of file From 39d444357162d108ad5d945b10560ebb616cee53 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Sat, 28 Mar 2026 13:14:22 -0500 Subject: [PATCH 16/34] replace remaning np.empty with np.full --- .../core/forcingInputMod.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py index e42d5a90..ea1a50cf 100755 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py @@ -1101,33 +1101,33 @@ def init_dict( # temporary temperature arrays that are un-downscaled. if input_dict[force_key].q2dDownscaleOpt > 0: if config_options.grid_type == "gridded": - input_dict[force_key].t2dTmp = np.empty( + input_dict[force_key].t2dTmp = np.full( [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], - np.float32, + np.nan, ) - input_dict[force_key].psfcTmp = np.empty( + input_dict[force_key].psfcTmp = np.full( [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], - np.float32, + np.nan, ) elif config_options.grid_type == "unstructured": - input_dict[force_key].t2dTmp = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].t2dTmp = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].psfcTmp = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].psfcTmp = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].t2dTmp_elem = np.empty( - [geo_meta_wrf_hydro.ny_local_elem], np.float32 + input_dict[force_key].t2dTmp_elem = np.full( + [geo_meta_wrf_hydro.ny_local_elem], np.nan ) - input_dict[force_key].psfcTmp_elem = np.empty( - [geo_meta_wrf_hydro.ny_local_elem], np.float32 + input_dict[force_key].psfcTmp_elem = np.full( + [geo_meta_wrf_hydro.ny_local_elem], np.nan ) elif config_options.grid_type == "hydrofabric": - input_dict[force_key].t2dTmp = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].t2dTmp = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) - input_dict[force_key].psfcTmp = np.empty( - [geo_meta_wrf_hydro.ny_local], np.float32 + input_dict[force_key].psfcTmp = np.full( + [geo_meta_wrf_hydro.ny_local], np.nan ) # Initialize the local final grid of values. This is represntative # of the local grid for this forcing, for a specific output timesetp. From 105a75634192938fd0743d3e08def05abb82f166 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Mon, 30 Mar 2026 10:42:34 -0500 Subject: [PATCH 17/34] fix ewts acronym in tests readme. --- tests/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/README.md b/tests/README.md index 5e9b261e..4f14871b 100644 --- a/tests/README.md +++ b/tests/README.md @@ -10,9 +10,9 @@ using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. The test suite is organized into the following modules: - **`esmf_regrid/`** - Tests for ESMF regridding functionality -- **`geomod/`** - Tests for geographic modeling components +- **`geomod/`** - Tests for geomod components - **`input_forcing/`** - Tests for input forcing data processing -- **`nextgen_forcings_ewts/`** - Tests for EWTS (Early Warning Tactical System) forcings +- **`nextgen_forcings_ewts/`** - Tests for EWTS (Error, Warning, and Trapping System) forcings - **`test_utils.py`** - Shared test utilities and fixtures - **`conftest.py`** - Pytest configuration and shared fixtures From e051b17769db8a01db486d285371b83ac4c67e38 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Mon, 30 Mar 2026 11:53:57 -0500 Subject: [PATCH 18/34] mention inthe readme that tests should be ran in dev container --- tests/README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/README.md b/tests/README.md index 4f14871b..f1c71a41 100644 --- a/tests/README.md +++ b/tests/README.md @@ -17,17 +17,20 @@ The test suite is organized into the following modules: - **`conftest.py`** - Pytest configuration and shared fixtures ## Prerequisites +### Setup requirements: + 1. Create the forcing config.yml files using RTE. + 2. Enter the RTE devcontainer. ### Required Dependencies -The test suite requires Python 3.11 or higher. Install the package with test dependencies: +The test suite requires Python 3.11 or higher. Install the package with test dependencies inside of the dev container: ```bash # From the repository root directory pip install -e ".[develop]" ``` -Or install pytest directly: +Or install pytest directly inside of the dev container: ```bash pip install pytest @@ -35,7 +38,7 @@ pip install pytest ### Additional Requirements -Ensure all main package dependencies are installed. From the repository root: +Ensure all main package dependencies are installed inside of the devconatiner (this typically should happen when the dev conatiner is built): ```bash pip install -e . @@ -43,13 +46,13 @@ pip install -e . ## Running Tests -### Run All Tests +### Run All Tests From the Dev Container ```bash Single processor: (cd src/ngen-forcing && pytest ) Multiple processors: ( cd src/ngen-forcing && mpirun -n 2 pytest ) ``` -### Run Specific Test Modules +### Run Specific Test Modules From the Dev Container Run tests for a specific module: From 8199b9a35e78763e950085bd1328b3d904d5665b Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Mon, 30 Mar 2026 15:56:55 -0500 Subject: [PATCH 19/34] revert geometa naming --- tests/esmf_regrid/test_esmf_regrid.py | 6 ++---- tests/test_utils.py | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/esmf_regrid/test_esmf_regrid.py b/tests/esmf_regrid/test_esmf_regrid.py index 358512f1..287499ab 100644 --- a/tests/esmf_regrid/test_esmf_regrid.py +++ b/tests/esmf_regrid/test_esmf_regrid.py @@ -27,7 +27,7 @@ RETRO_FORCING_CONFIG_FILE__AORC_CONUS = ( "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Input/forcing_config/aorc_config.yml" ) -FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" +FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/Input/forcing_config/short_range_config.yml" ### These are output arrays which can contain extra unused elements which need to be removed during an equality check. @@ -61,9 +61,7 @@ ### While the InputForcings class instance is the primary source of test results data, ### this is used to add supplemental attributes to the results data, ### for example "element_ids" (for hydrofabric discretization, these are catchment IDs). -EXTRA_ATTRS: tuple[ClassAttrFetcher] = ( - ClassAttrFetcher("wrf_hydro_geo_meta", "element_ids"), -) +EXTRA_ATTRS: tuple[ClassAttrFetcher] = (ClassAttrFetcher("geo_meta", "element_ids"),) COMPOSITE_KEYS_TO_CHECK: tuple[str] = REGRID_KEYS_TO_CHECK + tuple( _.results_key_name for _ in EXTRA_ATTRS diff --git a/tests/test_utils.py b/tests/test_utils.py index e80b8a83..a25d1ef9 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -589,7 +589,7 @@ def run_regrid(self, arg1: typing.Any) -> None: self.regrid_func( arg1, config_options=self.config_options, - geo_meta=self.geo_meta, + wrf_hydro_geo_meta=self.geo_meta, mpi_config=self.mpi_config, ) logging.info(f"Done calling regrid function: {self.regrid_func.__name__}") From 269dee1d52fd30723d4cffa56e5d3a1a122d65f9 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 09:45:24 -0500 Subject: [PATCH 20/34] fix map_old_to_new_var_names logic --- tests/conftest.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 04eca8b0..891ca676 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -110,10 +110,11 @@ def bmi_forcing_fixture_geomod( def pytest_addoption(parser): + """Add command line options to pytest.""" parser.addoption( "--map_old_to_new_var_names", action="store", - dest="map_old_to_new_var_names", + default=True, help="Argument to specify if old variables names should be mapped to new variable names.", ) @@ -146,8 +147,8 @@ def bmi_forcing_fixture_input_forcing( geogrid=None, output_path=None, ) - map_old_to_new_var_names = request.config.getoption("map_old_to_new_var_names") - if map_old_to_new_var_names is None: + map_old_to_new_var_names = request.config.getoption("--map_old_to_new_var_names") + if map_old_to_new_var_names == "True": map_old_to_new_var_names = True elif map_old_to_new_var_names == "False": map_old_to_new_var_names = False From 584c02129ef6078ede48ccdbc9f3de83d6d5808c Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 09:46:02 -0500 Subject: [PATCH 21/34] update readme to be more verbose about the initial expected data setup. --- tests/README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tests/README.md b/tests/README.md index f1c71a41..c4e00758 100644 --- a/tests/README.md +++ b/tests/README.md @@ -2,9 +2,31 @@ This directory contains tests for the NextGen Forcing BMI Engine. +## Initial test data + +Tests data is included in the `test_data` directory and includes configs, gpkgs, esmf_meshes, expected results and actual results. While the configs, gpkgs, esmf_meshes and expectd results are included in the repo and can be used as is, the following steps can be taken to re-create these test inputs. + +--- The initial test data was generated using RTE to create a calibration realization for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. + +More specifically the initial expected test data was developed with these specific configurations in config_bash.rc. +``` +REPO_TAG_FCST_MGR="856fc0e1201076df909e56c7cd384f58e82965a2" +REPO_TAG_MSW_MGR="693c206a22b5e9ffcca3103166c0ca59e2b11b25" +REPO_TAG_CAL_MGR="7e56bf01477ea77e72dfb25a166ac26ff6090ecb" +REPO_TAG_NGEN_FORCING="LOCAL" +NGEN_SOURCE_MODE="ghcr" +NGEN_BASE__REMOTE_GHCR_TAG="844c5f6" +``` + +And these two commands in RTE's `run_suite.sh`: +```bash +docker_run python "/ngen-app/bin/bin_mounted/run_calibration.py" -n 2 -fsrc "aorc" -start "2013-07-01 00:00:00" -dur 3 + +docker_run python "/ngen-app/bin/bin_mounted/run_forecast.py" -fconfig "short_range" -dt "2025-07-10 04:00:00" -rname "fcst_run1_short_range" +``` ## Test Structure The test suite is organized into the following modules: @@ -85,8 +107,9 @@ Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DA Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/input_forcing) ``` -In the rare case where you want to create new `expected` data and run the tests using `old` variable names use the following: +In the rare case where you want to create new `expected` data and run the tests using `old` variable names use the following for `Input Forcing Tests`: ```bash +# Input forcing tests Single processor: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true pytest tests/input_forcing --map_old_to_new_var_names False) Multiple processors: ( cd src/ngen-forcing && FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA=true mpirun -n 2 pytest tests/input_forcing --map_old_to_new_var_names False) ``` From 026d78b5674081b3ccdef3c95751cab2663a19f2 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 09:46:35 -0500 Subject: [PATCH 22/34] add type hints --- tests/test_utils.py | 50 +++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index a25d1ef9..76750244 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -45,9 +45,8 @@ OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" -def convert_functions_to_strings(d): - """Convert functions in a nexted dictionary to strings.""" - INPUT_FORCING_CONSTS["REGRID_MAP"] +def convert_functions_to_strings(d: dict) -> dict: + """Convert functions in a nested dictionary to strings.""" for key, value in d.items(): if isinstance(value, dict): # Recursively call the function for nested dictionaries @@ -63,7 +62,7 @@ def convert_functions_to_strings(d): return d -def convert_long_lists(data, max_length=None): +def convert_long_lists(data: typing.Any, max_length: int = 10) -> typing.Any: """Recursively iterate over a nested data dictionary and convert all lists longer than max_length to a hash. Args: @@ -168,7 +167,7 @@ class BMIForcingFixture: For example usage, see: tests/esmf_regrid/test_esmf_regrid.test_regrid. """ - def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model): + def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model) -> None: """Initialize BMIForcingFixture.""" self.bmi_model: NWMv3_Forcing_Engine_BMI_model = bmi_model self.mpi_config: MpiConfig = bmi_model._mpi_meta @@ -178,21 +177,21 @@ def __init__(self, bmi_model: NWMv3_Forcing_Engine_BMI_model): class BMIForcingFixture_Class(BMIForcingFixture): - """Test fixture for GeoMod tests. Writers of geomod tests should use this class as the basis for their test fixtures, and call the methods in the order specified in the docstring of __init__(). This is enforced by state attributes.""" + """Test fixture for Class-based tests.""" def __init__( self, bmi_model: NWMv3_Forcing_Engine_BMI_model, keys_to_check: tuple[str] = (), map_old_to_new_var_names: bool = True, - ): - """Initialize BMIForcingFixture_GeoMod. Writers of geomod tests must call the methods in this order. This is enforced by state attributes. + ) -> None: + """Initialize BMIForcingFixture_Class. Args: ---- bmi_model: The BMI model to be used in the test fixture keys_to_check: The keys to check - + map_old_to_new_var_names: Whether to map old variable names to new variable names in the expected results data, which is needed when updating the test expected outputs dataset but should be false for regular test runs. """ super().__init__(bmi_model=bmi_model) @@ -223,15 +222,14 @@ def deserial_actual( ) return deserial_actual - def write_json(self, dictionary_to_write: dict, json_path: str): + def write_json(self, dictionary_to_write: dict, json_path: str) -> None: """Write the deserialized results to a JSON file.""" json_str = serialize_to_json(dictionary_to_write, sort_keys=True) with open(json_path, "w") as f: f.write(json_str) def deserial_expected(self, suffix: str, current_output_step: str = "") -> dict: - """Get the expected metadata results as a deserialized dictioanry.""" - ### NOTE this should be rarely used, only when updating the test expected outputs dataset + """Get the expected metadata results as a deserialized dictionary.""" file_path = self.expected_results_file_path(suffix, current_output_step) if os.environ.get(OS_VAR__CREATE_TEST_EXPECT_DATA, "").lower() == "true": @@ -243,6 +241,10 @@ def deserial_expected(self, suffix: str, current_output_step: str = "") -> dict: ) with open(file_path, "w") as f: f.write(serialize_to_json(deserial_expected, sort_keys=True)) + if self.map_old_to_new_var_names: + deserial_expected = self.map_old_to_new_variable_names( + deserial_expected + ) return deserial_expected else: try: @@ -269,14 +271,14 @@ def map_old_to_new_variable_names(self, data: dict) -> dict: data_new_keys[key] = val return data_new_keys - def after_intitialization_check(self): + def after_intitialization_check(self) -> None: """Run checks after initialization but before any run has been called. This is useful for checking the state of the model immediately after initialization, before any updates have occurred. """ self.compare(self.deserial_actual("init"), self.deserial_expected("init")) - def compare(self, actual: dict, expected: dict): + def compare(self, actual: dict, expected: dict) -> None: """Compare actual vs expected results.""" try: assert_equal_with_tol( @@ -288,7 +290,7 @@ def compare(self, actual: dict, expected: dict): ) from e @property - def test_class_as_dict(self): + def test_class_as_dict(self) -> dict: """Get the attributes of the test class as a dictionary, where the keys are the attribute names and the values are the attribute values. This is useful for serializing the test class to JSON for comparison against expected results. @@ -302,7 +304,7 @@ def test_class_as_dict(self): data[key] = val return data - def after_bmi_model_update(self, current_output_step: int): + def after_bmi_model_update(self, current_output_step: int) -> None: """Run checks after bmi_model.update() has been called. Args: @@ -315,7 +317,7 @@ def after_bmi_model_update(self, current_output_step: int): self.deserial_expected("after_update", f"_step_{current_output_step}"), ) - def after_finalize(self): + def after_finalize(self) -> None: """Run checks after bmi_model.finalize() has been called.""" self.compare( self.deserial_actual("finalize"), self.deserial_expected("finalize") @@ -335,14 +337,14 @@ def expected_results_file_path( class BMIForcingFixture_GeoMod(BMIForcingFixture_Class): - """Test fixture for GeoMod tests. Writers of geomod tests should use this class as the basis for their test fixtures, and call the methods in the order specified in the docstring of __init__(). This is enforced by state attributes.""" + """Test fixture for GeoMod tests.""" def __init__( self, bmi_model: NWMv3_Forcing_Engine_BMI_model, keys_to_check: tuple = (), - ): - """Initialize BMIForcingFixture_GeoMod. Writers of geomod tests must call the methods in this order. This is enforced by state attributes. + ) -> None: + """Initialize BMIForcingFixture_GeoMod. Args: ---- @@ -360,7 +362,7 @@ def __init__( class BMIForcingFixture_InputForcing(BMIForcingFixture_Class): - """Test fixture for InputForcing tests. Writers of input forcing tests should use this class as the basis for their test fixtures, and call the methods in the order specified in the docstring of __init__(). This is enforced by state attributes.""" + """Test fixture for InputForcing tests.""" def __init__( self, @@ -368,8 +370,8 @@ def __init__( keys_to_check: tuple = (), force_key: int = None, map_old_to_new_var_names: bool = True, - ): - """Initialize BMIForcingFixture_InputForcing. Writers of input forcing tests must call the methods in this order. This is enforced by state attributes. + ) -> None: + """Initialize BMIForcingFixture_InputForcing. Args: ---- @@ -398,7 +400,7 @@ def __init__( extra_attrs: tuple[ClassAttrFetcher], regrid_arrays_to_trim_extra_elements: tuple[str], keys_to_check: tuple[str], - ): + ) -> None: """Writers of regrid tests must call the methods in this order. This is enforced by state attributes. self.pre_regrid() From 74e3b344b0610ce097f75ac01e51465a63c5ee40 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 09:47:05 -0500 Subject: [PATCH 23/34] change config locations to test dir --- tests/esmf_regrid/test_esmf_regrid.py | 4 +- tests/geomod/test_geomod.py | 5 +- tests/input_forcing/test_input_forcing.py | 5 +- tests/test_data/configs/aorc_config.yml | 63 +++++++++++++++++++ .../test_data/configs/short_range_config.yml | 63 +++++++++++++++++++ 5 files changed, 132 insertions(+), 8 deletions(-) create mode 100644 tests/test_data/configs/aorc_config.yml create mode 100644 tests/test_data/configs/short_range_config.yml diff --git a/tests/esmf_regrid/test_esmf_regrid.py b/tests/esmf_regrid/test_esmf_regrid.py index 287499ab..64e1ce8f 100644 --- a/tests/esmf_regrid/test_esmf_regrid.py +++ b/tests/esmf_regrid/test_esmf_regrid.py @@ -25,9 +25,9 @@ RETRO_FORCING_CONFIG_FILE__AORC_CONUS = ( - "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Input/forcing_config/aorc_config.yml" + "/workspaces/nwm-rte/src/ngen-forcing/tests/test_data/configs/aorc_config.yml" ) -FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/Input/forcing_config/short_range_config.yml" +FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/workspaces/nwm-rte/src/ngen-forcing/tests/test_data/configs/short_range_config.yml" ### These are output arrays which can contain extra unused elements which need to be removed during an equality check. diff --git a/tests/geomod/test_geomod.py b/tests/geomod/test_geomod.py index 2716f062..a164b23d 100644 --- a/tests/geomod/test_geomod.py +++ b/tests/geomod/test_geomod.py @@ -17,10 +17,9 @@ RETRO_FORCING_CONFIG_FILE__AORC_CONUS = ( - "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Input/forcing_config/aorc_config.yml" + "/workspaces/nwm-rte/src/ngen-forcing/tests/test_data/configs/aorc_config.yml" ) -FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" - +FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/workspaces/nwm-rte/src/ngen-forcing/tests/test_data/configs/short_range_config.yml" COMPOSITE_KEYS_TO_CHECK = () GRID_TYPE = "hydrofabric" # ["gridded","hydrofabric","unstructured"] diff --git a/tests/input_forcing/test_input_forcing.py b/tests/input_forcing/test_input_forcing.py index 17bb3bd5..4da01d16 100644 --- a/tests/input_forcing/test_input_forcing.py +++ b/tests/input_forcing/test_input_forcing.py @@ -17,10 +17,9 @@ RETRO_FORCING_CONFIG_FILE__AORC_CONUS = ( - "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Input/forcing_config/aorc_config.yml" + "/workspaces/nwm-rte/src/ngen-forcing/tests/test_data/configs/aorc_config.yml" ) -FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/ngwpc/run_ngen/kge_dds/test_bmi/01123000/Output/Forecast_Run/fcst_run1_short_range/forcing_config/short_range_config.yml" - +FORECAST_FORCING_CONFIG_FILE__SHORT_RANGE_CONUS = "/workspaces/nwm-rte/src/ngen-forcing/tests/test_data/configs/short_range_config.yml" COMPOSITE_KEYS_TO_CHECK = () GRID_TYPE = "hydrofabric" # ["gridded","hydrofabric","unstructured"] diff --git a/tests/test_data/configs/aorc_config.yml b/tests/test_data/configs/aorc_config.yml new file mode 100644 index 00000000..7a90f037 --- /dev/null +++ b/tests/test_data/configs/aorc_config.yml @@ -0,0 +1,63 @@ +time_step_seconds: 3600 +initial_time: 0 +NWM_VERSION: 4.0 +NWM_CONFIG: AORC +InputForcings: [12] +InputForcingDirectories: ['s3://null'] +InputForcingTypes: [GRIB2] +InputMandatory: [0] +OutputFrequency: 60 +SubOutputHour: 0 +SubOutFreq: 0 +ScratchDir: /ngen-app/data/scratch/AORC/ +Output: 0 +compressOutput: 0 +floatOutput: 0 +AnAFlag: 0 +LookBack: -9999 +RefcstBDateProc: '201307010000' +ForecastFrequency: 60 +ForecastShift: 0 +ForecastInputHorizons: [4260] +ForecastInputOffsets: [0] +Geopackage: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/gpkg/gauge_01123000.gpkg +GeogridIn: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/esmf_mesh/4aaa1d802bdf9640_gauge_01123000_ESMF_Mesh.nc +SpatialMetaIn: '' +GRID_TYPE: hydrofabric +NodeCoords: nodeCoords +ElemCoords: centerCoords +ElemConn: elementConn +ElemID: element_id +NumElemConn: numElementConn +HGTVAR: Element_Elevation +SLOPE: Element_Slope +SLOPE_AZIMUTH: Element_Slope_Azmuith +IgnoredBorderWidths: [0] +RegridOpt: [1] +ForcingTemporalInterpolation: [0] +TemperatureBiasCorrection: [0] +PressureBiasCorrection: [0] +HumidityBiasCorrection: [0] +WindBiasCorrection: [0] +SwBiasCorrection: [0] +LwBiasCorrection: [0] +PrecipBiasCorrection: [0] +TemperatureDownscaling: [0] +ShortwaveDownscaling: [0] +PressureDownscaling: [0] +PrecipDownscaling: [0] +HumidityDownscaling: [0] +DownscalingParamDirs: [/ngen-app/data] +SuppPcp: [] +SuppPcpForcingTypes: [] +SuppPcpDirectories: [] +SuppPcpParamDir: '' +RegridOptSuppPcp: [] +SuppPcpTemporalInterpolation: [] +SuppPcpInputOffsets: [] +SuppPcpMandatory: [] +RqiMethod: 0 +RqiThreshold: 0.9 +cfsEnsNumber: 1 +custom_input_fcst_freq: [] +includeLQFrac: 1 diff --git a/tests/test_data/configs/short_range_config.yml b/tests/test_data/configs/short_range_config.yml new file mode 100644 index 00000000..d2de9883 --- /dev/null +++ b/tests/test_data/configs/short_range_config.yml @@ -0,0 +1,63 @@ +time_step_seconds: 3600 +initial_time: 0 +NWM_VERSION: 4.0 +NWM_CONFIG: short_range +InputForcings: [6, 5] +InputForcingDirectories: [/ngen-app/data/raw_input/RAP, /ngen-app/data/raw_input/HRRR] +InputForcingTypes: [GRIB2, GRIB2] +InputMandatory: [0, 0] +OutputFrequency: 60 +SubOutputHour: 0 +SubOutFreq: 0 +ScratchDir: /ngen-app/data/scratch/short_range/ +Output: 0 +compressOutput: 0 +floatOutput: 0 +AnAFlag: 0 +LookBack: -9999 +RefcstBDateProc: '202507100400' +ForecastFrequency: 60 +ForecastShift: 0 +ForecastInputHorizons: [1080, 1080] +ForecastInputOffsets: [0, 0] +Geopackage: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/gpkg/gauge_01123000.gpkg +GeogridIn: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/esmf_mesh/4aaa1d802bdf9640_gauge_01123000_ESMF_Mesh.nc +SpatialMetaIn: '' +GRID_TYPE: hydrofabric +NodeCoords: nodeCoords +ElemID: element_id +ElemCoords: centerCoords +ElemConn: elementConn +NumElemConn: numElementConn +HGTVAR: Element_Elevation +SLOPE: Element_Slope +SLOPE_AZIMUTH: Element_Slope_Azmuith +IgnoredBorderWidths: [0, 0] +RegridOpt: [1, 1] +ForcingTemporalInterpolation: [0, 0] +TemperatureBiasCorrection: [0, 0] +PressureBiasCorrection: [0, 0] +HumidityBiasCorrection: [0, 0] +WindBiasCorrection: [0, 0] +SwBiasCorrection: [0, 0] +LwBiasCorrection: [0, 0] +PrecipBiasCorrection: [0, 0] +TemperatureDownscaling: [0, 0] +ShortwaveDownscaling: [0, 0] +PressureDownscaling: [0, 0] +PrecipDownscaling: [0, 0] +HumidityDownscaling: [0, 0] +DownscalingParamDirs: [/ngen-app/data, /ngen-app/data] +SuppPcp: [] +SuppPcpForcingTypes: [] +SuppPcpDirectories: [] +SuppPcpParamDir: /ngen-app/data +RegridOptSuppPcp: [] +SuppPcpTemporalInterpolation: [] +SuppPcpInputOffsets: [] +SuppPcpMandatory: [] +RqiMethod: 0 +RqiThreshold: 0.9 +cfsEnsNumber: '' +custom_input_fcst_freq: [] +includeLQFrac: 1 From 18c02ceca339d04e2d7ef985238225e52e9ce5f3 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 13:10:17 -0500 Subject: [PATCH 24/34] compare dict items and report misaligned items --- .../NextGen_Forcings_Engine/general_utils.py | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py index 99e433ee..07bc33e0 100644 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/general_utils.py @@ -162,11 +162,29 @@ def assert_equal_with_tol( except np.exceptions.DTypePromotionError: errors.append( ValueError( - f"Expected not equal to actual, and could not apply np.allclose. expect={expect}, actual={actual}." + f"Expected not equal to actual, and could not apply np.allclose. key={k}, expect={expect}, actual={actual}." ) ) continue - + except TypeError: + if isinstance(v_expect, (dict, OrderedDict)) and isinstance( + v_actual, (dict, OrderedDict) + ): + keys_not_in_v_actual = set(dict(v_expect)) - set(dict(v_actual)) + keys_in_v_expect_and_v_actual = set(dict(v_expect)) & set( + dict(v_actual) + ) + keys_with_vals_not_matching = [ + key + for key in keys_in_v_expect_and_v_actual + if v_expect[key] != v_actual[key] + ] + errors.append( + ValueError( + f"Expected not equal to actual for key: {k}. Keys not in actual for {k}: {keys_not_in_v_actual} | keys in actual with values not matching expected for {k}: {keys_with_vals_not_matching}" + ) + ) + continue errors.append( ValueError( f"Objects not equal, and numerical tolerances (atol={absolute_tolerance} rtol={relative_tolerance}) exceeded for {k}. {v_expect} vs {v_actual}." From e20bfd08b69659c0d4b281bcb31f759c54a03e15 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 13:31:17 -0500 Subject: [PATCH 25/34] update configs and expected results --- tests/test_data/configs/aorc_config.yml | 2 +- .../test_data/configs/short_range_config.yml | 2 +- .../esmf_mesh/gauge_01123000_ESMF_Mesh.nc | Bin 0 -> 26937 bytes ...tart20130701000000_n1_rank0_timestep0.json | 176 ----- ...tart20130701000000_n1_rank0_timestep1.json | 176 ----- ...tart20130701000000_n1_rank0_timestep2.json | 176 ----- ...tart20130701000000_n2_rank0_timestep0.json | 14 +- ...tart20130701000000_n2_rank0_timestep1.json | 14 +- ...tart20130701000000_n2_rank0_timestep2.json | 14 +- ...tart20130701000000_n2_rank1_timestep0.json | 12 +- ...tart20130701000000_n2_rank1_timestep1.json | 12 +- ...tart20130701000000_n2_rank1_timestep2.json | 12 +- ...tart20250710040000_n1_rank0_timestep0.json | 194 ----- ...tart20250710040000_n1_rank0_timestep1.json | 194 ----- ...tart20250710040000_n1_rank0_timestep2.json | 194 ----- ...tart20250710040000_n2_rank0_timestep0.json | 14 +- ...tart20250710040000_n2_rank0_timestep1.json | 14 +- ...tart20250710040000_n2_rank0_timestep2.json | 14 +- ...tart20250710040000_n2_rank1_timestep0.json | 12 +- ...tart20250710040000_n2_rank1_timestep1.json | 12 +- ...tart20250710040000_n2_rank1_timestep2.json | 12 +- ...tart20250710040000_n1_rank0_timestep0.json | 194 ----- ...tart20250710040000_n1_rank0_timestep1.json | 194 ----- ...tart20250710040000_n1_rank0_timestep2.json | 194 ----- ...tart20250710040000_n2_rank0_timestep0.json | 14 +- ...tart20250710040000_n2_rank0_timestep1.json | 14 +- ...tart20250710040000_n2_rank0_timestep2.json | 14 +- ...tart20250710040000_n2_rank1_timestep0.json | 12 +- ...tart20250710040000_n2_rank1_timestep1.json | 12 +- ...tart20250710040000_n2_rank1_timestep2.json | 12 +- ...t_expected_geomod_after_update_step_1.json | 136 ---- ...t_expected_geomod_after_update_step_2.json | 136 ---- ...t_expected_geomod_after_update_step_3.json | 136 ---- .../test_expected_geomod_finalize.json | 136 ---- .../test_expected_geomod_init.json | 136 ---- ...forcing_after_update_n2_rank0__step_2.json | 2 +- ...forcing_after_update_n2_rank0__step_3.json | 2 +- ...forcing_after_update_n2_rank1__step_2.json | 2 +- ...ted_input_forcing_after_update_step_1.json | 717 ------------------ ...ted_input_forcing_after_update_step_2.json | 717 ------------------ ...ted_input_forcing_after_update_step_3.json | 717 ------------------ .../test_expected_input_forcing_finalize.json | 717 ------------------ ...cted_input_forcing_finalize_n2_rank0_.json | 2 +- .../test_expected_input_forcing_init.json | 292 ------- tests/test_data/gpkg/gauge_01123000.gpkg | 1 + 45 files changed, 124 insertions(+), 5655 deletions(-) create mode 100644 tests/test_data/esmf_mesh/gauge_01123000_ESMF_Mesh.nc delete mode 100644 tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json delete mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json delete mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json delete mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json delete mode 100644 tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json delete mode 100644 tests/test_data/expected_results/test_expected_geomod_finalize.json delete mode 100644 tests/test_data/expected_results/test_expected_geomod_init.json delete mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json delete mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json delete mode 100644 tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json delete mode 100644 tests/test_data/expected_results/test_expected_input_forcing_finalize.json delete mode 100644 tests/test_data/expected_results/test_expected_input_forcing_init.json create mode 120000 tests/test_data/gpkg/gauge_01123000.gpkg diff --git a/tests/test_data/configs/aorc_config.yml b/tests/test_data/configs/aorc_config.yml index 7a90f037..a092ee2c 100644 --- a/tests/test_data/configs/aorc_config.yml +++ b/tests/test_data/configs/aorc_config.yml @@ -21,7 +21,7 @@ ForecastShift: 0 ForecastInputHorizons: [4260] ForecastInputOffsets: [0] Geopackage: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/gpkg/gauge_01123000.gpkg -GeogridIn: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/esmf_mesh/4aaa1d802bdf9640_gauge_01123000_ESMF_Mesh.nc +GeogridIn: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/esmf_mesh/gauge_01123000_ESMF_Mesh.nc SpatialMetaIn: '' GRID_TYPE: hydrofabric NodeCoords: nodeCoords diff --git a/tests/test_data/configs/short_range_config.yml b/tests/test_data/configs/short_range_config.yml index d2de9883..74641cdc 100644 --- a/tests/test_data/configs/short_range_config.yml +++ b/tests/test_data/configs/short_range_config.yml @@ -21,7 +21,7 @@ ForecastShift: 0 ForecastInputHorizons: [1080, 1080] ForecastInputOffsets: [0, 0] Geopackage: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/gpkg/gauge_01123000.gpkg -GeogridIn: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/esmf_mesh/4aaa1d802bdf9640_gauge_01123000_ESMF_Mesh.nc +GeogridIn: /workspaces/nwm-rte/src/ngen-forcing/tests/test_data/esmf_mesh/gauge_01123000_ESMF_Mesh.nc SpatialMetaIn: '' GRID_TYPE: hydrofabric NodeCoords: nodeCoords diff --git a/tests/test_data/esmf_mesh/gauge_01123000_ESMF_Mesh.nc b/tests/test_data/esmf_mesh/gauge_01123000_ESMF_Mesh.nc new file mode 100644 index 0000000000000000000000000000000000000000..8052eb70110f918e40ba4116bb9dbd2c145bec27 GIT binary patch literal 26937 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 BJj?(9 literal 0 HcmV?d00001 diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json deleted file mode 100644 index a6158892..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json deleted file mode 100644 index f3fb6979..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.100000023841858, - 1.0, - 0.8858484625816345, - 0.7788757085800171, - 0.699999988079071, - 0.800000011920929, - 0.9000000357627869 - ], - [ - 3.2642452716827393, - 3.2708349227905273, - 3.2864480018615723, - 3.254810094833374, - 3.299999952316284, - 3.200000047683716, - 3.299999952316284 - ], - [ - 402.1012878417969, - 402.48565673828125, - 402.3548889160156, - 401.989013671875, - 402.19110107421875, - 402.15179443359375, - 401.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 295.295166015625, - 295.3619384765625, - 295.36065673828125, - 295.25482177734375, - 295.3125305175781, - 295.2787170410156, - 295.20001220703125 - ], - [ - 0.016059407964348793, - 0.01599999889731407, - 0.015986448153853416, - 0.01599999889731407, - 0.015975013375282288, - 0.016007820144295692, - 0.01599999889731407 - ], - [ - 99263.8359375, - 99864.2109375, - 99984.1171875, - 99951.0, - 100253.8671875, - 99872.7109375, - 99065.640625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json deleted file mode 100644 index a1a2c408..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.0, - 0.8858484625816345, - 0.7788757085800171, - 0.699999988079071, - 0.800000011920929, - 0.9000000357627869 - ], - [ - 3.2642452716827393, - 3.2708349227905273, - 3.2864480018615723, - 3.254810094833374, - 3.299999952316284, - 3.200000047683716, - 3.299999952316284 - ], - [ - 402.1012878417969, - 402.48565673828125, - 402.3548889160156, - 401.989013671875, - 402.19110107421875, - 402.15179443359375, - 401.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 295.295166015625, - 295.3619384765625, - 295.36065673828125, - 295.25482177734375, - 295.3125305175781, - 295.2787170410156, - 295.20001220703125 - ], - [ - 0.016059407964348793, - 0.01599999889731407, - 0.015986448153853416, - 0.01599999889731407, - 0.015975013375282288, - 0.016007820144295692, - 0.01599999889731407 - ], - [ - 99263.8359375, - 99864.2109375, - 99984.1171875, - 99951.0, - 100253.8671875, - 99872.7109375, - 99065.640625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.0, - 0.9000000357627869, - 0.7116342782974243, - 0.6000000238418579, - 0.6000000238418579, - 0.699999988079071, - 0.800000011920929 - ], - [ - 2.964245080947876, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316 - ], - [ - 392.61285400390625, - 394.7234802246094, - 397.58953857421875, - 399.78857421875, - 400.2782897949219, - 398.3241882324219, - 394.5147705078125 - ], - [ - 7.205791916931048e-05, - 8.333333244081587e-05, - 7.940235082060099e-05, - 8.92011885298416e-05, - 0.00011111111234640703, - 8.333333244081587e-05, - 8.333333244081587e-05 - ], - [ - 294.45458984375, - 294.5556335449219, - 294.5748291015625, - 294.5548095703125, - 294.57501220703125, - 294.5787048339844, - 294.3999938964844 - ], - [ - 0.01549999974668026, - 0.01549999974668026, - 0.015586447902023792, - 0.015599999576807022, - 0.015584511682391167, - 0.015607818961143494, - 0.01549999974668026 - ], - [ - 99363.8359375, - 99970.0390625, - 100085.7265625, - 100059.8515625, - 100370.1171875, - 99988.8984375, - 99170.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep0.json index 7657f877..f056de8f 100644 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep0.json +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep0.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ 1.100000023841858, @@ -112,11 +118,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep1.json index 9233bc7f..9f795e84 100644 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep1.json +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep1.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ 1.100000023841858, @@ -112,11 +118,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep2.json index 543c849c..54df5ec1 100644 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep2.json +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank0_timestep2.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ 1.100000023841858, @@ -112,11 +118,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep0.json index 7a6121d2..e460bb14 100644 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep0.json +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep0.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ 0.800000011920929, @@ -95,10 +100,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep1.json index 056fd276..bb68bd2a 100644 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep1.json +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep1.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ 0.800000011920929, @@ -95,10 +100,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep2.json index 5e46d098..888f8c89 100644 --- a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep2.json +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n2_rank1_timestep2.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ 0.800000011920929, @@ -95,10 +100,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json deleted file mode 100644 index 5ba02848..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "regridded_forcings1": [ - [ - -1.7653571367263794, - -1.7813688516616821, - -1.9473259449005127, - -2.122448444366455, - -2.1877381801605225, - -2.051447868347168, - -1.9433683156967163 - ], - [ - 0.37761572003364563, - 0.6093418002128601, - 0.7808473706245422, - 0.9363001585006714, - 0.9433545470237732, - 0.879269003868103, - 0.6812228560447693 - ], - [ - 421.25439453125, - 421.9554138183594, - 426.3170471191406, - 426.2093505859375, - 423.9610290527344, - 426.78668212890625, - 421.1495666503906 - ], - [ - 2.7497115297592245e-05, - 2.6101832190761343e-05, - 3.6526423627947224e-06, - 4.378602625365602e-06, - 1.9937563138228143e-06, - 2.7777778086601757e-06, - 2.7840289476444013e-05 - ], - [ - 294.7047119140625, - 294.9081115722656, - 295.7233581542969, - 295.8104248046875, - 296.0026550292969, - 295.6952209472656, - 295.033203125 - ], - [ - 0.015552615746855736, - 0.0156692061573267, - 0.015785375609993935, - 0.015971269458532333, - 0.01611531525850296, - 0.015783971175551414, - 0.01575593836605549 - ], - [ - 99378.71875, - 99519.625, - 100042.6796875, - 99980.21875, - 100207.578125, - 99960.25, - 99510.46875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - -1.7653571367263794, - -1.7813688516616821, - -1.9473259449005127, - -2.122448444366455, - -2.1877381801605225, - -2.051447868347168, - -1.9433683156967163 - ], - [ - 0.37761572003364563, - 0.6093418002128601, - 0.7808473706245422, - 0.9363001585006714, - 0.9433545470237732, - 0.879269003868103, - 0.6812228560447693 - ], - [ - 421.25439453125, - 421.9554138183594, - 426.3170471191406, - 426.2093505859375, - 423.9610290527344, - 426.78668212890625, - 421.1495666503906 - ], - [ - 2.7497115297592245e-05, - 2.6101832190761343e-05, - 3.6526423627947224e-06, - 4.378602625365602e-06, - 1.9937563138228143e-06, - 2.7777778086601757e-06, - 2.7840289476444013e-05 - ], - [ - 294.7047119140625, - 294.9081115722656, - 295.7233581542969, - 295.8104248046875, - 296.0026550292969, - 295.6952209472656, - 295.033203125 - ], - [ - 0.015552615746855736, - 0.0156692061573267, - 0.015785375609993935, - 0.015971269458532333, - 0.01611531525850296, - 0.015783971175551414, - 0.01575593836605549 - ], - [ - 99378.71875, - 99519.625, - 100042.6796875, - 99980.21875, - 100207.578125, - 99960.25, - 99510.46875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json deleted file mode 100644 index 586f5a3b..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "regridded_forcings1": [ - [ - -1.7653571367263794, - -1.7813688516616821, - -1.9473259449005127, - -2.122448444366455, - -2.1877381801605225, - -2.051447868347168, - -1.9433683156967163 - ], - [ - 0.37761572003364563, - 0.6093418002128601, - 0.7808473706245422, - 0.9363001585006714, - 0.9433545470237732, - 0.879269003868103, - 0.6812228560447693 - ], - [ - 421.25439453125, - 421.9554138183594, - 426.3170471191406, - 426.2093505859375, - 423.9610290527344, - 426.78668212890625, - 421.1495666503906 - ], - [ - 2.7497115297592245e-05, - 2.6101832190761343e-05, - 3.6526423627947224e-06, - 4.378602625365602e-06, - 1.9937563138228143e-06, - 2.7777778086601757e-06, - 2.7840289476444013e-05 - ], - [ - 294.7047119140625, - 294.9081115722656, - 295.7233581542969, - 295.8104248046875, - 296.0026550292969, - 295.6952209472656, - 295.033203125 - ], - [ - 0.015552615746855736, - 0.0156692061573267, - 0.015785375609993935, - 0.015971269458532333, - 0.01611531525850296, - 0.015783971175551414, - 0.01575593836605549 - ], - [ - 99378.71875, - 99519.625, - 100042.6796875, - 99980.21875, - 100207.578125, - 99960.25, - 99510.46875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - -2.3971173763275146, - -2.4549295902252197, - -2.447478771209717, - -2.776758909225464, - -2.794367551803589, - -2.5377018451690674, - -2.4731669425964355 - ], - [ - -0.2326820194721222, - -0.2735777199268341, - -0.5727046132087708, - -0.40471047163009644, - -0.31395119428634644, - -0.45896676182746887, - -0.35381215810775757 - ], - [ - 419.67388916015625, - 418.1239318847656, - 412.8692626953125, - 411.36370849609375, - 408.447021484375, - 412.05157470703125, - 417.416748046875 - ], - [ - 2.18665377360594e-06, - 1.5546942222499638e-06, - 1.938255309141823e-06, - 2.062139856207068e-06, - 1.9979931948910234e-06, - 2.0582767774612876e-06, - 2.193636646552477e-06 - ], - [ - 294.59918212890625, - 294.7616882324219, - 295.3424987792969, - 295.32720947265625, - 295.4965515136719, - 295.2781982421875, - 294.80938720703125 - ], - [ - 0.015263444744050503, - 0.015263168141245842, - 0.015189144760370255, - 0.015351217240095139, - 0.01549456175416708, - 0.015150442719459534, - 0.015340224839746952 - ], - [ - 99178.71875, - 99317.1484375, - 99849.609375, - 99789.71875, - 100023.7578125, - 99764.546875, - 99307.78125 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json deleted file mode 100644 index 8ab153a0..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "regridded_forcings1": [ - [ - -2.3971173763275146, - -2.4549295902252197, - -2.447478771209717, - -2.776758909225464, - -2.794367551803589, - -2.5377018451690674, - -2.4731669425964355 - ], - [ - -0.2326820194721222, - -0.2735777199268341, - -0.5727046132087708, - -0.40471047163009644, - -0.31395119428634644, - -0.45896676182746887, - -0.35381215810775757 - ], - [ - 419.67388916015625, - 418.1239318847656, - 412.8692626953125, - 411.36370849609375, - 408.447021484375, - 412.05157470703125, - 417.416748046875 - ], - [ - 2.18665377360594e-06, - 1.5546942222499638e-06, - 1.938255309141823e-06, - 2.062139856207068e-06, - 1.9979931948910234e-06, - 2.0582767774612876e-06, - 2.193636646552477e-06 - ], - [ - 294.59918212890625, - 294.7616882324219, - 295.3424987792969, - 295.32720947265625, - 295.4965515136719, - 295.2781982421875, - 294.80938720703125 - ], - [ - 0.015263444744050503, - 0.015263168141245842, - 0.015189144760370255, - 0.015351217240095139, - 0.01549456175416708, - 0.015150442719459534, - 0.015340224839746952 - ], - [ - 99178.71875, - 99317.1484375, - 99849.609375, - 99789.71875, - 100023.7578125, - 99764.546875, - 99307.78125 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - -0.9304860234260559, - -0.8653901815414429, - -0.6647673845291138, - -0.8896331787109375, - -0.8656437397003174, - -0.8763288259506226, - -0.8475791215896606 - ], - [ - 2.1829943656921387, - 2.0918540954589844, - 2.00388240814209, - 2.4230616092681885, - 2.408148765563965, - 2.2607357501983643, - 2.0659055709838867 - ], - [ - 408.538330078125, - 407.3630065917969, - 410.9564208984375, - 417.2548828125, - 420.71685791015625, - 412.54022216796875, - 409.5802307128906 - ], - [ - 2.7922893423237838e-05, - 3.79949742637109e-05, - 5.5563548812642694e-05, - 4.795566565007903e-05, - 5.023311314289458e-05, - 4.093398820259608e-05, - 4.840279871132225e-05 - ], - [ - 294.3285217285156, - 294.40936279296875, - 294.9421081542969, - 295.02569580078125, - 295.273193359375, - 294.94293212890625, - 294.48211669921875 - ], - [ - 0.015064304694533348, - 0.01509331539273262, - 0.01529759168624878, - 0.01558045856654644, - 0.015710603445768356, - 0.01538012083619833, - 0.015133729204535484 - ], - [ - 99353.6328125, - 99489.625, - 100012.453125, - 99960.21875, - 100194.4921875, - 99934.3515625, - 99480.46875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep0.json index f8fa395e..8804fe93 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep0.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep0.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ -1.7653571367263794, @@ -124,11 +130,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep1.json index c32ab4c8..396d9039 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep1.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep1.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ -1.7653571367263794, @@ -124,11 +130,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep2.json index 81a3c24b..1de9a389 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep2.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank0_timestep2.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ -2.3971173763275146, @@ -124,11 +130,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep0.json index 84987eca..84a88379 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep0.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep0.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ -2.1877381801605225, @@ -105,10 +110,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep1.json index e51e0077..b3404c7c 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep1.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep1.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ -2.1877381801605225, @@ -105,10 +110,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep2.json index 030af749..0dbd57cb 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep2.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n2_rank1_timestep2.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ -2.794367551803589, @@ -105,10 +110,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json deleted file mode 100644 index 402295be..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "regridded_forcings1": [ - [ - -1.0761322975158691, - -1.0974467992782593, - -1.1459846496582031, - -1.1806118488311768, - -1.223454236984253, - -1.1495691537857056, - -1.1114667654037476 - ], - [ - 1.3918956518173218, - 1.3974019289016724, - 1.3934526443481445, - 1.3804599046707153, - 1.3291858434677124, - 1.3688502311706543, - 1.4323310852050781 - ], - [ - 427.5171813964844, - 427.7338562011719, - 427.3787536621094, - 426.5926513671875, - 424.88232421875, - 426.71649169921875, - 428.2303771972656 - ], - [ - 6.700232916045934e-05, - 7.082190131768584e-05, - 7.916617323644459e-05, - 8.387938578380272e-05, - 9.288718865718693e-05, - 6.936289719305933e-05, - 8.963922300608829e-05 - ], - [ - 295.4785461425781, - 295.65411376953125, - 295.9064636230469, - 296.1391906738281, - 296.1512451171875, - 295.9896240234375, - 295.7182312011719 - ], - [ - 0.016321562230587006, - 0.01640212908387184, - 0.016480250284075737, - 0.016555828973650932, - 0.01657135784626007, - 0.01648532971739769, - 0.016461333259940147 - ], - [ - 99626.640625, - 99770.1953125, - 99997.09375, - 100212.1484375, - 100239.765625, - 100102.7109375, - 99778.9453125 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - -1.0761322975158691, - -1.0974467992782593, - -1.1459846496582031, - -1.1806118488311768, - -1.223454236984253, - -1.1495691537857056, - -1.1114667654037476 - ], - [ - 1.3918956518173218, - 1.3974019289016724, - 1.3934526443481445, - 1.3804599046707153, - 1.3291858434677124, - 1.3688502311706543, - 1.4323310852050781 - ], - [ - 427.5171813964844, - 427.7338562011719, - 427.3787536621094, - 426.5926513671875, - 424.88232421875, - 426.71649169921875, - 428.2303771972656 - ], - [ - 6.700232916045934e-05, - 7.082190131768584e-05, - 7.916617323644459e-05, - 8.387938578380272e-05, - 9.288718865718693e-05, - 6.936289719305933e-05, - 8.963922300608829e-05 - ], - [ - 295.4785461425781, - 295.65411376953125, - 295.9064636230469, - 296.1391906738281, - 296.1512451171875, - 295.9896240234375, - 295.7182312011719 - ], - [ - 0.016321562230587006, - 0.01640212908387184, - 0.016480250284075737, - 0.016555828973650932, - 0.01657135784626007, - 0.01648532971739769, - 0.016461333259940147 - ], - [ - 99626.640625, - 99770.1953125, - 99997.09375, - 100212.1484375, - 100239.765625, - 100102.7109375, - 99778.9453125 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json deleted file mode 100644 index 694e399d..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "regridded_forcings1": [ - [ - -1.0761322975158691, - -1.0974467992782593, - -1.1459846496582031, - -1.1806118488311768, - -1.223454236984253, - -1.1495691537857056, - -1.1114667654037476 - ], - [ - 1.3918956518173218, - 1.3974019289016724, - 1.3934526443481445, - 1.3804599046707153, - 1.3291858434677124, - 1.3688502311706543, - 1.4323310852050781 - ], - [ - 427.5171813964844, - 427.7338562011719, - 427.3787536621094, - 426.5926513671875, - 424.88232421875, - 426.71649169921875, - 428.2303771972656 - ], - [ - 6.700232916045934e-05, - 7.082190131768584e-05, - 7.916617323644459e-05, - 8.387938578380272e-05, - 9.288718865718693e-05, - 6.936289719305933e-05, - 8.963922300608829e-05 - ], - [ - 295.4785461425781, - 295.65411376953125, - 295.9064636230469, - 296.1391906738281, - 296.1512451171875, - 295.9896240234375, - 295.7182312011719 - ], - [ - 0.016321562230587006, - 0.01640212908387184, - 0.016480250284075737, - 0.016555828973650932, - 0.01657135784626007, - 0.01648532971739769, - 0.016461333259940147 - ], - [ - 99626.640625, - 99770.1953125, - 99997.09375, - 100212.1484375, - 100239.765625, - 100102.7109375, - 99778.9453125 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - -1.068263053894043, - -1.0685670375823975, - -1.0789318084716797, - -1.0849263668060303, - -1.1119216680526733, - -1.084563136100769, - -1.0583709478378296 - ], - [ - 0.6822294592857361, - 0.7289265394210815, - 0.756970226764679, - 0.7777915596961975, - 0.7614363431930542, - 0.733332097530365, - 0.7896708846092224 - ], - [ - 420.2391662597656, - 419.52593994140625, - 418.55462646484375, - 417.3071594238281, - 417.33074951171875, - 418.093017578125, - 419.0323181152344 - ], - [ - 0.00012460591096896678, - 0.00013003931962884963, - 0.0001419243199052289, - 0.00015705759869888425, - 0.00015265561523847282, - 0.00014819808711763471, - 0.0001354165724478662 - ], - [ - 295.5354919433594, - 295.6622314453125, - 295.81488037109375, - 295.9495849609375, - 295.9639892578125, - 295.8546142578125, - 295.7101745605469 - ], - [ - 0.016352202743291855, - 0.016402678564190865, - 0.016432903707027435, - 0.016464166343212128, - 0.016467083245515823, - 0.01642734371125698, - 0.0164420735090971 - ], - [ - 99622.25, - 99775.7265625, - 100026.28125, - 100255.4296875, - 100295.7265625, - 100129.203125, - 99796.5390625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json deleted file mode 100644 index f8cd1334..00000000 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "regridded_forcings1": [ - [ - -1.068263053894043, - -1.0685670375823975, - -1.0789318084716797, - -1.0849263668060303, - -1.1119216680526733, - -1.084563136100769, - -1.0583709478378296 - ], - [ - 0.6822294592857361, - 0.7289265394210815, - 0.756970226764679, - 0.7777915596961975, - 0.7614363431930542, - 0.733332097530365, - 0.7896708846092224 - ], - [ - 420.2391662597656, - 419.52593994140625, - 418.55462646484375, - 417.3071594238281, - 417.33074951171875, - 418.093017578125, - 419.0323181152344 - ], - [ - 0.00012460591096896678, - 0.00013003931962884963, - 0.0001419243199052289, - 0.00015705759869888425, - 0.00015265561523847282, - 0.00014819808711763471, - 0.0001354165724478662 - ], - [ - 295.5354919433594, - 295.6622314453125, - 295.81488037109375, - 295.9495849609375, - 295.9639892578125, - 295.8546142578125, - 295.7101745605469 - ], - [ - 0.016352202743291855, - 0.016402678564190865, - 0.016432903707027435, - 0.016464166343212128, - 0.016467083245515823, - 0.01642734371125698, - 0.0164420735090971 - ], - [ - 99622.25, - 99775.7265625, - 100026.28125, - 100255.4296875, - 100295.7265625, - 100129.203125, - 99796.5390625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - -0.2611607313156128, - -0.2051878571510315, - -0.17124134302139282, - -0.12973558902740479, - -0.17438896000385284, - -0.1340210735797882, - -0.22130000591278076 - ], - [ - 2.414552927017212, - 2.4414725303649902, - 2.4123740196228027, - 2.3891539573669434, - 2.3439924716949463, - 2.383826494216919, - 2.4790589809417725 - ], - [ - 416.91241455078125, - 416.72991943359375, - 417.650146484375, - 418.7496032714844, - 419.7668151855469, - 418.9446105957031, - 415.4181823730469 - ], - [ - 0.00027702184161171317, - 0.00031947996467351913, - 0.0003713241603691131, - 0.00041664738091640174, - 0.00044014950981363654, - 0.0003793887444771826, - 0.00034191107260994613 - ], - [ - 295.3213806152344, - 295.4155578613281, - 295.5428161621094, - 295.6658935546875, - 295.6635437011719, - 295.59454345703125, - 295.4398193359375 - ], - [ - 0.01613033562898636, - 0.016163060441613197, - 0.016186321154236794, - 0.01621423475444317, - 0.016226010397076607, - 0.016192473471164703, - 0.01617889292538166 - ], - [ - 99746.7578125, - 99902.515625, - 100129.4140625, - 100344.46875, - 100372.0859375, - 100235.03125, - 99911.265625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ] -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep0.json index 64e15c93..2d7c5683 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep0.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep0.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ -1.0761322975158691, @@ -124,11 +130,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep1.json index 7fce493c..03cb13e1 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep1.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep1.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ -1.0761322975158691, @@ -124,11 +130,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep2.json index cb7505c0..53a10af6 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep2.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank0_timestep2.json @@ -1,4 +1,10 @@ { + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469 + ], "regridded_forcings1": [ [ -1.068263053894043, @@ -124,11 +130,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11466, - 11467, - 11468, - 11469 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep0.json index 6e7ffbba..011bb784 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep0.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep0.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ -1.223454236984253, @@ -105,10 +110,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep1.json index 62546aa3..ad55be40 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep1.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep1.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ -1.223454236984253, @@ -105,10 +110,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep2.json index 473c6245..a06d56b1 100644 --- a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep2.json +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n2_rank1_timestep2.json @@ -1,4 +1,9 @@ { + "geo_meta__element_ids": [ + 11470, + 11475, + 11476 + ], "regridded_forcings1": [ [ -1.1119216680526733, @@ -105,10 +110,5 @@ "regridded_precip1": null, "regridded_precip1_elem": null, "regridded_precip2": null, - "regridded_precip2_elem": null, - "wrf_hydro_geo_meta__element_ids": [ - 11470, - 11475, - 11476 - ] + "regridded_precip2_elem": null } \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json deleted file mode 100644 index dc6b5caf..00000000 --- a/tests/test_data/expected_results/test_expected_geomod_after_update_step_1.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "centerCoords": null, - "cosa_grid": null, - "crs_atts": null, - "dx_meters": null, - "dy_meters": null, - "element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "element_ids_global": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "esmf_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "esmf_lat": null, - "esmf_lon": null, - "height": null, - "height_elem": null, - "inds": null, - "lat_bounds": "hash_4066407811557226096", - "latitude_grid": [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ], - "latitude_grid_elem": null, - "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - "longitude_grid_elem": null, - "mesh_inds": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6 - ], - "mesh_inds_elem": null, - "nodeCoords": null, - "nx_global": 7, - "nx_global_elem": null, - "nx_local": 7, - "nx_local_elem": null, - "ny_global": 7, - "ny_global_elem": null, - "ny_local": 7, - "ny_local_elem": null, - "sina_grid": null, - "slope": null, - "slope_elem": null, - "slp_azi": null, - "slp_azi_elem": null, - "spatial_global_atts": null, - "x_coord_atts": null, - "x_coords": null, - "x_lower_bound": null, - "x_upper_bound": null, - "y_coord_atts": null, - "y_coords": null, - "y_lower_bound": null, - "y_upper_bound": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json deleted file mode 100644 index dc6b5caf..00000000 --- a/tests/test_data/expected_results/test_expected_geomod_after_update_step_2.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "centerCoords": null, - "cosa_grid": null, - "crs_atts": null, - "dx_meters": null, - "dy_meters": null, - "element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "element_ids_global": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "esmf_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "esmf_lat": null, - "esmf_lon": null, - "height": null, - "height_elem": null, - "inds": null, - "lat_bounds": "hash_4066407811557226096", - "latitude_grid": [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ], - "latitude_grid_elem": null, - "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - "longitude_grid_elem": null, - "mesh_inds": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6 - ], - "mesh_inds_elem": null, - "nodeCoords": null, - "nx_global": 7, - "nx_global_elem": null, - "nx_local": 7, - "nx_local_elem": null, - "ny_global": 7, - "ny_global_elem": null, - "ny_local": 7, - "ny_local_elem": null, - "sina_grid": null, - "slope": null, - "slope_elem": null, - "slp_azi": null, - "slp_azi_elem": null, - "spatial_global_atts": null, - "x_coord_atts": null, - "x_coords": null, - "x_lower_bound": null, - "x_upper_bound": null, - "y_coord_atts": null, - "y_coords": null, - "y_lower_bound": null, - "y_upper_bound": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json b/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json deleted file mode 100644 index dc6b5caf..00000000 --- a/tests/test_data/expected_results/test_expected_geomod_after_update_step_3.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "centerCoords": null, - "cosa_grid": null, - "crs_atts": null, - "dx_meters": null, - "dy_meters": null, - "element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "element_ids_global": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "esmf_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "esmf_lat": null, - "esmf_lon": null, - "height": null, - "height_elem": null, - "inds": null, - "lat_bounds": "hash_4066407811557226096", - "latitude_grid": [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ], - "latitude_grid_elem": null, - "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - "longitude_grid_elem": null, - "mesh_inds": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6 - ], - "mesh_inds_elem": null, - "nodeCoords": null, - "nx_global": 7, - "nx_global_elem": null, - "nx_local": 7, - "nx_local_elem": null, - "ny_global": 7, - "ny_global_elem": null, - "ny_local": 7, - "ny_local_elem": null, - "sina_grid": null, - "slope": null, - "slope_elem": null, - "slp_azi": null, - "slp_azi_elem": null, - "spatial_global_atts": null, - "x_coord_atts": null, - "x_coords": null, - "x_lower_bound": null, - "x_upper_bound": null, - "y_coord_atts": null, - "y_coords": null, - "y_lower_bound": null, - "y_upper_bound": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_finalize.json b/tests/test_data/expected_results/test_expected_geomod_finalize.json deleted file mode 100644 index dc6b5caf..00000000 --- a/tests/test_data/expected_results/test_expected_geomod_finalize.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "centerCoords": null, - "cosa_grid": null, - "crs_atts": null, - "dx_meters": null, - "dy_meters": null, - "element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "element_ids_global": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "esmf_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "esmf_lat": null, - "esmf_lon": null, - "height": null, - "height_elem": null, - "inds": null, - "lat_bounds": "hash_4066407811557226096", - "latitude_grid": [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ], - "latitude_grid_elem": null, - "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - "longitude_grid_elem": null, - "mesh_inds": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6 - ], - "mesh_inds_elem": null, - "nodeCoords": null, - "nx_global": 7, - "nx_global_elem": null, - "nx_local": 7, - "nx_local_elem": null, - "ny_global": 7, - "ny_global_elem": null, - "ny_local": 7, - "ny_local_elem": null, - "sina_grid": null, - "slope": null, - "slope_elem": null, - "slp_azi": null, - "slp_azi_elem": null, - "spatial_global_atts": null, - "x_coord_atts": null, - "x_coords": null, - "x_lower_bound": null, - "x_upper_bound": null, - "y_coord_atts": null, - "y_coords": null, - "y_lower_bound": null, - "y_upper_bound": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_geomod_init.json b/tests/test_data/expected_results/test_expected_geomod_init.json deleted file mode 100644 index dc6b5caf..00000000 --- a/tests/test_data/expected_results/test_expected_geomod_init.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "centerCoords": null, - "cosa_grid": null, - "crs_atts": null, - "dx_meters": null, - "dy_meters": null, - "element_ids": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "element_ids_global": [ - 11466, - 11467, - 11468, - 11469, - 11470, - 11475, - 11476 - ], - "esmf_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "esmf_lat": null, - "esmf_lon": null, - "height": null, - "height_elem": null, - "inds": null, - "lat_bounds": "hash_4066407811557226096", - "latitude_grid": [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ], - "latitude_grid_elem": null, - "lon_bounds": "hash_-4728106294047550556", - "longitude_grid": [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - "longitude_grid_elem": null, - "mesh_inds": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6 - ], - "mesh_inds_elem": null, - "nodeCoords": null, - "nx_global": 7, - "nx_global_elem": null, - "nx_local": 7, - "nx_local_elem": null, - "ny_global": 7, - "ny_global_elem": null, - "ny_local": 7, - "ny_local_elem": null, - "sina_grid": null, - "slope": null, - "slope_elem": null, - "slp_azi": null, - "slp_azi_elem": null, - "spatial_global_atts": null, - "x_coord_atts": null, - "x_coords": null, - "x_lower_bound": null, - "x_upper_bound": null, - "y_coord_atts": null, - "y_coords": null, - "y_lower_bound": null, - "y_upper_bound": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json index 2a8e3f58..01ccb117 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json @@ -112,7 +112,7 @@ "esmf_field_out": { "_data": [ 99263.83797955123, - 99864.20759754519, + 99864.20759754517, 99984.1178572765, 99951.00373610242 ], diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json index 3198b0e9..9970fd8b 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json @@ -111,7 +111,7 @@ "esmf_field_in_elem": null, "esmf_field_out": { "_data": [ - 99363.83797955124, + 99363.83797955123, 99970.04062791045, 100085.72479451672, 100059.85331996171 diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json index b15f95c2..3b3d7d69 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json @@ -113,7 +113,7 @@ "_data": [ 100253.86506548879, 99872.71103274089, - 99065.63984167964 + 99065.63984167963 ], "_finalized": false, "_grid": { diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json deleted file mode 100644 index 776a8f89..00000000 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_1.json +++ /dev/null @@ -1,717 +0,0 @@ -{ - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "cycle_freq": -9999, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": [ - 99160.26249161118, - 99751.30173387309, - 99866.56459840063, - 99835.52273003284, - 100140.1144036002, - 99762.71103274089, - 98958.290765121 - ], - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_ext": ".grib2", - "file_in1": "s3://null/AORC-OWP_2013070101z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070101z.grib2", - "file_type": "GRIB2", - "final_forcings": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 7.987401246651457e-44, - 8.127531093083939e-44, - 8.267660939516421e-44, - 8.407790785948902e-44, - 8.547920632381384e-44, - 8.688050478813866e-44, - 8.828180325246348e-44 - ] - ], - "final_forcings_elem": null, - "find_neighbor_files_map": { - "1": "find_nldas_neighbors", - "10": "find_custom_hourly_neighbors", - "11": "find_custom_hourly_neighbors", - "12": "find_aorc_neighbors", - "13": "find_nam_nest_neighbors", - "14": "find_nam_nest_neighbors", - "15": "find_nam_nest_neighbors", - "16": "find_nam_nest_neighbors", - "17": "find_nam_nest_neighbors", - "18": "find_hourly_wrf_arw_neighbors", - "19": "find_ak_hrrr_neighbors", - "20": "find_ak_hrrr_neighbors", - "21": "find_aorc_neighbors", - "22": "find_ak_hrrr_neighbors", - "23": "find_era5_neighbors", - "24": "find_hourly_nbm_neighbors", - "25": "find_ndfd_neighbors", - "26": "find_input_neighbors", - "27": "find_nwm_neighbors", - "3": "find_gfs_neighbors", - "5": "find_conus_hrrr_neighbors", - "6": "find_conus_rap_neighbors", - "7": "find_cfsv2_neighbors", - "8": "find_hourly_wrf_arw_neighbors", - "9": "find_gfs_neighbors" - }, - "forecast_horizons": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "grib_levels": null, - "grib_mes_idx": null, - "grib_vars": [ - "TMP", - "SPFH", - "UGRD", - "VGRD", - "APCP", - "DSWRF", - "DLWRF", - "PRES" - ], - "height": [ - 1.4293244336113134e-43, - 2.5924021590009116e-43, - 1.821688003622262e-43, - 1.8497139729087585e-43, - 1.2611686178923354e-43, - 1.5834672646870433e-43, - 1.7376100957627732e-43 - ], - "height_elem": null, - "inDir": "s3://null", - "input_map_output": [ - 4, - 5, - 0, - 1, - 3, - 7, - 2, - 6 - ], - "keyValue": 12, - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "netcdf_var_names": [ - "TMP_2maboveground", - "SPFH_2maboveground", - "UGRD_10maboveground", - "VGRD_10maboveground", - "APCP_surface", - "DSWRF_surface", - "DLWRF_surface", - "PRES_surface" - ], - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "product_name": "AORC", - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj_elem": null, - "regridOpt": 1, - "regrid_map": { - "1": "regrid_conus_rap", - "10": "regrid_custom_hourly_netcdf", - "11": "regrid_custom_hourly_netcdf", - "12": "regrid_custom_hourly_netcdf", - "13": "regrid_nam_nest", - "14": "regrid_nam_nest", - "15": "regrid_nam_nest", - "16": "regrid_nam_nest", - "17": "regrid_nam_nest", - "18": "regrid_hourly_wrf_arw", - "19": "regrid_conus_hrrr", - "20": "regrid_conus_hrrr", - "21": "regrid_custom_hourly_netcdf", - "22": "regrid_conus_hrrr", - "23": "regrid_era5", - "24": "regrid_hourly_nbm", - "25": "regrid_ndfd", - "26": "regrid_conus_hrrr", - "27": "regrid_nwm", - "3": "regrid_gfs", - "5": "regrid_conus_hrrr", - "6": "regrid_conus_rap", - "7": "regrid_cfsv2", - "8": "regrid_hourly_wrf_arw", - "9": "regrid_gfs" - }, - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 1.6255062186167878e-43, - 6.305843089461677e-44, - 6.866362475191604e-44, - 6.866362475191604e-44, - 7.286752014489049e-44, - 7.707141553786494e-44, - 6.726232628759122e-44 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 7.987401246651457e-44, - 8.127531093083939e-44, - 8.267660939516421e-44, - 8.407790785948902e-44, - 8.547920632381384e-44, - 8.688050478813866e-44, - 8.828180325246348e-44 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_AORC": [ - -1.0785462456106835e+22, - 3.33200748847155e-41, - 0.0, - 0.0, - 7.006492321624085e-45, - 0.0, - NaN - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "temporal_interpolate_inputs_map": { - "0": "no_interpolation", - "1": "nearest_neighbor", - "2": "weighted_average" - }, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json deleted file mode 100644 index 742930da..00000000 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_2.json +++ /dev/null @@ -1,717 +0,0 @@ -{ - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "cycle_freq": -9999, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": [ - 99263.83797955123, - 99864.20759754519, - 99984.1178572765, - 99951.00373610242, - 100253.86506548879, - 99872.71103274089, - 99065.63984167964 - ], - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_ext": ".grib2", - "file_in1": "s3://null/AORC-OWP_2013070102z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070102z.grib2", - "file_type": "GRIB2", - "final_forcings": [ - [ - 1.100000023841858, - 1.0, - 0.8858484625816345, - 0.7788757085800171, - 0.699999988079071, - 0.800000011920929, - 0.9000000357627869 - ], - [ - 3.2642452716827393, - 3.2708349227905273, - 3.2864480018615723, - 3.254810094833374, - 3.299999952316284, - 3.200000047683716, - 3.299999952316284 - ], - [ - 402.1012878417969, - 402.48565673828125, - 402.3548889160156, - 401.989013671875, - 402.19110107421875, - 402.15179443359375, - 401.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 295.295166015625, - 295.3619384765625, - 295.36065673828125, - 295.25482177734375, - 295.3125305175781, - 295.2787170410156, - 295.20001220703125 - ], - [ - 0.016059407964348793, - 0.01599999889731407, - 0.015986448153853416, - 0.01599999889731407, - 0.015975013375282288, - 0.016007820144295692, - 0.01599999889731407 - ], - [ - 99263.8359375, - 99864.2109375, - 99984.1171875, - 99951.0, - 100253.8671875, - 99872.7109375, - 99065.640625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "final_forcings_elem": null, - "find_neighbor_files_map": { - "1": "find_nldas_neighbors", - "10": "find_custom_hourly_neighbors", - "11": "find_custom_hourly_neighbors", - "12": "find_aorc_neighbors", - "13": "find_nam_nest_neighbors", - "14": "find_nam_nest_neighbors", - "15": "find_nam_nest_neighbors", - "16": "find_nam_nest_neighbors", - "17": "find_nam_nest_neighbors", - "18": "find_hourly_wrf_arw_neighbors", - "19": "find_ak_hrrr_neighbors", - "20": "find_ak_hrrr_neighbors", - "21": "find_aorc_neighbors", - "22": "find_ak_hrrr_neighbors", - "23": "find_era5_neighbors", - "24": "find_hourly_nbm_neighbors", - "25": "find_ndfd_neighbors", - "26": "find_input_neighbors", - "27": "find_nwm_neighbors", - "3": "find_gfs_neighbors", - "5": "find_conus_hrrr_neighbors", - "6": "find_conus_rap_neighbors", - "7": "find_cfsv2_neighbors", - "8": "find_hourly_wrf_arw_neighbors", - "9": "find_gfs_neighbors" - }, - "forecast_horizons": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "grib_levels": null, - "grib_mes_idx": null, - "grib_vars": [ - "TMP", - "SPFH", - "UGRD", - "VGRD", - "APCP", - "DSWRF", - "DLWRF", - "PRES" - ], - "height": [ - 1.4293244336113134e-43, - 2.5924021590009116e-43, - 1.821688003622262e-43, - 1.8497139729087585e-43, - 1.2611686178923354e-43, - 1.5834672646870433e-43, - 1.7376100957627732e-43 - ], - "height_elem": null, - "inDir": "s3://null", - "input_map_output": [ - 4, - 5, - 0, - 1, - 3, - 7, - 2, - 6 - ], - "keyValue": 12, - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "netcdf_var_names": [ - "TMP_2maboveground", - "SPFH_2maboveground", - "UGRD_10maboveground", - "VGRD_10maboveground", - "APCP_surface", - "DSWRF_surface", - "DLWRF_surface", - "PRES_surface" - ], - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "product_name": "AORC", - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj_elem": null, - "regridOpt": 1, - "regrid_map": { - "1": "regrid_conus_rap", - "10": "regrid_custom_hourly_netcdf", - "11": "regrid_custom_hourly_netcdf", - "12": "regrid_custom_hourly_netcdf", - "13": "regrid_nam_nest", - "14": "regrid_nam_nest", - "15": "regrid_nam_nest", - "16": "regrid_nam_nest", - "17": "regrid_nam_nest", - "18": "regrid_hourly_wrf_arw", - "19": "regrid_conus_hrrr", - "20": "regrid_conus_hrrr", - "21": "regrid_custom_hourly_netcdf", - "22": "regrid_conus_hrrr", - "23": "regrid_era5", - "24": "regrid_hourly_nbm", - "25": "regrid_ndfd", - "26": "regrid_conus_hrrr", - "27": "regrid_nwm", - "3": "regrid_gfs", - "5": "regrid_conus_hrrr", - "6": "regrid_conus_rap", - "7": "regrid_cfsv2", - "8": "regrid_hourly_wrf_arw", - "9": "regrid_gfs" - }, - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.100000023841858, - 1.0, - 0.9000000357627869, - 0.800000011920929, - 0.9708916544914246, - 1.0 - ], - [ - 3.5624279975891113, - 3.6000001430511475, - 3.6000001430511475, - 3.6000001430511475, - 3.700000047683716, - 3.6000001430511475, - 3.665524959564209 - ], - [ - 401.1370544433594, - 401.5856628417969, - 401.5168762207031, - 401.3915100097656, - 401.5160827636719, - 401.2808837890625, - 400.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 296.09698486328125, - 296.16192626953125, - 296.07421875, - 296.009033203125, - 296.02203369140625, - 296.0078125, - 296.0 - ], - [ - 0.016559408977627754, - 0.016499999910593033, - 0.016462579369544983, - 0.01636631414294243, - 0.016375012695789337, - 0.016407819464802742, - 0.016441447660326958 - ], - [ - 99160.265625, - 99751.3046875, - 99866.5625, - 99835.5234375, - 100140.1171875, - 99762.7109375, - 98958.2890625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 7.987401246651457e-44, - 8.127531093083939e-44, - 8.267660939516421e-44, - 8.407790785948902e-44, - 8.547920632381384e-44, - 8.688050478813866e-44, - 8.828180325246348e-44 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.100000023841858, - 1.0, - 0.8858484625816345, - 0.7788757085800171, - 0.699999988079071, - 0.800000011920929, - 0.9000000357627869 - ], - [ - 3.2642452716827393, - 3.2708349227905273, - 3.2864480018615723, - 3.254810094833374, - 3.299999952316284, - 3.200000047683716, - 3.299999952316284 - ], - [ - 402.1012878417969, - 402.48565673828125, - 402.3548889160156, - 401.989013671875, - 402.19110107421875, - 402.15179443359375, - 401.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 295.295166015625, - 295.3619384765625, - 295.36065673828125, - 295.25482177734375, - 295.3125305175781, - 295.2787170410156, - 295.20001220703125 - ], - [ - 0.016059407964348793, - 0.01599999889731407, - 0.015986448153853416, - 0.01599999889731407, - 0.015975013375282288, - 0.016007820144295692, - 0.01599999889731407 - ], - [ - 99263.8359375, - 99864.2109375, - 99984.1171875, - 99951.0, - 100253.8671875, - 99872.7109375, - 99065.640625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_AORC": [ - -1.0785462456106835e+22, - 3.33200748847155e-41, - 0.0, - 0.0, - 7.006492321624085e-45, - 0.0, - NaN - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "temporal_interpolate_inputs_map": { - "0": "no_interpolation", - "1": "nearest_neighbor", - "2": "weighted_average" - }, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json deleted file mode 100644 index e3025940..00000000 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_step_3.json +++ /dev/null @@ -1,717 +0,0 @@ -{ - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "cycle_freq": -9999, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": [ - 99363.83797955124, - 99970.04062791045, - 100085.72479451672, - 100059.85331996171, - 100370.1144036002, - 99988.90210915556, - 99170.00124612782 - ], - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_ext": ".grib2", - "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", - "file_type": "GRIB2", - "final_forcings": [ - [ - 1.0, - 0.9000000357627869, - 0.7116342782974243, - 0.6000000238418579, - 0.6000000238418579, - 0.699999988079071, - 0.800000011920929 - ], - [ - 2.964245080947876, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316 - ], - [ - 392.61285400390625, - 394.7234802246094, - 397.58953857421875, - 399.78857421875, - 400.2782897949219, - 398.3241882324219, - 394.5147705078125 - ], - [ - 7.205791916931048e-05, - 8.333333244081587e-05, - 7.940235082060099e-05, - 8.92011885298416e-05, - 0.00011111111234640703, - 8.333333244081587e-05, - 8.333333244081587e-05 - ], - [ - 294.45458984375, - 294.5556335449219, - 294.5748291015625, - 294.5548095703125, - 294.57501220703125, - 294.5787048339844, - 294.3999938964844 - ], - [ - 0.01549999974668026, - 0.01549999974668026, - 0.015586447902023792, - 0.015599999576807022, - 0.015584511682391167, - 0.015607818961143494, - 0.01549999974668026 - ], - [ - 99363.8359375, - 99970.0390625, - 100085.7265625, - 100059.8515625, - 100370.1171875, - 99988.8984375, - 99170.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "final_forcings_elem": null, - "find_neighbor_files_map": { - "1": "find_nldas_neighbors", - "10": "find_custom_hourly_neighbors", - "11": "find_custom_hourly_neighbors", - "12": "find_aorc_neighbors", - "13": "find_nam_nest_neighbors", - "14": "find_nam_nest_neighbors", - "15": "find_nam_nest_neighbors", - "16": "find_nam_nest_neighbors", - "17": "find_nam_nest_neighbors", - "18": "find_hourly_wrf_arw_neighbors", - "19": "find_ak_hrrr_neighbors", - "20": "find_ak_hrrr_neighbors", - "21": "find_aorc_neighbors", - "22": "find_ak_hrrr_neighbors", - "23": "find_era5_neighbors", - "24": "find_hourly_nbm_neighbors", - "25": "find_ndfd_neighbors", - "26": "find_input_neighbors", - "27": "find_nwm_neighbors", - "3": "find_gfs_neighbors", - "5": "find_conus_hrrr_neighbors", - "6": "find_conus_rap_neighbors", - "7": "find_cfsv2_neighbors", - "8": "find_hourly_wrf_arw_neighbors", - "9": "find_gfs_neighbors" - }, - "forecast_horizons": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "grib_levels": null, - "grib_mes_idx": null, - "grib_vars": [ - "TMP", - "SPFH", - "UGRD", - "VGRD", - "APCP", - "DSWRF", - "DLWRF", - "PRES" - ], - "height": [ - 1.4293244336113134e-43, - 2.5924021590009116e-43, - 1.821688003622262e-43, - 1.8497139729087585e-43, - 1.2611686178923354e-43, - 1.5834672646870433e-43, - 1.7376100957627732e-43 - ], - "height_elem": null, - "inDir": "s3://null", - "input_map_output": [ - 4, - 5, - 0, - 1, - 3, - 7, - 2, - 6 - ], - "keyValue": 12, - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "netcdf_var_names": [ - "TMP_2maboveground", - "SPFH_2maboveground", - "UGRD_10maboveground", - "VGRD_10maboveground", - "APCP_surface", - "DSWRF_surface", - "DLWRF_surface", - "PRES_surface" - ], - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "product_name": "AORC", - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj_elem": null, - "regridOpt": 1, - "regrid_map": { - "1": "regrid_conus_rap", - "10": "regrid_custom_hourly_netcdf", - "11": "regrid_custom_hourly_netcdf", - "12": "regrid_custom_hourly_netcdf", - "13": "regrid_nam_nest", - "14": "regrid_nam_nest", - "15": "regrid_nam_nest", - "16": "regrid_nam_nest", - "17": "regrid_nam_nest", - "18": "regrid_hourly_wrf_arw", - "19": "regrid_conus_hrrr", - "20": "regrid_conus_hrrr", - "21": "regrid_custom_hourly_netcdf", - "22": "regrid_conus_hrrr", - "23": "regrid_era5", - "24": "regrid_hourly_nbm", - "25": "regrid_ndfd", - "26": "regrid_conus_hrrr", - "27": "regrid_nwm", - "3": "regrid_gfs", - "5": "regrid_conus_hrrr", - "6": "regrid_conus_rap", - "7": "regrid_cfsv2", - "8": "regrid_hourly_wrf_arw", - "9": "regrid_gfs" - }, - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.0, - 0.8858484625816345, - 0.7788757085800171, - 0.699999988079071, - 0.800000011920929, - 0.9000000357627869 - ], - [ - 3.2642452716827393, - 3.2708349227905273, - 3.2864480018615723, - 3.254810094833374, - 3.299999952316284, - 3.200000047683716, - 3.299999952316284 - ], - [ - 402.1012878417969, - 402.48565673828125, - 402.3548889160156, - 401.989013671875, - 402.19110107421875, - 402.15179443359375, - 401.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 295.295166015625, - 295.3619384765625, - 295.36065673828125, - 295.25482177734375, - 295.3125305175781, - 295.2787170410156, - 295.20001220703125 - ], - [ - 0.016059407964348793, - 0.01599999889731407, - 0.015986448153853416, - 0.01599999889731407, - 0.015975013375282288, - 0.016007820144295692, - 0.01599999889731407 - ], - [ - 99263.8359375, - 99864.2109375, - 99984.1171875, - 99951.0, - 100253.8671875, - 99872.7109375, - 99065.640625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.0, - 0.9000000357627869, - 0.7116342782974243, - 0.6000000238418579, - 0.6000000238418579, - 0.699999988079071, - 0.800000011920929 - ], - [ - 2.964245080947876, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316 - ], - [ - 392.61285400390625, - 394.7234802246094, - 397.58953857421875, - 399.78857421875, - 400.2782897949219, - 398.3241882324219, - 394.5147705078125 - ], - [ - 7.205791916931048e-05, - 8.333333244081587e-05, - 7.940235082060099e-05, - 8.92011885298416e-05, - 0.00011111111234640703, - 8.333333244081587e-05, - 8.333333244081587e-05 - ], - [ - 294.45458984375, - 294.5556335449219, - 294.5748291015625, - 294.5548095703125, - 294.57501220703125, - 294.5787048339844, - 294.3999938964844 - ], - [ - 0.01549999974668026, - 0.01549999974668026, - 0.015586447902023792, - 0.015599999576807022, - 0.015584511682391167, - 0.015607818961143494, - 0.01549999974668026 - ], - [ - 99363.8359375, - 99970.0390625, - 100085.7265625, - 100059.8515625, - 100370.1171875, - 99988.8984375, - 99170.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_AORC": [ - -1.0785462456106835e+22, - 3.33200748847155e-41, - 0.0, - 0.0, - 7.006492321624085e-45, - 0.0, - NaN - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "temporal_interpolate_inputs_map": { - "0": "no_interpolation", - "1": "nearest_neighbor", - "2": "weighted_average" - }, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize.json deleted file mode 100644 index e3025940..00000000 --- a/tests/test_data/expected_results/test_expected_input_forcing_finalize.json +++ /dev/null @@ -1,717 +0,0 @@ -{ - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "cycle_freq": -9999, - "enforce": 0, - "esmf_field_in": { - "_data": null, - "_finalized": false, - "_grid": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "_lower_bounds": [ - 0, - 0 - ], - "_meta": {}, - "_name": "AORC_NATIVE", - "_ndbounds": null, - "_rank": 2, - "_staggerloc": 0, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 28, - 14 - ], - "_xd": 0 - }, - "esmf_field_in_elem": null, - "esmf_field_out": { - "_data": [ - 99363.83797955124, - 99970.04062791045, - 100085.72479451672, - 100059.85331996171, - 100370.1144036002, - 99988.90210915556, - 99170.00124612782 - ], - "_finalized": false, - "_grid": { - "_area": [ - null, - null - ], - "_coord_sys": null, - "_coords": [ - [ - "hash_-4728106294047550556", - "hash_4066407811557226096" - ], - [ - [ - -72.04918711744217, - -72.0498876679477, - -72.05118870198277, - -72.04754380872834, - -72.0554434265969, - -72.03341338948294, - -72.07444419922648 - ], - [ - 41.824530105139985, - 41.79153684369973, - 41.739617787523294, - 41.68903878715741, - 41.66453348086255, - 41.721705460500516, - 41.77940007526497 - ] - ] - ], - "_finalized": false, - "_mask": [ - null, - null - ], - "_meta": {}, - "_parametric_dim": 2, - "_rank": 1, - "_size": [ - 653, - 7 - ], - "_size_owned": [ - 653, - 7 - ], - "_spatial_dim": null, - "_struct": {} - }, - "_lower_bounds": [ - 0 - ], - "_meta": {}, - "_name": "AORCFORCING_REGRIDDED", - "_ndbounds": null, - "_rank": 1, - "_staggerloc": 1, - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - 7 - ], - "_xd": 0 - }, - "esmf_field_out_elem": null, - "esmf_grid_in": { - "_area": [ - null, - null, - null, - null - ], - "_areatype": 6, - "_coord_sys": 1, - "_coords": [ - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ], - [ - null, - null - ] - ], - "_decount": 1, - "_finalized": false, - "_has_corners": false, - "_lower_bounds": [ - [ - 0, - 0 - ], - null, - null, - null - ], - "_mask": [ - null, - null, - null, - null - ], - "_max_index": [ - 28, - 14 - ], - "_meta": {}, - "_ndims": 2, - "_num_peri_dims": 0, - "_ocgis": {}, - "_periodic_dim": null, - "_pole_dim": null, - "_pole_kind": null, - "_rank": 2, - "_size": [ - [ - 28, - 14 - ], - null, - null, - null - ], - "_staggerloc": [ - true, - false, - false, - false - ], - "_struct": {}, - "_type": 6, - "_upper_bounds": [ - [ - 28, - 14 - ], - null, - null, - null - ] - }, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_ext": ".grib2", - "file_in1": "s3://null/AORC-OWP_2013070103z.grib2", - "file_in2": "s3://null/AORC-OWP_2013070103z.grib2", - "file_type": "GRIB2", - "final_forcings": [ - [ - 1.0, - 0.9000000357627869, - 0.7116342782974243, - 0.6000000238418579, - 0.6000000238418579, - 0.699999988079071, - 0.800000011920929 - ], - [ - 2.964245080947876, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316 - ], - [ - 392.61285400390625, - 394.7234802246094, - 397.58953857421875, - 399.78857421875, - 400.2782897949219, - 398.3241882324219, - 394.5147705078125 - ], - [ - 7.205791916931048e-05, - 8.333333244081587e-05, - 7.940235082060099e-05, - 8.92011885298416e-05, - 0.00011111111234640703, - 8.333333244081587e-05, - 8.333333244081587e-05 - ], - [ - 294.45458984375, - 294.5556335449219, - 294.5748291015625, - 294.5548095703125, - 294.57501220703125, - 294.5787048339844, - 294.3999938964844 - ], - [ - 0.01549999974668026, - 0.01549999974668026, - 0.015586447902023792, - 0.015599999576807022, - 0.015584511682391167, - 0.015607818961143494, - 0.01549999974668026 - ], - [ - 99363.8359375, - 99970.0390625, - 100085.7265625, - 100059.8515625, - 100370.1171875, - 99988.8984375, - 99170.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "final_forcings_elem": null, - "find_neighbor_files_map": { - "1": "find_nldas_neighbors", - "10": "find_custom_hourly_neighbors", - "11": "find_custom_hourly_neighbors", - "12": "find_aorc_neighbors", - "13": "find_nam_nest_neighbors", - "14": "find_nam_nest_neighbors", - "15": "find_nam_nest_neighbors", - "16": "find_nam_nest_neighbors", - "17": "find_nam_nest_neighbors", - "18": "find_hourly_wrf_arw_neighbors", - "19": "find_ak_hrrr_neighbors", - "20": "find_ak_hrrr_neighbors", - "21": "find_aorc_neighbors", - "22": "find_ak_hrrr_neighbors", - "23": "find_era5_neighbors", - "24": "find_hourly_nbm_neighbors", - "25": "find_ndfd_neighbors", - "26": "find_input_neighbors", - "27": "find_nwm_neighbors", - "3": "find_gfs_neighbors", - "5": "find_conus_hrrr_neighbors", - "6": "find_conus_rap_neighbors", - "7": "find_cfsv2_neighbors", - "8": "find_hourly_wrf_arw_neighbors", - "9": "find_gfs_neighbors" - }, - "forecast_horizons": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "grib_levels": null, - "grib_mes_idx": null, - "grib_vars": [ - "TMP", - "SPFH", - "UGRD", - "VGRD", - "APCP", - "DSWRF", - "DLWRF", - "PRES" - ], - "height": [ - 1.4293244336113134e-43, - 2.5924021590009116e-43, - 1.821688003622262e-43, - 1.8497139729087585e-43, - 1.2611686178923354e-43, - 1.5834672646870433e-43, - 1.7376100957627732e-43 - ], - "height_elem": null, - "inDir": "s3://null", - "input_map_output": [ - 4, - 5, - 0, - 1, - 3, - 7, - 2, - 6 - ], - "keyValue": 12, - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "netcdf_var_names": [ - "TMP_2maboveground", - "SPFH_2maboveground", - "UGRD_10maboveground", - "VGRD_10maboveground", - "APCP_surface", - "DSWRF_surface", - "DLWRF_surface", - "PRES_surface" - ], - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": 14, - "nx_local": 14, - "nx_local_corner": null, - "ny_global": 28, - "ny_local": 28, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "product_name": "AORC", - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj_elem": null, - "regridOpt": 1, - "regrid_map": { - "1": "regrid_conus_rap", - "10": "regrid_custom_hourly_netcdf", - "11": "regrid_custom_hourly_netcdf", - "12": "regrid_custom_hourly_netcdf", - "13": "regrid_nam_nest", - "14": "regrid_nam_nest", - "15": "regrid_nam_nest", - "16": "regrid_nam_nest", - "17": "regrid_nam_nest", - "18": "regrid_hourly_wrf_arw", - "19": "regrid_conus_hrrr", - "20": "regrid_conus_hrrr", - "21": "regrid_custom_hourly_netcdf", - "22": "regrid_conus_hrrr", - "23": "regrid_era5", - "24": "regrid_hourly_nbm", - "25": "regrid_ndfd", - "26": "regrid_conus_hrrr", - "27": "regrid_nwm", - "3": "regrid_gfs", - "5": "regrid_conus_hrrr", - "6": "regrid_conus_rap", - "7": "regrid_cfsv2", - "8": "regrid_hourly_wrf_arw", - "9": "regrid_gfs" - }, - "regridded_forcings1": [ - [ - 1.100000023841858, - 1.0, - 0.8858484625816345, - 0.7788757085800171, - 0.699999988079071, - 0.800000011920929, - 0.9000000357627869 - ], - [ - 3.2642452716827393, - 3.2708349227905273, - 3.2864480018615723, - 3.254810094833374, - 3.299999952316284, - 3.200000047683716, - 3.299999952316284 - ], - [ - 402.1012878417969, - 402.48565673828125, - 402.3548889160156, - 401.989013671875, - 402.19110107421875, - 402.15179443359375, - 401.64373779296875 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 295.295166015625, - 295.3619384765625, - 295.36065673828125, - 295.25482177734375, - 295.3125305175781, - 295.2787170410156, - 295.20001220703125 - ], - [ - 0.016059407964348793, - 0.01599999889731407, - 0.015986448153853416, - 0.01599999889731407, - 0.015975013375282288, - 0.016007820144295692, - 0.01599999889731407 - ], - [ - 99263.8359375, - 99864.2109375, - 99984.1171875, - 99951.0, - 100253.8671875, - 99872.7109375, - 99065.640625 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "regridded_forcings1_elem": null, - "regridded_forcings2": [ - [ - 1.0, - 0.9000000357627869, - 0.7116342782974243, - 0.6000000238418579, - 0.6000000238418579, - 0.699999988079071, - 0.800000011920929 - ], - [ - 2.964245080947876, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316, - 2.9000000953674316 - ], - [ - 392.61285400390625, - 394.7234802246094, - 397.58953857421875, - 399.78857421875, - 400.2782897949219, - 398.3241882324219, - 394.5147705078125 - ], - [ - 7.205791916931048e-05, - 8.333333244081587e-05, - 7.940235082060099e-05, - 8.92011885298416e-05, - 0.00011111111234640703, - 8.333333244081587e-05, - 8.333333244081587e-05 - ], - [ - 294.45458984375, - 294.5556335449219, - 294.5748291015625, - 294.5548095703125, - 294.57501220703125, - 294.5787048339844, - 294.3999938964844 - ], - [ - 0.01549999974668026, - 0.01549999974668026, - 0.015586447902023792, - 0.015599999576807022, - 0.015584511682391167, - 0.015607818961143494, - 0.01549999974668026 - ], - [ - 99363.8359375, - 99970.0390625, - 100085.7265625, - 100059.8515625, - 100370.1171875, - 99988.8984375, - 99170.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0, - -9999.0 - ] - ], - "regridded_forcings2_elem": null, - "regridded_mask": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "regridded_mask_AORC": [ - -1.0785462456106835e+22, - 3.33200748847155e-41, - 0.0, - 0.0, - 7.006492321624085e-45, - 0.0, - NaN - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "temporal_interpolate_inputs_map": { - "0": "no_interpolation", - "1": "nearest_neighbor", - "2": "weighted_average" - }, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": 0, - "x_lower_bound_corner": null, - "x_upper_bound": 14, - "x_upper_bound_corner": null, - "y_lower_bound": 0, - "y_lower_bound_corner": null, - "y_upper_bound": 28, - "y_upper_bound_corner": null -} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json index 3198b0e9..9970fd8b 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json @@ -111,7 +111,7 @@ "esmf_field_in_elem": null, "esmf_field_out": { "_data": [ - 99363.83797955124, + 99363.83797955123, 99970.04062791045, 100085.72479451672, 100059.85331996171 diff --git a/tests/test_data/expected_results/test_expected_input_forcing_init.json b/tests/test_data/expected_results/test_expected_input_forcing_init.json deleted file mode 100644 index f4f6ea8a..00000000 --- a/tests/test_data/expected_results/test_expected_input_forcing_init.json +++ /dev/null @@ -1,292 +0,0 @@ -{ - "border": 0, - "coarse_input_forcings1": null, - "coarse_input_forcings2": null, - "cycle_freq": -9999, - "enforce": 0, - "esmf_field_in": null, - "esmf_field_in_elem": null, - "esmf_field_out": null, - "esmf_field_out_elem": null, - "esmf_grid_in": null, - "esmf_grid_in_elem": null, - "esmf_lats": null, - "esmf_lons": null, - "fcst_date1": null, - "fcst_date2": null, - "fcst_hour1": null, - "fcst_hour2": null, - "file_ext": ".grib2", - "file_in1": null, - "file_in2": null, - "file_type": "GRIB2", - "final_forcings": [ - [ - 5.04587704748543e-310, - 0.0, - 0.0, - 0.0, - 5e-324, - 5.04677747939827e-310, - 5.04677379939497e-310 - ], - [ - 0.0, - 1.69759663327e-313, - 1.2672592387899188e+232, - 6.3675e-320, - 5.0467737993928e-310, - 5.04677584503855e-310, - 9.97338021986e-313 - ], - [ - 6.185055752319095e+223, - 0.0, - 4.45619116355e-313, - 4.45619116113e-313, - 4.45619116113e-313, - 2.12199579106e-313, - 2.12199579146e-313 - ], - [ - 7.0025861116e-313, - 8.2757835865e-313, - 9.54898106137e-313, - 4.443903475535331e+252, - 6.5011e-319, - 0.0, - 0.0 - ], - [ - 0.0, - 5.04677571747323e-310, - 0.0, - 6.3675e-320, - 5.04677584503855e-310, - 1.00132312984912e-307, - 1.0639652826483053e+224 - ], - [ - 9.460901258052355e-308, - 5.035031584769189e+175, - 5.629751621824283e+188, - 5.296690847510652e+180, - 7.503220339358932e+247, - 6.988967804345117e+228, - 0.0 - ], - [ - 5.04677584516864e-310, - 5.0467775253452e-310, - 2.504798052037015e+262, - 6.048563642883464e-153, - 8.804038043558825e+199, - 9.7015828508133e+189, - 1.2336464110660583e+243 - ], - [ - 1.1444861950382266e+243, - 6.240235453373994e-85, - 3.503154846220036e+151, - 5.652500097044448e+188, - 1.991107419855827e+209, - 5.264891576090009e+170, - 7.691529923878102e+218 - ], - [ - 3.180440796836019e-153, - 8.804498740248215e+199, - 2.912550248154219e-14, - 2.0957227050864829e+214, - 8.748324789902571e+189, - 3.8098505405804724e+180, - 5.232537636e-315 - ] - ], - "final_forcings_elem": null, - "find_neighbor_files_map": { - "1": "find_nldas_neighbors", - "10": "find_custom_hourly_neighbors", - "11": "find_custom_hourly_neighbors", - "12": "find_aorc_neighbors", - "13": "find_nam_nest_neighbors", - "14": "find_nam_nest_neighbors", - "15": "find_nam_nest_neighbors", - "16": "find_nam_nest_neighbors", - "17": "find_nam_nest_neighbors", - "18": "find_hourly_wrf_arw_neighbors", - "19": "find_ak_hrrr_neighbors", - "20": "find_ak_hrrr_neighbors", - "21": "find_aorc_neighbors", - "22": "find_ak_hrrr_neighbors", - "23": "find_era5_neighbors", - "24": "find_hourly_nbm_neighbors", - "25": "find_ndfd_neighbors", - "26": "find_input_neighbors", - "27": "find_nwm_neighbors", - "3": "find_gfs_neighbors", - "5": "find_conus_hrrr_neighbors", - "6": "find_conus_rap_neighbors", - "7": "find_cfsv2_neighbors", - "8": "find_hourly_wrf_arw_neighbors", - "9": "find_gfs_neighbors" - }, - "forecast_horizons": null, - "globalPcpRate1": null, - "globalPcpRate1_elem": null, - "globalPcpRate2": null, - "globalPcpRate2_elem": null, - "grib_levels": null, - "grib_mes_idx": null, - "grib_vars": [ - "TMP", - "SPFH", - "UGRD", - "VGRD", - "APCP", - "DSWRF", - "DLWRF", - "PRES" - ], - "height": [ - 1.4293244336113134e-43, - 2.5924021590009116e-43, - 1.821688003622262e-43, - 1.8497139729087585e-43, - 1.2611686178923354e-43, - 1.5834672646870433e-43, - 1.7376100957627732e-43 - ], - "height_elem": null, - "inDir": "s3://null", - "input_map_output": [ - 4, - 5, - 0, - 1, - 3, - 7, - 2, - 6 - ], - "keyValue": 12, - "lapseGrid": null, - "lwBiasCorrectOpt": 0, - "ndv": null, - "netcdf_var_names": [ - "TMP_2maboveground", - "SPFH_2maboveground", - "UGRD_10maboveground", - "VGRD_10maboveground", - "APCP_surface", - "DSWRF_surface", - "DLWRF_surface", - "PRES_surface" - ], - "nwmPRISM_denGrid": null, - "nwmPRISM_numGrid": null, - "nx_global": null, - "nx_local": null, - "nx_local_corner": null, - "ny_global": null, - "ny_local": null, - "ny_local_corner": null, - "outFreq": null, - "paramDir": "/ngen-app/data", - "precipBiasCorrectOpt": 0, - "precipDownscaleOpt": 0, - "product_name": "AORC", - "psfcBiasCorrectOpt": 0, - "psfcDownscaleOpt": 0, - "psfcTmp": null, - "psfcTmp_elem": null, - "q2dBiasCorrectOpt": 0, - "q2dDownscaleOpt": 0, - "regridComplete": false, - "regridObj": null, - "regridObj_elem": null, - "regridOpt": 1, - "regrid_map": { - "1": "regrid_conus_rap", - "10": "regrid_custom_hourly_netcdf", - "11": "regrid_custom_hourly_netcdf", - "12": "regrid_custom_hourly_netcdf", - "13": "regrid_nam_nest", - "14": "regrid_nam_nest", - "15": "regrid_nam_nest", - "16": "regrid_nam_nest", - "17": "regrid_nam_nest", - "18": "regrid_hourly_wrf_arw", - "19": "regrid_conus_hrrr", - "20": "regrid_conus_hrrr", - "21": "regrid_custom_hourly_netcdf", - "22": "regrid_conus_hrrr", - "23": "regrid_era5", - "24": "regrid_hourly_nbm", - "25": "regrid_ndfd", - "26": "regrid_conus_hrrr", - "27": "regrid_nwm", - "3": "regrid_gfs", - "5": "regrid_conus_hrrr", - "6": "regrid_conus_rap", - "7": "regrid_cfsv2", - "8": "regrid_hourly_wrf_arw", - "9": "regrid_gfs" - }, - "regridded_forcings1": null, - "regridded_forcings1_elem": null, - "regridded_forcings2": null, - "regridded_forcings2_elem": null, - "regridded_mask": [ - -1.5113385669212863e+22, - 3.33200748847155e-41, - 0.0, - 0.0, - 7.006492321624085e-45, - 0.0, - NaN - ], - "regridded_mask_AORC": [ - -1.0785462456106835e+22, - 3.33200748847155e-41, - 0.0, - 0.0, - 7.006492321624085e-45, - 0.0, - NaN - ], - "regridded_mask_elem": null, - "regridded_mask_elem_AORC": null, - "regridded_precip1": null, - "regridded_precip1_elem": null, - "regridded_precip2": null, - "regridded_precip2_elem": null, - "rqiClimoGrid": null, - "rstFlag": 0, - "skip": false, - "swBiasCorrectOpt": 0, - "swDowscaleOpt": 0, - "t2dBiasCorrectOpt": 0, - "t2dDownscaleOpt": 0, - "t2dTmp": null, - "t2dTmp_elem": null, - "temporal_interpolate_inputs_map": { - "0": "no_interpolation", - "1": "nearest_neighbor", - "2": "weighted_average" - }, - "timeInterpOpt": 0, - "tmpFile": null, - "tmpFileHeight": null, - "userCycleOffset": 0, - "userFcstHorizon": 4260, - "windBiasCorrectOpt": 0, - "x_lower_bound": null, - "x_lower_bound_corner": null, - "x_upper_bound": null, - "x_upper_bound_corner": null, - "y_lower_bound": null, - "y_lower_bound_corner": null, - "y_upper_bound": null, - "y_upper_bound_corner": null -} \ No newline at end of file diff --git a/tests/test_data/gpkg/gauge_01123000.gpkg b/tests/test_data/gpkg/gauge_01123000.gpkg new file mode 120000 index 00000000..8d71e8b8 --- /dev/null +++ b/tests/test_data/gpkg/gauge_01123000.gpkg @@ -0,0 +1 @@ +/s3/ngwpc-hydrofabric/2.2/CONUS/01123000/GEOPACKAGE/USGS/2025_Mar_14_21_14_37/gauge_01123000.gpkg \ No newline at end of file From 9adf42f8f1b875b95c8f8b031accd990995ff0b2 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Tue, 31 Mar 2026 14:45:26 -0500 Subject: [PATCH 26/34] replace symlink with actual file --- tests/test_data/gpkg/gauge_01121330.gpkg | Bin 0 -> 221184 bytes tests/test_data/gpkg/gauge_01123000.gpkg | 1 - 2 files changed, 1 deletion(-) create mode 100644 tests/test_data/gpkg/gauge_01121330.gpkg delete mode 120000 tests/test_data/gpkg/gauge_01123000.gpkg diff --git a/tests/test_data/gpkg/gauge_01121330.gpkg b/tests/test_data/gpkg/gauge_01121330.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..79e572ad2b67dad15c9b2fdcb93d7fe967f91ea8 GIT binary patch literal 221184 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 literal 0 HcmV?d00001 diff --git a/tests/test_data/gpkg/gauge_01123000.gpkg b/tests/test_data/gpkg/gauge_01123000.gpkg deleted file mode 120000 index 8d71e8b8..00000000 --- a/tests/test_data/gpkg/gauge_01123000.gpkg +++ /dev/null @@ -1 +0,0 @@ -/s3/ngwpc-hydrofabric/2.2/CONUS/01123000/GEOPACKAGE/USGS/2025_Mar_14_21_14_37/gauge_01123000.gpkg \ No newline at end of file From 7db68e569e672691522802e16c2673e7c68eef17 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Fri, 3 Apr 2026 11:28:51 -0500 Subject: [PATCH 27/34] fix typo --- tests/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/README.md b/tests/README.md index c4e00758..c8f6e50c 100644 --- a/tests/README.md +++ b/tests/README.md @@ -7,11 +7,11 @@ This directory contains tests for the NextGen Forcing BMI Engine. Tests data is included in the `test_data` directory and includes configs, gpkgs, esmf_meshes, expected results and actual results. While the configs, gpkgs, esmf_meshes and expectd results are included in the repo and can be used as is, the following steps can be taken to re-create these test inputs. --- -The initial test data was generated using RTE to create a calibration realization +The initial test data was generated using `nwm-rte` to create a calibration realization for gage 01123000, starting at time 2013-07-01 00:00:00, and running for 3 timesteps, -using RTE's run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. +using `nwm-rte's` run_suite.sh. See RETRO_FORCING_CONFIG_FILE__AORC_CONUS. -More specifically the initial expected test data was developed with these specific configurations in config_bash.rc. +More specifically the initial expected test data was developed with these specific configurations in `config.bashrc`. ``` REPO_TAG_FCST_MGR="856fc0e1201076df909e56c7cd384f58e82965a2" REPO_TAG_MSW_MGR="693c206a22b5e9ffcca3103166c0ca59e2b11b25" @@ -21,7 +21,7 @@ NGEN_SOURCE_MODE="ghcr" NGEN_BASE__REMOTE_GHCR_TAG="844c5f6" ``` -And these two commands in RTE's `run_suite.sh`: +And these two commands in `nwm-rte's` `run_suite.sh`: ```bash docker_run python "/ngen-app/bin/bin_mounted/run_calibration.py" -n 2 -fsrc "aorc" -start "2013-07-01 00:00:00" -dur 3 @@ -45,14 +45,14 @@ The test suite is organized into the following modules: ### Required Dependencies -The test suite requires Python 3.11 or higher. Install the package with test dependencies inside of the dev container: +The test suite requires Python 3.11 or higher. Install the package with test dependencies inside of the `dev container`: ```bash # From the repository root directory pip install -e ".[develop]" ``` -Or install pytest directly inside of the dev container: +Or install pytest directly inside of the `dev container`: ```bash pip install pytest @@ -60,7 +60,7 @@ pip install pytest ### Additional Requirements -Ensure all main package dependencies are installed inside of the devconatiner (this typically should happen when the dev conatiner is built): +Ensure all main package dependencies are installed inside of the `dev container` (this typically should happen when the `dev container` is built): ```bash pip install -e . From 6818ea6147161c639d4f8c599c6fb43b5b6b95d0 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Fri, 3 Apr 2026 11:29:10 -0500 Subject: [PATCH 28/34] update gpkg --- ...auge_01121330.gpkg => gauge_01123000.gpkg} | Bin 221184 -> 204800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/test_data/gpkg/{gauge_01121330.gpkg => gauge_01123000.gpkg} (66%) diff --git a/tests/test_data/gpkg/gauge_01121330.gpkg b/tests/test_data/gpkg/gauge_01123000.gpkg similarity index 66% rename from tests/test_data/gpkg/gauge_01121330.gpkg rename to tests/test_data/gpkg/gauge_01123000.gpkg index 79e572ad2b67dad15c9b2fdcb93d7fe967f91ea8..379a39232edec09f6e78dce32962c20f9970e5c0 100644 GIT binary patch literal 204800 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 From 5c880fd9d8a51f816e057e9d9cd86fda3ef5b185 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Fri, 3 Apr 2026 11:29:40 -0500 Subject: [PATCH 29/34] updated expected test results --- ...tart20130701000000_n1_rank0_timestep0.json | 176 ++++++++++++++++ ...tart20130701000000_n1_rank0_timestep1.json | 176 ++++++++++++++++ ...tart20130701000000_n1_rank0_timestep2.json | 176 ++++++++++++++++ ...tart20250710040000_n1_rank0_timestep0.json | 194 ++++++++++++++++++ ...tart20250710040000_n1_rank0_timestep1.json | 194 ++++++++++++++++++ ...tart20250710040000_n1_rank0_timestep2.json | 194 ++++++++++++++++++ ...tart20250710040000_n1_rank0_timestep0.json | 194 ++++++++++++++++++ ...tart20250710040000_n1_rank0_timestep1.json | 194 ++++++++++++++++++ ...tart20250710040000_n1_rank0_timestep2.json | 194 ++++++++++++++++++ ...forcing_after_update_n2_rank0__step_2.json | 2 +- ...forcing_after_update_n2_rank0__step_3.json | 2 +- ...forcing_after_update_n2_rank1__step_2.json | 2 +- ...cted_input_forcing_finalize_n2_rank0_.json | 2 +- 13 files changed, 1696 insertions(+), 4 deletions(-) create mode 100644 tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json create mode 100644 tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json new file mode 100644 index 00000000..21b1103a --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep0.json @@ -0,0 +1,176 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json new file mode 100644 index 00000000..9fb716a8 --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep1.json @@ -0,0 +1,176 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.100000023841858, + 1.0, + 0.9000000357627869, + 0.800000011920929, + 0.9708916544914246, + 1.0 + ], + [ + 3.5624279975891113, + 3.6000001430511475, + 3.6000001430511475, + 3.6000001430511475, + 3.700000047683716, + 3.6000001430511475, + 3.665524959564209 + ], + [ + 401.1370544433594, + 401.5856628417969, + 401.5168762207031, + 401.3915100097656, + 401.5160827636719, + 401.2808837890625, + 400.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 296.09698486328125, + 296.16192626953125, + 296.07421875, + 296.009033203125, + 296.02203369140625, + 296.0078125, + 296.0 + ], + [ + 0.016559408977627754, + 0.016499999910593033, + 0.016462579369544983, + 0.01636631414294243, + 0.016375012695789337, + 0.016407819464802742, + 0.016441447660326958 + ], + [ + 99160.265625, + 99751.3046875, + 99866.5625, + 99835.5234375, + 100140.1171875, + 99762.7109375, + 98958.2890625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json new file mode 100644 index 00000000..cc3d7067 --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_aorc_aws__gauge_01123000_start20130701000000_n1_rank0_timestep2.json @@ -0,0 +1,176 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + 1.100000023841858, + 1.0, + 0.8858484625816345, + 0.7788757085800171, + 0.699999988079071, + 0.800000011920929, + 0.9000000357627869 + ], + [ + 3.2642452716827393, + 3.2708349227905273, + 3.2864480018615723, + 3.254810094833374, + 3.299999952316284, + 3.200000047683716, + 3.299999952316284 + ], + [ + 402.1012878417969, + 402.48565673828125, + 402.3548889160156, + 401.989013671875, + 402.19110107421875, + 402.15179443359375, + 401.64373779296875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 295.295166015625, + 295.3619384765625, + 295.36065673828125, + 295.25482177734375, + 295.3125305175781, + 295.2787170410156, + 295.20001220703125 + ], + [ + 0.016059407964348793, + 0.01599999889731407, + 0.015986448153853416, + 0.01599999889731407, + 0.015975013375282288, + 0.016007820144295692, + 0.01599999889731407 + ], + [ + 99263.8359375, + 99864.2109375, + 99984.1171875, + 99951.0, + 100253.8671875, + 99872.7109375, + 99065.640625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + 1.0, + 0.9000000357627869, + 0.7116342782974243, + 0.6000000238418579, + 0.6000000238418579, + 0.699999988079071, + 0.800000011920929 + ], + [ + 2.964245080947876, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316, + 2.9000000953674316 + ], + [ + 392.61285400390625, + 394.7234802246094, + 397.58953857421875, + 399.78857421875, + 400.2782897949219, + 398.3241882324219, + 394.5147705078125 + ], + [ + 7.205791916931048e-05, + 8.333333244081587e-05, + 7.940235082060099e-05, + 8.92011885298416e-05, + 0.00011111111234640703, + 8.333333244081587e-05, + 8.333333244081587e-05 + ], + [ + 294.45458984375, + 294.5556335449219, + 294.5748291015625, + 294.5548095703125, + 294.57501220703125, + 294.5787048339844, + 294.3999938964844 + ], + [ + 0.01549999974668026, + 0.01549999974668026, + 0.015586447902023792, + 0.015599999576807022, + 0.015584511682391167, + 0.015607818961143494, + 0.01549999974668026 + ], + [ + 99363.8359375, + 99970.0390625, + 100085.7265625, + 100059.8515625, + 100370.1171875, + 99988.8984375, + 99170.0 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json new file mode 100644 index 00000000..ac04cbdb --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep0.json @@ -0,0 +1,194 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + -1.7653571367263794, + -1.7813688516616821, + -1.9473259449005127, + -2.122448444366455, + -2.1877381801605225, + -2.051447868347168, + -1.9433683156967163 + ], + [ + 0.37761572003364563, + 0.6093418002128601, + 0.7808473706245422, + 0.9363001585006714, + 0.9433545470237732, + 0.879269003868103, + 0.6812228560447693 + ], + [ + 421.25439453125, + 421.9554138183594, + 426.3170471191406, + 426.2093505859375, + 423.9610290527344, + 426.78668212890625, + 421.1495666503906 + ], + [ + 2.7497115297592245e-05, + 2.6101832190761343e-05, + 3.6526423627947224e-06, + 4.378602625365602e-06, + 1.9937563138228143e-06, + 2.7777778086601757e-06, + 2.7840289476444013e-05 + ], + [ + 294.7047119140625, + 294.9081115722656, + 295.7233581542969, + 295.8104248046875, + 296.0026550292969, + 295.6952209472656, + 295.033203125 + ], + [ + 0.015552615746855736, + 0.0156692061573267, + 0.015785375609993935, + 0.015971269458532333, + 0.01611531525850296, + 0.015783971175551414, + 0.01575593836605549 + ], + [ + 99378.71875, + 99519.625, + 100042.6796875, + 99980.21875, + 100207.578125, + 99960.25, + 99510.46875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + -1.7653571367263794, + -1.7813688516616821, + -1.9473259449005127, + -2.122448444366455, + -2.1877381801605225, + -2.051447868347168, + -1.9433683156967163 + ], + [ + 0.37761572003364563, + 0.6093418002128601, + 0.7808473706245422, + 0.9363001585006714, + 0.9433545470237732, + 0.879269003868103, + 0.6812228560447693 + ], + [ + 421.25439453125, + 421.9554138183594, + 426.3170471191406, + 426.2093505859375, + 423.9610290527344, + 426.78668212890625, + 421.1495666503906 + ], + [ + 2.7497115297592245e-05, + 2.6101832190761343e-05, + 3.6526423627947224e-06, + 4.378602625365602e-06, + 1.9937563138228143e-06, + 2.7777778086601757e-06, + 2.7840289476444013e-05 + ], + [ + 294.7047119140625, + 294.9081115722656, + 295.7233581542969, + 295.8104248046875, + 296.0026550292969, + 295.6952209472656, + 295.033203125 + ], + [ + 0.015552615746855736, + 0.0156692061573267, + 0.015785375609993935, + 0.015971269458532333, + 0.01611531525850296, + 0.015783971175551414, + 0.01575593836605549 + ], + [ + 99378.71875, + 99519.625, + 100042.6796875, + 99980.21875, + 100207.578125, + 99960.25, + 99510.46875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json new file mode 100644 index 00000000..49b0caf0 --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep1.json @@ -0,0 +1,194 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + -1.7653571367263794, + -1.7813688516616821, + -1.9473259449005127, + -2.122448444366455, + -2.1877381801605225, + -2.051447868347168, + -1.9433683156967163 + ], + [ + 0.37761572003364563, + 0.6093418002128601, + 0.7808473706245422, + 0.9363001585006714, + 0.9433545470237732, + 0.879269003868103, + 0.6812228560447693 + ], + [ + 421.25439453125, + 421.9554138183594, + 426.3170471191406, + 426.2093505859375, + 423.9610290527344, + 426.78668212890625, + 421.1495666503906 + ], + [ + 2.7497115297592245e-05, + 2.6101832190761343e-05, + 3.6526423627947224e-06, + 4.378602625365602e-06, + 1.9937563138228143e-06, + 2.7777778086601757e-06, + 2.7840289476444013e-05 + ], + [ + 294.7047119140625, + 294.9081115722656, + 295.7233581542969, + 295.8104248046875, + 296.0026550292969, + 295.6952209472656, + 295.033203125 + ], + [ + 0.015552615746855736, + 0.0156692061573267, + 0.015785375609993935, + 0.015971269458532333, + 0.01611531525850296, + 0.015783971175551414, + 0.01575593836605549 + ], + [ + 99378.71875, + 99519.625, + 100042.6796875, + 99980.21875, + 100207.578125, + 99960.25, + 99510.46875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + -2.3971173763275146, + -2.4549295902252197, + -2.447478771209717, + -2.776758909225464, + -2.794367551803589, + -2.5377018451690674, + -2.4731669425964355 + ], + [ + -0.2326820194721222, + -0.2735777199268341, + -0.5727046132087708, + -0.40471047163009644, + -0.31395119428634644, + -0.45896676182746887, + -0.35381215810775757 + ], + [ + 419.67388916015625, + 418.1239318847656, + 412.8692626953125, + 411.36370849609375, + 408.447021484375, + 412.05157470703125, + 417.416748046875 + ], + [ + 2.18665377360594e-06, + 1.5546942222499638e-06, + 1.938255309141823e-06, + 2.062139856207068e-06, + 1.9979931948910234e-06, + 2.0582767774612876e-06, + 2.193636646552477e-06 + ], + [ + 294.59918212890625, + 294.7616882324219, + 295.3424987792969, + 295.32720947265625, + 295.4965515136719, + 295.2781982421875, + 294.80938720703125 + ], + [ + 0.015263444744050503, + 0.015263168141245842, + 0.015189144760370255, + 0.015351217240095139, + 0.01549456175416708, + 0.015150442719459534, + 0.015340224839746952 + ], + [ + 99178.71875, + 99317.1484375, + 99849.609375, + 99789.71875, + 100023.7578125, + 99764.546875, + 99307.78125 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json new file mode 100644 index 00000000..e0fdb031 --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_conus_hrrr__gauge_01123000_start20250710040000_n1_rank0_timestep2.json @@ -0,0 +1,194 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + -2.3971173763275146, + -2.4549295902252197, + -2.447478771209717, + -2.776758909225464, + -2.794367551803589, + -2.5377018451690674, + -2.4731669425964355 + ], + [ + -0.2326820194721222, + -0.2735777199268341, + -0.5727046132087708, + -0.40471047163009644, + -0.31395119428634644, + -0.45896676182746887, + -0.35381215810775757 + ], + [ + 419.67388916015625, + 418.1239318847656, + 412.8692626953125, + 411.36370849609375, + 408.447021484375, + 412.05157470703125, + 417.416748046875 + ], + [ + 2.18665377360594e-06, + 1.5546942222499638e-06, + 1.938255309141823e-06, + 2.062139856207068e-06, + 1.9979931948910234e-06, + 2.0582767774612876e-06, + 2.193636646552477e-06 + ], + [ + 294.59918212890625, + 294.7616882324219, + 295.3424987792969, + 295.32720947265625, + 295.4965515136719, + 295.2781982421875, + 294.80938720703125 + ], + [ + 0.015263444744050503, + 0.015263168141245842, + 0.015189144760370255, + 0.015351217240095139, + 0.01549456175416708, + 0.015150442719459534, + 0.015340224839746952 + ], + [ + 99178.71875, + 99317.1484375, + 99849.609375, + 99789.71875, + 100023.7578125, + 99764.546875, + 99307.78125 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + -0.9304860234260559, + -0.8653901815414429, + -0.6647673845291138, + -0.8896331787109375, + -0.8656437397003174, + -0.8763288259506226, + -0.8475791215896606 + ], + [ + 2.1829943656921387, + 2.0918540954589844, + 2.00388240814209, + 2.4230616092681885, + 2.408148765563965, + 2.2607357501983643, + 2.0659055709838867 + ], + [ + 408.538330078125, + 407.3630065917969, + 410.9564208984375, + 417.2548828125, + 420.71685791015625, + 412.54022216796875, + 409.5802307128906 + ], + [ + 2.7922893423237838e-05, + 3.79949742637109e-05, + 5.5563548812642694e-05, + 4.795566565007903e-05, + 5.023311314289458e-05, + 4.093398820259608e-05, + 4.840279871132225e-05 + ], + [ + 294.3285217285156, + 294.40936279296875, + 294.9421081542969, + 295.02569580078125, + 295.273193359375, + 294.94293212890625, + 294.48211669921875 + ], + [ + 0.015064304694533348, + 0.01509331539273262, + 0.01529759168624878, + 0.01558045856654644, + 0.015710603445768356, + 0.01538012083619833, + 0.015133729204535484 + ], + [ + 99353.6328125, + 99489.625, + 100012.453125, + 99960.21875, + 100194.4921875, + 99934.3515625, + 99480.46875 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json new file mode 100644 index 00000000..bba9b45a --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep0.json @@ -0,0 +1,194 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + -1.0761322975158691, + -1.0974467992782593, + -1.1459846496582031, + -1.1806118488311768, + -1.223454236984253, + -1.1495691537857056, + -1.1114667654037476 + ], + [ + 1.3918956518173218, + 1.3974019289016724, + 1.3934526443481445, + 1.3804599046707153, + 1.3291858434677124, + 1.3688502311706543, + 1.4323310852050781 + ], + [ + 427.5171813964844, + 427.7338562011719, + 427.3787536621094, + 426.5926513671875, + 424.88232421875, + 426.71649169921875, + 428.2303771972656 + ], + [ + 6.700232916045934e-05, + 7.082190131768584e-05, + 7.916617323644459e-05, + 8.387938578380272e-05, + 9.288718865718693e-05, + 6.936289719305933e-05, + 8.963922300608829e-05 + ], + [ + 295.4785461425781, + 295.65411376953125, + 295.9064636230469, + 296.1391906738281, + 296.1512451171875, + 295.9896240234375, + 295.7182312011719 + ], + [ + 0.016321562230587006, + 0.01640212908387184, + 0.016480250284075737, + 0.016555828973650932, + 0.01657135784626007, + 0.01648532971739769, + 0.016461333259940147 + ], + [ + 99626.640625, + 99770.1953125, + 99997.09375, + 100212.1484375, + 100239.765625, + 100102.7109375, + 99778.9453125 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + -1.0761322975158691, + -1.0974467992782593, + -1.1459846496582031, + -1.1806118488311768, + -1.223454236984253, + -1.1495691537857056, + -1.1114667654037476 + ], + [ + 1.3918956518173218, + 1.3974019289016724, + 1.3934526443481445, + 1.3804599046707153, + 1.3291858434677124, + 1.3688502311706543, + 1.4323310852050781 + ], + [ + 427.5171813964844, + 427.7338562011719, + 427.3787536621094, + 426.5926513671875, + 424.88232421875, + 426.71649169921875, + 428.2303771972656 + ], + [ + 6.700232916045934e-05, + 7.082190131768584e-05, + 7.916617323644459e-05, + 8.387938578380272e-05, + 9.288718865718693e-05, + 6.936289719305933e-05, + 8.963922300608829e-05 + ], + [ + 295.4785461425781, + 295.65411376953125, + 295.9064636230469, + 296.1391906738281, + 296.1512451171875, + 295.9896240234375, + 295.7182312011719 + ], + [ + 0.016321562230587006, + 0.01640212908387184, + 0.016480250284075737, + 0.016555828973650932, + 0.01657135784626007, + 0.01648532971739769, + 0.016461333259940147 + ], + [ + 99626.640625, + 99770.1953125, + 99997.09375, + 100212.1484375, + 100239.765625, + 100102.7109375, + 99778.9453125 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json new file mode 100644 index 00000000..516181c5 --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep1.json @@ -0,0 +1,194 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + -1.0761322975158691, + -1.0974467992782593, + -1.1459846496582031, + -1.1806118488311768, + -1.223454236984253, + -1.1495691537857056, + -1.1114667654037476 + ], + [ + 1.3918956518173218, + 1.3974019289016724, + 1.3934526443481445, + 1.3804599046707153, + 1.3291858434677124, + 1.3688502311706543, + 1.4323310852050781 + ], + [ + 427.5171813964844, + 427.7338562011719, + 427.3787536621094, + 426.5926513671875, + 424.88232421875, + 426.71649169921875, + 428.2303771972656 + ], + [ + 6.700232916045934e-05, + 7.082190131768584e-05, + 7.916617323644459e-05, + 8.387938578380272e-05, + 9.288718865718693e-05, + 6.936289719305933e-05, + 8.963922300608829e-05 + ], + [ + 295.4785461425781, + 295.65411376953125, + 295.9064636230469, + 296.1391906738281, + 296.1512451171875, + 295.9896240234375, + 295.7182312011719 + ], + [ + 0.016321562230587006, + 0.01640212908387184, + 0.016480250284075737, + 0.016555828973650932, + 0.01657135784626007, + 0.01648532971739769, + 0.016461333259940147 + ], + [ + 99626.640625, + 99770.1953125, + 99997.09375, + 100212.1484375, + 100239.765625, + 100102.7109375, + 99778.9453125 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + -1.068263053894043, + -1.0685670375823975, + -1.0789318084716797, + -1.0849263668060303, + -1.1119216680526733, + -1.084563136100769, + -1.0583709478378296 + ], + [ + 0.6822294592857361, + 0.7289265394210815, + 0.756970226764679, + 0.7777915596961975, + 0.7614363431930542, + 0.733332097530365, + 0.7896708846092224 + ], + [ + 420.2391662597656, + 419.52593994140625, + 418.55462646484375, + 417.3071594238281, + 417.33074951171875, + 418.093017578125, + 419.0323181152344 + ], + [ + 0.00012460591096896678, + 0.00013003931962884963, + 0.0001419243199052289, + 0.00015705759869888425, + 0.00015265561523847282, + 0.00014819808711763471, + 0.0001354165724478662 + ], + [ + 295.5354919433594, + 295.6622314453125, + 295.81488037109375, + 295.9495849609375, + 295.9639892578125, + 295.8546142578125, + 295.7101745605469 + ], + [ + 0.016352202743291855, + 0.016402678564190865, + 0.016432903707027435, + 0.016464166343212128, + 0.016467083245515823, + 0.01642734371125698, + 0.0164420735090971 + ], + [ + 99622.25, + 99775.7265625, + 100026.28125, + 100255.4296875, + 100295.7265625, + 100129.203125, + 99796.5390625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json new file mode 100644 index 00000000..418b8a18 --- /dev/null +++ b/tests/test_data/expected_results/test_expect_regrid_conus_rap__gauge_01123000_start20250710040000_n1_rank0_timestep2.json @@ -0,0 +1,194 @@ +{ + "geo_meta__element_ids": [ + 11466, + 11467, + 11468, + 11469, + 11470, + 11475, + 11476 + ], + "regridded_forcings1": [ + [ + -1.068263053894043, + -1.0685670375823975, + -1.0789318084716797, + -1.0849263668060303, + -1.1119216680526733, + -1.084563136100769, + -1.0583709478378296 + ], + [ + 0.6822294592857361, + 0.7289265394210815, + 0.756970226764679, + 0.7777915596961975, + 0.7614363431930542, + 0.733332097530365, + 0.7896708846092224 + ], + [ + 420.2391662597656, + 419.52593994140625, + 418.55462646484375, + 417.3071594238281, + 417.33074951171875, + 418.093017578125, + 419.0323181152344 + ], + [ + 0.00012460591096896678, + 0.00013003931962884963, + 0.0001419243199052289, + 0.00015705759869888425, + 0.00015265561523847282, + 0.00014819808711763471, + 0.0001354165724478662 + ], + [ + 295.5354919433594, + 295.6622314453125, + 295.81488037109375, + 295.9495849609375, + 295.9639892578125, + 295.8546142578125, + 295.7101745605469 + ], + [ + 0.016352202743291855, + 0.016402678564190865, + 0.016432903707027435, + 0.016464166343212128, + 0.016467083245515823, + 0.01642734371125698, + 0.0164420735090971 + ], + [ + 99622.25, + 99775.7265625, + 100026.28125, + 100255.4296875, + 100295.7265625, + 100129.203125, + 99796.5390625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings1_elem": null, + "regridded_forcings2": [ + [ + -0.2611607313156128, + -0.2051878571510315, + -0.17124134302139282, + -0.12973558902740479, + -0.17438896000385284, + -0.1340210735797882, + -0.22130000591278076 + ], + [ + 2.414552927017212, + 2.4414725303649902, + 2.4123740196228027, + 2.3891539573669434, + 2.3439924716949463, + 2.383826494216919, + 2.4790589809417725 + ], + [ + 416.91241455078125, + 416.72991943359375, + 417.650146484375, + 418.7496032714844, + 419.7668151855469, + 418.9446105957031, + 415.4181823730469 + ], + [ + 0.00027702184161171317, + 0.00031947996467351913, + 0.0003713241603691131, + 0.00041664738091640174, + 0.00044014950981363654, + 0.0003793887444771826, + 0.00034191107260994613 + ], + [ + 295.3213806152344, + 295.4155578613281, + 295.5428161621094, + 295.6658935546875, + 295.6635437011719, + 295.59454345703125, + 295.4398193359375 + ], + [ + 0.01613033562898636, + 0.016163060441613197, + 0.016186321154236794, + 0.01621423475444317, + 0.016226010397076607, + 0.016192473471164703, + 0.01617889292538166 + ], + [ + 99746.7578125, + 99902.515625, + 100129.4140625, + 100344.46875, + 100372.0859375, + 100235.03125, + 99911.265625 + ], + [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + ], + "regridded_forcings2_elem": null, + "regridded_mask": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "regridded_mask_elem": null, + "regridded_mask_elem_AORC": null, + "regridded_precip1": null, + "regridded_precip1_elem": null, + "regridded_precip2": null, + "regridded_precip2_elem": null +} \ No newline at end of file diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json index 01ccb117..2a8e3f58 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_2.json @@ -112,7 +112,7 @@ "esmf_field_out": { "_data": [ 99263.83797955123, - 99864.20759754517, + 99864.20759754519, 99984.1178572765, 99951.00373610242 ], diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json index 9970fd8b..3198b0e9 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank0__step_3.json @@ -111,7 +111,7 @@ "esmf_field_in_elem": null, "esmf_field_out": { "_data": [ - 99363.83797955123, + 99363.83797955124, 99970.04062791045, 100085.72479451672, 100059.85331996171 diff --git a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json index 3b3d7d69..b15f95c2 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_after_update_n2_rank1__step_2.json @@ -113,7 +113,7 @@ "_data": [ 100253.86506548879, 99872.71103274089, - 99065.63984167963 + 99065.63984167964 ], "_finalized": false, "_grid": { diff --git a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json index 9970fd8b..3198b0e9 100644 --- a/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json +++ b/tests/test_data/expected_results/test_expected_input_forcing_finalize_n2_rank0_.json @@ -111,7 +111,7 @@ "esmf_field_in_elem": null, "esmf_field_out": { "_data": [ - 99363.83797955123, + 99363.83797955124, 99970.04062791045, 100085.72479451672, 100059.85331996171 From f1ea03fd20849fbbb42a9c642ccff5100d0aba5c Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Fri, 3 Apr 2026 14:24:27 -0500 Subject: [PATCH 30/34] fix boolean from pytest arg issue --- tests/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 891ca676..d5ac65ab 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -148,9 +148,9 @@ def bmi_forcing_fixture_input_forcing( output_path=None, ) map_old_to_new_var_names = request.config.getoption("--map_old_to_new_var_names") - if map_old_to_new_var_names == "True": + if map_old_to_new_var_names == "True" or map_old_to_new_var_names: map_old_to_new_var_names = True - elif map_old_to_new_var_names == "False": + elif map_old_to_new_var_names == "False" or map_old_to_new_var_names is False: map_old_to_new_var_names = False else: raise ValueError( From cd91046b7aaa2bddce50d126c499296072216488 Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Fri, 3 Apr 2026 14:41:04 -0500 Subject: [PATCH 31/34] fix boolean for map_old_to_new_var_names 2.0 --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index d5ac65ab..37f39a79 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -148,7 +148,7 @@ def bmi_forcing_fixture_input_forcing( output_path=None, ) map_old_to_new_var_names = request.config.getoption("--map_old_to_new_var_names") - if map_old_to_new_var_names == "True" or map_old_to_new_var_names: + if map_old_to_new_var_names == "True" or map_old_to_new_var_names is True: map_old_to_new_var_names = True elif map_old_to_new_var_names == "False" or map_old_to_new_var_names is False: map_old_to_new_var_names = False From ab1a6ede7d0bd8869c8a79f82bd1e00a6ed8356b Mon Sep 17 00:00:00 2001 From: "Matthew.Deshotel" Date: Sun, 5 Apr 2026 07:24:27 -0500 Subject: [PATCH 32/34] add dtype to np.full calls --- .../core/forcingInputMod.py | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py index ea1a50cf..b24bf1cb 100755 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/core/forcingInputMod.py @@ -1104,30 +1104,32 @@ def init_dict( input_dict[force_key].t2dTmp = np.full( [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan, + dtype=np.float32, ) input_dict[force_key].psfcTmp = np.full( [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan, + dtype=np.float32, ) elif config_options.grid_type == "unstructured": input_dict[force_key].t2dTmp = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].psfcTmp = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].t2dTmp_elem = np.full( - [geo_meta_wrf_hydro.ny_local_elem], np.nan + [geo_meta_wrf_hydro.ny_local_elem], np.nan, dtype=np.float32 ) input_dict[force_key].psfcTmp_elem = np.full( - [geo_meta_wrf_hydro.ny_local_elem], np.nan + [geo_meta_wrf_hydro.ny_local_elem], np.nan, dtype=np.float32 ) elif config_options.grid_type == "hydrofabric": input_dict[force_key].t2dTmp = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].psfcTmp = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) # Initialize the local final grid of values. This is represntative # of the local grid for this forcing, for a specific output timesetp. @@ -1142,53 +1144,62 @@ def init_dict( input_dict[force_key].final_forcings = np.full( [force_count, geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan, + dtype=np.float64, ) input_dict[force_key].height = np.full( - [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan + [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], + np.nan, + dtype=np.float32, ) input_dict[force_key].regridded_mask = np.full( - [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan + [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], + np.nan, + dtype=np.float32, ) input_dict[force_key].regridded_mask_AORC = np.full( - [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], np.nan + [geo_meta_wrf_hydro.ny_local, geo_meta_wrf_hydro.nx_local], + np.nan, + dtype=np.float32, ) elif config_options.grid_type == "unstructured": input_dict[force_key].final_forcings = np.full( - [force_count, geo_meta_wrf_hydro.ny_local], np.nan + [force_count, geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float64 ) input_dict[force_key].height = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].regridded_mask = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].regridded_mask_AORC = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].final_forcings_elem = np.full( - [force_count, geo_meta_wrf_hydro.ny_local_elem], np.nan + [force_count, geo_meta_wrf_hydro.ny_local_elem], + np.nan, + dtype=np.float64, ) input_dict[force_key].height_elem = np.full( - [geo_meta_wrf_hydro.ny_local_elem], np.nan + [geo_meta_wrf_hydro.ny_local_elem], np.nan, dtype=np.float32 ) input_dict[force_key].regridded_mask_elem = np.full( - [geo_meta_wrf_hydro.ny_local_elem], np.nan + [geo_meta_wrf_hydro.ny_local_elem], np.nan, dtype=np.float32 ) input_dict[force_key].regridded_mask_elem_AORC = np.full( - [geo_meta_wrf_hydro.ny_local_elem], np.nan + [geo_meta_wrf_hydro.ny_local_elem], np.nan, dtype=np.float32 ) elif config_options.grid_type == "hydrofabric": input_dict[force_key].final_forcings = np.full( - [force_count, geo_meta_wrf_hydro.ny_local], np.nan + [force_count, geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float64 ) input_dict[force_key].height = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].regridded_mask = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) input_dict[force_key].regridded_mask_AORC = np.full( - [geo_meta_wrf_hydro.ny_local], np.nan + [geo_meta_wrf_hydro.ny_local], np.nan, dtype=np.float32 ) # Obtain custom input cycle frequencies if force_key == 10 or force_key == 11: From da48fa24562ded55df3a09385f0b1179114f3096 Mon Sep 17 00:00:00 2001 From: Matthew Deshotel Date: Mon, 6 Apr 2026 14:27:25 -0500 Subject: [PATCH 33/34] add copy_and_stringify_functions --- tests/test_utils.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 76750244..ad9f97a8 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -45,21 +45,20 @@ OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" -def convert_functions_to_strings(d: dict) -> dict: - """Convert functions in a nested dictionary to strings.""" +def copy_and_stringify_functions(d): + """Copy dict and stringify functions in the dict.""" + new_dict = {} for key, value in d.items(): if isinstance(value, dict): - # Recursively call the function for nested dictionaries - convert_functions_to_strings(value) - elif isinstance(value, types.FunctionType): - # Convert function to its name string - d[key] = value.__name__ - elif isinstance(value, list): - # Handle lists, which might also contain functions in complex structures - for i, item in enumerate(value): - if isinstance(item, types.FunctionType): - value[i] = item.__name__ - return d + # Recursively handle nested dictionaries + new_dict[key] = copy_and_stringify_functions(value) + elif callable(value): + # Convert function to its string representation (e.g., function name) + new_dict[key] = value.__name__ + else: + # Keep other values (strings, ints, etc.) as they are + new_dict[key] = value + return new_dict def convert_long_lists(data: typing.Any, max_length: int = 10) -> typing.Any: @@ -208,12 +207,11 @@ def deserial_actual( """Get the actual metadata results as a deserialized dictionary.""" deserial_actual = json.loads( serialize_to_json( - convert_functions_to_strings(self.test_class_as_dict), sort_keys=True + copy_and_stringify_functions(self.test_class_as_dict), sort_keys=True ) ) # order and reverse so private attributes are last deserial_actual = OrderedDict(reversed(list(deserial_actual.items()))) - # deserial_actual = convert_functions_to_strings(deserial_actual) deserial_actual = convert_long_lists(deserial_actual, 10) if write_to_file: self.write_json( From 7aa1322aaa22200102d670fd1f97c15249e2bda5 Mon Sep 17 00:00:00 2001 From: Matthew Deshotel Date: Tue, 7 Apr 2026 07:26:25 -0500 Subject: [PATCH 34/34] add class_to_dict function --- tests/test_utils.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index ad9f97a8..c629058b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -45,6 +45,21 @@ OS_VAR__CREATE_TEST_EXPECT_DATA = "FORCING_PYTEST_WRITE_TEST_EXPECTED_DATA" +def class_to_dict(class_to_convert: typing.Any): + """Get the attributes of the test class as a dictionary, where the keys are the attribute names and the values are the attribute values. + + This is useful for serializing the test class to JSON for comparison against expected results. + """ + data = {} + # parrent_class_dict=self.test_class.__class__.__base__.__dict__ + # child_class_dict=self.test_class.__class__.__dict__ + for key in dir(class_to_convert): + val = getattr(class_to_convert, key) + if not callable(val) and not key.startswith("_"): + data[key] = val + return data + + def copy_and_stringify_functions(d): """Copy dict and stringify functions in the dict.""" new_dict = {} @@ -293,14 +308,7 @@ def test_class_as_dict(self) -> dict: This is useful for serializing the test class to JSON for comparison against expected results. """ - data = {} - # parrent_class_dict=self.test_class.__class__.__base__.__dict__ - # child_class_dict=self.test_class.__class__.__dict__ - for key in dir(self.test_class): - val = getattr(self.test_class, key) - if not callable(val) and not key.startswith("_"): - data[key] = val - return data + return class_to_dict(self.test_class) def after_bmi_model_update(self, current_output_step: int) -> None: """Run checks after bmi_model.update() has been called. @@ -625,7 +633,9 @@ def remove_extra_data_from_regrid_results( """ ### This is returned after being modified. - input_forcings_deserial = json.loads(serialize_to_json(input_forcings)) + input_forcings_deserial = json.loads( + serialize_to_json(class_to_dict(input_forcings)) + ) ### e.g. ['TMP_2maboveground', 'SPFH_2maboveground', 'UGRD_10maboveground', 'VGRD_10maboveground', 'APCP_surface', 'DSWRF_surface', 'DLWRF_surface', 'PRES_surface'] netcdf_var_names = input_forcings.netcdf_var_names ### e.g. ['TMP', 'SPFH', 'UGRD', 'VGRD', 'APCP', 'DSWRF', 'DLWRF', 'PRES']