def test_fail_src_tgt_cs_mismatch(self):
     cs = GeogCS(1000.0)
     self.src_cube.coord('latitude').coord_system = cs
     self.src_cube.coord('longitude').coord_system = cs
     msg_re = 'Source and target.*same coordinate system'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #2
0
 def test_fail_src_tgt_cs_mismatch(self):
     cs = GeogCS(1000.0)
     self.src_cube.coord("latitude").coord_system = cs
     self.src_cube.coord("longitude").coord_system = cs
     msg_re = "Source and target.*same coordinate system"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #3
0
 def test_fail_non_latlon_units_mismatch(self):
     # Convert all to non-latlon system (does work: see in "Test__call__").
     for cube in (self.src_cube, self.grid_cube):
         for axis_name in ("x", "y"):
             coord = cube.coord(axis=axis_name)
             coord_name = "projection_{}_coordinate".format(axis_name)
             coord.rename(coord_name)
             coord.units = "m"
     # Change one of the output units.
     self.grid_cube.coord(axis="x").units = "1"
     msg_re = "Source and target.*must have the same units"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_non_latlon_units_mismatch(self):
     # Convert all to non-latlon system (does work: see in "Test__call__").
     for cube in (self.src_cube, self.grid_cube):
         for axis_name in ('x', 'y'):
             coord = cube.coord(axis=axis_name)
             coord_name = 'projection_{}_coordinate'.format(axis_name)
             coord.rename(coord_name)
             coord.units = 'm'
     # Change one of the output units.
     self.grid_cube.coord(axis='x').units = '1'
     msg_re = 'Source and target.*must have the same units'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #5
0
 def _check_expected(
     self,
     src_cube=None,
     grid_cube=None,
     expected_data=None,
     expected_coord_names=None,
 ):
     # Test regridder creation + operation against expected results.
     if src_cube is None:
         src_cube = self.src_cube
     if grid_cube is None:
         grid_cube = self.grid_cube
     gridder = unn_gridder(src_cube, grid_cube)
     result = gridder(src_cube)
     if expected_coord_names is not None:
         # Check result coordinate identities.
         self.assertEqual(
             [coord.name() for coord in result.coords()],
             expected_coord_names,
         )
     if expected_data is None:
         # By default, check against the 'standard' data result.
         expected_data = self.expected_data
     self.assertArrayEqual(result.data, expected_data)
     return result
 def test_compatible_source(self):
     # Check operation on data with different dimensions to the original
     # source cube for the regridder creation.
     gridder = unn_gridder(self.src_cube, self.grid_cube)
     result = gridder(self.src_z_cube)
     self.assertEqual([coord.name() for coord in result.coords()],
                      ['z', 'latitude', 'longitude'])
     self.assertArrayEqual(result.data, self.expected_data_zxy)
Exemple #7
0
 def test_compatible_source(self):
     # Check operation on data with different dimensions to the original
     # source cube for the regridder creation.
     gridder = unn_gridder(self.src_cube, self.grid_cube)
     result = gridder(self.src_z_cube)
     self.assertEqual([coord.name() for coord in result.coords()],
                      ['z', 'latitude', 'longitude'])
     self.assertArrayEqual(result.data, self.expected_data_zxy)
Exemple #8
0
 def test_fail_incompatible_source(self):
     # Check that a slightly modified source cube is *not* acceptable.
     modified_src_cube = self.src_cube.copy()
     points = modified_src_cube.coord(axis="x").points
     points[0] += 0.01
     modified_src_cube.coord(axis="x").points = points
     gridder = unn_gridder(self.src_cube, self.grid_cube)
     msg = "not defined on the same source grid"
     with self.assertRaisesRegex(ValueError, msg):
         gridder(modified_src_cube)
 def test_fail_incompatible_source(self):
     # Check that a slightly modified source cube is *not* acceptable.
     modified_src_cube = self.src_cube.copy()
     points = modified_src_cube.coord(axis='x').points
     points[0] += 0.01
     modified_src_cube.coord(axis='x').points = points
     gridder = unn_gridder(self.src_cube, self.grid_cube)
     msg = 'not defined on the same source grid'
     with self.assertRaisesRegexp(ValueError, msg):
         gridder(modified_src_cube)
 def _check_expected(self, src_cube=None, grid_cube=None,
                     expected_data=None,
                     expected_coord_names=None):
     # Test regridder creation + operation against expected results.
     if src_cube is None:
         src_cube = self.src_cube
     if grid_cube is None:
         grid_cube = self.grid_cube
     gridder = unn_gridder(src_cube, grid_cube)
     result = gridder(src_cube)
     if expected_coord_names is not None:
         # Check result coordinate identities.
         self.assertEqual([coord.name() for coord in result.coords()],
                          expected_coord_names)
     if expected_data is None:
         # By default, check against the 'standard' data result.
         expected_data = self.expected_data
     self.assertArrayEqual(result.data, expected_data)
     return result
Exemple #11
0
 def test_fail_no_tgt_y(self):
     self.grid_cube.remove_coord("latitude")
     msg_re = "must contain a single 1D y coordinate"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_mixed_latlons(self):
     self.src_cube.coord('longitude').rename('projection_x_coordinate')
     msg_re = 'any.*latitudes/longitudes.*all must be'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #13
0
 def test_fail_bad_latlon_units(self):
     self.grid_cube.coord("longitude").units = "m"
     msg_re = 'does not convert to "degrees"'
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #14
0
 def test_fail_mixed_latlons(self):
     self.src_cube.coord("longitude").rename("projection_x_coordinate")
     msg_re = "any.*latitudes/longitudes.*all must be"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #15
0
 def test_fail_bad_src_dims(self):
     self.src_cube = self.grid_cube
     msg_re = "Source.*same cube dimensions"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #16
0
 def test_fail_no_src_y(self):
     self.src_cube.remove_coord("latitude")
     msg_re = "Source cube must have X- and Y-axis coordinates"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_tgt_cs_mismatch(self):
     cs = GeogCS(1000.0)
     self.grid_cube.coord('latitude').coord_system = cs
     msg_re = 'x.*and y.*must have the same coordinate system'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #18
0
 def test_fail_src_cs_mismatch(self):
     cs = GeogCS(1000.0)
     self.src_cube.coord('latitude').coord_system = cs
     msg_re = 'must all have the same coordinate system'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_bad_src_dims(self):
     self.src_cube = self.grid_cube
     msg_re = 'Source.*same cube dimensions'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_bad_latlon_units(self):
     self.grid_cube.coord('longitude').units = 'm'
     msg_re = 'does not convert to "degrees"'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #21
0
 def test_fail_tgt_cs_mismatch(self):
     cs = GeogCS(1000.0)
     self.grid_cube.coord("latitude").coord_system = cs
     msg_re = "x.*and y.*must have the same coordinate system"
     with self.assertRaisesRegex(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #22
0
 def test_fail_no_src_x(self):
     self.src_cube.remove_coord('longitude')
     msg_re = 'Source cube must have X- and Y-axis coordinates'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_no_tgt_y(self):
     self.grid_cube.remove_coord('latitude')
     msg_re = 'must contain a single 1D y coordinate'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
Exemple #24
0
 def test_fail_no_tgt_x(self):
     self.grid_cube.remove_coord('longitude')
     msg_re = 'must contain a single 1D x coordinate'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)
 def test_fail_no_src_y(self):
     self.src_cube.remove_coord('latitude')
     msg_re = 'Source cube must have X- and Y-axis coordinates'
     with self.assertRaisesRegexp(ValueError, msg_re):
         unn_gridder(self.src_cube, self.grid_cube)