code: def _read_dict(self, f):
          
          d = {}
          for k, item in f.items():
              if type(item) == h5py._hl.dataset.Dataset:
                  v = item.value
                  if type(v) == np.string_:
                      v = str(v)
                  if type(v) == str and v == "NONE":
                      d[k] = None
                  elif type(v) == str and v == "EMPTYARR":
                      d[k] = np.array([])
                  elif isinstance(v, bytes):
                      d[k] = v.decode('utf-8')
                  else:
                      d[k] = v
  
              elif k[:5] == "DICT_":
                  d[k[5:]] = self._read_dict(item)
              elif k[:5] == "LIST_":
                  tmpD = self._read_dict(item)
                  d[k[5:]] = [tmpD[str(i)] for i in range(len(tmpD))]
          return d
docs: Converts h5 groups to dictionaries