docs: def _load_hdf5(self, filename, parent_level="CellpyData"):
          """Load a cellpy-file.
  
          Args:
              filename (str): Name of the cellpy file.
              parent_level (str) (optional): name of the parent level
                  (defaults to "CellpyData")
  
          Returns:
              loaded datasets (DataSet-object)
          """
  
          if not os.path.isfile(filename):
              self.logger.info(f"file does not exist: {filename}")
              raise IOError
          store = pd.HDFStore(filename)
  
          # required_keys = ['dfdata', 'dfsummary', 'fidtable', 'info']
          required_keys = ['dfdata', 'dfsummary', 'info']
          required_keys = ["/" + parent_level + "/" + _ for _ in required_keys]
  
          for key in required_keys:
              if key not in store.keys():
                  self.logger.info(f"This hdf-file is not good enough - "
                                   f"at least one key is missing: {key}")
                  raise Exception(f"OH MY GOD! At least one crucial key"
                                  f"is missing {key}!")
  
          self.logger.debug(f"Keys in current hdf5-file: {store.keys()}")
          data = DataSet()
  
          if parent_level != "CellpyData":
              self.logger.debug("Using non-default parent label for the "
                                "hdf-store: {}".format(parent_level))
  
          # checking file version
          infotable = store.select(parent_level + "/info")
          try:
              data.cellpy_file_version = \
                  self._extract_from_dict(infotable, "cellpy_file_version")
          except Exception as e:
              data.cellpy_file_version = 0
              warnings.warn(f"Unhandled exception raised: {e}")
  
          if data.cellpy_file_version < MINIMUM_CELLPY_FILE_VERSION:
              raise WrongFileVersion
  
          if data.cellpy_file_version > CELLPY_FILE_VERSION:
              raise WrongFileVersion
  
          data.dfsummary = store.select(parent_level + "/dfsummary")
          data.dfdata = store.select(parent_level + "/dfdata")
  
          try:
              data.step_table = store.select(parent_level + "/step_table")
          except Exception as e:
              self.logging.debug("could not get step_table from cellpy-file")
              data.step_table = pd.DataFrame()
              warnings.warn(f"Unhandled exception raised: {e}")
  
          try:
              fidtable = store.select(
                  parent_level + "/fidtable")  # remark! changed spelling from
              # lower letter to camel-case!
              fidtable_selected = True
          except Exception as e:
              self.logging.debug("could not get fid-table from cellpy-file")
              fidtable = []
  
              warnings.warn("no fidtable - you should update your hdf5-file")
              fidtable_selected = False
          self.logger.debug("  h5")
          # this does not yet allow multiple sets
  
          newtests = []  # but this is ready when that time comes
  
          # The infotable stores "meta-data". The follwing statements loads the
          # content of infotable and updates div. DataSet attributes.
          # Maybe better use it as dict?
  
          data = self._load_infotable(data, infotable, filename)
  
          if fidtable_selected:
              data.raw_data_files, data.raw_data_files_length = \
                  self._convert2fid_list(fidtable)
          else:
              data.raw_data_files = None
              data.raw_data_files_length = None
          newtests.append(data)
          store.close()
          # self.datasets.append(data)
          return newtests