docs: def load_data(self, filename, *args, **kwargs):
          """
          load data from text file.
  
          :param filename: name of file to read
          :type filename: str
          :returns: data read from file using :func:`numpy.genfromtxt`
          :rtype: dict
          :raises: :exc:`~simkit.core.exceptions.UnnamedDataError`
          """
          # header keys
          header_param = self.parameters.get('header')  # default is None
          # data keys
          data_param = self.parameters['data']  # raises KeyError if no 'data'
          dtype = data_param.get('dtype')  # default is None
          # if not None convert to tuple and normal ASCII
          _utf8_list_to_ascii_tuple(dtype) if dtype else None  # -> tuple of str
          delimiter = data_param.get('delimiter')  # default is None
          skip_header = data_param.get('skip_header')  # default is None
          usecols = data_param.get('usecols')  # default is None
          names = data_param.get('names')  # default is None
          names = [str(_) for _ in names] if names else None  # -> str
          excludelist = data_param.get('excludelist')  # default is None
          deletechars = data_param.get('deletechars')  # default is None
          data_units = data_param.get('units', {})  # default is an empty dict
          # either dtype or names must be specified
          if not (dtype or names):
              raise UnnamedDataError(filename)
          data = {}  # a dictionary for data
          # open file for reading
          with open(filename, 'r') as fid:
              # read header
              if header_param:
                  data.update(_read_header(fid, header_param))
                  fid.seek(0)  # move cursor back to beginning
              # data
              data_data = np.genfromtxt(fid, dtype, delimiter=delimiter,
                                        skip_header=skip_header, usecols=usecols,
                                        names=names, excludelist=excludelist,
                                        deletechars=deletechars)
          # apply units
          data.update(_apply_units(data_data, data_units, fid.name))
          return data