def fix_channel_infos(mne_data_filepath, verbose=True): log.info('Loading raw fif data from: {}'.format(mne_data_filepath)) raw = mne.io.Raw(mne_data_filepath, preload=True, verbose=verbose) raw.info['bads'] = [ ] # reset bad channels as they have been removed already montage = Biosemi64Layout().as_montage() log.info('Applying channel montage: {}'.format(montage)) ## change EEG channel names mapping = dict() bdf_channel_names = raw.ch_names for i, channel_name in enumerate(montage.ch_names): log.debug('renaming channel {}: {} -> {}'.format( i, bdf_channel_names[i], channel_name)) mapping[bdf_channel_names[i]] = channel_name rename_channels(raw.info, mapping) # mne.channels.apply_montage(raw.info, montage) # in mne 0.9 raw.set_montage(montage) # in mne 0.9 log.info('Saving raw fif data to: {}'.format(mne_data_filepath)) raw.save(mne_data_filepath, overwrite=True, verbose=False) return raw
def test_rename_channels(): """Test rename channels """ info = read_info(raw_fname) # Error Tests # Test channel name exists in ch_names mapping = {'EEG 160': 'EEG060'} assert_raises(ValueError, rename_channels, info, mapping) # Test change to EEG channel mapping = {'EOG 061': ('EEG 061', 'eeg')} with warnings.catch_warnings(record=True): assert_raises(ValueError, rename_channels, info, mapping) # Test change to illegal channel type mapping = {'EOG 061': ('MEG 061', 'meg')} with warnings.catch_warnings(record=True): assert_raises(ValueError, rename_channels, info, mapping) # Test channel type which you are changing from e.g. MEG mapping = {'MEG 2641': ('MEG2641', 'eeg')} with warnings.catch_warnings(record=True): assert_raises(ValueError, rename_channels, info, mapping) # Test improper mapping configuration mapping = {'MEG 2641': 1.0} assert_raises(ValueError, rename_channels, info, mapping) # Test successful changes # Test ch_name and ch_names are changed info2 = deepcopy(info) # for consistency at the start of each test info2['bads'] = ['EEG 060', 'EOG 061'] mapping = {'EEG 060': 'EEG060', 'EOG 061': 'EOG061'} rename_channels(info2, mapping) assert_true(info2['chs'][374]['ch_name'] == 'EEG060') assert_true(info2['ch_names'][374] == 'EEG060') assert_true('EEG060' in info2['bads']) assert_true(info2['chs'][375]['ch_name'] == 'EOG061') assert_true(info2['ch_names'][375] == 'EOG061') assert_true('EOG061' in info2['bads'])
def fix_channel_infos(mne_data_filepath, verbose=True): log.info('Loading raw fif data from: {}'.format(mne_data_filepath)) raw = mne.io.Raw(mne_data_filepath, preload=True, verbose=verbose) raw.info['bads'] = [] # reset bad channels as they have been removed already montage = Biosemi64Layout().as_montage() log.info('Applying channel montage: {}'.format(montage)) ## change EEG channel names mapping = dict() bdf_channel_names = raw.ch_names for i, channel_name in enumerate(montage.ch_names): log.debug('renaming channel {}: {} -> {}'.format( i, bdf_channel_names[i], channel_name)) mapping[bdf_channel_names[i]] = channel_name rename_channels(raw.info, mapping) # mne.channels.apply_montage(raw.info, montage) # in mne 0.9 raw.set_montage(montage) # in mne 0.9 log.info('Saving raw fif data to: {}'.format(mne_data_filepath)) raw.save(mne_data_filepath, overwrite=True, verbose=False) return raw
def test_rename_channels(): """Test rename channels """ info = read_info(raw_fname) # Error Tests # Test channel name exists in ch_names mapping = {'EEG 160': 'EEG060'} assert_raises(ValueError, rename_channels, info, mapping) # Test change to EEG channel mapping = {'EOG 061': ('EEG 061', 'eeg')} assert_raises(ValueError, rename_channels, info, mapping) # Test change to illegal channel type mapping = {'EOG 061': ('MEG 061', 'meg')} assert_raises(ValueError, rename_channels, info, mapping) # Test channel type which you are changing from e.g. MEG mapping = {'MEG 2641': ('MEG2641', 'eeg')} assert_raises(ValueError, rename_channels, info, mapping) # Test improper mapping configuration mapping = {'MEG 2641': 1.0} assert_raises(ValueError, rename_channels, info, mapping) # Test duplicate named channels mapping = {'EEG 060': 'EOG 061'} assert_raises(ValueError, rename_channels, info, mapping) # Test successful changes # Test ch_name and ch_names are changed info2 = deepcopy(info) # for consistency at the start of each test info2['bads'] = ['EEG 060', 'EOG 061'] mapping = {'EEG 060': 'EEG060', 'EOG 061': 'EOG061'} rename_channels(info2, mapping) assert_true(info2['chs'][374]['ch_name'] == 'EEG060') assert_true(info2['ch_names'][374] == 'EEG060') assert_true('EEG060' in info2['bads']) assert_true(info2['chs'][375]['ch_name'] == 'EOG061') assert_true(info2['ch_names'][375] == 'EOG061') assert_true('EOG061' in info2['bads']) # Test type change info2 = deepcopy(info) info2['bads'] = ['EEG 059', 'EEG 060', 'EOG 061'] mapping = { 'EEG 060': ('EOG 060', 'eog'), 'EEG 059': ('EOG 059', 'eog'), 'EOG 061': ("OT'7", 'seeg') } rename_channels(info2, mapping) assert_true(info2['chs'][374]['ch_name'] == 'EOG 060') assert_true(info2['ch_names'][374] == 'EOG 060') assert_true('EOG 060' in info2['bads']) assert_true(info2['chs'][374]['kind'] is FIFF.FIFFV_EOG_CH) assert_true(info2['chs'][373]['ch_name'] == 'EOG 059') assert_true(info2['ch_names'][373] == 'EOG 059') assert_true('EOG 059' in info2['bads']) assert_true(info2['chs'][373]['kind'] is FIFF.FIFFV_EOG_CH) assert_true(info2['chs'][375]['ch_name'] == "OT'7") assert_true(info2['ch_names'][375] == "OT'7") assert_true("OT'7" in info2['bads']) assert_true(info2['chs'][375]['kind'] is FIFF.FIFFV_SEEG_CH)
def test_rename_channels(): """Test rename channels """ info = read_info(raw_fname) # Error Tests # Test channel name exists in ch_names mapping = {'EEG 160': 'EEG060'} assert_raises(ValueError, rename_channels, info, mapping) # Test change to EEG channel mapping = {'EOG 061': ('EEG 061', 'eeg')} assert_raises(ValueError, rename_channels, info, mapping) # Test change to illegal channel type mapping = {'EOG 061': ('MEG 061', 'meg')} assert_raises(ValueError, rename_channels, info, mapping) # Test channel type which you are changing from e.g. MEG mapping = {'MEG 2641': ('MEG2641', 'eeg')} assert_raises(ValueError, rename_channels, info, mapping) # Test improper mapping configuration mapping = {'MEG 2641': 1.0} assert_raises(ValueError, rename_channels, info, mapping) # Test duplicate named channels mapping = {'EEG 060': 'EOG 061'} assert_raises(ValueError, rename_channels, info, mapping) # Test successful changes # Test ch_name and ch_names are changed info2 = deepcopy(info) # for consistency at the start of each test info2['bads'] = ['EEG 060', 'EOG 061'] mapping = {'EEG 060': 'EEG060', 'EOG 061': 'EOG061'} rename_channels(info2, mapping) assert_true(info2['chs'][374]['ch_name'] == 'EEG060') assert_true(info2['ch_names'][374] == 'EEG060') assert_true('EEG060' in info2['bads']) assert_true(info2['chs'][375]['ch_name'] == 'EOG061') assert_true(info2['ch_names'][375] == 'EOG061') assert_true('EOG061' in info2['bads']) # Test type change info2 = deepcopy(info) info2['bads'] = ['EEG 059', 'EEG 060', 'EOG 061'] mapping = {'EEG 060': ('EOG 060', 'eog'), 'EEG 059': ('EOG 059', 'eog'), 'EOG 061': ("OT'7", 'seeg')} rename_channels(info2, mapping) assert_true(info2['chs'][374]['ch_name'] == 'EOG 060') assert_true(info2['ch_names'][374] == 'EOG 060') assert_true('EOG 060' in info2['bads']) assert_true(info2['chs'][374]['kind'] is FIFF.FIFFV_EOG_CH) assert_true(info2['chs'][373]['ch_name'] == 'EOG 059') assert_true(info2['ch_names'][373] == 'EOG 059') assert_true('EOG 059' in info2['bads']) assert_true(info2['chs'][373]['kind'] is FIFF.FIFFV_EOG_CH) assert_true(info2['chs'][375]['ch_name'] == "OT'7") assert_true(info2['ch_names'][375] == "OT'7") assert_true("OT'7" in info2['bads']) assert_true(info2['chs'][375]['kind'] is FIFF.FIFFV_SEEG_CH)
def test_rename_channels(): """Test rename channels""" info = read_info(raw_fname) # Error Tests # Test channel name exists in ch_names mapping = {'EEG 160': 'EEG060'} assert_raises(ValueError, rename_channels, info, mapping) # Test improper mapping configuration mapping = {'MEG 2641': 1.0} assert_raises(ValueError, rename_channels, info, mapping) # Test non-unique mapping configuration mapping = {'MEG 2641': 'MEG 2642'} assert_raises(ValueError, rename_channels, info, mapping) # Test bad input assert_raises(ValueError, rename_channels, info, 1.) # Test successful changes # Test ch_name and ch_names are changed info2 = deepcopy(info) # for consistency at the start of each test info2['bads'] = ['EEG 060', 'EOG 061'] mapping = {'EEG 060': 'EEG060', 'EOG 061': 'EOG061'} rename_channels(info2, mapping) assert_true(info2['chs'][374]['ch_name'] == 'EEG060') assert_true(info2['ch_names'][374] == 'EEG060') assert_true(info2['chs'][375]['ch_name'] == 'EOG061') assert_true(info2['ch_names'][375] == 'EOG061') assert_array_equal(['EEG060', 'EOG061'], info2['bads']) info2 = deepcopy(info) rename_channels(info2, lambda x: x.replace(' ', '')) assert_true(info2['chs'][373]['ch_name'] == 'EEG059') info2 = deepcopy(info) info2['bads'] = ['EEG 060', 'EEG 060'] rename_channels(info2, mapping) assert_array_equal(['EEG060', 'EEG060'], info2['bads'])
def test_rename_channels(): """Test rename channels.""" info = read_info(raw_fname) # Error Tests # Test channel name exists in ch_names mapping = {'EEG 160': 'EEG060'} pytest.raises(ValueError, rename_channels, info, mapping) # Test improper mapping configuration mapping = {'MEG 2641': 1.0} pytest.raises(TypeError, rename_channels, info, mapping) # Test non-unique mapping configuration mapping = {'MEG 2641': 'MEG 2642'} pytest.raises(ValueError, rename_channels, info, mapping) # Test bad input pytest.raises(ValueError, rename_channels, info, 1.) pytest.raises(ValueError, rename_channels, info, 1.) # Test name too long (channel names must be less than 15 characters) A16 = 'A' * 16 mapping = {'MEG 2641': A16} pytest.raises(ValueError, rename_channels, info, mapping) # Test successful changes # Test ch_name and ch_names are changed info2 = deepcopy(info) # for consistency at the start of each test info2['bads'] = ['EEG 060', 'EOG 061'] mapping = {'EEG 060': 'EEG060', 'EOG 061': 'EOG061'} rename_channels(info2, mapping) assert info2['chs'][374]['ch_name'] == 'EEG060' assert info2['ch_names'][374] == 'EEG060' assert info2['chs'][375]['ch_name'] == 'EOG061' assert info2['ch_names'][375] == 'EOG061' assert_array_equal(['EEG060', 'EOG061'], info2['bads']) info2 = deepcopy(info) rename_channels(info2, lambda x: x.replace(' ', '')) assert info2['chs'][373]['ch_name'] == 'EEG059' info2 = deepcopy(info) info2['bads'] = ['EEG 060', 'EEG 060'] rename_channels(info2, mapping) assert_array_equal(['EEG060', 'EEG060'], info2['bads']) # test that keys in Raw._orig_units will be renamed, too raw = read_raw_fif(raw_fname).crop(0, 0.1) old, new = 'EEG 060', 'New' raw._orig_units = {old: 'V'} raw.rename_channels({old: new}) assert old not in raw._orig_units assert new in raw._orig_units