diff --git a/src/toolbox_scs/base/knife_edge.py b/src/toolbox_scs/base/knife_edge.py index 82e3aee85cf70731bcd2cb9f8bfbcff89a04c32e..0b64fee16cf7cc0152c2e37cd898e566e3115e29 100644 --- a/src/toolbox_scs/base/knife_edge.py +++ b/src/toolbox_scs/base/knife_edge.py @@ -43,9 +43,8 @@ def prepare_arrays(positions: np.ndarray, intensities: np.ndarray, intensities = intensities[slice_] # Convert both arrays to 1D of the same size - n_pulses = intensities.shape[1] - positions = np.repeat(positions, n_pulses) intensities = intensities.flatten() + positions = np.repeat(positions, len(intensities) // len(positions)) assert positions.shape == intensities.shape # Clean both arrays by only getting finite values diff --git a/src/toolbox_scs/base/tests/test_knife_edge.py b/src/toolbox_scs/base/tests/test_knife_edge.py index 4699597a420f1a6bdef353a91a57e939cc6efb6e..a1cd9ae5e5a67e7df553aa39a760f9bc8cdbc968 100644 --- a/src/toolbox_scs/base/tests/test_knife_edge.py +++ b/src/toolbox_scs/base/tests/test_knife_edge.py @@ -45,7 +45,7 @@ def test_range_mask(): np.testing.assert_array_equal(slice_, [False, False, True, False, True]) -def test_prepare_arrays(): +def test_prepare_arrays_nans(): # Setup test values trains, pulses = 5, 10 size = trains * pulses @@ -74,6 +74,23 @@ def test_prepare_arrays(): assert np.isfinite(intensities).all() +def test_prepare_arrays_size(): + trains, pulses = 5, 10 + size = trains * pulses + motor = np.arange(trains) + signal = np.random.randint(100, size=(trains, pulses)) + + # Test finite motor and 2D signals + positions, intensities = prepare_arrays(motor, signal) + assert positions.shape == (size,) + assert intensities.shape == (size,) + + # Test finite motor and 1D signals + positions, intensities = prepare_arrays(motor, signal.reshape(1, -1)) + assert positions.shape == (size,) + assert intensities.shape == (size,) + + def with_values(array, value, num=5): copy = array.astype(np.float) copy.ravel()[np.random.choice(copy.size, num, replace=False)] = value