Skip to content

Commit 1710155

Browse files
authored
Coregistration GUI modernisation (phase 3) [ci skip] (#14218)
1 parent 8fa0c10 commit 1710155

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

mne/tests/test_coreg.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,46 @@ def test_coregistration(scale_mode, ref_scale, grow_hair, fiducials, fid_match):
505505
assert_allclose(coreg._parameters, default_params)
506506

507507

508+
@pytest.mark.slowtest
509+
@testing.requires_testing_data
510+
def test_coreg_fitting_invariants():
511+
"""Randomized regression net for Coregistration fitting properties."""
512+
pytest.importorskip("nibabel")
513+
fiducials, _ = read_fiducials(fid_fname)
514+
info = read_info(raw_fname)
515+
coreg = Coregistration(
516+
info, subject="sample", subjects_dir=subjects_dir, fiducials=fiducials
517+
)
518+
rng = np.random.default_rng(0)
519+
520+
# omit_head_shape_points
521+
all_dists = coreg._orig_hsp_point_distance
522+
distances = np.sort(rng.uniform(all_dists.min(), all_dists.max(), size=5))[::-1]
523+
prev_n_kept = len(all_dists)
524+
for distance in distances:
525+
coreg.omit_head_shape_points(distance=distance)
526+
kept = coreg._orig_hsp_point_distance[coreg._extra_points_filter]
527+
assert (kept <= distance).all()
528+
assert len(kept) <= prev_n_kept
529+
prev_n_kept = len(kept)
530+
531+
# fit_fiducials / fit_icp
532+
for _ in range(5):
533+
coreg.reset()
534+
coreg.set_rotation(rng.uniform(-0.1, 0.1, size=3))
535+
coreg.set_translation(rng.uniform(-0.01, 0.01, size=3))
536+
err_before = np.median(coreg.compute_dig_mri_distances())
537+
coreg.fit_fiducials()
538+
err_after_fid = np.median(coreg.compute_dig_mri_distances())
539+
assert err_after_fid <= err_before + 1e-9
540+
coreg.fit_icp(5)
541+
err_after_icp = np.median(coreg.compute_dig_mri_distances())
542+
assert err_after_icp <= err_after_fid + 1e-9
543+
default_params = coreg._default_parameters.copy()
544+
coreg.reset()
545+
assert_allclose(coreg._parameters, default_params)
546+
547+
508548
@pytest.mark.slowtest
509549
@testing.requires_testing_data
510550
def test_coreg_class_gui_match():

0 commit comments

Comments
 (0)