MCPcopy
hub / github.com/mne-tools/mne-python / test_xhemi_morph

Function test_xhemi_morph

mne/tests/test_morph.py:140–229  ·  view source on GitHub ↗

Test cross-hemisphere morphing.

()

Source from the content-addressed store, hash-verified

138
139@testing.requires_testing_data
140def test_xhemi_morph():
141 """Test cross-hemisphere morphing."""
142 stc = read_source_estimate(fname_stc, subject="sample")
143 # smooth 1 for speed where possible
144 smooth = 4
145 spacing = 4
146 n_grade_verts = 2562
147 stc = compute_source_morph(
148 stc,
149 "sample",
150 "fsaverage_sym",
151 smooth=smooth,
152 warn=False,
153 spacing=spacing,
154 subjects_dir=subjects_dir,
155 ).apply(stc)
156 morph = compute_source_morph(
157 stc,
158 "fsaverage_sym",
159 "fsaverage_sym",
160 smooth=1,
161 xhemi=True,
162 warn=False,
163 spacing=[stc.vertices[0], []],
164 subjects_dir=subjects_dir,
165 )
166 stc_xhemi = morph.apply(stc)
167 assert stc_xhemi.data.shape[0] == n_grade_verts
168 assert stc_xhemi.rh_data.shape[0] == 0
169 assert len(stc_xhemi.vertices[1]) == 0
170 assert stc_xhemi.lh_data.shape[0] == n_grade_verts
171 assert len(stc_xhemi.vertices[0]) == n_grade_verts
172 # complete reversal mapping
173 morph = compute_source_morph(
174 stc,
175 "fsaverage_sym",
176 "fsaverage_sym",
177 smooth=smooth,
178 xhemi=True,
179 warn=False,
180 spacing=stc.vertices,
181 subjects_dir=subjects_dir,
182 )
183 mm = morph.morph_mat
184 assert mm.shape == (n_grade_verts * 2,) * 2
185 assert mm.size > n_grade_verts * 2
186 assert mm[:n_grade_verts, :n_grade_verts].size == 0 # L to L
187 assert mm[n_grade_verts:, n_grade_verts:].size == 0 # R to L
188 assert mm[n_grade_verts:, :n_grade_verts].size > n_grade_verts # L to R
189 assert mm[:n_grade_verts, n_grade_verts:].size > n_grade_verts # R to L
190 # more complicated reversal mapping
191 vertices_use = [stc.vertices[0], np.arange(10242)]
192 n_src_verts = len(vertices_use[1])
193 assert vertices_use[0].shape == (n_grade_verts,)
194 assert vertices_use[1].shape == (n_src_verts,)
195 # ensure it's sufficiently different to manifest round-trip errors
196 assert np.isin(vertices_use[1], stc.vertices[1]).mean() < 0.3
197 morph = compute_source_morph(

Callers

nothing calls this directly

Calls 4

read_source_estimateFunction · 0.90
compute_source_morphFunction · 0.90
applyMethod · 0.45
meanMethod · 0.45

Tested by

no test coverage detected