def test_invwarp(): base_dir = str(Path(__file__).parent / "examples") anat_dir = f"{base_dir}/003/anat" ref = f"{anat_dir}/sub-003_T1w.nii.gz" warp = f"{anat_dir}/highres2standard_warp" out = f"{anat_dir}/highres2standard_warp_inv.nii.gz" utils.inverse_warp(ref, out, warp) out_warp = nib.load(out) assert out_warp is not None
def test_invwarp(): base_dir = os.path.abspath( pkg_resources.resource_filename("pynets", "../data/examples")) anat_dir = f"{base_dir}/003/anat" ref = f"{anat_dir}/sub-003_T1w.nii.gz" warp = f"{anat_dir}/highres2standard_warp" out = f"{anat_dir}/highres2standard_warp_inv.nii.gz" utils.inverse_warp(ref, out, warp) out_warp = nib.load(out) assert out_warp is not None
def t1w2mni_align(self): """ A function to perform alignment from T1w --> MNI template. """ import time # Create linear transform/ initializer T1w-->MNI regutils.align( self.t1w_brain, self.input_mni_brain, xfm=self.t12mni_xfm_init, bins=None, interp="spline", out=None, dof=12, cost="mutualinfo", searchrad=True, ) time.sleep(0.5) # Attempt non-linear registration of T1 to MNI template if self.simple is False: try: print(f"Learning a non-linear mapping from T1w --> " f"{self.template_name} ...") # Use FNIRT to nonlinearly align T1 to MNI template regutils.align_nonlinear( self.t1w_brain, self.input_mni, xfm=self.t12mni_xfm_init, out=self.t1_aligned_mni, warp=self.warp_t1w2mni, ref_mask=self.input_mni_mask, ) time.sleep(0.5) # Get warp from MNI -> T1 regutils.inverse_warp(self.t1w_brain, self.mni2t1w_warp, self.warp_t1w2mni) time.sleep(0.5) # Get mat from MNI -> T1 self.mni2t1_xfm = regutils.invert_xfm(self.t12mni_xfm_init, self.mni2t1_xfm) time.sleep(0.5) except BaseException: # Falling back to linear registration regutils.align( self.t1w_brain, self.input_mni_brain, xfm=self.mni2t1_xfm, init=self.t12mni_xfm_init, bins=None, dof=12, cost="mutualinfo", searchrad=True, interp="spline", out=self.t1_aligned_mni, sch=None, ) time.sleep(0.5) # Get mat from MNI -> T1 self.mni2t1_xfm = regutils.invert_xfm(self.t12mni_xfm, self.mni2t1_xfm) time.sleep(0.5) else: # Falling back to linear registration regutils.align( self.t1w_brain, self.input_mni_brain, xfm=self.t12mni_xfm, init=self.t12mni_xfm_init, bins=None, dof=12, cost="mutualinfo", searchrad=True, interp="spline", out=self.t1_aligned_mni, sch=None, ) time.sleep(0.5) # Get mat from MNI -> T1 self.t12mni_xfm = regutils.invert_xfm(self.mni2t1_xfm, self.t12mni_xfm) time.sleep(0.5)