code: def get_data(self, *, save_data=False, data_filter=None, redownload=False, max_threads=None,
                   raise_download_errors=True):
          
          self._preprocess_request(save_data, True)
          data_list = self._execute_data_download(data_filter, redownload, max_threads, raise_download_errors)
          return self._add_saved_data(data_list, data_filter, raise_download_errors)
docs: Get requested data either by downloading it or by reading it from the disk (if it
          was previously downloaded and saved).
  
          :param save_data: flag to turn on/off saving of data to disk. Default is ``False``.
          :type save_data: bool
          :param redownload: if ``True``, download again the requested data even though it's already saved to disk.
                              Default is ``False``, do not download if data is already available on disk.
          :type redownload: bool
          :param data_filter: Used to specify which items will be returned by the method and in which order. E.g. with
              ``data_filter=[0, 2, -1]`` the method will return only 1st, 3rd and last item. Default filter is ``None``.
          :type data_filter: list(int) or None
          :param max_threads: number of threads to use when downloading data; default is ``max_threads=None`` which
              by default uses the number of processors on the system
          :type max_threads: int
          :param raise_download_errors: If ``True`` any error in download process should be raised as
              ``DownloadFailedException``. If ``False`` failed downloads will only raise warnings and the method will
              return list with ``None`` values in places where the results of failed download requests should be.
          :type raise_download_errors: bool
          :return: requested images as numpy arrays, where each array corresponds to a single acquisition and has
                      shape ``[height, width, channels]``.
          :rtype: list of numpy arrays