From fb51730365a77893eb9fa2be1ec665d3ed591e40 Mon Sep 17 00:00:00 2001 From: cpelley Date: Wed, 19 Oct 2016 11:36:47 +0100 Subject: [PATCH] BUG: Tolerance regrid within_bounds --- lib/iris/experimental/regrid.py | 4 ++-- ...regrid_area_weighted_rectilinear_src_and_grid.py | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/iris/experimental/regrid.py b/lib/iris/experimental/regrid.py index c6123da4f5..06cc8b956e 100644 --- a/lib/iris/experimental/regrid.py +++ b/lib/iris/experimental/regrid.py @@ -137,8 +137,8 @@ def _within_bounds(src_bounds, tgt_bounds, orderswap=False): extremes of the source bounds. """ - min_bound = np.min(src_bounds) - max_bound = np.max(src_bounds) + min_bound = np.min(src_bounds) - 1e-14 + max_bound = np.max(src_bounds) + 1e-14 # Swap upper-lower is necessary. if orderswap is True: diff --git a/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py b/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py index 53c7932ee0..addacbdbf6 100644 --- a/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py +++ b/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py @@ -155,26 +155,31 @@ def test_float_tolerant_equality(self): # Ensure that floating point numbers are treated appropriately when # introducing precision difference from wrap_around. source = Cube([[1]]) + cs = GeogCS(6371229) + bounds = np.array([[-91, 0]], dtype='float') points = bounds.mean(axis=1) - lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude') + lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude', + units='degrees', coord_system=cs) source.add_aux_coord(lon_coord, 1) bounds = np.array([[-90, 90]], dtype='float') points = bounds.mean(axis=1) - lat_coord = DimCoord(points, bounds=bounds, standard_name='latitude') + lat_coord = DimCoord(points, bounds=bounds, standard_name='latitude', + units='degrees', coord_system=cs) source.add_aux_coord(lat_coord, 0) grid = Cube([[0]]) bounds = np.array([[270, 360]], dtype='float') points = bounds.mean(axis=1) - lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude') + lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude', + units='degrees', coord_system=cs) grid.add_aux_coord(lon_coord, 1) grid.add_aux_coord(lat_coord, 0) res = regrid(source, grid) # The result should be equal to the source data and NOT be masked. - self.assertMaskedArrayEqual(res.data, np.array([1.0])) + self.assertArrayEqual(res.data, np.array([1.0])) if __name__ == '__main__':