def test_time_window_interval_unit_error(): """ Test errors for incorrect boundaries in combinations with unit.""" sig = pyfar.Signal(np.ones(10), 2) with pytest.raises(ValueError, match='than signal'): dsp.time_window(sig, interval=[0, 11], unit='samples') with pytest.raises(ValueError, match='than signal'): dsp.time_window(sig, interval=[0, 6], unit='s')
def test_time_window_right(): """ Test window options right.""" sig = pyfar.Signal(np.ones(7), 1) # Odd number of samples, crop='none' sig_win = dsp.time_window(sig, window='triang', interval=[2, 4], shape='right', crop='none') time_win = np.array([[1, 1, 1, 0.75, 0.25, 0, 0]]) npt.assert_allclose(sig_win.time, time_win) # Even number of samples, crop='none' sig_win = dsp.time_window(sig, window='triang', interval=[2, 5], shape='right', crop='none') time_win = np.array([[1, 1, 1, 5 / 6, 3 / 6, 1 / 6, 0]]) npt.assert_allclose(sig_win.time, time_win) # crop='end' sig_win = dsp.time_window(sig, window='triang', interval=[2, 5], shape='right', crop='end') time_win = np.array([[1, 1, 1, 5 / 6, 3 / 6, 1 / 6]]) npt.assert_allclose(sig_win.time, time_win) # crop='window' sig_win = dsp.time_window(sig, window='triang', interval=[2, 5], shape='right', crop='window') time_win = np.array([[1, 1, 1, 5 / 6, 3 / 6, 1 / 6]]) npt.assert_allclose(sig_win.time, time_win)
def test_time_window_crop_interval(): """ Test truncation of windowed signal to interval.""" sig = pyfar.Signal(np.ones(10), 2) sig_win = dsp.time_window(sig, interval=[1, 3], shape='symmetric', unit='samples', crop='window') assert sig_win.n_samples == 3 sig_win = dsp.time_window(sig, interval=[0.5, 1.5], shape='symmetric', unit='s', crop='window') assert sig_win.n_samples == 3 sig_win = dsp.time_window(sig, interval=[1, 3], shape='left', crop='window') assert sig_win.n_samples == 9 sig_win = dsp.time_window(sig, interval=[1, 3], shape='right', crop='window') assert sig_win.n_samples == 4
def test_time_window_interval_order_error(): """ Test errors for incorrect order of values in interval.""" sig = pyfar.Signal(np.ones(10), 2) with pytest.raises(ValueError, match='ascending'): dsp.time_window(sig, interval=[2, 1]) with pytest.raises(ValueError, match='ascending'): dsp.time_window(sig, interval=[1, 2, 3, 0])
def test_time_window_interval_four_values(): """ Test time_window with four values given in interval.""" sig = pyfar.Signal(np.ones(9), 1) sig_win = dsp.time_window(sig, window='triang', interval=[1, 3, 6, 7], crop='none') time_win = np.array([[0, 0.25, 0.75, 1, 1, 1, 1, 0.5, 0]]) npt.assert_allclose(sig_win.time, time_win) sig = pyfar.Signal(np.ones(10), 1) sig_win = dsp.time_window(sig, window='triang', interval=[1, 3, 6, 7], crop='none') time_win = np.array([[0, 0.25, 0.75, 1, 1, 1, 1, 0.5, 0, 0]]) npt.assert_allclose(sig_win.time, time_win)
def test_time_window_symmetric_zero(): """ Test window option symmetric_zero.""" sig = pyfar.Signal(np.ones(12), 2) sig_win = dsp.time_window(sig, window='triang', interval=[2, 4], shape='symmetric_zero') time_win = np.array([[1, 1, 1, 0.75, 0.25, 0, 0, 0, 0.25, 0.75, 1, 1]]) npt.assert_allclose(sig_win.time, time_win)
def test_time_window_symmetric(): """ Test window option symmetric.""" sig = pyfar.Signal(np.ones(10), 2) sig_win = dsp.time_window(sig, interval=[1, 5], window='hann', shape='symmetric', crop='window') time_win = np.atleast_2d(sgn.windows.hann(5, sym=True)) npt.assert_allclose(sig_win.time, time_win)
def test_time_window_crop_end(): """ Test crop option 'end'.""" sig = pyfar.Signal(np.ones(10), 2) sig_win = dsp.time_window(sig, interval=[1, 3], shape='symmetric', unit='samples', crop='end') assert sig_win.n_samples == 4 sig_win = dsp.time_window(sig, interval=[0.5, 1.5], shape='symmetric', unit='s', crop='end') assert sig_win.n_samples == 4 sig_win = dsp.time_window(sig, interval=[1, 3], shape='left', crop='end') assert sig_win.n_samples == 10 sig_win = dsp.time_window(sig, interval=[1, 3], shape='right', crop='end') assert sig_win.n_samples == 4
def test_time_window_multichannel(): """ Test time_window of multichannel signal.""" time = np.array([[[1, 1, 1, 1], [2, 2, 2, 2]], [[3, 3, 3, 3], [4, 4, 4, 4]]]) sig = pyfar.Signal(time, 1) sig_win = dsp.time_window(sig, window='triang', interval=[1, 2], shape='symmetric', crop='window') time_win = np.array([[[0.5, 0.5], [1, 1]], [[1.5, 1.5], [2, 2]]]) npt.assert_allclose(sig_win.time, time_win)
def test_time_window_crop_none(): """ Test crop option 'none'.""" sig = pyfar.Signal(np.ones(10), 2) sig_win = dsp.time_window(sig, interval=[1, 3], crop='none') assert sig_win.n_samples == 10
def test_time_window_interval_types(): sig = pyfar.Signal(np.ones(10), 2) dsp.time_window(sig, interval=(1, 2)) dsp.time_window(sig, interval=[1, 2]) dsp.time_window(sig, interval=(1, 2, 3, 4)) dsp.time_window(sig, interval=[1, 2, 3, 4])
def test_time_window_input(): """Test errors when calling with incorrect parameters.""" sig = pyfar.Signal(np.ones(5), 2) with pytest.raises(TypeError, match='signal'): dsp.time_window([1., 2.], interval=(0, 4)) with pytest.raises(ValueError, match='shape'): dsp.time_window(sig, interval=(0, 4), shape='top') with pytest.raises(TypeError, match='crop'): dsp.time_window(sig, interval=(0, 4), crop='t') with pytest.raises(ValueError, match='unit'): dsp.time_window(sig, interval=[0, 1], unit='kg') with pytest.raises(TypeError, match='interval'): dsp.time_window(sig, interval=1) with pytest.raises(ValueError, match='contain'): dsp.time_window(sig, interval=[1, 2, 3]) with pytest.raises(ValueError, match='longer'): dsp.time_window(sig, interval=[1, 11]) with pytest.raises(ValueError): dsp.time_window(sig, interval=['a', 'b'])
def test_time_window_default(): """ Test time_window function with default values.""" sig = pyfar.Signal(np.ones(10), 2) sig_win = dsp.time_window(sig, interval=(0, sig.n_samples - 1)) time_win = np.atleast_2d(sgn.windows.hann(10, sym=True)) npt.assert_allclose(sig_win.time, time_win)