def test_trilinear_interp(): A = np.zeros((5, 5, 5)) A[2, 2, 2] = 1 indices = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [1.5, 1.5, 1.5]]) values = trilinear_interp_numpy(A, indices) values2 = map_coordinates_3d_4d(A, indices) npt.assert_almost_equal(values, values2) B = np.zeros((5, 5, 5, 3)) B[2, 2, 2] = np.array([1, 1, 1]) values = trilinear_interp_numpy(B, indices) values_4d = map_coordinates_3d_4d(B, indices) npt.assert_almost_equal(values, values_4d)
def test_map_coordinates_3d_4d(): data_1 = np.zeros((5, 5, 5)) data_1[2, 2, 2] = 1 data_2 = np.zeros((5, 5, 5, 5)) data_2[2, 2, 2] = 1 indices = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [1.5, 1.5, 1.5]]) expected = np.array([0, 0, 1, 0.125]) expected2 = np.array([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0.125, 0.125, 0.125, 0.125, 0.125]]) for d, e in zip([data_1, data_2], [expected, expected2]): values = map_coordinates_3d_4d(d, indices) npt.assert_array_almost_equal(values, e) # Test error npt.assert_raises(ValueError, map_coordinates_3d_4d, np.ones(5), indices) npt.assert_raises(ValueError, map_coordinates_3d_4d, np.ones((5, 5, 5, 5, 5)), indices)