code: def compute(self, function):
          
          try:
              func = getattr(allantools, function)
          except AttributeError:
              raise AttributeError("function must be defined in allantools")
  
          whitelisted = ["theo1", "mtie", "tierms"]
  
          if function[-3:] != "dev" and function not in whitelisted:
              # this should probably raise a custom exception type so
              # it's easier to distinguish from other bad things
              raise RuntimeError("function must be one of the 'dev' functions")
          result = func(self.inp["data"], rate=self.inp["rate"],
                        data_type=self.inp["data_type"], taus=self.inp["taus"])
          keys = ["taus", "stat", "stat_err", "stat_n"]
          result = {key: result[i] for i, key in enumerate(keys)}
          self.out = result.copy()
          self.out["stat_id"] = function
          return result
docs: Evaluate the passed function with the supplied data.
  
          Stores result in self.out.
  
          Parameters
          ----------
          function: str
              Name of the :mod:`allantools` function to evaluate
  
          Returns
          -------
          result: dict
              The results of the calculation.