From bf6e4370eaa93077b2fe08dd31dbdd92c9952688 Mon Sep 17 00:00:00 2001 From: David Huard Date: Fri, 5 Feb 2021 09:31:19 -0500 Subject: [PATCH 1/3] added simple test with DAP link to demo failure --- ravenpy/utilities/gis.py | 3 ++- tests/test_emulators.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ravenpy/utilities/gis.py b/ravenpy/utilities/gis.py index 914f68ae..36075682 100644 --- a/ravenpy/utilities/gis.py +++ b/ravenpy/utilities/gis.py @@ -75,7 +75,8 @@ def feature_contains( for i, layer_name in enumerate(fiona.listlayers(str(shp))): with fiona.open(shp, "r", crs=shape_crs, layer=i) as vector: for f in vector.filter(bbox=(point.x, point.y, point.x, point.y)): - return f + return f0 + return False diff --git a/tests/test_emulators.py b/tests/test_emulators.py index 54e90a92..1c62264c 100644 --- a/tests/test_emulators.py +++ b/tests/test_emulators.py @@ -27,6 +27,8 @@ "raven-gr4j-cemaneige/Salmon-River-Near-Prince-George_meteo_daily.nc" ) +# Link to THREDDS Data Server netCDF testdata +TDS = "https://pavics.ouranos.ca/twitcher/ows/proxy/thredds/dodsC/birdhouse/testdata/raven" @pytest.fixture def input2d(tmpdir): @@ -374,6 +376,23 @@ def test_parallel_basins(self, input2d): z = zipfile.ZipFile(model.outputs["rv_config"]) assert len(z.filelist) == 10 + @pytest.mark.online + def test_dap(self): + """Test Raven with DAP link instead of local netCDF file.""" + model = GR4JCN() + config = dict(start_date=dt.datetime(2000, 1, 1), + end_date=dt.datetime(2002, 1, 1), + run_name="test", + name="Salmon", + area="4250.6", + elevation="843.0", + latitude=54.4848, + longitude=-123.3659, + params=model.params(0.529, -3.396, 407.29, 1.072, 16.9, 0.947)) + + ts = f"{TDS}/raven-gr4j-cemaneige/Salmon-River-Near-Prince-George_meteo_daily.nc" + model(ts, **config) + class TestGR4JCN_OST: def test_simple(self): From e7ad17e02cc24abc45316e417fa35090024788c9 Mon Sep 17 00:00:00 2001 From: David Huard Date: Thu, 8 Apr 2021 15:35:17 -0400 Subject: [PATCH 2/3] fix importer to support DAP links as inputs --- ravenpy/models/importers.py | 4 ++-- tests/test_emulators.py | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/ravenpy/models/importers.py b/ravenpy/models/importers.py index 9c60e609..cee757b8 100644 --- a/ravenpy/models/importers.py +++ b/ravenpy/models/importers.py @@ -775,13 +775,13 @@ def _check_gridcell_in_proximity_of_shape( class NcDataImporter: def __init__(self, fns): - self.fns = map(Path, fns) + self.fns = fns self.attrs = {} self._extract_nc_attrs(self.fns) def _extract_nc_attrs(self, fns): for fn in fns: - if ".nc" in fn.suffix: + if ".nc" in Path(fn).suffix: with xr.open_dataset(fn) as ds: # Check if any alternate variable name is in the file. for var, alt_names in rv.alternate_nc_names.items(): diff --git a/tests/test_emulators.py b/tests/test_emulators.py index ea88ac91..eddea891 100644 --- a/tests/test_emulators.py +++ b/tests/test_emulators.py @@ -659,10 +659,7 @@ def test_dap(self): end_date=dt.datetime(2002, 1, 1), run_name="test", name="Salmon", - area="4250.6", - elevation="843.0", - latitude=54.4848, - longitude=-123.3659, + hrus=(GR4JCN.LandHRU(**salmon_land_hru_1),), params=model.params(0.529, -3.396, 407.29, 1.072, 16.9, 0.947), ) From 2e229c3dc2f2bda617284775106b525bef4840ff Mon Sep 17 00:00:00 2001 From: David Huard Date: Thu, 8 Apr 2021 17:36:06 -0400 Subject: [PATCH 3/3] use startswith to check suffix is nc --- ravenpy/models/importers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ravenpy/models/importers.py b/ravenpy/models/importers.py index cee757b8..64933764 100644 --- a/ravenpy/models/importers.py +++ b/ravenpy/models/importers.py @@ -781,7 +781,7 @@ def __init__(self, fns): def _extract_nc_attrs(self, fns): for fn in fns: - if ".nc" in Path(fn).suffix: + if Path(fn).suffix.startswith(".nc"): with xr.open_dataset(fn) as ds: # Check if any alternate variable name is in the file. for var, alt_names in rv.alternate_nc_names.items():