Example
        -------
        >>> import ants
        >>> translater = ants.contrib.TranslateImage((40,0))
        >>> img2d = ants.image_read(ants.get_data('r16'))
        >>> img2d_r = translater.transform(img2d)
        >>> ants.plot(img2d, img2d_r)
        >>> translater = ants.contrib.TranslateImage((40,0,0))
        >>> img3d = ants.image_read(ants.get_data('mni'))
        >>> img3d_r = translater.transform(img3d)
        >>> ants.plot(img3d, img3d_r, axis=2)

def transform(self, X, y=None):
        """
        Example
        -------
        >>> import ants
        >>> translater = ants.contrib.TranslateImage((40,0))
        >>> img2d = ants.image_read(ants.get_data('r16'))
        >>> img2d_r = translater.transform(img2d)
        >>> ants.plot(img2d, img2d_r)
        >>> translater = ants.contrib.TranslateImage((40,0,0))
        >>> img3d = ants.image_read(ants.get_data('mni'))
        >>> img3d_r = translater.transform(img3d)
        >>> ants.plot(img3d, img3d_r, axis=2)
        """
        if X.pixeltype != 'float':
            raise ValueError('image.pixeltype must be float ... use TypeCast transform or clone to float')

        if len(self.translation) != X.dimension:
            raise ValueError('must give a translation value for each image dimension')

        if self.reference is None:
            reference = X
        else:
            reference = self.reference

        insuffix = X._libsuffix
        cast_fn = utils.get_lib_fn('translateAntsImage%s_%s' % (insuffix, self.interp))
        casted_ptr = cast_fn(X.pointer, reference.pointer, self.translation)
        return iio.ANTsImage(pixeltype=X.pixeltype, dimension=X.dimension,
                             components=X.components, pointer=casted_ptr)