示例#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.zeros((5, 5), dtype=np.bool)
        expected_nans[1, 2] = True
        expected_nans[3, 1] = True

        result_cube, result_mask, result_nan_array = RecursiveFilter.set_up_cubes(
            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), dtype=np.bool)
     expected_nans = np.zeros((5, 5), dtype=np.bool)
     cube, mask, nan_array = RecursiveFilter.set_up_cubes(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 = ~cube.data.mask
     expected_nans = np.zeros((5, 5), dtype=np.bool)
     data = cube.data.data * mask
     result_cube, result_mask, result_nan_array = RecursiveFilter.set_up_cubes(
         cube.copy())
     self.assertArrayAlmostEqual(result_cube.data, data)
     self.assertArrayAlmostEqual(result_mask.data, mask)
     self.assertArrayEqual(result_nan_array, expected_nans)