def test_sample_nearest_skewed(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.5, 0.2], values=np.array([[0, 1], [1, 0.5]])) self.assertEqual(grid.sample_nearest(1, 0.75), 0.0) self.assertEqual(grid.sample_nearest(1.5, 1.05), 1.0) self.assertEqual(grid.sample_nearest(1.2, 1.4), 1.0) self.assertEqual(grid.sample_nearest(2.0, 1.7), 0.5)
def test_sample_nearest(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.0, 0.0], values=np.array([[0, 1], [1, 0.5]])) self.assertEqual(grid.sample_nearest(0.6, 0.7), 0.0) self.assertEqual(grid.sample_nearest(0.6, 1.3), 1.0) self.assertEqual(grid.sample_nearest(1.4, 0.3), 1.0) self.assertEqual(grid.sample_nearest(1.6, 1.3), 0.5)
def test_sample_nearest_out_of_bounds(self): g = RegularGrid([0, 0, 1, 1, 0, 0], values=np.ones((10, 10))) v = g.sample_nearest(np.array([7, 9, 12, 15]), np.array([3, 1, -1, 1])) self.assertEqual(v[0][0], 1.0) self.assertEqual(v[0][1], 1.0) self.assertTrue(np.isnan(v[0][2])) self.assertTrue(np.isnan(v[0][3]))
def test_sample_nearest_array_order(self): grid = RegularGrid((0, 0, 1, 1, 0, 0), values=np.dstack([ np.ones((64, 64)), 2 * np.ones((64, 64)), 3 * np.ones((64, 64)) ])) X, Y = np.meshgrid(np.arange(2, 10), np.arange(5, 13)) val = grid.sample_nearest(X, Y) self.assertEqual(val[0, 0, 0], 1.0) self.assertEqual(val[1, 0, 0], 2.0) self.assertEqual(val[2, 0, 0], 3.0)
def test_sample_nearest_array(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.0, 0.0], values=np.arange(64).reshape([8, 8])) X, Y = np.meshgrid(np.arange(1, 7, 0.5), np.arange(2, 5, 0.25)) res = grid.sample_nearest(X, Y) self.assertEqual(res.shape, (1, 12, 12))