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 test_coreg_model_with_fsaverage(): """Test CoregModel""" tempdir = _TempDir() from mne.gui._coreg_gui import CoregModel mne.create_default_subject(subjects_dir=tempdir) model = CoregModel() model.mri.subjects_dir = tempdir model.mri.subject = 'fsaverage' assert_true(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.trans_y = -0.008 model.fit_auricular_points() model.omit_hsp_points(0.02) assert_equal(model.hsp.n_omitted, 1) model.omit_hsp_points(reset=True) assert_equal(model.hsp.n_omitted, 0) model.omit_hsp_points(0.02, reset=True) assert_equal(model.hsp.n_omitted, 1) # scale with 1 parameter model.n_scale_params = 1 model.fit_scale_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_scale_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_scale_hsp_points() avg_point_distance_1param = np.mean(model.point_distance) assert_true(avg_point_distance_1param < avg_point_distance) desc, func, args, kwargs = model.get_scaling_job('test') assert_true(isinstance(desc, string_types)) assert_equal(args[0], 'fsaverage') assert_equal(args[1], 'test') assert_allclose(args[2], model.scale) assert_equal(kwargs['subjects_dir'], tempdir) # scale with 3 parameters model.n_scale_params = 3 model.fit_scale_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance_1param) # test switching raw disables point omission assert_equal(model.hsp.n_omitted, 1) with warnings.catch_warnings(record=True): model.hsp.file = kit_raw_path assert_equal(model.hsp.n_omitted, 0)
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_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) model = CoregModel() model.mri.use_high_res_head = False model.mri.subjects_dir = tempdir model.mri.subject = 'fsaverage' assert_true(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.trans_y = -0.008 model.fit_auricular_points() model.omit_hsp_points(0.02) assert_equal(model.hsp.n_omitted, 1) model.omit_hsp_points(reset=True) assert_equal(model.hsp.n_omitted, 0) model.omit_hsp_points(0.02, reset=True) assert_equal(model.hsp.n_omitted, 1) # scale with 1 parameter model.n_scale_params = 1 model.fit_scale_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_scale_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_scale_hsp_points() avg_point_distance_1param = np.mean(model.point_distance) assert_true(avg_point_distance_1param < avg_point_distance) # scaling job sdir, sfrom, sto, scale, skip_fiducials, bemsol = \ model.get_scaling_job('scaled', False, True) assert_equal(sdir, tempdir) assert_equal(sfrom, 'fsaverage') assert_equal(sto, 'scaled') assert_equal(scale, model.scale) assert_equal(set(bemsol), set(('inner_skull-bem',))) sdir, sfrom, sto, scale, skip_fiducials, bemsol = \ model.get_scaling_job('scaled', False, False) assert_equal(bemsol, []) # scale with 3 parameters model.n_scale_params = 3 model.fit_scale_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance_1param) # test switching raw disables point omission assert_equal(model.hsp.n_omitted, 1) with warnings.catch_warnings(record=True): model.hsp.file = kit_raw_path assert_equal(model.hsp.n_omitted, 0)
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_with_fsaverage(): """Test CoregModel""" tempdir = _TempDir() from mne.gui._coreg_gui import CoregModel mne.create_default_subject(subjects_dir=tempdir) model = CoregModel() model.mri.subjects_dir = tempdir model.mri.subject = 'fsaverage' assert_true(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.trans_y = -0.008 model.fit_auricular_points() model.omit_hsp_points(0.02) assert_equal(model.hsp.n_omitted, 1) model.omit_hsp_points(reset=True) assert_equal(model.hsp.n_omitted, 0) model.omit_hsp_points(0.02, reset=True) assert_equal(model.hsp.n_omitted, 1) # scale with 1 parameter model.n_scale_params = 1 model.fit_scale_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_scale_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_scale_hsp_points() avg_point_distance_1param = np.mean(model.point_distance) assert_true(avg_point_distance_1param < avg_point_distance) desc, func, args, kwargs = model.get_scaling_job('test') assert_true(isinstance(desc, string_types)) assert_equal(args[0], 'fsaverage') assert_equal(args[1], 'test') assert_allclose(args[2], model.scale) assert_equal(kwargs['subjects_dir'], tempdir) # scale with 3 parameters model.n_scale_params = 3 model.fit_scale_hsp_points() assert_true(np.mean(model.point_distance) < avg_point_distance_1param) # test switching raw disables point omission assert_equal(model.hsp.n_omitted, 1) with warnings.catch_warnings(record=True): model.hsp.file = kit_raw_path assert_equal(model.hsp.n_omitted, 0)