Пример #1
0
def test_resample():
    for _ in range(100):
        sig = slab.Signal(numpy.random.randn(numpy.random.randint(100, 10000)))
        samplerate = numpy.random.randint(10, 1000)
        sig_resampled = sig.resample(samplerate)
        assert numpy.abs(sig_resampled.n_samples -
                         sig.duration * samplerate) < 1
Пример #2
0
def test_channels():
    for _ in range(100):
        n_samples = numpy.random.randint(100, 10000)
        n_channels = numpy.random.randint(1, 10)
        samplerate = numpy.random.randint(10, 1000)
        sig = slab.Signal(numpy.random.randn(n_samples, n_channels),
                          samplerate=samplerate)
        for i, ch in enumerate(sig.channels()):
            numpy.testing.assert_equal(sig.channel(i).data, ch.data)
Пример #3
0
def test_arithmetics():
    for _ in range(100):
        n_samples = numpy.random.randint(100, 10000)
        n_channels = numpy.random.randint(1, 10)
        samplerate = numpy.random.randint(10, 1000)
        sig = slab.Signal(numpy.random.randn(n_samples, n_channels),
                          samplerate=samplerate)
        numpy.testing.assert_equal((sig + sig).data, (sig * 2).data)
        numpy.testing.assert_equal((sig - sig).data,
                                   numpy.zeros([n_samples, n_channels]))
        numpy.testing.assert_equal((sig * sig).data, sig**2)
Пример #4
0
def test_resize():
    dur_seconds = numpy.abs(numpy.random.randn(100))
    dur_samples = numpy.random.randint(10, 100000, 100)
    for i in range(100):
        n_samples = numpy.random.randint(100, 10000)
        n_channels = numpy.random.randint(1, 10)
        samplerate = numpy.random.randint(10, 1000)
        sig = slab.Signal(numpy.random.randn(n_samples, n_channels),
                          samplerate=samplerate)
        resized = sig.resize(dur_seconds[i])
        assert numpy.abs(resized.n_samples -
                         dur_seconds[i] * resized.samplerate) < 1
        resized = sig.resize(dur_samples[i])
        assert resized.n_samples == dur_samples[i]
Пример #5
0
def test_signal_generation():
    # (numpy.ndarray | object | list)
    for _ in range(100):
        n_samples = numpy.random.randint(100, 10000)
        n_channels = numpy.random.randint(1, 10)
        samplerate = numpy.random.randint(10, 1000)
        sig = slab.Signal(numpy.random.randn(n_samples, n_channels),
                          samplerate)
        assert sig.n_channels == n_channels
        assert sig.n_samples == n_samples
        assert sig.samplerate == samplerate
        assert len(sig.times) == len(sig.data)
        numpy.testing.assert_almost_equal(sig.times.max() * samplerate,
                                          n_samples,
                                          decimal=-1)
Пример #6
0
def test_trim():
    for _ in range(100):
        n_samples = numpy.random.randint(100, 10000)
        n_channels = numpy.random.randint(1, 10)
        samplerate = numpy.random.randint(10, 1000)
        sig = slab.Signal(numpy.random.randn(n_samples, n_channels),
                          samplerate=samplerate)
        start, stop = numpy.sort(numpy.random.randint(0, n_samples + 1, 2))
        if start == stop:
            start -= 1
        if numpy.random.rand() < 0.5:
            trimmed = sig.trim(start=start, stop=stop)
        else:
            trimmed = sig.trim(start=start / samplerate,
                               stop=stop / samplerate)
        assert numpy.abs(trimmed.n_samples - (stop - start)) <= 1
    with pytest.raises(ValueError):  # testing start not preceding stop case
        trimmed = sig.trim(start=stop, stop=start)
Пример #7
0
def test_delay():
    dur_seconds = numpy.abs(numpy.random.randn(100))
    dur_samples = numpy.random.randint(10, 100000, 100)
    for i in range(100):
        sig = slab.Signal(
            numpy.random.randn(numpy.random.randint(100, 10000),
                               numpy.random.randint(1, 10)))
        channel = numpy.random.choice(sig.n_channels)
        for dur in [dur_samples[i], dur_seconds[i]]:
            delay_n_samples = slab.Signal.in_samples(
                dur, slab.signal._default_samplerate)
        if delay_n_samples > sig.n_samples:
            numpy.testing.assert_raises(ValueError, sig.delay, dur, channel)
        else:
            delayed = sig.delay(
                duration=dur,
                channel=channel,
                filter_length=numpy.random.randint(100, 10000) * 2)
            delayed_channel = delayed.channel(channel)
            numpy.testing.assert_almost_equal(
                delayed_channel[:delay_n_samples].flatten(),
                numpy.zeros(delay_n_samples),
                decimal=7)