def test_surface_variable(self): variable = "air_pressure_at_sea_level" times = [dt.datetime(2019, 1, 1), dt.datetime(2019, 1, 1, 12)] longitudes = [0, 1, 2] latitudes = [0, 1, 2] values = np.arange(2 * 3 * 3).reshape(2, 3, 3) with netCDF4.Dataset(self.path, "w") as dataset: variable_surface(dataset, variable, times, longitudes, latitudes, values) lon = 0 lat = 1 loader = series.SeriesLoader([self.path]) result = loader.series_file(self.path, variable, lon, lat) expect = {"x": times, "y": values[:, 1, 0]} npt.assert_array_equal(expect["x"], result["x"]) npt.assert_array_equal(expect["y"], result["y"])
def test_3d_variable_scalar_time(tmpdir): path = str(tmpdir / "file.nc") variable = "relative_humidity" time = dt.datetime(2019, 1, 1) pressures = [1000.001, 500, 250] longitudes = [0, 1] latitudes = [0, 1] values = np.arange(3 * 2 * 2).reshape(3, 2, 2) with netCDF4.Dataset(path, "w") as dataset: variable_3d_scalar_time(dataset, variable, time, pressures, longitudes, latitudes, values) lon, lat = 0.1, 0.1 loader = series.SeriesLoader([path]) result = loader._load_netcdf4(path, variable, lon, lat, pressure=500) expect = {"x": [time], "y": [values[1, 0, 0]]} npt.assert_array_equal(expect["x"], result["x"]) npt.assert_array_equal(expect["y"], result["y"])
def test_series_given_missing_variable_returns_empty(self): pressure = 500 lon = 1 lat = 1 p0, p1 = 1000, 500 t0 = dt.datetime(2019, 1, 1) t1 = dt.datetime(2019, 1, 1, 3) longitudes = [0, 1] latitudes = [0, 1] pressures = [p0, p1, p0, p1] times = [t0, t0, t1, t1] values = np.arange(4 * 2 * 2).reshape(4, 2, 2) with netCDF4.Dataset(self.path, "w") as dataset: variable_dim0(dataset, pressures, times, longitudes, latitudes, values) loader = series.SeriesLoader([self.path]) variable = "not_in_file" result = loader.series_file(self.path, variable, lon, lat, pressure) expect = {"x": [], "y": []} npt.assert_array_equal(expect["x"], result["x"]) npt.assert_array_equal(expect["y"], result["y"])
def test_4d_variable(tmpdir): path = str(tmpdir / "file.nc") variable = "wet_bulb_potential_temperature" times = [ dt.datetime(2019, 1, 1), dt.datetime(2019, 1, 1, 6), dt.datetime(2019, 1, 1, 12) ] pressures = [1000.001, 500, 250] longitudes = [0, 1, 2] latitudes = [0, 1, 2] values = np.arange(3 * 3 * 3 * 3).reshape(3, 3, 3, 3) with netCDF4.Dataset(path, "w") as dataset: variable_4d(dataset, variable, times, pressures, longitudes, latitudes, values) lon, lat = 0.1, 0.1 loader = series.SeriesLoader([path]) result = loader._load_netcdf4(path, variable, lon, lat, pressure=500) expect = {"x": times, "y": values[:, 1, 0, 0]} npt.assert_array_equal(expect["x"], result["x"]) npt.assert_array_equal(expect["y"], result["y"])
def test_series_given_dim0_variable(self): variable = "relative_humidity" pressure = 500 lon = 1 lat = 1 p0, p1 = 1000, 500 t0 = dt.datetime(2019, 1, 1) t1 = dt.datetime(2019, 1, 1, 3) longitudes = [0, 1] latitudes = [0, 1] pressures = [p0, p1, p0, p1] times = [t0, t0, t1, t1] values = np.arange(4 * 2 * 2).reshape(4, 2, 2) with netCDF4.Dataset(self.path, "w") as dataset: variable_dim0(dataset, pressures, times, longitudes, latitudes, values) loader = series.SeriesLoader([self.path]) result = loader.series_file(self.path, variable, lon, lat, pressure) i, j = 1, 1 expect = {"x": [t0, t1], "y": [values[1, j, i], values[3, j, i]]} npt.assert_array_equal(expect["x"], result["x"]) npt.assert_array_equal(expect["y"], result["y"])