def test_365_calendar(self): f = mock.MagicMock( lbtim=SplittableInt(4, {"ia": 2, "ib": 1, "ic": 0}), lbyr=2013, lbmon=1, lbdat=1, lbhr=12, lbmin=0, lbsec=0, spec=PPField3, ) f.time_unit = six.create_bound_method(PPField3.time_unit, f) f.calendar = cf_units.CALENDAR_365_DAY ( factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims, ) = convert(f) def is_t_coord(coord_and_dims): coord, dims = coord_and_dims return coord.standard_name == "time" coords_and_dims = list(filter(is_t_coord, aux_coords_and_dims)) self.assertEqual(len(coords_and_dims), 1) coord, dims = coords_and_dims[0] self.assertEqual(guess_coord_axis(coord), "T") self.assertEqual(coord.units.calendar, "365_day")
def test_365_calendar(self): f = mock.MagicMock(lbtim=SplittableInt(4, { 'ia': 2, 'ib': 1, 'ic': 0 }), lbyr=2013, lbmon=1, lbdat=1, lbhr=12, lbmin=0, lbsec=0, spec=PPField3) f.time_unit = types.MethodType(PPField3.time_unit, f) f.calendar = iris.unit.CALENDAR_365_DAY (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(f) def is_t_coord(coord_and_dims): coord, dims = coord_and_dims return coord.standard_name == 'time' coords_and_dims = filter(is_t_coord, aux_coords_and_dims) self.assertEqual(len(coords_and_dims), 1) coord, dims = coords_and_dims[0] self.assertEqual(guess_coord_axis(coord), 'T') self.assertEqual(coord.units.calendar, '365_day')
def test_fc_cf_air_temp(self): lbuser = [1, 0, 0, 0, 0, 0, 0] lbfc = 16 stash = STASH(lbuser[6], lbuser[3] // 1000, lbuser[3] % 1000) field = mock.MagicMock(lbuser=lbuser, lbfc=lbfc, stash=stash) (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(field) self.assertEqual(standard_name, 'air_temperature') self.assertEqual(units, 'K')
def test_no_std_name(self): lbuser = [1, 0, 0, 0, 0, 0, 0] lbfc = 0 stash = STASH(lbuser[6], lbuser[3] // 1000, lbuser[3] % 1000) field = mock.MagicMock(lbuser=lbuser, lbfc=lbfc, stash=stash) (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(field) self.assertIsNone(standard_name) self.assertIsNone(units)
def check_um_source_attrs(self, lbsrce, source_str=None, um_version_str=None): field = mock.MagicMock(lbsrce=lbsrce) (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(field) if source_str is not None: self.assertEqual(attributes['source'], source_str) else: self.assertNotIn('source', attributes) if um_version_str is not None: self.assertEqual(attributes['um_version'], um_version_str) else: self.assertNotIn('um_version', attributes)
def test_soil_levels(self): field = mock.MagicMock(lbvc=6, blev=1234) (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(field) def is_model_level_coord(coord_and_dims): coord, dims = coord_and_dims return coord.standard_name == 'model_level_number' coords_and_dims = filter(is_model_level_coord, aux_coords_and_dims) self.assertEqual(len(coords_and_dims), 1) coord, dims = coords_and_dims[0] self.assertEqual(coord.points, 1234) self.assertIsNone(coord.bounds)
def test_soil_levels(self): field = mock.MagicMock(lbvc=6, blev=1234) (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(field) def is_model_level_coord(coord_and_dims): coord, dims = coord_and_dims return coord.standard_name == 'model_level_number' coords_and_dims = filter(is_model_level_coord, aux_coords_and_dims) self.assertEqual(len(coords_and_dims), 1) coord, dims = coords_and_dims[0] self.assertEqual(coord.points, 1234) self.assertIsNone(coord.bounds) self.assertEqual(guess_coord_axis(coord), 'Z')
def test_potential_temperature_levels(self): potm_value = 27.32 field = mock.MagicMock(lbvc=19, blev=potm_value) (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(field) def is_potm_level_coord(coord_and_dims): coord, dims = coord_and_dims return coord.standard_name == 'air_potential_temperature' coords_and_dims = filter(is_potm_level_coord, aux_coords_and_dims) self.assertEqual(len(coords_and_dims), 1) coord, dims = coords_and_dims[0] self.assertArrayEqual(coord.points, [potm_value]) self.assertIsNone(coord.bounds) self.assertEqual(guess_coord_axis(coord), 'Z')
def test_365_calendar(self): f = mock.MagicMock(lbtim=SplittableInt(4, {'ia': 2, 'ib': 1, 'ic': 0}), lbyr=2013, lbmon=1, lbdat=1, lbhr=12, lbmin=0, lbsec=0, spec=PPField3) f.time_unit = types.MethodType(PPField3.time_unit, f) f.calendar = iris.unit.CALENDAR_365_DAY (factories, references, standard_name, long_name, units, attributes, cell_methods, dim_coords_and_dims, aux_coords_and_dims) = convert(f) def is_t_coord(coord_and_dims): coord, dims = coord_and_dims return coord.standard_name == 'time' coords_and_dims = filter(is_t_coord, aux_coords_and_dims) self.assertEqual(len(coords_and_dims), 1) coord, dims = coords_and_dims[0] self.assertEqual(guess_coord_axis(coord), 'T') self.assertEqual(coord.units.calendar, '365_day')