docs: def get_slice(self, slice_type, slice_number, time_point=0):
          """
              Returns a slice of the dataset.
              slice.data contains the window/levelled values, in uint8
              slice.original_data contains the original data for this slice
              :param time_point: in case of 4d nifti the 4th dimension
              :param slice_number: the slice number
              :param slice_type: tye slice type (AXIAL, SAGITTAL, CORONAL)
          """
          slice_ = Slice()
          slice_.slice_number = slice_number
          # assert that slice_ number is withing the range
          assert slice_number >= 0
          assert slice_number < self._get_number_of_slices(slice_type)
          slice_data = None
          if slice_type == SliceType.AXIAL:
              slice_data = self.__get_raw_slice__(slice_number, self.axial_orientation, time_point)
              slice_.slice_orientation = self.axial_orientation
          elif slice_type == SliceType.SAGITTAL:
              slice_data = self.__get_raw_slice__(slice_number, self.sagittal_orientation, time_point)
              slice_.slice_orientation = self.sagittal_orientation
          elif slice_type == SliceType.CORONAL:
              slice_data = self.__get_raw_slice__(slice_number, self.coronal_orientation, time_point)
              slice_.slice_orientation = self.coronal_orientation
          # make a copy of the slice_ so we do not modify the orignal
          slice_.original_data = slice_data
          return slice_