def test_coreg_gui_automation(): """Test that properties get properly updated.""" from mne.gui._file_traits import DigSource from mne.gui._fiducials_gui import MRIHeadWithFiducialsModel from mne.gui._coreg_gui import CoregModel subject = 'sample' hsp = DigSource() hsp.file = raw_path mri = MRIHeadWithFiducialsModel(subjects_dir=subjects_dir, subject=subject) model = CoregModel(mri=mri, hsp=hsp) # gh-7254 assert not (model.nearest_transformed_high_res_mri_idx_hsp == 0).all() model.fit_fiducials() model.icp_iterations = 2 model.nasion_weight = 2. model.fit_icp() model.omit_hsp_points(distance=5e-3) model.icp_iterations = 2 model.fit_icp() errs_icp = np.median(model._get_point_distance()) assert 2e-3 < errs_icp < 3e-3 info = mne.io.read_info(raw_path) errs_nearest = np.median( dig_mri_distances(info, fname_trans, subject, subjects_dir)) assert 1e-3 < errs_nearest < 2e-3
def calcTrans(subj): camcan_root = os.environ['CAMCAN_ROOT'] if camcan_root == '': print('No camcan root directory!, exiting!') sys.exit() cm = CoregModel() cm.mri.subject_source.set(use_high_res_head=False) cm.mri.subject_source.set(subjects_dir=camcan_root + 'subjects_s3/') cm.hsp.trait_set(file=camcan_root + 'cc700/mri/pipeline/release004/BIDSsep/megraw/' + subj + '/meg/rest_raw.fif') cm.mri.fid.trait_set(file=camcan_root + 'subjects_s3/' + subj + '/bem/' + subj + '-fiducials.fif') cm.fit_fiducials() cm.omit_hsp_points(0.020, True) cm.fit_hsp_points() with open(camcan_root + 'processed/coreg_logs/' + subj + '_hs.csv', 'w') as f: cm.print_traits() f.write(str(cm.lpa_distance) + '\n') f.write(str(cm.rpa_distance) + '\n') f.write(str(cm.nasion_distance) + '\n') f.write(str(cm.point_distance) + '\n') cm.save_trans(camcan_root + 'cc700/mri/pipeline/release004/BIDSsep/megraw/' + subj + '/meg/' + subj + '-new-hs-AR-trans.fif')
def coreg_head2mri(subjects_dir, subject, native_fid, raw_path, raw_NosePtsOut, trans_dst, flag_fid=False): import scipy.io import numpy as np from mne.gui._coreg_gui import CoregModel model = CoregModel() model.mri.subjects_dir = subjects_dir model.mri.subject = subject # Remove Polhemus points around the nose (y>0, z<0) model.hsp.file = raw_path head_pts = model.hsp.points raw = read_raw_fif(raw_path, preload=True) pos = np.where((head_pts[:,1] <= 0) | (head_pts[:,2] >= 0)) dig = raw.info['dig'] dig2 = dig[0:8] dig3 = [dig[p+7] for p in pos[0]] dig_yeah = dig2+dig3 raw.info['dig'] = dig_yeah raw.save(raw_NosePtsOut, overwrite=True) model.hsp.file = raw_NosePtsOut # Load CamCAN fiducials from matlab file if flag_fid: fid = scipy.io.loadmat(native_fid, struct_as_record=False, squeeze_me=True) fid = fid['fid'] model.mri.lpa = np.reshape(fid.native.mm.lpa*0.001,(1,3)) model.mri.nasion = np.reshape(fid.native.mm.nas*0.001,(1,3)) model.mri.rpa = np.reshape(fid.native.mm.rpa*0.001,(1,3)) assert (model.mri.fid_ok) lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_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 avg_point_distance = np.mean(model.point_distance) while True: model.fit_icp(0) new_dist = np.mean(model.point_distance) assert new_dist < avg_point_distance if model.status_text.endswith('converged)'): break model.save_trans(trans_dst) trans = mne.read_trans(trans_dst) np.testing.assert_allclose(trans['trans'], model.head_mri_t)
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_with_fsaverage(): """Test CoregModel with the fsaverage brain data.""" tempdir = _TempDir() from mne.gui._coreg_gui import CoregModel mne.create_default_subject(subjects_dir=tempdir, fs_home=op.join(subjects_dir, '..')) model = CoregModel() model.mri.subjects_dir = tempdir model.mri.subject = 'fsaverage' assert (model.mri.fid_ok) model.hsp.file = raw_path lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) # test hsp point omission model.nasion_weight = 1. model.trans_y = -0.008 model.fit_fiducials(0) model.omit_hsp_points(0.02) assert model.hsp.n_omitted == 1 model.omit_hsp_points(np.inf) assert model.hsp.n_omitted == 0 model.omit_hsp_points(0.02) assert model.hsp.n_omitted == 1 model.omit_hsp_points(0.01) assert model.hsp.n_omitted == 4 model.omit_hsp_points(0.005) assert model.hsp.n_omitted == 40 model.omit_hsp_points(0.01) assert model.hsp.n_omitted == 4 model.omit_hsp_points(0.02) assert model.hsp.n_omitted == 1 # scale with 1 parameter model.n_scale_params = 1 model.fit_fiducials(1) 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(1) avg_point_distance_1param = np.mean(model.point_distance) assert (avg_point_distance_1param < avg_point_distance) # scaling job sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('scaled', False) assert_equal(sdir, tempdir) assert_equal(sfrom, 'fsaverage') assert_equal(sto, 'scaled') assert_allclose(scale, model.parameters[6:9]) assert_equal(set(bemsol), set(('inner_skull-bem',))) model.prepare_bem_model = False sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('scaled', False) assert_equal(bemsol, []) # scale with 3 parameters model.n_scale_params = 3 model.fit_icp(3) assert (np.mean(model.point_distance) < avg_point_distance_1param) # test switching raw disables point omission assert_equal(model.hsp.n_omitted, 1) model.hsp.file = kit_raw_path assert_equal(model.hsp.n_omitted, 0)
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_with_fsaverage(): """Test CoregModel with the fsaverage brain data.""" tempdir = _TempDir() from mne.gui._coreg_gui import CoregModel mne.create_default_subject(subjects_dir=tempdir, fs_home=op.join(subjects_dir, '..')) model = CoregModel() model.mri.subjects_dir = tempdir model.mri.subject = 'fsaverage' assert (model.mri.fid_ok) model.hsp.file = raw_path lpa_distance = model.lpa_distance nasion_distance = model.nasion_distance rpa_distance = model.rpa_distance avg_point_distance = np.mean(model.point_distance) # test hsp point omission model.nasion_weight = 1. model.trans_y = -0.008 model.fit_fiducials(0) model.omit_hsp_points(0.02) assert model.hsp.n_omitted == 1 model.omit_hsp_points(np.inf) assert model.hsp.n_omitted == 0 model.omit_hsp_points(0.02) assert model.hsp.n_omitted == 1 model.omit_hsp_points(0.01) assert model.hsp.n_omitted == 4 model.omit_hsp_points(0.005) assert model.hsp.n_omitted == 40 model.omit_hsp_points(0.01) assert model.hsp.n_omitted == 4 model.omit_hsp_points(0.02) assert model.hsp.n_omitted == 1 # scale with 1 parameter model.n_scale_params = 1 model.fit_fiducials(1) 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(1) avg_point_distance_1param = np.mean(model.point_distance) assert (avg_point_distance_1param < avg_point_distance) # scaling job sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('scaled', False) assert_equal(sdir, tempdir) assert_equal(sfrom, 'fsaverage') assert_equal(sto, 'scaled') assert_allclose(scale, model.parameters[6:9]) assert_equal(set(bemsol), set(('inner_skull-bem', ))) model.prepare_bem_model = False sdir, sfrom, sto, scale, skip_fiducials, labels, annot, bemsol = \ model.get_scaling_job('scaled', False) assert_equal(bemsol, []) # scale with 3 parameters model.n_scale_params = 3 model.fit_icp(3) assert (np.mean(model.point_distance) < avg_point_distance_1param) # test switching raw disables point omission assert_equal(model.hsp.n_omitted, 1) model.hsp.file = kit_raw_path assert_equal(model.hsp.n_omitted, 0)
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 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))
def test_coreg_model(): """Test CoregModel""" from mne.gui._coreg_gui import CoregModel 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))
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)