Пример #1
0
    def test_with_separate_mask_cube_and_nan(self):
        """Test for an input cube and an additional mask cube."""
        mask_cube = self.cube.copy()
        self.cube.data[1, 3] = 0.5
        self.cube.data[3, 3] = 0.5
        self.cube.data[1, 2] = np.nan
        self.cube.data[3, 1] = np.nan
        mask_cube.data = np.ones((5, 5))
        mask_cube.data[self.cube.data == 0.5] = 0
        mask_cube.data = mask_cube.data.astype(int)

        expected_mask = np.ones((5, 5))
        expected_mask[1, 3] = 0.0
        expected_mask[3, 3] = 0.0
        expected_mask[1, 2] = 0.0
        expected_mask[3, 1] = 0.0
        expected_data = self.cube.data * expected_mask
        expected_data[1, 2] = 0.0
        expected_data[3, 1] = 0.0
        expected_nans = np.ones((5, 5)).astype(bool)*False
        expected_nans[1, 2] = True
        expected_nans[3, 1] = True

        result_cube, result_mask, result_nan_array = (
            SquareNeighbourhood.set_up_cubes_to_be_neighbourhooded(
                self.cube.copy(), mask_cube=mask_cube))

        self.assertIsInstance(result_cube, Cube)
        self.assertIsInstance(result_mask, Cube)
        self.assertArrayAlmostEqual(result_cube.data, expected_data)
        self.assertArrayAlmostEqual(result_mask.data, expected_mask)
        self.assertArrayEqual(result_nan_array, expected_nans)
Пример #2
0
 def test_without_masked_data(self):
     """Test setting up cubes to be neighbourhooded when the input cube
     does not contain masked arrays."""
     expected_mask = np.ones((5, 5))
     expected_nans = expected_mask.astype(bool)*False
     cube, mask, nan_array = (
         SquareNeighbourhood.set_up_cubes_to_be_neighbourhooded(self.cube))
     self.assertIsInstance(cube, Cube)
     self.assertIsInstance(mask, Cube)
     self.assertEqual(cube, self.cube)
     self.assertArrayEqual(nan_array, expected_nans)
     self.assertArrayEqual(mask.data, expected_mask)
Пример #3
0
 def test_with_masked_data(self):
     """Test setting up cubes to be neighbourhooded when the input cube
     contains masked arrays."""
     cube = self.cube
     data = cube.data
     cube.data[1, 3] = 0.5
     cube.data[3, 3] = 0.5
     cube.data = np.ma.masked_equal(data, 0.5)
     mask = np.logical_not(cube.data.mask.astype(int))
     expected_nans = np.ones((5, 5)).astype(bool)*False
     data = cube.data.data * mask
     result_cube, result_mask, result_nan_array = (
         SquareNeighbourhood.set_up_cubes_to_be_neighbourhooded(
             cube.copy()))
     self.assertArrayAlmostEqual(result_cube.data, data)
     self.assertArrayAlmostEqual(result_mask.data, mask)
     self.assertArrayEqual(result_nan_array, expected_nans)