def test_source_space(): "Test SourceSpace dimension" data_dir = mne.datasets.sample.data_path() subjects_dir = os.path.join(data_dir, 'subjects') annot_path = os.path.join(subjects_dir, '%s', 'label', '%s.%s.annot') for subject in ['fsaverage', 'sample']: mne_src = datasets._mne_source_space(subject, 'ico-4', subjects_dir) vertices = [mne_src[0]['vertno'], mne_src[1]['vertno']] ss = SourceSpace(vertices, subject, 'ico-4', subjects_dir) # labels for hemi_vertices, hemi in zip(ss.vertices, ('lh', 'rh')): labels, _, names = read_annot(annot_path % (subject, hemi, 'aparc')) start = 0 if hemi == 'lh' else len(ss.lh_vertices) hemi_tag = '-' + hemi for i, v in enumerate(hemi_vertices, start): label = labels[v] if label == -1: assert ss.parc[i] == 'unknown' + hemi_tag else: assert ss.parc[i] == names[label].decode() + hemi_tag # connectivity conn = ss.connectivity() mne_conn = mne.spatial_src_connectivity(mne_src) assert_array_equal(conn, _matrix_graph(mne_conn)) # sub-space connectivity sssub = ss[ss._array_index('superiortemporal-rh')] ss2 = SourceSpace(vertices, subject, 'ico-4', subjects_dir, 'aparc') ss2sub = ss2[ss2._array_index('superiortemporal-rh')] assert_array_equal(sssub.connectivity(), ss2sub.connectivity())
def test_source_space(): "Test SourceSpace dimension" data_dir = mne.datasets.sample.data_path() subjects_dir = os.path.join(data_dir, 'subjects') annot_path = os.path.join(subjects_dir, '%s', 'label', '%s.%s.annot') for subject in ['fsaverage', 'sample']: mne_src = datasets._mne_source_space(subject, 'ico-4', subjects_dir) vertno = [mne_src[0]['vertno'], mne_src[1]['vertno']] ss = SourceSpace(vertno, subject, 'ico-4', subjects_dir) # labels for hemi_vertices, hemi in izip(ss.vertno, ('lh', 'rh')): labels, _, names = read_annot(annot_path % (subject, hemi, 'aparc')) start = 0 if hemi == 'lh' else len(ss.lh_vertno) hemi_tag = '-' + hemi for i, v in enumerate(hemi_vertices, start): label = labels[v] if label == -1: eq_(ss.parc[i], 'unknown' + hemi_tag) else: eq_(ss.parc[i], names[label] + hemi_tag) # connectivity conn = ss.connectivity() mne_conn = mne.spatial_src_connectivity(mne_src) assert_array_equal(conn, _matrix_graph(mne_conn)) # sub-space connectivity sssub = ss[ss.dimindex('superiortemporal-rh')] ss2 = SourceSpace(vertno, subject, 'ico-4', subjects_dir, 'aparc') ss2sub = ss2[ss2.dimindex('superiortemporal-rh')] assert_array_equal(sssub.connectivity(), ss2sub.connectivity())
def test_morphing(): mne.set_log_level('warning') data_dir = mne.datasets.sample.data_path() subjects_dir = os.path.join(data_dir, 'subjects') sss = datasets._mne_source_space('fsaverage', 'ico-4', subjects_dir) vertices_to = [sss[0]['vertno'], sss[1]['vertno']] ds = datasets.get_mne_sample(-0.1, 0.1, src='ico', sub='index==0', stc=True) stc = ds['stc', 0] morph_mat = mne.compute_morph_matrix('sample', 'fsaverage', stc.vertices, vertices_to, None, subjects_dir) ndvar = ds['src'] morphed_ndvar = morph_source_space(ndvar, 'fsaverage') morphed_stc = mne.morph_data_precomputed('sample', 'fsaverage', stc, vertices_to, morph_mat) assert_array_equal(morphed_ndvar.x[0], morphed_stc.data) morphed_stc_ndvar = load.fiff.stc_ndvar([morphed_stc], 'fsaverage', 'ico-4', subjects_dir, 'dSPM', False, 'src', parc=None) assert_dataobj_equal(morphed_ndvar, morphed_stc_ndvar)
def test_source_space(): "Test SourceSpace Dimension" subject = 'fsaverage' data_path = mne.datasets.sample.data_path() mri_sdir = os.path.join(data_path, 'subjects') mri_dir = os.path.join(mri_sdir, subject) label_dir = os.path.join(mri_dir, 'label') label_ba1 = mne.read_label(os.path.join(label_dir, 'lh.BA1.label')) label_v1 = mne.read_label(os.path.join(label_dir, 'lh.V1.label')) label_mt = mne.read_label(os.path.join(label_dir, 'lh.MT.label')) label_ba1_v1 = label_ba1 + label_v1 label_v1_mt = label_v1 + label_mt src = datasets._mne_source_space(subject, 'ico-5', mri_sdir) source = SourceSpace.from_mne_source_spaces(src, 'ico-5', mri_sdir) source_v1 = source[source.dimindex(label_v1)] eq_(source_v1, SourceSpace.from_mne_source_spaces(src, 'ico-5', mri_sdir, label=label_v1)) source_ba1_v1 = source[source.dimindex(label_ba1_v1)] source_v1_mt = source[source.dimindex(label_v1_mt)] source_v1_intersection = source_ba1_v1.intersect(source_v1_mt) assert_source_space_equal(source_v1, source_v1_intersection) # index from label index = source.index_for_label(label_v1) assert_array_equal(index.source[index.x].vertno[0], np.intersect1d(source.lh_vertno, label_v1.vertices, 1)) # parcellation and cluster localization parc = mne.read_labels_from_annot(subject, parc='aparc', subjects_dir=mri_sdir) indexes = [source.index_for_label(label) for label in parc if len(label) > 10] x = np.vstack([index.x for index in indexes]) ds = source._cluster_properties(x) for i in range(ds.n_cases): eq_(ds[i, 'location'], parc[i].name) # multiple labels lingual_index = source.dimindex('lingual-lh') cuneus_index = source.dimindex('cuneus-lh') assert_array_equal(source.dimindex(('cuneus-lh', 'lingual-lh')), np.logical_or(cuneus_index, lingual_index)) lingual_source = source[lingual_index] cuneus_source = source[cuneus_index] assert_raises(IndexError, lingual_source.dimindex, cuneus_source) sub_source = source[source.dimindex(('cuneus-lh', 'lingual-lh'))] eq_(sub_source[sub_source.dimindex('lingual-lh')], lingual_source) eq_(sub_source[sub_source.dimindex('cuneus-lh')], cuneus_source) eq_(len(sub_source), len(lingual_source) + len(cuneus_source)) # indexing tgt = np.hstack(sub_source.vertno) assert_array_equal([i for i in sub_source], tgt) assert_array_equal([sub_source[i] for i in range(len(sub_source))], tgt) # hemisphere indexing lh = source.dimindex('lh') source_lh = source[lh] eq_(source_lh.dimindex('rh'), slice(0, 0)) eq_(source_lh.dimindex('lh'), slice(len(source_lh)))
def test_source_space(): "Test SourceSpace Dimension" subject = 'fsaverage' data_path = mne.datasets.sample.data_path() mri_sdir = os.path.join(data_path, 'subjects') mri_dir = os.path.join(mri_sdir, subject) label_dir = os.path.join(mri_dir, 'label') label_ba1 = mne.read_label(os.path.join(label_dir, 'lh.BA1.label')) label_v1 = mne.read_label(os.path.join(label_dir, 'lh.V1.label')) label_mt = mne.read_label(os.path.join(label_dir, 'lh.MT.label')) label_ba1_v1 = label_ba1 + label_v1 label_v1_mt = label_v1 + label_mt src = datasets._mne_source_space(subject, 'ico-5', mri_sdir) source = SourceSpace.from_mne_source_spaces(src, 'ico-5', mri_sdir) source_v1 = source[source.dimindex(label_v1)] eq_(source_v1, SourceSpace.from_mne_source_spaces(src, 'ico-5', mri_sdir, label=label_v1)) source_ba1_v1 = source[source.dimindex(label_ba1_v1)] source_v1_mt = source[source.dimindex(label_v1_mt)] source_v1_intersection = source_ba1_v1.intersect(source_v1_mt) assert_source_space_equal(source_v1, source_v1_intersection) # index from label index = source.index_for_label(label_v1) assert_array_equal(index.source[index.x].vertno[0], np.intersect1d(source.lh_vertno, label_v1.vertices, 1)) # parcellation and cluster localization parc = mne.read_labels_from_annot(subject, parc='aparc', subjects_dir=mri_sdir) indexes = [source.index_for_label(label) for label in parc if len(label) > 10] x = np.vstack([index.x for index in indexes]) ds = source._cluster_properties(x) for i in xrange(ds.n_cases): eq_(ds[i, 'location'], parc[i].name) # multiple labels lingual_index = source.dimindex('lingual-lh') cuneus_index = source.dimindex('cuneus-lh') assert_array_equal(source.dimindex(('cuneus-lh', 'lingual-lh')), np.logical_or(cuneus_index, lingual_index)) lingual_source = source[lingual_index] cuneus_source = source[cuneus_index] assert_raises(IndexError, lingual_source.dimindex, cuneus_source) sub_source = source[source.dimindex(('cuneus-lh', 'lingual-lh'))] eq_(sub_source[sub_source.dimindex('lingual-lh')], lingual_source) eq_(sub_source[sub_source.dimindex('cuneus-lh')], cuneus_source) eq_(len(sub_source), len(lingual_source) + len(cuneus_source)) # indexing tgt = np.hstack(sub_source.vertno) assert_array_equal([i for i in sub_source], tgt) assert_array_equal([sub_source[i] for i in xrange(len(sub_source))], tgt) # hemisphere indexing lh = source.dimindex('lh') source_lh = source[lh] eq_(source_lh.dimindex('rh'), slice(0, 0)) eq_(source_lh.dimindex('lh'), slice(0, len(source_lh)))
def test_source_space(): "Test SourceSpace dimension" for subject in ['fsaverage', 'sample']: mne_src = datasets._mne_source_space(subject, 'ico-4', subjects_dir) vertno = [mne_src[0]['vertno'], mne_src[1]['vertno']] ss = SourceSpace(vertno, subject, 'ico-4', subjects_dir, 'aparc') # connectivity conn = ss.connectivity() mne_conn = mne.spatial_src_connectivity(mne_src) assert_array_equal(conn, _matrix_graph(mne_conn)) # sub-space connectivity sssub = ss[ss.dimindex('superiortemporal-rh')] ss2 = SourceSpace(vertno, subject, 'ico-4', subjects_dir, 'aparc') ss2sub = ss2[ss2.dimindex('superiortemporal-rh')] assert_array_equal(sssub.connectivity(), ss2sub.connectivity())
def test_source_space(): "Test SourceSpace dimension" for subject in ['fsaverage', 'sample']: mne_src = datasets._mne_source_space(subject, 'ico-4', subjects_dir) vertno = [mne_src[0]['vertno'], mne_src[1]['vertno']] ss = SourceSpace(vertno, subject, 'ico-4', subjects_dir, 'aparc') # connectivity conn = ss.connectivity() mne_conn = mne.spatial_src_connectivity(mne_src) assert_array_equal(conn, connectivity_from_coo(mne_conn)) # sub-space connectivity sssub = ss[ss.dimindex('superiortemporal-rh')] ss2 = SourceSpace(vertno, subject, 'ico-4', subjects_dir, 'aparc') ss2sub = ss2[ss2.dimindex('superiortemporal-rh')] assert_array_equal(sssub.connectivity(), ss2sub.connectivity())
def test_morphing(): mne.set_log_level('warning') sss = datasets._mne_source_space('fsaverage', 'ico-4', subjects_dir) vertices_to = [sss[0]['vertno'], sss[1]['vertno']] ds = datasets.get_mne_sample(-0.1, 0.1, src='ico', sub='index==0', stc=True) stc = ds['stc', 0] morph_mat = mne.compute_morph_matrix('sample', 'fsaverage', stc.vertno, vertices_to, None, subjects_dir) ndvar = ds['src'] morphed_ndvar = morph_source_space(ndvar, 'fsaverage') morphed_stc = mne.morph_data_precomputed('sample', 'fsaverage', stc, vertices_to, morph_mat) assert_array_equal(morphed_ndvar.x[0], morphed_stc.data) morphed_stc_ndvar = load.fiff.stc_ndvar([morphed_stc], 'fsaverage', 'ico-4', subjects_dir, 'src', parc=None) assert_dataobj_equal(morphed_ndvar, morphed_stc_ndvar)