def test_coreg_model(): """Test CoregModel""" from mne.gui._coreg_gui import CoregModel tempdir = _TempDir() trans_dst = os.path.join(tempdir, 'test-trans.fif') model = CoregModel() assert_raises(RuntimeError, model.save_trans, 'blah.fif') model.mri.subjects_dir = subjects_dir model.mri.subject = 'sample' assert_false(model.mri.fid_ok) model.mri.lpa = [[-0.06, 0, 0]] model.mri.nasion = [[0, 0.05, 0]] model.mri.rpa = [[0.08, 0, 0]] assert_true(model.mri.fid_ok) model.hsp.file = raw_path assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4) assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4) assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4) assert_true(model.has_fid_data) lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) model.fit_auricular_points() old_x = lpa_distance**2 + rpa_distance**2 new_x = model.lpa_distance**2 + model.rpa_distance**2 assert_true(new_x < old_x) model.fit_fiducials() old_x = lpa_distance**2 + rpa_distance**2 + nasion_distance**2 new_x = (model.lpa_distance**2 + model.rpa_distance**2 + model.nasion_distance**2) assert_true(new_x < old_x) model.fit_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance) model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_trans) # test restoring trans x, y, z, rot_x, rot_y, rot_z = .1, .2, .05, 1.5, 0.1, -1.2 model.trans_x = x model.trans_y = y model.trans_z = z model.rot_x = rot_x model.rot_y = rot_y model.rot_z = rot_z trans = model.head_mri_trans model.reset_traits( ["trans_x", "trans_y", "trans_z", "rot_x", "rot_y", "rot_z"]) assert_equal(model.trans_x, 0) model.set_trans(trans) assert_almost_equal(model.trans_x, x) assert_almost_equal(model.trans_y, y) assert_almost_equal(model.trans_z, z) assert_almost_equal(model.rot_x, rot_x) assert_almost_equal(model.rot_y, rot_y) assert_almost_equal(model.rot_z, rot_z) # info assert_true(isinstance(model.fid_eval_str, string_types)) assert_true(isinstance(model.points_eval_str, string_types)) model.get_prepare_bem_model_job('sample') model.load_trans(fname_trans) from mne.gui._coreg_gui import CoregFrame x = CoregFrame(raw_path, 'sample', subjects_dir) os.environ['_MNE_GUI_TESTING_MODE'] = 'true' try: with warnings.catch_warnings(record=True): # traits spews warnings warnings.simplefilter('always') x._init_plot() finally: del os.environ['_MNE_GUI_TESTING_MODE']
def test_coreg_model(): """Test CoregModel.""" from mne.gui._coreg_gui import CoregModel tempdir = _TempDir() trans_dst = op.join(tempdir, 'test-trans.fif') model = CoregModel() pytest.raises(RuntimeError, model.save_trans, 'blah.fif') model.mri.subjects_dir = subjects_dir model.mri.subject = 'sample' assert not model.mri.fid_ok model.mri.lpa = [[-0.06, 0, 0]] model.mri.nasion = [[0, 0.05, 0]] model.mri.rpa = [[0.08, 0, 0]] assert (model.mri.fid_ok) model.hsp.file = raw_path assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4) assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4) assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4) assert model.has_lpa_data assert model.has_nasion_data assert model.has_rpa_data assert len(model.hsp.eeg_points) > 1 assert len(model.mri.bem_low_res.surf.rr) == 2562 assert len(model.mri.bem_high_res.surf.rr) == 267122 lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) model.nasion_weight = 1. model.fit_fiducials(0) old_x = lpa_distance ** 2 + rpa_distance ** 2 + nasion_distance ** 2 new_x = (model.lpa_distance ** 2 + model.rpa_distance ** 2 + model.nasion_distance ** 2) assert new_x < old_x model.fit_icp(0) new_dist = np.mean(model.point_distance) assert new_dist < avg_point_distance model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_t) # test restoring trans x, y, z = 100, 200, 50 rot_x, rot_y, rot_z = np.rad2deg([1.5, 0.1, -1.2]) model.trans_x = x model.trans_y = y model.trans_z = z model.rot_x = rot_x model.rot_y = rot_y model.rot_z = rot_z trans = model.mri_head_t model.reset_traits(["trans_x", "trans_y", "trans_z", "rot_x", "rot_y", "rot_z"]) assert_equal(model.trans_x, 0) model.set_trans(trans) assert_array_almost_equal(model.trans_x, x) assert_array_almost_equal(model.trans_y, y) assert_array_almost_equal(model.trans_z, z) assert_array_almost_equal(model.rot_x, rot_x) assert_array_almost_equal(model.rot_y, rot_y) assert_array_almost_equal(model.rot_z, rot_z) # info assert (isinstance(model.fid_eval_str, str)) assert (isinstance(model.points_eval_str, str)) # scaling job assert not model.can_prepare_bem_model model.n_scale_params = 1 assert (model.can_prepare_bem_model) model.prepare_bem_model = True sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('sample2', False) assert_equal(sdir, subjects_dir) assert_equal(sfrom, 'sample') assert_equal(sto, 'sample2') assert_allclose(scale, model.parameters[6:9]) assert_equal(skip_fiducials, False) # find BEM files bems = set() for fname in os.listdir(op.join(subjects_dir, 'sample', 'bem')): match = re.match(r'sample-(.+-bem)\.fif', fname) if match: bems.add(match.group(1)) assert_equal(set(bemsol), bems) model.prepare_bem_model = False sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('sample2', True) assert_equal(bemsol, []) assert (skip_fiducials) model.load_trans(fname_trans) model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_t) assert_allclose(invert_transform(trans)['trans'][:3, 3] * 1000., [model.trans_x, model.trans_y, model.trans_z])
def test_coreg_model(): """Test CoregModel""" from mne.gui._coreg_gui import CoregModel tempdir = _TempDir() trans_dst = os.path.join(tempdir, 'test-trans.fif') model = CoregModel() assert_raises(RuntimeError, model.save_trans, 'blah.fif') model.mri.use_high_res_head = False model.mri.subjects_dir = subjects_dir model.mri.subject = 'sample' assert_false(model.mri.fid_ok) model.mri.lpa = [[-0.06, 0, 0]] model.mri.nasion = [[0, 0.05, 0]] model.mri.rpa = [[0.08, 0, 0]] assert_true(model.mri.fid_ok) model.hsp.file = raw_path assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4) assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4) assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4) assert_true(model.has_fid_data) lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) model.fit_auricular_points() old_x = lpa_distance ** 2 + rpa_distance ** 2 new_x = model.lpa_distance ** 2 + model.rpa_distance ** 2 assert_true(new_x < old_x) model.fit_fiducials() old_x = lpa_distance ** 2 + rpa_distance ** 2 + nasion_distance ** 2 new_x = (model.lpa_distance ** 2 + model.rpa_distance ** 2 + model.nasion_distance ** 2) assert_true(new_x < old_x) model.fit_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance) model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_trans) # test restoring trans x, y, z, rot_x, rot_y, rot_z = .1, .2, .05, 1.5, 0.1, -1.2 model.trans_x = x model.trans_y = y model.trans_z = z model.rot_x = rot_x model.rot_y = rot_y model.rot_z = rot_z trans = model.head_mri_trans model.reset_traits(["trans_x", "trans_y", "trans_z", "rot_x", "rot_y", "rot_z"]) assert_equal(model.trans_x, 0) model.set_trans(trans) assert_almost_equal(model.trans_x, x) assert_almost_equal(model.trans_y, y) assert_almost_equal(model.trans_z, z) assert_almost_equal(model.rot_x, rot_x) assert_almost_equal(model.rot_y, rot_y) assert_almost_equal(model.rot_z, rot_z) # info assert_true(isinstance(model.fid_eval_str, string_types)) assert_true(isinstance(model.points_eval_str, string_types)) # scaling job sdir, sfrom, sto, scale, skip_fiducials, bemsol = \ model.get_scaling_job('sample2', False, True) assert_equal(sdir, subjects_dir) assert_equal(sfrom, 'sample') assert_equal(sto, 'sample2') assert_equal(scale, model.scale) assert_equal(skip_fiducials, False) # find BEM files bems = set() for fname in os.listdir(os.path.join(subjects_dir, 'sample', 'bem')): match = re.match('sample-(.+-bem)\.fif', fname) if match: bems.add(match.group(1)) assert_equal(set(bemsol), bems) sdir, sfrom, sto, scale, skip_fiducials, bemsol = \ model.get_scaling_job('sample2', True, False) assert_equal(bemsol, []) assert_true(skip_fiducials) model.load_trans(fname_trans) from mne.gui._coreg_gui import CoregFrame x = CoregFrame(raw_path, 'sample', subjects_dir) os.environ['_MNE_GUI_TESTING_MODE'] = 'true' try: with warnings.catch_warnings(record=True): # traits spews warnings warnings.simplefilter('always') x._init_plot() finally: del os.environ['_MNE_GUI_TESTING_MODE']
def test_coreg_model(): """Test CoregModel.""" from mne.gui._coreg_gui import CoregModel tempdir = _TempDir() trans_dst = op.join(tempdir, 'test-trans.fif') model = CoregModel() pytest.raises(RuntimeError, model.save_trans, 'blah.fif') model.mri.subjects_dir = subjects_dir model.mri.subject = 'sample' assert not model.mri.fid_ok model.mri.lpa = [[-0.06, 0, 0]] model.mri.nasion = [[0, 0.05, 0]] model.mri.rpa = [[0.08, 0, 0]] assert (model.mri.fid_ok) model.hsp.file = raw_path assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4) assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4) assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4) assert model.has_lpa_data assert model.has_nasion_data assert model.has_rpa_data assert len(model.hsp.eeg_points) > 1 assert len(model.mri.bem_low_res.surf.rr) == 2562 assert len(model.mri.bem_high_res.surf.rr) == 267122 lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) model.nasion_weight = 1. model.fit_fiducials(0) old_x = lpa_distance**2 + rpa_distance**2 + nasion_distance**2 new_x = (model.lpa_distance**2 + model.rpa_distance**2 + model.nasion_distance**2) assert new_x < old_x model.fit_icp(0) new_dist = np.mean(model.point_distance) assert new_dist < avg_point_distance model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_t) # test restoring trans x, y, z = 100, 200, 50 rot_x, rot_y, rot_z = np.rad2deg([1.5, 0.1, -1.2]) model.trans_x = x model.trans_y = y model.trans_z = z model.rot_x = rot_x model.rot_y = rot_y model.rot_z = rot_z trans = model.mri_head_t model.reset_traits( ["trans_x", "trans_y", "trans_z", "rot_x", "rot_y", "rot_z"]) assert_equal(model.trans_x, 0) model.set_trans(trans) assert_array_almost_equal(model.trans_x, x) assert_array_almost_equal(model.trans_y, y) assert_array_almost_equal(model.trans_z, z) assert_array_almost_equal(model.rot_x, rot_x) assert_array_almost_equal(model.rot_y, rot_y) assert_array_almost_equal(model.rot_z, rot_z) # info assert (isinstance(model.fid_eval_str, str)) assert (isinstance(model.points_eval_str, str)) # scaling job assert not model.can_prepare_bem_model model.n_scale_params = 1 assert (model.can_prepare_bem_model) model.prepare_bem_model = True sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('sample2', False) assert_equal(sdir, subjects_dir) assert_equal(sfrom, 'sample') assert_equal(sto, 'sample2') assert_allclose(scale, model.parameters[6:9]) assert_equal(skip_fiducials, False) # find BEM files bems = set() for fname in os.listdir(op.join(subjects_dir, 'sample', 'bem')): match = re.match(r'sample-(.+-bem)\.fif', fname) if match: bems.add(match.group(1)) assert_equal(set(bemsol), bems) model.prepare_bem_model = False sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('sample2', True) assert_equal(bemsol, []) assert (skip_fiducials) model.load_trans(fname_trans) model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_t) assert_allclose( invert_transform(trans)['trans'][:3, 3] * 1000., [model.trans_x, model.trans_y, model.trans_z])
def test_coreg_model(): """Test CoregModel""" from mne.gui._coreg_gui import CoregModel tempdir = _TempDir() trans_dst = os.path.join(tempdir, 'test-trans.fif') model = CoregModel() assert_raises(RuntimeError, model.save_trans, 'blah.fif') model.mri.subjects_dir = subjects_dir model.mri.subject = 'sample' assert_false(model.mri.fid_ok) model.mri.lpa = [[-0.06, 0, 0]] model.mri.nasion = [[0, 0.05, 0]] model.mri.rpa = [[0.08, 0, 0]] assert_true(model.mri.fid_ok) model.hsp.file = raw_path assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4) assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4) assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4) assert_true(model.has_fid_data) lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) model.fit_auricular_points() old_x = lpa_distance ** 2 + rpa_distance ** 2 new_x = model.lpa_distance ** 2 + model.rpa_distance ** 2 assert_true(new_x < old_x) model.fit_fiducials() old_x = lpa_distance ** 2 + rpa_distance ** 2 + nasion_distance ** 2 new_x = (model.lpa_distance ** 2 + model.rpa_distance ** 2 + model.nasion_distance ** 2) assert_true(new_x < old_x) model.fit_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance) model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_trans) # test restoring trans x, y, z, rot_x, rot_y, rot_z = .1, .2, .05, 1.5, 0.1, -1.2 model.trans_x = x model.trans_y = y model.trans_z = z model.rot_x = rot_x model.rot_y = rot_y model.rot_z = rot_z trans = model.head_mri_trans model.reset_traits(["trans_x", "trans_y", "trans_z", "rot_x", "rot_y", "rot_z"]) assert_equal(model.trans_x, 0) model.set_trans(trans) assert_almost_equal(model.trans_x, x) assert_almost_equal(model.trans_y, y) assert_almost_equal(model.trans_z, z) assert_almost_equal(model.rot_x, rot_x) assert_almost_equal(model.rot_y, rot_y) assert_almost_equal(model.rot_z, rot_z) # info assert_true(isinstance(model.fid_eval_str, string_types)) assert_true(isinstance(model.points_eval_str, string_types)) model.get_prepare_bem_model_job('sample') model.load_trans(fname_trans) from mne.gui._coreg_gui import CoregFrame x = CoregFrame(raw_path, 'sample', subjects_dir) os.environ['_MNE_GUI_TESTING_MODE'] = 'true' try: with warnings.catch_warnings(record=True): # traits spews warnings warnings.simplefilter('always') x._init_plot() finally: del os.environ['_MNE_GUI_TESTING_MODE']
def test_coreg_model(): """Test CoregModel.""" from mne.gui._coreg_gui import CoregModel tempdir = _TempDir() trans_dst = op.join(tempdir, 'test-trans.fif') model = CoregModel() assert_raises(RuntimeError, model.save_trans, 'blah.fif') model.mri.use_high_res_head = False model.mri.subjects_dir = subjects_dir model.mri.subject = 'sample' assert_false(model.mri.fid_ok) model.mri.lpa = [[-0.06, 0, 0]] model.mri.nasion = [[0, 0.05, 0]] model.mri.rpa = [[0.08, 0, 0]] assert_true(model.mri.fid_ok) model.hsp.file = raw_path assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4) assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4) assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4) assert_true(model.has_fid_data) assert len(model.hsp.eeg_points) > 1 lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) model.fit_auricular_points() old_x = lpa_distance**2 + rpa_distance**2 new_x = model.lpa_distance**2 + model.rpa_distance**2 assert_true(new_x < old_x) model.fit_fiducials() old_x = lpa_distance**2 + rpa_distance**2 + nasion_distance**2 new_x = (model.lpa_distance**2 + model.rpa_distance**2 + model.nasion_distance**2) assert_true(new_x < old_x) model.fit_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance) model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) assert_allclose(trans['trans'], model.head_mri_trans) # test restoring trans x, y, z, rot_x, rot_y, rot_z = .1, .2, .05, 1.5, 0.1, -1.2 model.trans_x = x model.trans_y = y model.trans_z = z model.rot_x = rot_x model.rot_y = rot_y model.rot_z = rot_z trans = model.head_mri_trans model.reset_traits( ["trans_x", "trans_y", "trans_z", "rot_x", "rot_y", "rot_z"]) assert_equal(model.trans_x, 0) model.set_trans(trans) assert_almost_equal(model.trans_x, x) assert_almost_equal(model.trans_y, y) assert_almost_equal(model.trans_z, z) assert_almost_equal(model.rot_x, rot_x) assert_almost_equal(model.rot_y, rot_y) assert_almost_equal(model.rot_z, rot_z) # info assert_true(isinstance(model.fid_eval_str, string_types)) assert_true(isinstance(model.points_eval_str, string_types)) # scaling job assert_false(model.can_prepare_bem_model) model.n_scale_params = 1 assert_true(model.can_prepare_bem_model) model.prepare_bem_model = True sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('sample2', False) assert_equal(sdir, subjects_dir) assert_equal(sfrom, 'sample') assert_equal(sto, 'sample2') assert_equal(scale, model.scale) assert_equal(skip_fiducials, False) # find BEM files bems = set() for fname in os.listdir(op.join(subjects_dir, 'sample', 'bem')): match = re.match(r'sample-(.+-bem)\.fif', fname) if match: bems.add(match.group(1)) assert_equal(set(bemsol), bems) model.prepare_bem_model = False sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('sample2', True) assert_equal(bemsol, []) assert_true(skip_fiducials) model.load_trans(fname_trans)