def test_no_raw_or_epochs():
    class EmptyDataset(object):
        def __init__(self):
            self.datasets = [1, 2, 3]

    ds = EmptyDataset()
    with pytest.raises(AssertionError):
        transform_concat_ds(ds, ["dummy", "dummy"])
def test_scale_windows(windows_concat_ds):
    factor = 1e6
    transforms = [
        ('pick_types', dict(eeg=True, meg=False, stim=False)),
        (scale, dict(factor=factor))
    ]
    raw_window = windows_concat_ds[0][0]
    transform_concat_ds(windows_concat_ds, transforms)
    expected = np.ones_like(raw_window) * factor
    np.testing.assert_allclose(windows_concat_ds[0][0] / raw_window, expected,
                               rtol=1e-4, atol=1e-4)
def test_scale_continuous(base_concat_ds):
    factor = 1e6
    transforms = [
        ('pick_types', dict(eeg=True, meg=False, stim=False)),
        ('apply_function', dict(fun=scale, factor=factor))
    ]
    raw_timepoint = base_concat_ds[0][0]
    transform_concat_ds(base_concat_ds, transforms)
    expected = np.ones_like(raw_timepoint) * factor
    np.testing.assert_allclose(base_concat_ds[0][0] / raw_timepoint, expected,
                               rtol=1e-4, atol=1e-4)
def test_zscore_windows(windows_concat_ds):
    transforms = [
        ('pick_types', dict(eeg=True, meg=False, stim=False)),
        (zscore, dict())
    ]
    transform_concat_ds(windows_concat_ds, transforms)
    for ds in windows_concat_ds.datasets:
        windowed_data = ds.windows.get_data()
        shape = windowed_data.shape
        # zero mean
        expected = np.zeros(shape[:-1])
        np.testing.assert_allclose(
            windowed_data.mean(axis=-1), expected, rtol=1e-4, atol=1e-4)
        # unit variance
        expected = np.ones(shape[:-1])
        np.testing.assert_allclose(
            windowed_data.std(axis=-1), expected, rtol=1e-4, atol=1e-4)
def test_zscore_continuous(base_concat_ds):
    transforms = [
        ('pick_types', dict(eeg=True, meg=False, stim=False)),
        ('apply_function', dict(fun=zscore, channel_wise=True))
    ]
    transform_concat_ds(base_concat_ds, transforms)
    for ds in base_concat_ds.datasets:
        raw_data = ds.raw.get_data()
        shape = raw_data.shape
        # zero mean
        expected = np.zeros(shape[:-1])
        np.testing.assert_allclose(
            raw_data.mean(axis=-1), expected, rtol=1e-4, atol=1e-4)
        # unit variance
        expected = np.ones(shape[:-1])
        np.testing.assert_allclose(
            raw_data.std(axis=-1), expected, rtol=1e-4, atol=1e-4)
def test_transform_windows_method(windows_concat_ds):
    transforms = [("filter", {"l_freq": 7, "h_freq": 13})]
    raw_window = windows_concat_ds[0][0]
    transform_concat_ds(windows_concat_ds, transforms)
    assert not np.array_equal(raw_window, windows_concat_ds[0][0])
def test_transform_base_method(base_concat_ds):
    transforms = [("resample", {"sfreq": 50})]
    transform_concat_ds(base_concat_ds, transforms)
    assert base_concat_ds.datasets[0].raw.info['sfreq'] == 50
def test_method_not_available(base_concat_ds):
    transforms = [('this_method_is_not_real', {'indeed': None})]
    with pytest.raises(AttributeError):
        transform_concat_ds(base_concat_ds, transforms)
def test_not_list():
    with pytest.raises(AssertionError):
        transform_concat_ds(None, {'test': 1})
Example #10
0
##############################################################################
# We can apply preprocessing transforms that are defined in mne and work
# in-place, such as resampling, bandpass filtering, or electrode selection.
transform_list = [
    ("pick_types", {
        "eeg": True,
        "meg": False,
        "stim": True
    }),
    ("resample", {
        "sfreq": 100
    }),
]
print(ds.datasets[0].raw.info["sfreq"])
transform_concat_ds(ds, transform_list)
print(ds.datasets[0].raw.info["sfreq"])

###############################################################################
# We can easily split ds based on a criteria applied to the description
# DataFrame:
subsets = ds.split("session")
print({subset_name: len(subset) for subset_name, subset in subsets.items()})

###############################################################################
# Next, we use a windower to extract events from the dataset based on events:
windows_ds = create_windows_from_events(ds,
                                        trial_start_offset_samples=0,
                                        trial_stop_offset_samples=100,
                                        supercrop_size_samples=400,
                                        supercrop_stride_samples=100,
Example #11
0
if cuda:
    model.cuda()

dataset = MOABBDataset(dataset_name="BNCI2014001", subject_ids=[subject_id])

standardize_func = partial(exponential_running_standardize,
                           factor_new=factor_new,
                           init_block_size=init_block_size)
raw_transform_dict = [
    ("pick_types", dict(eeg=True, meg=False, stim=False)),
    ('apply_function', dict(fun=lambda x: x * 1e6, channel_wise=False)),
    ('filter', dict(l_freq=low_cut_hz, h_freq=high_cut_hz)),
    ('apply_function', dict(fun=standardize_func, channel_wise=False))
]
transform_concat_ds(dataset, raw_transform_dict)

sfreqs = [ds.raw.info['sfreq'] for ds in dataset.datasets]
assert len(np.unique(sfreqs)) == 1
trial_start_offset_samples = int(trial_start_offset_seconds * sfreqs[0])

windows_dataset = create_windows_from_events(
    dataset,
    trial_start_offset_samples=trial_start_offset_samples,
    trial_stop_offset_samples=0,
    supercrop_size_samples=input_time_length,
    supercrop_stride_samples=input_time_length,
    drop_samples=False,
    preload=True,
)