code: def compile(self, X, verbose=False):
          
          if self.feature >= X.shape[1]:
              raise ValueError('term requires feature {}, '\
                               'but X has only {} dimensions'\
                               .format(self.feature, X.shape[1]))
  
          if self.by is not None and self.by >= X.shape[1]:
              raise ValueError('by variable requires feature {}, '\
                               'but X has only {} dimensions'\
                               .format(self.by, X.shape[1]))
  
          if not hasattr(self, 'edge_knots_'):
              self.edge_knots_ = gen_edge_knots(X[:, self.feature],
                                                self.dtype,
                                                verbose=verbose)
          return self
docs: method to validate and prepare data-dependent parameters
  
          Parameters
          ---------
          X : array-like
              Input dataset
  
          verbose : bool
              whether to show warnings
  
          Returns
          -------
          None