Beispiel #1
0
 def test_duplicate_realizations_more_input_cubes(self):
     """Test that the expected metadata is correct with different
        realizations and that realizations are renumbered if a
        duplicate is found, with 3 input cubes."""
     self.input_cube2.coord("realization").points = np.array([6, 7, 8])
     input_cube3 = self.input_cube2.copy()
     input_cube3.coord("forecast_reference_time").points = np.array(
         input_cube3.coord("forecast_reference_time").points[0] + 1)
     input_cube3.coord("forecast_period").points = np.array(
         input_cube3.coord("forecast_period").points[0] - 1)
     input_cube3.coord("realization").points = np.array([7, 8, 9])
     input_cubelist = iris.cube.CubeList(
         [self.input_cube, self.input_cube2, input_cube3])
     result = GenerateTimeLaggedEnsemble().process(
         input_cubelist)
     expected_forecast_period = np.array(2)
     expected_forecast_ref_time = np.array([402293.])
     expected_realizations = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
     self.assertArrayAlmostEqual(
         result.coord("forecast_period").points, expected_forecast_period)
     self.assertArrayAlmostEqual(
         result.coord("forecast_reference_time").points,
         expected_forecast_ref_time)
     self.assertArrayAlmostEqual(
         result.coord("realization").points, expected_realizations)
 def test_basic(self):
     """Test that the expected metadata is correct after a simple test"""
     result = GenerateTimeLaggedEnsemble().process(self.input_cubelist)
     expected_realizations = [0, 1, 2, 3, 4, 5]
     self.assertArrayAlmostEqual(
         result.coord("forecast_period").points, self.expected_fp)
     self.assertArrayAlmostEqual(
         result.coord("forecast_reference_time").points, self.expected_frt)
     self.assertArrayAlmostEqual(
         result.coord("realization").points, expected_realizations)
     self.assertEqual(result.coord("realization").dtype, np.int32)
 def test_basic(self):
     """Test that the expected metadata is correct after a simple test"""
     result = GenerateTimeLaggedEnsemble().process(self.input_cubelist)
     expected_forecast_period = np.array(3)
     expected_forecast_ref_time = np.array([402292.])
     expected_realizations = np.array([0, 1, 2, 3, 4, 5])
     self.assertArrayAlmostEqual(
         result.coord("forecast_period").points, expected_forecast_period)
     self.assertArrayAlmostEqual(
         result.coord("forecast_reference_time").points,
         expected_forecast_ref_time)
     self.assertArrayAlmostEqual(
         result.coord("realization").points, expected_realizations)
 def test_realizations(self):
     """Test that the expected metadata is correct with a different
        realizations"""
     self.input_cube2.coord("realization").points = np.array([6, 7, 8],
                                                             dtype=np.int32)
     result = GenerateTimeLaggedEnsemble().process(self.input_cubelist)
     expected_realizations = [0, 1, 2, 6, 7, 8]
     self.assertArrayAlmostEqual(
         result.coord("forecast_period").points, self.expected_fp)
     self.assertArrayAlmostEqual(
         result.coord("forecast_reference_time").points, self.expected_frt)
     self.assertArrayAlmostEqual(
         result.coord("realization").points, expected_realizations)
     self.assertEqual(result.coord("realization").dtype, np.int32)
 def test_duplicate_realizations(self):
     """Test that the expected metadata is correct with different
        realizations and that realizations are renumbered if a
        duplicate is found"""
     self.input_cube2.coord("realization").points = np.array([0, 7, 8])
     result = GenerateTimeLaggedEnsemble().process(self.input_cubelist)
     expected_realizations = [0, 1, 2, 3, 4, 5]
     self.assertArrayAlmostEqual(
         result.coord("forecast_period").points, self.expected_fp)
     self.assertArrayAlmostEqual(
         result.coord("forecast_reference_time").points, self.expected_frt)
     self.assertArrayAlmostEqual(
         result.coord("realization").points, expected_realizations)
     self.assertEqual(result.coord("realization").dtype, np.int32)
Beispiel #6
0
 def test_cycletime(self):
     """Test that the expected metadata is correct with a different
        cycletime"""
     result = GenerateTimeLaggedEnsemble("20151123T0600Z").process(
         self.input_cubelist)
     expected_forecast_period = np.array(1)
     expected_forecast_ref_time = np.array([402294.])
     expected_realizations = np.array([0, 1, 2, 3, 4, 5])
     self.assertArrayAlmostEqual(
         result.coord("forecast_period").points, expected_forecast_period)
     self.assertArrayAlmostEqual(
         result.coord("forecast_reference_time").points,
         expected_forecast_ref_time)
     self.assertArrayAlmostEqual(
         result.coord("realization").points, expected_realizations)
    def test_non_monotonic_realizations(self):
        """Test handling of case where realization coordinates cannot be
        directly concatenated into a monotonic coordinate"""
        data = 275.0 * np.ones((3, 3, 3), dtype=np.float32)
        cycletime = dt(2019, 6, 24, 9)
        cube1 = set_up_variable_cube(
            data,
            realizations=np.array([15, 16, 17], dtype=np.int32),
            time=cycletime,
            frt=dt(2019, 6, 24, 8),
        )
        cube2 = set_up_variable_cube(
            data,
            realizations=np.array([0, 18, 19], dtype=np.int32),
            time=cycletime,
            frt=cycletime,
        )

        expected_cube = set_up_variable_cube(
            275.0 * np.ones((6, 3, 3), dtype=np.float32),
            realizations=np.array([0, 15, 16, 17, 18, 19], dtype=np.int32),
            time=cycletime,
            frt=cycletime,
        )

        input_cubelist = iris.cube.CubeList([cube1, cube2])
        result = GenerateTimeLaggedEnsemble().process(input_cubelist)
        self.assertEqual(result, expected_cube)
        self.assertEqual(result.coord("realization").dtype, np.int32)