예제 #1
0
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')
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
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])
예제 #5
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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
예제 #9
0
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)
예제 #10
0
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
예제 #11
0
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])
예제 #12
0
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'])
예제 #13
0
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)