Skip to content

Commit

Permalink
_regrid_area_weighted_array: Extra tests for axes ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
abooton committed Dec 12, 2019
1 parent 264d33b commit 2124de1
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 34 deletions.
4 changes: 2 additions & 2 deletions lib/iris/experimental/regrid.py
Original file line number Diff line number Diff line change
Expand Up @@ -498,11 +498,11 @@ def _regrid_area_weighted_array(
# e.g. a scalar point such as a vertical profile
pass
elif x_dim is not None and y_dim is None:
# test cross_section along line longitude
# test cross_section along line latitude
src_data = np.moveaxis(src_data, x_dim, -1)
x_dim = src_data.ndim - 1
elif y_dim is not None and x_dim is None:
# test cross_section along line latitude
# test cross_section along line longitude
src_data = np.moveaxis(src_data, y_dim, -1)
y_dim = src_data.ndim - 1
elif x_dim < y_dim:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,19 +322,36 @@ def test_regrid_latlon_reduced_res(self):
res = regrid_area_weighted(src, dest)
self.assertCMLApproxData(res, RESULT_DIR + ("latlonreduced.cml",))

def test_regrid_transposed(self):
src = self.simple_cube.copy()
dest = _subsampled_grid(src, 2, 3)
# Transpose src so that the coords are not y, x ordered.
src.transpose()
def test_regrid_reorder_axis(self):
src = self.realistic_cube[0, :4, :3, :2]
z = src.coord("model_level_number")
lat = src.coord("grid_latitude")
lon = src.coord("grid_longitude")
dest = _resampled_grid(self.realistic_cube[0, 0, :3, :2], 3, 3)
res = regrid_area_weighted(src, dest)
self.assertCMLApproxData(res, RESULT_DIR + ("trasposed.cml",))
# Using original and transposing the result should give the
# same answer.
src = self.simple_cube.copy()
self.assertArrayShapeStats(src, (4, 3, 2), 288.08868, 0.008262919)
self.assertArrayShapeStats(res, (4, 9, 6), 288.08865, 0.00826281)
# Reshape src so that the coords are ordered [x, z, y],
# the mean and std statistics should be the same
data = np.moveaxis(src.data.copy(), 2, 0)
src = iris.cube.Cube(data)
src.add_dim_coord(lat, 2)
src.add_dim_coord(z, 1)
src.add_dim_coord(lon, 0)
res = regrid_area_weighted(src, dest)
res.transpose()
self.assertCMLApproxData(res, RESULT_DIR + ("trasposed.cml",))
self.assertArrayShapeStats(src, (2, 4, 3), 288.08868, 0.008262919)
self.assertArrayShapeStats(res, (6, 4, 9), 288.08865, 0.00826281)
# Reshape src so that the coords are ordered [y, x, z],
# the mean and std statistics should be the same
data = np.moveaxis(src.data.copy(), 2, 0)
src = iris.cube.Cube(data)
src.add_dim_coord(z, 2)
src.add_dim_coord(lon, 1)
src.add_dim_coord(lat, 0)
dest = _resampled_grid(self.realistic_cube[0, 0, :3, :2], 3, 3)
res = regrid_area_weighted(src, dest)
self.assertArrayShapeStats(src, (3, 2, 4), 288.08868, 0.008262919)
self.assertArrayShapeStats(res, (9, 6, 4), 288.08865, 0.00826281)

def test_regrid_lon_to_half_res(self):
src = self.simple_cube
Expand Down Expand Up @@ -446,6 +463,16 @@ def test_cross_section(self):
self.assertCMLApproxData(
res, RESULT_DIR + ("const_lat_cross_section.cml",)
)
# Constant latitude, data order [x, z]
# Using original and transposing the result should give the
# same answer.
src.transpose()
dest.transpose()
res = regrid_area_weighted(src, dest)
res.transpose()
self.assertCMLApproxData(
res, RESULT_DIR + ("const_lat_cross_section.cml",)
)

# Constant longitude
src = self.realistic_cube[0, :, :, 10]
Expand All @@ -460,6 +487,16 @@ def test_cross_section(self):
self.assertCMLApproxData(
res, RESULT_DIR + ("const_lon_cross_section.cml",)
)
# Constant longitude, data order [y, z]
# Using original and transposing the result should give the
# same answer.
src.transpose()
dest.transpose()
res = regrid_area_weighted(src, dest)
res.transpose()
self.assertCMLApproxData(
res, RESULT_DIR + ("const_lon_cross_section.cml",)
)

def test_scalar_source_cube(self):
src = self.simple_cube[1, 2]
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit 2124de1

Please sign in to comment.