def test_aggregate_categorical_season_membership(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a,
                                            'season_membership')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(
         test_cube_a.coord('season_membership').points[0], True)
 def test_extract_categorical_month_number(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(month_number=12)
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'month_number',
                                          constraint=constraint)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('month_number').points[0], 12)
     self.assertEqual(test_cube_a.coord('time').points[0], 3636.5)
 def test_extract_categorical_weekday_number(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(weekday_number=5)
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'weekday_number',
                                          constraint=constraint)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('weekday_number').points[0], 5)
     self.assertEqual(test_cube_a.coord('time').points[0], 3498.5)
 def test_extract_categorical_day_of_year(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(day_of_year=134)
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'day_of_year',
                                          constraint=constraint)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('day_of_year').points[0], 134)
     self.assertEqual(test_cube_a.coord('time').points[0], 3420.0)
 def test_extract_categorical_season(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(season='son')
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'season',
                                          constraint=constraint)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('season').points[0], 'son')
     self.assertEqual(test_cube_a.coord('time').points[0], 3575.5)
 def test_extract_categorical_weekday_fullname(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(weekday_fullname='Saturday')
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'weekday_fullname',
                                          constraint=constraint)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(
         test_cube_a.coord('weekday_fullname').points[0], 'Saturday')
     self.assertEqual(test_cube_a.coord('time').points[0], 3498.5)
 def test_aggregate_categorical_compounds(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a,
                                            'annual_seasonal_mean')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('time').bounds[0][0], 0)
     self.assertEqual(test_cube_a.coord('time').bounds[0][1], 58.0)
     self.assertEqual(test_cube_a.coord('time').points[0], 29.0)
     self.assertEqual(test_cube_a.coord('clim_season').points[0], 'djf')
     self.assertEqual(test_cube_a.coord('season_year').points[0], 1970)
 def test_extract_categorical_year(self):
     test_cube_a = common._generate_extended_cube()
     const = iris.Constraint(year=lambda cell: cell > 1970 and cell < 1976)
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'year',
                                          constraint=const)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('year').points[0], 1971)
     self.assertEqual(test_cube_a.coord('year').points[4], 1975)
     self.assertEqual(test_cube_a.coord('time').points[0], 547.0)
     self.assertEqual(test_cube_a.coord('time').points[4], 2008.0)
 def test_aggregate_categorical_day_of_year(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'day_of_year')
     self.assertEqual(test_cube_a.coord('day_of_year').points[0], 1)
     self.assertEqual(test_cube_a.coord('day_of_year').points[47], 48)
     self.assertEqual(test_cube_a.coord('day_of_year').points[133], 134)
     self.assertEqual(test_cube_a.coord('day_of_year').points[260], 261)
     self.assertEqual(test_cube_a.coord('time').points[0], 3470.0)
     self.assertEqual(test_cube_a.coord('time').points[47], 3517.0)
     self.assertEqual(test_cube_a.coord('time').points[133], 3420.0)
     self.assertEqual(test_cube_a.coord('time').points[260], 3547.0)
 def test_aggregate_categorical_weekday(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'weekday')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('weekday').points[0], 'Thu')
     self.assertEqual(test_cube_a.coord('weekday').points[2], 'Sat')
     self.assertEqual(test_cube_a.coord('weekday').points[4], 'Mon')
     self.assertEqual(test_cube_a.coord('weekday').points[6], 'Wed')
     self.assertEqual(test_cube_a.coord('time').points[0], 3496.5)
     self.assertEqual(test_cube_a.coord('time').points[2], 3498.5)
     self.assertEqual(test_cube_a.coord('time').points[4], 3500.5)
     self.assertEqual(test_cube_a.coord('time').points[6], 3502.5)
 def test_aggregate_categorical_season(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'season')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('season').points[0], 'djf')
     self.assertEqual(test_cube_a.coord('season').points[1], 'mam')
     self.assertEqual(test_cube_a.coord('season').points[2], 'jja')
     self.assertEqual(test_cube_a.coord('season').points[3], 'son')
     self.assertEqual(test_cube_a.coord('time').points[0], 3499.0)
     self.assertEqual(test_cube_a.coord('time').points[1], 3529.0)
     self.assertEqual(test_cube_a.coord('time').points[2], 3484.0)
     self.assertEqual(test_cube_a.coord('time').points[3], 3575.5)
 def test_aggregate_categorical_season_year(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'season_year')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('season_year').points[0], 1970)
     self.assertEqual(test_cube_a.coord('season_year').points[4], 1974)
     self.assertEqual(test_cube_a.coord('season_year').points[9], 1979)
     self.assertEqual(test_cube_a.coord('season_year').points[14], 1984)
     self.assertEqual(test_cube_a.coord('time').points[0], 166.5)
     self.assertEqual(test_cube_a.coord('time').points[4], 1612.0)
     self.assertEqual(test_cube_a.coord('time').points[9], 3438.0)
     self.assertEqual(test_cube_a.coord('time').points[14], 5264.5)
 def test_aggregate_categorical_year(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'year')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('year').points[0], 1970)
     self.assertEqual(test_cube_a.coord('year').points[4], 1974)
     self.assertEqual(test_cube_a.coord('year').points[9], 1979)
     self.assertEqual(test_cube_a.coord('year').points[14], 1984)
     self.assertEqual(test_cube_a.coord('time').points[0], 182.0)
     self.assertEqual(test_cube_a.coord('time').points[4], 1643.0)
     self.assertEqual(test_cube_a.coord('time').points[9], 3469.0)
     self.assertEqual(test_cube_a.coord('time').points[14], 5295.5)
 def test_aggregate_categorical_month_number(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'month_number')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('month_number').points[0], 1)
     self.assertEqual(test_cube_a.coord('month_number').points[4], 5)
     self.assertEqual(test_cube_a.coord('month_number').points[9], 10)
     self.assertEqual(test_cube_a.coord('month_number').points[11], 12)
     self.assertEqual(test_cube_a.coord('time').points[0], 3485.0)
     self.assertEqual(test_cube_a.coord('time').points[4], 3422.5)
     self.assertEqual(test_cube_a.coord('time').points[9], 3575.5)
     self.assertEqual(test_cube_a.coord('time').points[11], 3636.5)
 def test_aggregate_categorical_month(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'month')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('month').points[0], 'Jan')
     self.assertEqual(test_cube_a.coord('month').points[4], 'May')
     self.assertEqual(test_cube_a.coord('month').points[9], 'Oct')
     self.assertEqual(test_cube_a.coord('month').points[11], 'Dec')
     self.assertEqual(test_cube_a.coord('time').points[0], 3485.0)
     self.assertEqual(test_cube_a.coord('time').points[4], 3422.5)
     self.assertEqual(test_cube_a.coord('time').points[9], 3575.5)
     self.assertEqual(test_cube_a.coord('time').points[11], 3636.5)
 def test_aggregate_categorical_weekday_number(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'weekday_number')
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('weekday_number').points[0], 3)
     self.assertEqual(test_cube_a.coord('weekday_number').points[2], 5)
     self.assertEqual(test_cube_a.coord('weekday_number').points[4], 0)
     self.assertEqual(test_cube_a.coord('weekday_number').points[6], 2)
     self.assertEqual(test_cube_a.coord('time').points[0], 3496.5)
     self.assertEqual(test_cube_a.coord('time').points[2], 3498.5)
     self.assertEqual(test_cube_a.coord('time').points[4], 3500.5)
     self.assertEqual(test_cube_a.coord('time').points[6], 3502.5)
 def test_extract(self):
     test_cube = common._generate_extended_cube()
     test_cube_bounds = common._generate_extended_cube()
     test_cube_bounds.coord('time').guess_bounds()
     lambda_constraint = iris.Constraint(
         time=lambda cell: cell.point.month == 2)
     constraint = iris.Constraint(time=iris.time.PartialDateTime(month=2))
     extracted_cube = ch.extract(test_cube, constraint)
     extracted_cube_bounds = ch.extract(test_cube_bounds, constraint)
     test_cube_coord = test_cube.extract(lambda_constraint).coord('time')
     extracted_cube_coord = extracted_cube.coord('time')
     tc_bounds_coord = test_cube_bounds.extract(lambda_constraint).coord(
         'time')
     ex_cube_bounds_coord = extracted_cube_bounds.coord('time')
     self.assertEqual(test_cube_coord.points[5],
                      extracted_cube_coord.points[5])
     self.assertEqual(test_cube_coord.points[15],
                      extracted_cube_coord.points[15])
     self.assertEqual(tc_bounds_coord.points[5],
                      ex_cube_bounds_coord.points[5])
     self.assertEqual(tc_bounds_coord.points[15],
                      ex_cube_bounds_coord.points[15])
 def test_aggregate_categorical_day_of_month(self):
     test_cube_a = common._generate_extended_cube()
     test_cube_a = ch.aggregate_categorical(test_cube_a, 'day_of_month')
     self.assertEqual(test_cube_a.coord('day_of_month').points[0], 1)
     self.assertEqual(test_cube_a.coord('day_of_month').points[5], 6)
     self.assertEqual(test_cube_a.coord('day_of_month').points[10], 11)
     self.assertEqual(test_cube_a.coord('day_of_month').points[15], 16)
     self.assertEqual(test_cube_a.coord('day_of_month').points[20], 21)
     self.assertEqual(test_cube_a.coord('day_of_month').points[25], 26)
     self.assertEqual(test_cube_a.coord('time').points[0], 3499.5)
     self.assertEqual(test_cube_a.coord('time').points[5], 3490.5)
     self.assertEqual(test_cube_a.coord('time').points[10], 3495.5)
     self.assertEqual(test_cube_a.coord('time').points[15], 3500.5)
 def test_extract_categorical_compounds(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(
         clim_season='djf',
         season_year=lambda cell: cell >= 1970 and cell <= 1980)
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'annual_seasonal_mean',
                                          constraint=constraint)
     self.assertIsNotNone(test_cube_a)
     self.assertEqual(test_cube_a.coord('time').bounds[0][0], 0)
     self.assertEqual(test_cube_a.coord('time').bounds[0][1], 58.0)
     self.assertEqual(test_cube_a.coord('time').points[0], 29.0)
     self.assertEqual(test_cube_a.coord('clim_season').points[0], 'djf')
     self.assertEqual(test_cube_a.coord('season_year').points[0], 1970)
 def test_extract_categorical_day_of_month(self):
     test_cube_a = common._generate_extended_cube()
     constraint = iris.Constraint(
         day_of_month=lambda cell: cell > 0 and cell < 17)
     test_cube_a = ch.extract_categorical(test_cube_a,
                                          'day_of_month',
                                          constraint=constraint)
     self.assertEqual(test_cube_a.coord('day_of_month').points[0], 1)
     self.assertEqual(test_cube_a.coord('day_of_month').points[5], 6)
     self.assertEqual(test_cube_a.coord('day_of_month').points[10], 11)
     self.assertEqual(test_cube_a.coord('day_of_month').points[15], 16)
     self.assertEqual(test_cube_a.coord('time').points[0], 3499.5)
     self.assertEqual(test_cube_a.coord('time').points[5], 3490.5)
     self.assertEqual(test_cube_a.coord('time').points[10], 3495.5)
     self.assertEqual(test_cube_a.coord('time').points[15], 3500.5)