docstr: an interpolated model, generated from the given data
  
  Input:
      id: string, unique id for model instance [default: 'interp']
      data: a mystic legacydata.dataset (or callable model, y = model(x))
  
  Additional Input:
      nx: int, number of model inputs, len(x) [default: None]
      ny: int, number of model outputs, len(y) [default: None]
      rnd: bool, if False, treat the model as deterministic [default: True]
      uid: bool, if True, append a random integer in [0, 1e16] to __name__
      cached: bool, if True, use a mystic.cache [default: False]
  
  NOTE:
      any additional keyword arguments will be passed to the interpolator
  
  NOTE:
      if cached is True, the default is to create a klepto.dir_archive
      using the name of the model; alternately, an archive can be specified
      by passing an archive instance (or string name) to the cached keyword.
      
docstr_tok: ["an","interpolated","model",",","generated","from","the","given","data","Input",":","id",":","string",",","unique","id","for","model","instance","[","default",":","'interp","'","]","data",":","a","mystic","legacydata.dataset","(","or","callable","model",",","y","=","model","(","x",")",")","Additional","Input",":","nx",":","int",",","number","of","model","inputs",",","len","(","x",")","[","default",":","None","]","ny",":","int",",","number","of","model","outputs",",","len","(","y",")","[","default",":","None","]","rnd",":","bool",",","if","False",",","treat","the","model","as","deterministic","[","default",":","True","]","uid",":","bool",",","if","True",",","append","a","random","integer","in","[","0",",","1e16","]","to","__name__","cached",":","bool",",","if","True",",","use","a","mystic.cache","[","default",":","False","]","NOTE",":","any","additional","keyword","arguments","will","be","passed","to","the","interpolator","NOTE",":","if","cached","is","True",",","the","default","is","to","create","a","klepto.dir_archive","using","the","name","of","the","model",";","alternately",",","an","archive","can","be","specified","by","passing","an","archive","instance","(","or","string","name",")","to","the","cached","keyword","."]
code: def __init__(self, id=None, data=None, **kwds):
      """an interpolated model, generated from the given data
  
      Input:
          id: string, unique id for model instance [default: 'interp']
          data: a mystic legacydata.dataset (or callable model, y = model(x))
  
      Additional Input:
          nx: int, number of model inputs, len(x) [default: None]
          ny: int, number of model outputs, len(y) [default: None]
          rnd: bool, if False, treat the model as deterministic [default: True]
          uid: bool, if True, append a random integer in [0, 1e16] to __name__
          cached: bool, if True, use a mystic.cache [default: False]
  
      NOTE:
          any additional keyword arguments will be passed to the interpolator
  
      NOTE:
          if cached is True, the default is to create a klepto.dir_archive
          using the name of the model; alternately, an archive can be specified
          by passing an archive instance (or string name) to the cached keyword.
      """
      if data is None:
          msg = "a mystic legacydata.dataset (or callable model) is required"
          raise NotImplementedError(msg)
      if callable(data):
          data = _init_axis(data)  # FIXME: class method?
      self.nx = kwds.pop("nx", None)
      self.ny = kwds.pop("ny", None)  # FIXME: should rnd check noise?
      self.rnd = kwds.pop("rnd", True) and (
          bool(kwds.get("noise", True))
      )  # or callable(data) or isinstance(data, type('')))
      self.__func__ = None
  
      def bootstrap(x, axis=None):
          "an interpolated model, generated from the given data"
          return self(x, axis=axis)
  
      self.__model__ = bootstrap
      self.__kwds__ = kwds.copy()
      self.__kwds__["data"] = data
      self.__name__ = "interp" if id is None else id
      self.__model__.__name__ = self.__name__
      # self.fit() #NOTE: commented: lazy interpf, uncommented: interpf now
      # FIXME: ugly. this *must* be called *after* any subclass's init
      super(self.__class__, self).__init__(id, ok=True, **kwds)
      return
  
label_desc: Use image node_id 1 to create a new InterpModel object from inherited base classes: OUQModel with example: obj = InterpModel(id, data)