def METHOD_NAME(self):
    self._filepath = self.Filepath.value
    with tifffile.TiffFile(self._filepath, mode="r") as tiff_file:
        series = tiff_file.series[0]
        if len(tiff_file.series) > 1:
            raise UnsupportedTiffError(
                filepath=self._filepath,
                details=f"Don't know how to read TIFF files with more than one image series (Your image has {len(tiff_file.series)} series",
            )
        axes = series.axes.lower()
        shape = series.shape
        dtype_code = series.dtype
        # we treat "sample" axis as "channel"
        # "i" ("sequence") can either be "time", "z", or "channel", in that order.
        for old, new in ("sc", "it", "iz", "ic"):
            axes = axes.replace(old, new)
        # tifffile will add potentially multiple "q" axes to data when saving without specifying them
        if "q" in axes:
            axes = get_default_axisordering(shape)
        axes_set = set(axes)
        if len(shape) < 2 or len(shape) > 5 or len(axes_set) != len(axes) or axes_set.difference("tzyxc"):
            raise UnsupportedTiffError(
                filepath=self._filepath,
                details=f"Only 2D-5D TIFFs with unique 'tzyxc' axes are allowed (got {len(shape)}D TIFF with {axes} axes)",
            )
        self._page_axes = series.pages[0].axes.lower()
        self._page_shape = series.pages[0].shape
        self._non_page_shape = shape[: -len(self._page_shape)]
    self.Output.meta.shape = shape
    self.Output.meta.axistags = vigra.defaultAxistags(axes)
    self.Output.meta.dtype = numpy.dtype(dtype_code).type
    blockshape = defaultdict(lambda: 1, zip(self._page_axes, self._page_shape))
    # optimization: reading bigger blockshapes in z means much smoother user experience
    # but don't change z if it's part of the page shape
    blockshape.setdefault("z", 32)
    self.Output.meta.ideal_blockshape = tuple(blockshape[k] for k in axes)