def _check_period(self, lbcode, expect_match=True): lbtim = _lbtim(ib=2, ic=1) # Start time t1 = nc_datetime(1970, 1, 9, hour=3, minute=0, second=0) # End time t2 = nc_datetime(1970, 1, 10, hour=3, minute=0, second=0) lbft = 2.0 # sample period coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) if expect_match: expect_result = [ (DimCoord(24 * 9.125 - 2.0, standard_name="forecast_reference_time", units=_EPOCH_TIME_UNIT), None), (DimCoord(standard_name="forecast_period", units="hours", points=[-10.0], bounds=[-22.0, 2.0]), None), ( DimCoord( standard_name="time", units=_EPOCH_TIME_UNIT, points=[24 * 8.625], bounds=[24 * 8.125, 24 * 9.125], ), None, ), ] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def _check_yearly(self, lbcode, expect_match=True): lbtim = _lbtim(ib=3, ic=1) # Start time t1 = nc_datetime(1970, 1, 9, hour=9, minute=0, second=0) # End time t2 = nc_datetime(1972, 1, 11, hour=9, minute=0, second=0) lbft = 3.0 # sample period coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) if expect_match: t1_hours = 24 * 8.375 t2_hours = 24 * (10.375 + 2 * 365) period_hours = 24.0 * (2 * 365 + 2) expect_result = [ (DimCoord([t2_hours - lbft], standard_name="forecast_reference_time", units=_EPOCH_TIME_UNIT), None), ( DimCoord( standard_name="forecast_period", units="hours", points=[lbft], bounds=[lbft - period_hours, lbft], ), None, ), ( DimCoord( standard_name="time", units=_EPOCH_TIME_UNIT, points=[t2_hours], bounds=[t1_hours, t2_hours] ), None, ), ] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def _check_forecast(self, lbcode, expect_match=True): lbtim = _lbtim(ib=1, ic=1) # Validity time t1 = nc_datetime(1970, 1, 10, hour=6, minute=0, second=0) # Forecast time t2 = nc_datetime(1970, 1, 9, hour=3, minute=0, second=0) lbft = None # unused coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft) if expect_match: expect_result = [(DimCoord(24 * 1.125, standard_name='forecast_period', units='hours'), None), (DimCoord(24 * 9.25, standard_name='time', units=_EPOCH_TIME_UNIT), None), (DimCoord(24 * 8.125, standard_name='forecast_reference_time', units=_EPOCH_TIME_UNIT), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def _check_yearly(self, lbcode, expect_match=True): lbtim = _lbtim(ib=3, ic=1) # Start time t1 = nc_datetime(1970, 1, 9, hour=9, minute=0, second=0) # End time t2 = nc_datetime(1972, 1, 11, hour=9, minute=0, second=0) lbft = 3.0 # sample period coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft) if expect_match: t1_hours = 24 * 8.375 t2_hours = 24 * (10.375 + 2 * 365) period_hours = 24.0 * (2 * 365 + 2) expect_result = [(DimCoord([t2_hours - lbft], standard_name='forecast_reference_time', units=_EPOCH_TIME_UNIT), None), (DimCoord(standard_name='forecast_period', units='hours', points=[lbft], bounds=[lbft - period_hours, lbft]), None), (DimCoord(standard_name='time', units=_EPOCH_TIME_UNIT, points=[t2_hours], bounds=[t1_hours, t2_hours]), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def _check_period(self, lbcode, expect_match=True): lbtim = _lbtim(ib=2, ic=1) # Start time t1 = nc_datetime(1970, 1, 9, hour=3, minute=0, second=0) # End time t2 = nc_datetime(1970, 1, 10, hour=3, minute=0, second=0) lbft = 2.0 # sample period coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft) if expect_match: expect_result = [(DimCoord(24 * 9.125 - 2.0, standard_name='forecast_reference_time', units=_EPOCH_TIME_UNIT), None), (DimCoord(standard_name='forecast_period', units='hours', points=[-10.0], bounds=[-22.0, 2.0]), None), (DimCoord(standard_name='time', units=_EPOCH_TIME_UNIT, points=[24 * 8.625], bounds=[24 * 8.125, 24 * 9.125]), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def test_unrecognised(self): lbtim = _lbtim(ib=4, ic=1) t1 = nc_datetime(0, 0, 0) t2 = nc_datetime(0, 0, 0) lbft = None lbcode = _lbcode(0) coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) self.assertEqual(coords_and_dims, [])
def test_(self): lbtim = _lbtim(ib=2, ic=1) t1 = nc_datetime(0, 1, 1) t2 = nc_datetime(0, 1, 31, 23, 59, 00) lbft = 0 lbcode = _lbcode(1) coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) self.assertEqual(coords_and_dims, [])
def test_not_exact_hours(self): lbtim = _lbtim(ib=1, ic=1) t1 = nc_datetime(2015, 1, 20, hour=7, minute=10, second=0) t2 = nc_datetime(2015, 1, 20, hour=0, minute=0, second=0) coords_and_dims = _convert_scalar_time_coords( lbcode=_lbcode(1), lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=None ) (fp, _), (t, _), (frt, _) = coords_and_dims self.assertEqual(fp.points[0], 7.1666666641831398) self.assertEqual(t.points[0], 394927.16666666418)
def _check_timepoint(self, lbcode, expect_match=True): lbtim = _lbtim(ib=0, ic=1) t1 = nc_datetime(1970, 1, 1, hour=6, minute=0, second=0) t2 = nc_datetime(0, 0, 0) # not used in result lbft = None # unused coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) if expect_match: expect_result = [(DimCoord(24 * 0.25, standard_name="time", units=_EPOCH_TIME_UNIT), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def test(self): lbcode = _lbcode(value=31323) lbtim = _lbtim(ib=2, ic=2) t1 = nc_datetime(1970, 1, 3, hour=0, minute=0, second=0) t2 = nc_datetime(1970, 1, 4, hour=0, minute=0, second=0) lbft = 24 * 4 coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) t2_hours = 24 * 3 expected_result = [ (DimCoord([t2_hours - lbft], standard_name="forecast_reference_time", units=_EPOCH_TIME_UNIT), None) ] self.assertCoordsAndDimsListsMatch(coords_and_dims, expected_result)
def test_unrecognised(self): lbtim = _lbtim(ib=4, ic=1) t1 = nc_datetime(0, 0, 0) t2 = nc_datetime(0, 0, 0) lbft = None lbcode = _lbcode(0) coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft) self.assertEqual(coords_and_dims, [])
def test_not_exact_hours(self): lbtim = _lbtim(ib=1, ic=1) t1 = nc_datetime(2015, 1, 20, hour=7, minute=10, second=0) t2 = nc_datetime(2015, 1, 20, hour=0, minute=0, second=0) coords_and_dims = _convert_scalar_time_coords( lbcode=_lbcode(1), lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=None) (fp, _), (t, _), (frt, _) = coords_and_dims self.assertEqual(fp.points[0], 7.1666666641831398) self.assertEqual(t.points[0], 394927.16666666418)
def _check_forecast(self, lbcode, expect_match=True): lbtim = _lbtim(ib=1, ic=1) # Validity time t1 = nc_datetime(1970, 1, 10, hour=6, minute=0, second=0) # Forecast time t2 = nc_datetime(1970, 1, 9, hour=3, minute=0, second=0) lbft = None # unused coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft ) if expect_match: expect_result = [ (DimCoord(24 * 1.125, standard_name="forecast_period", units="hours"), None), (DimCoord(24 * 9.25, standard_name="time", units=_EPOCH_TIME_UNIT), None), (DimCoord(24 * 8.125, standard_name="forecast_reference_time", units=_EPOCH_TIME_UNIT), None), ] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)
def _check_timepoint(self, lbcode, expect_match=True): lbtim = _lbtim(ib=0, ic=1) t1 = nc_datetime(1970, 1, 1, hour=6, minute=0, second=0) t2 = nc_datetime(0, 0, 0) # not used in result lbft = None # unused coords_and_dims = _convert_scalar_time_coords( lbcode=lbcode, lbtim=lbtim, epoch_hours_unit=_EPOCH_TIME_UNIT, t1=t1, t2=t2, lbft=lbft) if expect_match: expect_result = [(DimCoord(24 * 0.25, standard_name='time', units=_EPOCH_TIME_UNIT), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result)