Test sparse morphing.
()
| 79 | |
| 80 | @testing.requires_testing_data |
| 81 | def test_sparse_morph(): |
| 82 | """Test sparse morphing.""" |
| 83 | rng = np.random.RandomState(0) |
| 84 | vertices_fs = [ |
| 85 | np.sort(rng.permutation(np.arange(10242))[:4]), |
| 86 | np.sort(rng.permutation(np.arange(10242))[:6]), |
| 87 | ] |
| 88 | data = rng.randn(10, 1) |
| 89 | stc_fs = SourceEstimate(data, vertices_fs, 1, 1, "fsaverage") |
| 90 | spheres_fs = [ |
| 91 | mne.read_surface(subjects_dir / "fsaverage" / "surf" / f"{hemi}.sphere.reg")[0] |
| 92 | for hemi in ("lh", "rh") |
| 93 | ] |
| 94 | spheres_sample = [ |
| 95 | mne.read_surface(subjects_dir / "sample" / "surf" / f"{hemi}.sphere.reg")[0] |
| 96 | for hemi in ("lh", "rh") |
| 97 | ] |
| 98 | morph_fs_sample = compute_source_morph( |
| 99 | stc_fs, |
| 100 | "fsaverage", |
| 101 | "sample", |
| 102 | sparse=True, |
| 103 | spacing=None, |
| 104 | subjects_dir=subjects_dir, |
| 105 | ) |
| 106 | stc_sample = morph_fs_sample.apply(stc_fs) |
| 107 | offset = 0 |
| 108 | orders = list() |
| 109 | for v1, s1, v2, s2 in zip( |
| 110 | stc_fs.vertices, spheres_fs, stc_sample.vertices, spheres_sample |
| 111 | ): |
| 112 | dists = cdist(s1[v1], s2[v2]) |
| 113 | order = np.argmin(dists, axis=-1) |
| 114 | assert_array_less(dists[np.arange(len(order)), order], 1.5) # mm |
| 115 | orders.append(order + offset) |
| 116 | offset += len(order) |
| 117 | assert_allclose(stc_fs.data, stc_sample.data[np.concatenate(orders)]) |
| 118 | # Return |
| 119 | morph_sample_fs = compute_source_morph( |
| 120 | stc_sample, |
| 121 | "sample", |
| 122 | "fsaverage", |
| 123 | sparse=True, |
| 124 | spacing=None, |
| 125 | subjects_dir=subjects_dir, |
| 126 | ) |
| 127 | stc_fs_return = morph_sample_fs.apply(stc_sample) |
| 128 | offset = 0 |
| 129 | orders = list() |
| 130 | for v1, s, v2 in zip(stc_fs.vertices, spheres_fs, stc_fs_return.vertices): |
| 131 | dists = cdist(s[v1], s[v2]) |
| 132 | order = np.argmin(dists, axis=-1) |
| 133 | assert_array_less(dists[np.arange(len(order)), order], 1.5) # mm |
| 134 | orders.append(order + offset) |
| 135 | offset += len(order) |
| 136 | assert_allclose(stc_fs.data, stc_fs_return.data[np.concatenate(orders)]) |
| 137 | |
| 138 |
nothing calls this directly
no test coverage detected