def test_meg_field_interpolation_helmet():
    """Test interpolation of MEG field onto helmet
    """
    evoked = read_evoked(evoked_fname, setno='Left Auditory')
    info = evoked.info
    surf = get_meg_helmet_surf(info)
    # let's reduce the number of channels by a bunch to speed it up
    info['bads'] = info['ch_names'][:200]
    # bad ch_type
    assert_raises(ValueError, make_surface_mapping, info, surf, 'foo')
    # bad mode
    assert_raises(ValueError, make_surface_mapping, info, surf, 'meg',
                  mode='foo')
    # no picks
    evoked_eeg = pick_types_evoked(evoked, meg=False, eeg=True)
    assert_raises(RuntimeError, make_surface_mapping, evoked_eeg.info,
                  surf, 'meg')
    # bad surface def
    nn = surf['nn']
    del surf['nn']
    assert_raises(KeyError, make_surface_mapping, info, surf, 'meg')
    surf['nn'] = nn
    cf = surf['coord_frame']
    del surf['coord_frame']
    assert_raises(KeyError, make_surface_mapping, info, surf, 'meg')
    surf['coord_frame'] = cf
    # now do it
    data = make_surface_mapping(info, surf, 'meg', mode='fast')
    assert_array_equal(data.shape, (304, 106))  # data onto surf
Exemple #2
0
def test_helmet():
    """Test loading helmet surfaces
    """
    base_dir = op.join(op.dirname(__file__), '..', 'fiff')
    fname_raw = op.join(base_dir, 'tests', 'data', 'test_raw.fif')
    fname_kit_raw = op.join(base_dir, 'kit', 'tests', 'data', 'test_bin.fif')
    fname_bti_raw = op.join(base_dir, 'bti', 'tests', 'data',
                            'exported4D_linux.fif')
    fname_ctf_raw = op.join(base_dir, 'tests', 'data', 'test_ctf_raw.fif')
    fname_trans = op.join(base_dir, 'tests', 'data',
                          'sample-audvis-raw-trans.txt')
    trans = _get_mri_head_t_from_trans_file(fname_trans)
    for fname in [fname_raw, fname_kit_raw, fname_bti_raw, fname_ctf_raw]:
        helmet = get_meg_helmet_surf(read_info(fname), trans)
        assert_equal(len(helmet['rr']), 304)  # they all have 304 verts
        assert_equal(len(helmet['rr']), len(helmet['nn']))
print(__doc__)

import numpy as np
import mne

data_path = mne.datasets.sample.data_path()
subjects_dir = data_path + '/subjects'
evoked_fname = data_path + '/MEG/sample/sample_audvis-ave.fif'
trans_fname = data_path + '/MEG/sample/sample_audvis_raw-trans.fif'
setno = 'Left Auditory'

trans = mne.read_trans(trans_fname)
evoked = mne.fiff.read_evoked(evoked_fname, setno=setno,
                              baseline=(-0.2, 0.0))
# let's do this in MRI coordinates so they're easy to plot
helmet_surf = mne.get_meg_helmet_surf(evoked.info, trans)
head_surf = mne.get_head_surface('sample', subjects_dir=subjects_dir)

helmet_map = mne.make_surface_mapping(evoked.info, helmet_surf, 'meg', trans,
                                      n_jobs=-1)
head_map = mne.make_surface_mapping(evoked.info, head_surf, 'eeg', trans,
                                    n_jobs=-1)

# let's look at the N100
evoked.crop(0.09, 0.10)
evoked_eeg = mne.fiff.pick_types_evoked(evoked, meg=False, eeg=True)
evoked_meg = mne.fiff.pick_types_evoked(evoked, meg=True, eeg=False)
helmet_data = np.dot(helmet_map, evoked_meg.data[:, 0])
head_data = np.dot(head_map, evoked_eeg.data[:, 0])

# Plot them