-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
Copy pathtest_morph_map.py
61 lines (53 loc) · 2.13 KB
/
test_morph_map.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Authors: The MNE-Python contributors.
# License: BSD-3-Clause
# Copyright the MNE-Python contributors.
import os
from shutil import copyfile
import numpy as np
import pytest
from numpy.testing import assert_allclose
from mne import read_morph_map
from mne.datasets import testing
from mne.fixes import _eye_array
from mne.utils import _record_warnings, catch_logging
data_path = testing.data_path(download=False)
subjects_dir = data_path / "subjects"
@pytest.mark.slowtest
@testing.requires_testing_data
def test_make_morph_maps(tmp_path):
"""Test reading and creating morph maps."""
pytest.importorskip("nibabel")
# make a new fake subjects_dir
for subject in ("sample", "sample_ds", "fsaverage_ds"):
os.mkdir(tmp_path / subject)
os.mkdir(tmp_path / subject / "surf")
regs = ("reg", "left_right") if subject == "fsaverage_ds" else ("reg",)
for hemi in ["lh", "rh"]:
for reg in regs:
copyfile(
subjects_dir / subject / "surf" / f"{hemi}.sphere.{reg}",
tmp_path / subject / "surf" / f"{hemi}.sphere.{reg}",
)
for subject_from, subject_to, xhemi in (
("fsaverage_ds", "sample_ds", False),
("fsaverage_ds", "fsaverage_ds", True),
):
# trigger the creation of morph-maps dir and create the map
with catch_logging() as log:
mmap = read_morph_map(
subject_from, subject_to, tmp_path, xhemi=xhemi, verbose=True
)
log = log.getvalue()
assert "does not exist" in log
assert "Creating" in log
mmap2 = read_morph_map(subject_from, subject_to, subjects_dir, xhemi=xhemi)
assert len(mmap) == len(mmap2)
for m1, m2 in zip(mmap, mmap2):
# deal with sparse matrix stuff
diff = (m1 - m2).data
assert_allclose(diff, np.zeros_like(diff), atol=1e-3, rtol=0)
# This will also trigger creation, but it's trivial
with _record_warnings():
mmap = read_morph_map("sample", "sample", subjects_dir=tmp_path)
for mm in mmap:
assert (mm - _eye_array(mm.shape[0])).sum() == 0