

def test_set_channel_types():
    'Test set_channel_types\n    '
    raw = Raw(raw_fname)
    mapping = {
        'EEG 160': 'EEG060',
    }
    assert_raises(ValueError, raw.set_channel_types, mapping)
    mapping = {
        'EOG 061': 'xxx',
    }
    assert_raises(ValueError, raw.set_channel_types, mapping)
    mapping = {
        'EEG 058': 'ecog',
        'EEG 059': 'ecg',
        'EEG 060': 'eog',
        'EOG 061': 'seeg',
        'MEG 2441': 'eeg',
        'MEG 2443': 'eeg',
    }
    assert_raises(RuntimeError, raw.set_channel_types, mapping)
    raw2 = Raw(raw_fname, add_eeg_ref=False)
    raw2.info['bads'] = ['EEG 059', 'EEG 060', 'EOG 061']
    assert_raises(RuntimeError, raw2.set_channel_types, mapping)
    raw2.add_proj([], remove_existing=True)
    with warnings.catch_warnings(record=True) as w:
        warnings.simplefilter('always')
        raw2.set_channel_types(mapping)
    assert_true((len(w) >= 1), msg=[str(ww.message) for ww in w])
    assert_true(all((('The unit for channel' in str(ww.message)) for ww in w)))
    info = raw2.info
    assert_true((info['chs'][372]['ch_name'] == 'EEG 058'))
    assert_true((info['chs'][372]['kind'] == FIFF.FIFFV_ECOG_CH))
    assert_true((info['chs'][372]['unit'] == FIFF.FIFF_UNIT_V))
    assert_true((info['chs'][372]['coil_type'] == FIFF.FIFFV_COIL_EEG))
    assert_true((info['chs'][373]['ch_name'] == 'EEG 059'))
    assert_true((info['chs'][373]['kind'] == FIFF.FIFFV_ECG_CH))
    assert_true((info['chs'][373]['unit'] == FIFF.FIFF_UNIT_V))
    assert_true((info['chs'][373]['coil_type'] == FIFF.FIFFV_COIL_NONE))
    assert_true((info['chs'][374]['ch_name'] == 'EEG 060'))
    assert_true((info['chs'][374]['kind'] == FIFF.FIFFV_EOG_CH))
    assert_true((info['chs'][374]['unit'] == FIFF.FIFF_UNIT_V))
    assert_true((info['chs'][374]['coil_type'] == FIFF.FIFFV_COIL_NONE))
    assert_true((info['chs'][375]['ch_name'] == 'EOG 061'))
    assert_true((info['chs'][375]['kind'] == FIFF.FIFFV_SEEG_CH))
    assert_true((info['chs'][375]['unit'] == FIFF.FIFF_UNIT_V))
    assert_true((info['chs'][375]['coil_type'] == FIFF.FIFFV_COIL_EEG))
    for idx in pick_channels(raw.ch_names, ['MEG 2441', 'MEG 2443']):
        assert_true((info['chs'][idx]['kind'] == FIFF.FIFFV_EEG_CH))
        assert_true((info['chs'][idx]['unit'] == FIFF.FIFF_UNIT_V))
        assert_true((info['chs'][idx]['coil_type'] == FIFF.FIFFV_COIL_EEG))
    raw.info['chs'][0]['unit'] = 0.0
    ch_types = {
        raw.ch_names[0]: 'misc',
    }
    assert_raises(ValueError, raw.set_channel_types, ch_types)

dataset/ETHPy150Open mne-tools/mne-python/mne/channels/tests/test_channels.py test_set_channel_types/original