code: def load_data(self, filename, *args, **kwargs):
          
          # 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['dtype']  # raises KeyError if no 'dtype'
          # 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
          skiprows = data_param.get('skiprows')  # default is None
          data_units = data_param.get('units', {})  # default is an empty dict
          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
              # read data
              data_data = np.loadtxt(fid, dtype, delimiter=delimiter,
                                     skiprows=skiprows)
          # apply units
          data.update(_apply_units(data_data, data_units, fid.name))
          return data
docs: load data from text file.
  
          :param filename: name of text file to read
          :type filename: str
          :returns: data read from file using :func:`numpy.loadtxt`
          :rtype: dict