def __init__(self, data, affine, axis_names, metadata={}, lps=True): """ Creates a new nipy image with an affine mapping. Parameters ---------- data : ndarray ndarray representing the data. affine : 4x4 ndarray affine transformation to the reference coordinate system axis_names : [string] names of the axes in the coordinate system. """ if len(axis_names) < 3: raise ValueError('XYZImage must have a minimum of 3 axes') # The first three axes are assumed to be the # spatial ones xyz_transform = XYZTransform(affine, axis_names[:3], lps) nonspatial_names = axis_names[3:] if nonspatial_names: nonspatial_affine_transform = AffineTransform.from_start_step(nonspatial_names, nonspatial_names, [0]*(data.ndim-3), [1]*(data.ndim-3)) full_dimensional_affine_transform = cmap_product(xyz_transform, nonspatial_affine_transform) else: full_dimensional_affine_transform = xyz_transform self._xyz_transform = xyz_transform Image.__init__(self, data, full_dimensional_affine_transform, metadata=metadata)
def __init__(self, data, affine, coord_sys, metadata=None): """ Creates a new nipy image with an affine mapping. Parameters ---------- data : ndarray ndarray representing the data. affine : 4x4 ndarray affine transformation to the reference coordinate system coord_system : string name of the reference coordinate system. """ function_domain = CoordinateSystem(['axis%d' % i for i in range(3)], name=coord_sys) function_range = CoordinateSystem(['x','y','z'], name='world') spatial_coordmap = AffineTransform(function_domain, function_range, affine) nonspatial_names = ['axis%d' % i for i in range(3, data.ndim)] if nonspatial_names: nonspatial_coordmap = AffineTransform.from_start_step(nonspatial_names, nonspatial_names, [0]*(data.ndim-3), [1]*(data.ndim-3)) full_coordmap = cmap_product(coordmap, nonspatial_coordmap) else: full_coordmap = spatial_coordmap self._spatial_coordmap = spatial_coordmap self.coord_sys = coord_sys Image.__init__(self, data, full_coordmap) if metadata is not None: self.metadata = metadata