def test_area_statistics_cell_measure_mean(self): """ Test for area average of a 2D field. The area measure is pre-loaded in the cube""" cube = guess_bounds(self.grid, ['longitude', 'latitude']) grid_areas = iris.analysis.cartography.area_weights(cube) measure = iris.coords.CellMeasure( grid_areas, standard_name='cell_area', units='m2', measure='area') self.grid.add_cell_measure(measure, range(0, measure.ndim)) result = area_statistics(self.grid, 'mean') expected = np.array([1.]) self.assert_array_equal(result.data, expected)
def test_area_statistics_rotated(case): """Test `area_statistics` with data on an rotated grid.""" rotated_cube = create_rotated_grid_cube(case['data']) operator = case['operator'] cube = area_statistics( rotated_cube, operator, ) if operator != 'sum': np.testing.assert_array_equal(cube.data, case['expected']) else: cube_tmp = rotated_cube.copy() cube_tmp.remove_coord('latitude') cube_tmp.coord('grid_latitude').rename('latitude') cube_tmp.remove_coord('longitude') cube_tmp.coord('grid_longitude').rename('longitude') grid_areas = iris.analysis.cartography.area_weights(cube_tmp) expected = np.sum(grid_areas) np.testing.assert_array_equal(cube.data, expected)
def test_extract_region_mean(self): """ Test for extracting a region and performing the area mean of a 2D field. """ cube = guess_bounds(self.grid, ['longitude', 'latitude']) grid_areas = iris.analysis.cartography.area_weights(cube) measure = iris.coords.CellMeasure( grid_areas, standard_name='cell_area', units='m2', measure='area') self.grid.add_cell_measure(measure, range(0, measure.ndim)) region = extract_region(self.grid, 1.5, 2.5, 1.5, 2.5) # expected outcome expected = np.ones((2, 2)) self.assert_array_equal(region.data, expected) result = area_statistics(region, 'mean') expected_mean = np.array([1.]) self.assert_array_equal(result.data, expected_mean)
def test_area_statistics_variance(self): """Test for area average of a 2D field.""" result = area_statistics(self.grid, 'variance') expected = np.array([0.]) self.assert_array_equal(result.data, expected)
def test_area_statistics_sum(self): """Test for sum of a 2D field.""" result = area_statistics(self.grid, 'sum') grid_areas = iris.analysis.cartography.area_weights(self.grid) expected = np.sum(grid_areas) self.assert_array_equal(result.data, expected)
def test_area_statistics_rms(self): """Test for area rms of a 2D field.""" result = area_statistics(self.grid, 'rms') expected = np.array([1.]) self.assert_array_equal(result.data, expected)
def test_area_statistics_neg_lon(self): """Test for area average of a 2D field.""" result = area_statistics(self.negative_grid, 'mean') expected = np.array([1.]) self.assert_array_equal(result.data, expected)
def test_area_statistics_std_dev(self): """Test for area average of a 2D field.""" result = area_statistics(self.grid, 'std_dev') expected = np.array([0.]) self.assertArrayEqual(result.data, expected)