From d9f2d7c767e20b99c0540f1337bca952a5c6a6e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 15 Nov 2024 13:33:33 +0100 Subject: [PATCH] add operation on numpy functions flipud fliplr transpose --- src/pymodaq_data/numpy_func.py | 22 ++++++++++++++++++++++ tests/data_test.py | 15 +++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/pymodaq_data/numpy_func.py b/src/pymodaq_data/numpy_func.py index a9bad157..6991d47d 100644 --- a/src/pymodaq_data/numpy_func.py +++ b/src/pymodaq_data/numpy_func.py @@ -170,3 +170,25 @@ def _allclose(dwa_a: 'DataWithAxes', dwa_b: 'DataWithAxes', *args, *args, **kwargs)) for ind in range(len(dwa_a))]) return dwa + + +# *************** other numpy function **************** + +@implements('flipud') +def _flipud(dwa: 'DataWithAxes', *args, **kwargs): + dwa_func = dwa.deepcopy_with_new_data([np.flipud(data_array) for data_array in dwa]) + return dwa_func + + +@implements('fliplr') +def _fliplr(dwa: 'DataWithAxes', *args, **kwargs): + dwa_func = dwa.deepcopy_with_new_data([np.fliplr(data_array) for data_array in dwa]) + return dwa_func + + +@implements('transpose') +def _transpose(dwa: 'DataWithAxes', *args, **kwargs): + dwa_func = dwa.deepcopy_with_new_data([np.transpose(data_array) for data_array in dwa]) + return dwa_func + + diff --git a/tests/data_test.py b/tests/data_test.py index 3ed9856a..772ab7f8 100644 --- a/tests/data_test.py +++ b/tests/data_test.py @@ -1578,4 +1578,19 @@ def test_all_close(self): assert not np.allclose(dwa_a, dwa_b * 0.1) + def test_flip_transpose_rotate(self): + dwa = data_mod.DataRaw('raw', units='', data=[DATA2D]) + + dwa_transform = np.flipud(dwa) + for ind in range(len(dwa)): + assert np.allclose(np.flipud(dwa[ind]), dwa_transform[ind]) + + dwa_transform = np.fliplr(dwa) + for ind in range(len(dwa)): + assert np.allclose(np.fliplr(dwa[ind]), dwa_transform[ind]) + + dwa_transform = np.transpose(dwa) + for ind in range(len(dwa)): + assert np.allclose(np.transpose(dwa[ind]), dwa_transform[ind]) +