diff --git a/kaska/interp_fix.py b/kaska/interp_fix.py index f6a3477..44b3cd5 100644 --- a/kaska/interp_fix.py +++ b/kaska/interp_fix.py @@ -28,57 +28,3 @@ def interp1d(newx, oldx, oldy): newy[i] = np.interp(newx, oldx[mask], y[mask]) newy_T = newy.transpose(1,0).reshape((new_shape,) + oldy_shape) return newy_T - -def test1d(): - newx = np.arange(200) - oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) - oldy = oldy = np.random.rand(100) - np_ret = np.interp(newx, oldx, oldy) - numba_ret = interp1d(newx, oldx, oldy) - if not np.allclose(np_ret, numba_ret): - raise - print('Same result achieved') - -def test2d(): - newx = np.arange(200) - oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) - oldy = oldy = np.random.rand(100,5) - numba_ret = interp1d(newx, oldx, oldy) - for i in range(5): - np_ret = np.interp(newx, oldx, oldy[:,i]) - if not np.allclose(np_ret, numba_ret[:,i]): - raise - print('Same result achieved') - -def test3d(): - newx = np.arange(200) - oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) - oldy = oldy = np.random.rand(100, 5, 10) - numba_ret = interp1d(newx, oldx, oldy) - for i in range(5): - for j in range(10): - np_ret = np.interp(newx, oldx, oldy[:,i, j]) - if not np.allclose(np_ret, numba_ret[:,i, j]): - raise - print('Same result achieved') - -def testgap(): - newx = np.arange(200) - oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) - oldy = oldy = np.random.rand(100, 5, 10) - for i in range(5): - for j in range(10): - bad_pix = np.random.choice(range(100), 100) - gap_oldy = oldy[:,i, j].copy() - gap_oldy[bad_pix] = np.nan - numba_ret = interp1d(newx, oldx, gap_oldy) - np_ret = np.interp(newx, oldx, gap_oldy) - diff = numba_ret - np_ret - if not np.nansum(diff)<1e-10: - raise - print('Same result achieved and filled gaps') -if __name__ == '__main__': - test1d() - test2d() - test3d() - testgap() \ No newline at end of file diff --git a/kaska/tests/test_interp.py b/kaska/tests/test_interp.py new file mode 100644 index 0000000..5872e43 --- /dev/null +++ b/kaska/tests/test_interp.py @@ -0,0 +1,54 @@ +''' +Test the interp functionality + +''' + +import pytest +import numpy as np + +import sys + +from .. import interp_fix + +def test1d(): + newx = np.arange(200) + oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) + oldy = oldy = np.random.rand(100) + np_ret = np.interp(newx, oldx, oldy) + numba_ret = interp_fix.interp1d(newx, oldx, oldy) + assert np.allclose(np_ret, numba_ret) + +def test2d(): + newx = np.arange(200) + oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) + oldy = oldy = np.random.rand(100,5) + numba_ret = interp_fix.interp1d(newx, oldx, oldy) + for i in range(5): + np_ret = np.interp(newx, oldx, oldy[:,i]) + assert np.allclose(np_ret, numba_ret[:,i]) + +def test3d(): + newx = np.arange(200) + oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) + oldy = oldy = np.random.rand(100, 5, 10) + numba_ret = interp_fix.interp1d(newx, oldx, oldy) + for i in range(5): + for j in range(10): + np_ret = np.interp(newx, oldx, oldy[:,i, j]) + assert np.allclose(np_ret, numba_ret[:,i, j]) + +# def testgap(): +# newx = np.arange(200) +# oldx = np.array(sorted(np.random.choice(np.arange(200), 100, replace=False))) +# oldy = oldy = np.random.rand(100, 5, 10) +# for i in range(5): +# for j in range(10): +# bad_pix = np.random.choice(range(100), 100) +# gap_oldy = oldy[:,i, j].copy() +# gap_oldy[bad_pix] = np.nan +# numba_ret = interp_fix.interp1d(newx, oldx, gap_oldy) +# np_ret = np.interp(newx, oldx, gap_oldy) +# diff = numba_ret - np_ret +# if not np.nansum(diff)<1e-10: +# raise +# print('Same result achieved and filled gaps') \ No newline at end of file