Example #1
0
def test_loc(signal):
    s = signal.loc['chan1']
    assert s.as_continuous().shape == (1, 200)
    assert s.chans == ['chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[1])

    s = signal.loc[['chan1', 'chan2']]
    assert s.as_continuous().shape == (2, 200)
    assert s.chans == ['chan1', 'chan2']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[[1, 2]])

    s = signal.loc[:, 1.5:2]
    assert s.as_continuous().shape == (3, 25)
    assert s.chans == ['chan0', 'chan1', 'chan2']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:, 75:100])

    s = signal.loc['chan1', 1.5:2]
    assert s.as_continuous().shape == (1, 25)
    assert s.chans == ['chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[1, 75:100])

    s = signal.loc[:'chan1', 1.5:2]
    assert s.as_continuous().shape == (2, 25)
    assert s.chans == ['chan0', 'chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:2, 75:100])

    s = signal.loc[:'chan1', 1.5]
    assert s.as_continuous().shape == (2, 1)
    assert s.chans == ['chan0', 'chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:2, 75][:, np.newaxis])

    s = signal.loc[:'chan1', :1.5]
    assert s.as_continuous().shape == (2, 75)
    assert s.chans == ['chan0', 'chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:2, :75])

    s = signal.loc[:'chan1', 2.5:]
    assert s.as_continuous().shape == (2, 75)
    assert s.chans == ['chan0', 'chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:2, 125:])

    with pytest.raises(IndexError):
        signal.loc[:, :, :]

    with pytest.raises(IndexError):
        signal.loc[:'chan1', [1.5, 2]]

    s = signal.loc['chan1', 0.732:]
    s_epochs = s.extract_epoch('pupil_closed')
    assert s_epochs.shape == (1, 1, 40)
    signal_epochs = signal.loc['chan1'].extract_epoch('pupil_closed')
    assert np.allclose(s_epochs, signal_epochs[1, :, :40])
Example #2
0
def test_merge_selections(signal):
    signals = []
    for i in range(10):
        jk = signal.jackknife_by_time(10, i, invert=True)
        signals.append(jk)

    merged = merge_selections(signals)

    # merged and signal should be identical
    assert np.sum(np.isnan(merged.as_continuous())) == 0
    assert np.array_equal(signal.as_continuous(), merged.as_continuous())
    assert signal.epochs.equals(merged.epochs)

    # This should not throw an exception
    merge_selections([signal, signal, signal])

    normalized = signal.normalized_by_mean()

    # This SHOULD throw an exception because they totally overlap
    with pytest.raises(ValueError):
        merge_selections([signal, normalized])

    jk2 = normalized.jackknife_by_time(10, 2, invert=True)
    jk3 = signal.jackknife_by_time(10, 3, invert=True)
    jk4 = signal.jackknife_by_time(10, 4, invert=True)

    # This will NOT throw an exception because they don't overlap
    merged = merge_selections([jk2, jk3])
    merged = merge_selections([jk2, jk4])

    # This SHOULD throw an exception
    with pytest.raises(ValueError):
        merged = merge_selections([signal, jk2])
Example #3
0
def test_iloc(signal):
    s = signal.iloc[:1, :10]
    assert s.as_continuous().shape == (1, 10)
    assert s.chans == ['chan0']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:1, :10])

    s = signal.iloc[:, :10]
    assert s.as_continuous().shape == (3, 10)
    assert s.chans == ['chan0', 'chan1', 'chan2']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:, :10])

    s = signal.iloc[1:, :100]
    assert s.as_continuous().shape == (2, 100)
    assert s.chans == ['chan1', 'chan2']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[1:, :100])

    s = signal.iloc[1]
    assert s.as_continuous().shape == (1, 200)
    assert s.chans == ['chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[1][np.newaxis])

    # Test some special-case indexing
    s = signal.iloc[:, 1]
    assert s.as_continuous().shape == (3, 1)
    assert s.chans == ['chan0', 'chan1', 'chan2']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[:, 1][:, np.newaxis])

    s = signal.iloc[1, :]
    assert s.as_continuous().shape == (1, 200)
    assert s.chans == ['chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[1, :][np.newaxis])

    s = signal.iloc[1, 1]
    assert s.as_continuous().shape == (1, 1)
    assert s.chans == ['chan1']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[1, 1])

    s = signal.iloc[[0, 2], 1]
    assert s.as_continuous().shape == (2, 1)
    assert s.chans == ['chan0', 'chan2']
    assert np.allclose(s.as_continuous(),
                       signal.as_continuous()[[0, 2], 1][:, np.newaxis])

    with pytest.raises(IndexError):
        assert signal.iloc[None, 1, 1]

    with pytest.raises(IndexError):
        assert signal.iloc[:, [1, 2]]
Example #4
0
def test_extract_channels(signal):
    two_sig = signal.extract_channels(['chan0', 'chan1'])
    assert two_sig.shape == (2, 200)
    one_sig = signal.extract_channels(['chan2'])
    assert one_sig.shape == (1, 200)
    recombined = RasterizedSignal.concatenate_channels([two_sig, one_sig])
    before = signal.as_continuous()
    after = recombined.as_continuous()
    assert np.array_equal(before, after)
Example #5
0
def test_signal_save_load(signal, signal_tmpdir):
    '''
    Test that signals save and load properly
    '''
    #    if not os.path.exists(signal_tmpdir):
    #        os.mkdir(signal_tmpdir)
    signal.save(str(signal_tmpdir), fmt='%1.3e')

    signals_found = RasterizedSignal.list_signals(str(signal_tmpdir))
    assert len(signals_found) == 1

    save_directory = os.path.join(str(signal_tmpdir), signals_found[0])
    signal_loaded = RasterizedSignal.load(save_directory)

    assert np.all(signal.as_continuous() == signal_loaded.as_continuous())
Example #6
0
def test_as_continuous(signal):
    assert signal.as_continuous().shape == (3, 200)
Example #7
0
def test_split_at_time(signal):
    l, r = signal.split_at_time(0.81)
    print(signal.as_continuous().shape)
    assert l.as_continuous().shape == (3, 162)
    assert r.as_continuous().shape == (3, 38)