def gen_ras_to_head_trans(head_to_mri_t, t1_img): # RAS -> VOXEL ras_to_vox_t = Transform(fro='ras', to='mri_voxel', trans=np.linalg.inv(t1_img.header.get_vox2ras())) # VOXEL -> MRI vox_to_mri_t = Transform(fro='mri_voxel', to='mri', trans=t1_img.header.get_vox2ras_tkr()) # MRI -> HEAD mri_to_head_t = invert_transform(head_to_mri_t) # Now we have generated all the required transformations # to go from RAS to MNE Head coordinates. Let's combine # the transforms into a single transform. This requires # two calls to `combine_transforms()`. # RAS -> MRI ras_to_mri_t = combine_transforms(ras_to_vox_t, vox_to_mri_t, fro='ras', to='mri') # RAS -> HEAD ras_to_head_t = combine_transforms(ras_to_mri_t, mri_to_head_t, fro='ras', to='head') return ras_to_head_t
def test_combine(): """Test combining transforms """ trans = read_trans(fname) inv = invert_transform(trans) combine_transforms(trans, inv, trans["from"], trans["from"]) assert_raises(RuntimeError, combine_transforms, trans, inv, trans["to"], trans["from"]) assert_raises(RuntimeError, combine_transforms, trans, inv, trans["from"], trans["to"]) assert_raises(RuntimeError, combine_transforms, trans, trans, trans["from"], trans["to"])
def test_combine(): """Test combining transforms.""" trans = read_trans(fname) inv = invert_transform(trans) combine_transforms(trans, inv, trans['from'], trans['from']) pytest.raises(RuntimeError, combine_transforms, trans, inv, trans['to'], trans['from']) pytest.raises(RuntimeError, combine_transforms, trans, inv, trans['from'], trans['to']) pytest.raises(RuntimeError, combine_transforms, trans, trans, trans['from'], trans['to'])
def test_transforms(): """ Test transformations """ bti_trans = (0.0, 0.02, 0.11) bti_dev_t = Transform("ctf_meg", "meg", _get_bti_dev_t(0.0, bti_trans)) for pdf, config, hs in zip(pdf_fnames, config_fnames, hs_fnames): raw = read_raw_bti(pdf, config, hs) dev_ctf_t = raw.info["dev_ctf_t"] dev_head_t_old = raw.info["dev_head_t"] ctf_head_t = raw.info["ctf_head_t"] # 1) get BTI->Neuromag bti_dev_t = Transform("ctf_meg", "meg", _get_bti_dev_t(0.0, bti_trans)) # 2) get Neuromag->BTI head t = combine_transforms(invert_transform(bti_dev_t), dev_ctf_t, "meg", "ctf_head") # 3) get Neuromag->head dev_head_t_new = combine_transforms(t, ctf_head_t, "meg", "head") assert_array_equal(dev_head_t_new["trans"], dev_head_t_old["trans"])
def test_transforms(): """Test transformations.""" bti_trans = (0.0, 0.02, 0.11) bti_dev_t = Transform('ctf_meg', 'meg', _get_bti_dev_t(0.0, bti_trans)) for pdf, config, hs, in zip(pdf_fnames, config_fnames, hs_fnames): raw = read_raw_bti(pdf, config, hs, preload=False) dev_ctf_t = raw.info['dev_ctf_t'] dev_head_t_old = raw.info['dev_head_t'] ctf_head_t = raw.info['ctf_head_t'] # 1) get BTI->Neuromag bti_dev_t = Transform('ctf_meg', 'meg', _get_bti_dev_t(0.0, bti_trans)) # 2) get Neuromag->BTI head t = combine_transforms(invert_transform(bti_dev_t), dev_ctf_t, 'meg', 'ctf_head') # 3) get Neuromag->head dev_head_t_new = combine_transforms(t, ctf_head_t, 'meg', 'head') assert_array_equal(dev_head_t_new['trans'], dev_head_t_old['trans'])
def _prepare_trans(info, trans, coord_frame='head'): head_mri_t = _ensure_trans(trans, 'head', 'mri') dev_head_t = info['dev_head_t'] del trans # Figure out our transformations if coord_frame == 'meg': head_trans = invert_transform(dev_head_t) meg_trans = Transform('meg', 'meg') mri_trans = invert_transform( combine_transforms(dev_head_t, head_mri_t, 'meg', 'mri')) elif coord_frame == 'mri': head_trans = head_mri_t meg_trans = combine_transforms(dev_head_t, head_mri_t, 'meg', 'mri') mri_trans = Transform('mri', 'mri') else: # coord_frame == 'head' head_trans = Transform('head', 'head') meg_trans = info['dev_head_t'] mri_trans = invert_transform(head_mri_t) return head_trans, meg_trans, mri_trans
def gen_ras_to_head_trans(head_to_mri_t, t1_img): mri_to_head_t = invert_transform(head_to_mri_t) # RAS <> VOXEL ras_to_vox_t = Transform(fro='ras', to='mri_voxel', trans=np.linalg.inv(t1_img.header.get_vox2ras())) # trans=t1_img.header.get_ras2vox()) vox_to_mri_t = Transform(fro='mri_voxel', to='mri', trans=t1_img.header.get_vox2ras_tkr()) # RAS <> MRI ras_to_mri_t = combine_transforms(ras_to_vox_t, vox_to_mri_t, fro='ras', to='mri') ras_to_head_t = combine_transforms(ras_to_mri_t, mri_to_head_t, fro='ras', to='head') return ras_to_head_t