def test_raw(cur_system, version, use_info): """Test comparing reading a raw fiff file and the FieldTrip version.""" # Load the raw fiff file with mne test_data_folder_ft = get_data_paths(cur_system) raw_fiff_mne = get_raw_data(cur_system, drop_extra_chs=True) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'raw_%s.mat' % (version, )) if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_raw_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): raw_fiff_ft = mne.io.read_raw_fieldtrip(cur_fname, info) if cur_system == 'BTI' and not use_info: raw_fiff_ft.drop_channels( ['MzA', 'MxA', 'MyaA', 'MyA', 'MxaA', 'MzaA']) if cur_system == 'eximia' and not use_info: raw_fiff_ft.drop_channels(['TRIG2', 'TRIG1', 'GATE']) # Check that the data was loaded correctly check_data(raw_fiff_mne.get_data(), raw_fiff_ft.get_data(), cur_system) # Check info field check_info_fields(raw_fiff_mne, raw_fiff_ft, use_info)
def test_read_evoked(cur_system, version, use_info): """Test comparing reading an Evoked object and the FieldTrip version.""" test_data_folder_ft = get_data_paths(cur_system) mne_avg = get_evoked(cur_system) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'averaged_%s.mat' % (version, )) if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_evoked_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): avg_ft = mne.io.read_evoked_fieldtrip(cur_fname, info) mne_data = mne_avg.data[:, :-1] ft_data = avg_ft.data check_data(mne_data, ft_data, cur_system) check_info_fields(mne_avg, avg_ft, use_info)
def test_read_evoked(cur_system, version, use_info): """Test comparing reading an Evoked object and the FieldTrip version.""" test_data_folder_ft = get_data_paths(cur_system) mne_avg = get_evoked(cur_system) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'averaged_%s.mat' % (version,)) if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_evoked_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): avg_ft = mne.io.read_evoked_fieldtrip(cur_fname, info) mne_data = mne_avg.data[:, :-1] ft_data = avg_ft.data check_data(mne_data, ft_data, cur_system) check_info_fields(mne_avg, avg_ft, use_info)
def test_raw(cur_system, version, use_info): """Test comparing reading a raw fiff file and the FieldTrip version.""" # Load the raw fiff file with mne test_data_folder_ft = get_data_paths(cur_system) raw_fiff_mne = get_raw_data(cur_system, drop_extra_chs=True) if use_info: info = get_raw_info(cur_system) if cur_system in ('BTI', 'eximia'): ctx = pytest.warns(RuntimeWarning, match='cannot be found in') else: ctx = nullcontext() else: info = None ctx = pytest.warns(**no_info_warning) cur_fname = os.path.join(test_data_folder_ft, 'raw_%s.mat' % (version, )) with ctx: raw_fiff_ft = mne.io.read_raw_fieldtrip(cur_fname, info) if cur_system == 'BTI' and not use_info: raw_fiff_ft.drop_channels( ['MzA', 'MxA', 'MyaA', 'MyA', 'MxaA', 'MzaA']) if cur_system == 'eximia' and not use_info: raw_fiff_ft.drop_channels(['TRIG2', 'TRIG1', 'GATE']) # Check that the data was loaded correctly check_data(raw_fiff_mne.get_data(), raw_fiff_ft.get_data(), cur_system) # Check info field check_info_fields(raw_fiff_mne, raw_fiff_ft, use_info)
def test_load_epoched_as_raw(): """Test whether exception is thrown when loading epochs as raw.""" test_data_folder_ft = get_data_paths('neuromag306') info = get_raw_info('neuromag306') cur_fname = os.path.join(test_data_folder_ft, 'epoched_v7.mat') with pytest.raises(RuntimeError): mne.io.read_raw_fieldtrip(cur_fname, info)
def test_load_epoched_as_raw(): """Test whether exception is thrown when loading epochs as raw.""" test_data_folder_ft = get_data_paths('neuromag306') info = get_raw_info('neuromag306') cur_fname = os.path.join(test_data_folder_ft, 'epoched_v7.mat') with pytest.raises(RuntimeError): mne.io.read_raw_fieldtrip(cur_fname, info)
def test_invalid_trialinfocolumn(): """Test for exceptions when using wrong values for trialinfo parameter.""" test_data_folder_ft = get_data_paths('neuromag306') info = get_raw_info('neuromag306') cur_fname = os.path.join(test_data_folder_ft, 'epoched_v7.mat') with pytest.raises(ValueError): mne.io.read_epochs_fieldtrip(cur_fname, info, trialinfo_column=-1) with pytest.raises(ValueError): mne.io.read_epochs_fieldtrip(cur_fname, info, trialinfo_column=3)
def test_invalid_trialinfocolumn(): """Test for exceptions when using wrong values for trialinfo parameter.""" test_data_folder_ft = get_data_paths('neuromag306') info = get_raw_info('neuromag306') cur_fname = os.path.join(test_data_folder_ft, 'epoched_v7.mat') with pytest.raises(ValueError): mne.io.read_epochs_fieldtrip(cur_fname, info, trialinfo_column=-1) with pytest.raises(ValueError): mne.io.read_epochs_fieldtrip(cur_fname, info, trialinfo_column=3)
def test_evoked_with_missing_channels(): """Test _create_info on evoked data when channels are missing from info.""" cur_system = 'neuromag306' test_data_folder_ft = get_data_paths(cur_system) info = get_raw_info(cur_system) del info['chs'][1:20] info._update_redundant() with pytest.warns(RuntimeWarning): mne.read_evoked_fieldtrip( os.path.join(test_data_folder_ft, 'averaged_v7.mat'), info)
def test_read_epochs(cur_system, version, use_info, monkeypatch): """Test comparing reading an Epochs object and the FieldTrip version.""" pandas = _check_pandas_installed(strict=False) has_pandas = pandas is not False test_data_folder_ft = get_data_paths(cur_system) mne_epoched = get_epochs(cur_system) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'epoched_%s.mat' % (version, )) if has_pandas: if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_epochs_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert isinstance(epoched_ft.metadata, pandas.DataFrame) else: with pytest.warns(None) as warn_record: if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_epochs_fieldtrip(cur_fname, info) return epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert epoched_ft.metadata is None assert_warning_in_record(pandas_not_found_warning_msg, warn_record) if pytestwarning['expected_warning'] is not None: assert_warning_in_record(pytestwarning['match'], warn_record) mne_data = mne_epoched.get_data()[:, :, :-1] ft_data = epoched_ft.get_data() check_data(mne_data, ft_data, cur_system) check_info_fields(mne_epoched, epoched_ft, use_info) # weird sfreq from mne.externals.pymatreader import read_mat def modify_mat(fname, variable_names=None, ignore_fields=None): out = read_mat(fname, variable_names, ignore_fields) if 'fsample' in out['data']: out['data']['fsample'] = np.repeat(out['data']['fsample'], 2) return out monkeypatch.setattr(mne.externals.pymatreader, 'read_mat', modify_mat) with pytest.warns(RuntimeWarning, match='multiple'): mne.io.read_epochs_fieldtrip(cur_fname, info)
def test_throw_exception_on_cellarray(version, type): """Test for a meaningful exception when the data is a cell array.""" fname = os.path.join(get_data_paths('cellarray'), '%s_%s.mat' % (type, version)) info = get_raw_info('CNT') with pytest.raises(RuntimeError, match='Loading of data in cell arrays ' 'is not supported'): if type == 'averaged': mne.read_evoked_fieldtrip(fname, info) elif type == 'epoched': mne.read_epochs_fieldtrip(fname, info) elif type == 'raw': mne.io.read_raw_fieldtrip(fname, info)
def test_read_epochs(cur_system, version, use_info, monkeypatch): """Test comparing reading an Epochs object and the FieldTrip version.""" pandas = _check_pandas_installed(strict=False) has_pandas = pandas is not False test_data_folder_ft = get_data_paths(cur_system) mne_epoched = get_epochs(cur_system) if use_info: info = get_raw_info(cur_system) ctx = nullcontext() else: info = None ctx = pytest.warns(**no_info_warning) cur_fname = os.path.join(test_data_folder_ft, 'epoched_%s.mat' % (version, )) if has_pandas: with ctx: epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert isinstance(epoched_ft.metadata, pandas.DataFrame) else: with _record_warnings() as warn_record: epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert epoched_ft.metadata is None assert_warning_in_record(pandas_not_found_warning_msg, warn_record) if info is None: assert_warning_in_record(NOINFO_WARNING, warn_record) mne_data = mne_epoched.get_data()[:, :, :-1] ft_data = epoched_ft.get_data() check_data(mne_data, ft_data, cur_system) check_info_fields(mne_epoched, epoched_ft, use_info) read_mat = pymatreader.read_mat # weird sfreq def modify_mat(fname, variable_names=None, ignore_fields=None): out = read_mat(fname, variable_names, ignore_fields) if 'fsample' in out['data']: out['data']['fsample'] = np.repeat(out['data']['fsample'], 2) return out monkeypatch.setattr(pymatreader, 'read_mat', modify_mat) with pytest.warns(RuntimeWarning, match='multiple'): mne.io.read_epochs_fieldtrip(cur_fname, info)
def test_read_evoked(cur_system, version, use_info): """Test comparing reading an Evoked object and the FieldTrip version.""" test_data_folder_ft = get_data_paths(cur_system) mne_avg = get_evoked(cur_system) if use_info: info = get_raw_info(cur_system) ctx = nullcontext() else: info = None ctx = pytest.warns(**no_info_warning) cur_fname = os.path.join(test_data_folder_ft, 'averaged_%s.mat' % (version, )) with ctx: avg_ft = mne.io.read_evoked_fieldtrip(cur_fname, info) mne_data = mne_avg.data[:, :-1] ft_data = avg_ft.data check_data(mne_data, ft_data, cur_system) check_info_fields(mne_avg, avg_ft, use_info)
def test_read_epochs(cur_system, version, use_info): """Test comparing reading an Epochs object and the FieldTrip version.""" pandas = _check_pandas_installed(strict=False) has_pandas = pandas is not False test_data_folder_ft = get_data_paths(cur_system) mne_epoched = get_epochs(cur_system) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'epoched_%s.mat' % (version, )) if has_pandas: if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_epochs_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert isinstance(epoched_ft.metadata, pandas.DataFrame) else: with pytest.warns(None) as warn_record: if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_epochs_fieldtrip(cur_fname, info) return epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert epoched_ft.metadata is None assert_warning_in_record(pandas_not_found_warning_msg, warn_record) if pytestwarning['expected_warning'] is not None: assert_warning_in_record(pytestwarning['match'], warn_record) mne_data = mne_epoched.get_data()[:, :, :-1] ft_data = epoched_ft.get_data() check_data(mne_data, ft_data, cur_system) check_info_fields(mne_epoched, epoched_ft, use_info)
def test_read_epochs(cur_system, version, use_info): """Test comparing reading an Epochs object and the FieldTrip version.""" pandas = _check_pandas_installed(strict=False) has_pandas = pandas is not False test_data_folder_ft = get_data_paths(cur_system) mne_epoched = get_epochs(cur_system) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'epoched_%s.mat' % (version,)) if has_pandas: if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_epochs_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert isinstance(epoched_ft.metadata, pandas.DataFrame) else: with pytest.warns(None) as warn_record: if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_epochs_fieldtrip(cur_fname, info) return epoched_ft = mne.io.read_epochs_fieldtrip(cur_fname, info) assert epoched_ft.metadata is None assert_warning_in_record(pandas_not_found_warning_msg, warn_record) if pytestwarning['expected_warning'] is not None: assert_warning_in_record(pytestwarning['match'], warn_record) mne_data = mne_epoched.get_data()[:, :, :-1] ft_data = epoched_ft.get_data() check_data(mne_data, ft_data, cur_system) check_info_fields(mne_epoched, epoched_ft, use_info)
def test_raw(cur_system, version, use_info): """Test comparing reading a raw fiff file and the FieldTrip version.""" # Load the raw fiff file with mne test_data_folder_ft = get_data_paths(cur_system) raw_fiff_mne = get_raw_data(cur_system, drop_extra_chs=True) if use_info: info = get_raw_info(cur_system) pytestwarning = {'expected_warning': None} else: info = None pytestwarning = no_info_warning cur_fname = os.path.join(test_data_folder_ft, 'raw_%s.mat' % (version,)) if version == 'v73' and not _has_h5py(): with pytest.raises(ImportError): mne.io.read_raw_fieldtrip(cur_fname, info) return with pytest.warns(**pytestwarning): raw_fiff_ft = mne.io.read_raw_fieldtrip(cur_fname, info) if cur_system == 'BTI' and not use_info: raw_fiff_ft.drop_channels(['MzA', 'MxA', 'MyaA', 'MyA', 'MxaA', 'MzaA']) if cur_system == 'eximia' and not use_info: raw_fiff_ft.drop_channels(['TRIG2', 'TRIG1', 'GATE']) # Check that the data was loaded correctly check_data(raw_fiff_mne.get_data(), raw_fiff_ft.get_data(), cur_system) # Check info field check_info_fields(raw_fiff_mne, raw_fiff_ft, use_info)