def test_positions_and_heights(): X = np.arange(3).reshape(1, 3) Y = np.arange(4).reshape(4, 1) h = X + Y t = Topography(h, (8, 6)) assert t.nb_grid_pts == (4, 3) assert_array_equal(t.heights(), h) X2, Y2, h2 = t.positions_and_heights() assert_array_equal(X2, [ (0, 0, 0), (2, 2, 2), (4, 4, 4), (6, 6, 6), ]) assert_array_equal(Y2, [ (0, 2, 4), (0, 2, 4), (0, 2, 4), (0, 2, 4), ]) assert_array_equal(h2, [(0, 1, 2), (1, 2, 3), (2, 3, 4), (3, 4, 5)]) # # After detrending, the position and heights should have again # just 3 arrays and the third array should be the same as .heights() # dt = t.detrend(detrend_mode='slope') np.testing.assert_allclose(dt.heights(), [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)], atol=1e-15) X2, Y2, h2 = dt.positions_and_heights() assert h2.shape == (4, 3) assert_array_equal(X2, [ (0, 0, 0), (2, 2, 2), (4, 4, 4), (6, 6, 6), ]) assert_array_equal(Y2, [ (0, 2, 4), (0, 2, 4), (0, 2, 4), (0, 2, 4), ]) np.testing.assert_allclose(h2, [(0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)], atol=1e-15)
def test_smooth_flat_2d(self): arr = self._flat_arr a = 1.2 b = 2.5 d = .2 arr = np.arange(5) * a + d arr = arr + np.arange(6).reshape((-1, 1)) * b surf = Topography(arr, (1, 1)).detrend(detrend_mode='center') self.assertTrue(surf.is_uniform) self.assertAlmostEqual(surf.mean(), 0) surf = Topography(arr, (1.5, 3.2)).detrend(detrend_mode='slope') self.assertEqual(surf.dim, 2) self.assertTrue(surf.is_uniform) self.assertAlmostEqual(surf.mean(), 0) self.assertAlmostEqual(surf.rms_gradient(), 0) surf = Topography(arr, arr.shape).detrend(detrend_mode='height') self.assertEqual(surf.dim, 2) self.assertTrue(surf.is_uniform) self.assertAlmostEqual(surf.mean(), 0) self.assertAlmostEqual(surf.rms_gradient(), 0) self.assertTrue( surf.rms_height_from_area() < Topography(arr, arr.shape).rms_height_from_area()) surf2 = Topography(arr, (1, 1)).detrend(detrend_mode='height') self.assertEqual(surf.dim, 2) self.assertTrue(surf2.is_uniform) self.assertAlmostEqual(surf2.rms_gradient(), 0) self.assertTrue( surf2.rms_height_from_area() < Topography(arr, arr.shape).rms_height_from_area()) self.assertAlmostEqual(surf.rms_height_from_area(), surf2.rms_height_from_area()) x, y, z = surf2.positions_and_heights() self.assertAlmostEqual(np.mean(np.diff(x[:, 0])), surf2.physical_sizes[0] / surf2.nb_grid_pts[0]) self.assertAlmostEqual(np.mean(np.diff(y[0, :])), surf2.physical_sizes[1] / surf2.nb_grid_pts[1])