def read_mapping(disp, domain_img, codomain_img, prealign=None): """ Read a syn registration mapping from a nifti file Parameters ---------- disp : str, Nifti1Image, or ndarray If string, file must of an image or ndarray. If image, contains the mapping displacement field in each voxel Shape (x, y, z, 3, 2) If ndarray, contains affine transformation used for mapping domain_img : str or Nifti1Image codomain_img : str or Nifti1Image Returns ------- A :class:`DiffeomorphicMap` object """ if isinstance(disp, str): if "nii.gz" in disp: disp = nib.load(disp) else: disp = np.load(disp) if isinstance(domain_img, str): domain_img = nib.load(domain_img) if isinstance(codomain_img, str): codomain_img = nib.load(codomain_img) if isinstance(disp, nib.Nifti1Image): mapping = DiffeomorphicMap(3, disp.shape[:3], disp_grid2world=np.linalg.inv(disp.affine), domain_shape=domain_img.shape[:3], domain_grid2world=domain_img.affine, codomain_shape=codomain_img.shape, codomain_grid2world=codomain_img.affine, prealign=prealign) disp_data = disp.get_fdata().astype(np.float32) mapping.forward = disp_data[..., 0] mapping.backward = disp_data[..., 1] mapping.is_inverse = True else: from AFQ.definitions.mapping import ConformedAffineMapping mapping = ConformedAffineMapping( disp, domain_grid_shape=reduce_shape( domain_img.shape), domain_grid2world=domain_img.affine, codomain_grid_shape=reduce_shape( codomain_img.shape), codomain_grid2world=codomain_img.affine) return mapping
def read_mapping(disp, domain_img, codomain_img, prealign=None): """ Read a syn registration mapping from a nifti file Parameters ---------- disp : str or Nifti1Image A file of image containing the mapping displacement field in each voxel Shape (x, y, z, 3, 2) domain_img : str or Nifti1Image codomain_img : str or Nifti1Image Returns ------- A :class:`DiffeomorphicMap` object. Notes ----- See :func:`write_mapping` for the data format expected. """ if isinstance(disp, str): disp_data, disp_affine = load_nifti(disp) if isinstance(domain_img, str): domain_img = nib.load(domain_img) if isinstance(codomain_img, str): codomain_img = nib.load(codomain_img) mapping = DiffeomorphicMap(3, disp_data.shape[:3], disp_grid2world=np.linalg.inv(disp_affine), domain_shape=domain_img.shape[:3], domain_grid2world=domain_img.affine, codomain_shape=codomain_img.shape, codomain_grid2world=codomain_img.affine, prealign=prealign) mapping.forward = disp_data[..., 0] mapping.backward = disp_data[..., 1] mapping.is_inverse = True return mapping
def read_mapping(disp, domain_img, codomain_img, prealign=None): """ Read a syn registration mapping from a nifti file Parameters ---------- disp : str or Nifti1Image A file of image containing the mapping displacement field in each voxel Shape (x, y, z, 3, 2) domain_img : str or Nifti1Image codomain_img : str or Nifti1Image Returns ------- A :class:`DiffeomorphicMap` object """ if isinstance(disp, str): disp = nib.load(disp) if isinstance(domain_img, str): domain_img = nib.load(domain_img) if isinstance(codomain_img, str): codomain_img = nib.load(codomain_img) mapping = DiffeomorphicMap(3, disp.shape[:3], disp_grid2world=np.linalg.inv(disp.affine), domain_shape=domain_img.shape[:3], domain_grid2world=domain_img.affine, codomain_shape=codomain_img.shape, codomain_grid2world=codomain_img.affine, prealign=prealign) disp_data = disp.get_fdata().astype(np.float32) mapping.forward = disp_data[..., 0] mapping.backward = disp_data[..., 1] mapping.is_inverse = True return mapping
def read_mapping(disp, domain_img, codomain_img): """ Read a syn registration mapping from a nifti file Parameters ---------- disp : str or Nifti1Image A file of image containing the mapping displacement field in each voxel Shape (x, y, z, 3, 2) domain_img : str or Nifti1Image codomain_img : str or Nifti1Image Returns ------- A :class:`DiffeomorphicMap` object """ if isinstance(disp, str): disp = nib.load(disp) if isinstance(domain_img, str): domain_img = nib.load(domain_img) if isinstance(codomain_img, str): codomain_img = nib.load(codomain_img) mapping = DiffeomorphicMap(3, disp.shape[:3], disp_grid2world=np.linalg.inv(disp.affine), domain_shape=domain_img.shape[:3], domain_grid2world=domain_img.affine, codomain_shape=codomain_img.shape, codomain_grid2world=codomain_img.affine) disp_data = disp.get_data() mapping.forward = disp_data[..., 0] mapping.backward = disp_data[..., 1] mapping.is_inverse = True return mapping