docs: def download_channel_image(self, channel_name, plate_name,
              well_name, well_pos_y, well_pos_x,
              cycle_index=0, tpoint=0, zplane=0, correct=True, align =False):
          '''Downloads a channel image.
  
          Parameters
          ----------
          channel_name: str
              name of the channel
          plate_name: str
              name of the plate
          well_name: str
              name of the well
          well_pos_x: int
              zero-based x cooridinate of the acquisition site within the well
          well_pos_y: int
              zero-based y cooridinate of the acquisition site within the well
          cycle_index: str, optional
              zero-based cycle index (default: ``0``)
          tpoint: int, optional
              zero-based time point index (default: ``0``)
          zplane: int, optional
              zero-based z-plane index (default: ``0``)
          correct: bool, optional
              whether image should be corrected for illumination artifacts
              (default: ``True``)
  
          Note
          ----
          Image gets automatically aligned between cycles.
  
          Returns
          -------
          numpy.ndarray[numpy.uint16 or numpy.uint8]
              pixel/voxel array and filename
  
          See also
          --------
          :func:`tmserver.api.file.get_channel_image_file`
          :class:`tmlib.models.file.ChannelImageFile`
          '''
          response = self._download_channel_image(
              channel_name, plate_name, well_name, well_pos_y, well_pos_x,
              cycle_index=cycle_index, tpoint=tpoint, zplane=zplane,
              correct=correct, align = align
          )
          data = np.frombuffer(response.content, np.uint8)
          return cv2.imdecode(data, cv2.IMREAD_UNCHANGED)