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)
Пример #3
0
 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)
Пример #4
0
 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)
Пример #5
0
 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)
Пример #11
0
 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, [])
Пример #12
0
 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)
Пример #14
0
 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)