def test_locator_given_time_pressure_format(self): pattern = self.path reference_time = dt.datetime(2019, 1, 1) times = [dt.datetime(2019, 1, 2), dt.datetime(2019, 1, 2, 3)] pressures = [1000, 950, 850] with netCDF4.Dataset(self.path, "w") as dataset: um = tutorial.UM(dataset) dataset.createDimension("longitude", 1) dataset.createDimension("latitude", 1) var = um.times("time", length=len(times)) var[:] = netCDF4.date2num(times, units=var.units) um.forecast_reference_time(reference_time) var = um.pressures("pressure", length=len(pressures)) var[:] = pressures dims = ("time", "pressure", "longitude", "latitude") coordinates = "forecast_period_1 forecast_reference_time" var = um.relative_humidity(dims, coordinates=coordinates) var[:] = 100. variable = "relative_humidity" initial_time = reference_time valid_time = times[1] pressure = pressures[2] locator = unified_model.Locator([self.path]) _, result = locator.locate(pattern, variable, initial_time, valid_time, pressure) expect = (1, 2) self.assertEqual(expect, result)
def test_locator_given_dim0_format(self): pattern = self.path times = [dt.datetime(2019, 1, 1), dt.datetime(2019, 1, 2)] with netCDF4.Dataset(self.path, "w") as dataset: um = tutorial.UM(dataset) dataset.createDimension("longitude", 1) dataset.createDimension("latitude", 1) var = um.times("time", length=len(times), dim_name="dim0") var[:] = netCDF4.date2num(times, units=var.units) um.forecast_reference_time(times[0]) var = um.pressures("pressure", length=len(times), dim_name="dim0") var[:] = 1000. dims = ("dim0", "longitude", "latitude") coordinates = "forecast_period_1 forecast_reference_time pressure time" var = um.relative_humidity(dims, coordinates=coordinates) var[:] = 100. variable = "relative_humidity" initial_time = dt.datetime(2019, 1, 1) valid_time = dt.datetime(2019, 1, 2) locator = unified_model.Locator([self.path]) _, result = locator.locate(pattern, variable, initial_time, valid_time, pressure=1000.0001) expect = (1, ) self.assertEqual(expect, result)
def test_valid_times(self): units = "hours since 1970-01-01 00:00:00" times = { "time_0": [dt.datetime(2019, 1, 1)], "time_1": [dt.datetime(2019, 1, 1, 3)] } with netCDF4.Dataset(self.path, "w") as dataset: um = tutorial.UM(dataset) for name, values in times.items(): var = um.times(name, length=len(values)) var[:] = netCDF4.date2num(values, units=var.units) var = um.pressures("pressure", length=1) var[:] = 1000. var = um.longitudes(length=1) var[:] = 125. var = um.latitudes(length=1) var[:] = 45. dims = ("time_1", "pressure", "longitude", "latitude") var = um.relative_humidity(dims) var[:] = 100. variable = "relative_humidity" coord = unified_model.Coordinates() result = coord.valid_times(self.path, variable) expect = times["time_1"] np.testing.assert_array_equal(expect, result)
def test_initial_time_given_forecast_reference_time(self): time = dt.datetime(2019, 1, 1, 12) with netCDF4.Dataset(self.path, "w") as dataset: um = tutorial.UM(dataset) um.forecast_reference_time(time) result = unified_model.read_initial_time(self.path) expect = time np.testing.assert_array_equal(expect, result)
def test_time_axis_given_time_pressure_lon_lat_dimensions(self): with netCDF4.Dataset(self.path, "w") as dataset: um = tutorial.UM(dataset) dims = ("time_1", "pressure_0", "longitude", "latitude") for dim in dims: dataset.createDimension(dim, 1) var = um.relative_humidity(dims) result = disk.time_axis(self.path, "relative_humidity") expect = 0 self.assertEqual(expect, result)
def test_time_axis_given_dim0_format(self): coordinates = "forecast_period_1 forecast_reference_time pressure time" with netCDF4.Dataset(self.path, "w") as dataset: um = tutorial.UM(dataset) dims = ("dim0", "longitude", "latitude") for dim in dims: dataset.createDimension(dim, 1) var = um.relative_humidity(dims, coordinates=coordinates) result = disk.time_axis(self.path, "relative_humidity") expect = 0 self.assertEqual(expect, result)