code: def slice_init(func):
      
      @wraps(func)
      def new_init(self, *args, **kwargs):
  
          apply_ind = kwargs.pop('apply_ind', None)
          if np.isscalar(apply_ind):
              apply_ind = [apply_ind]
  
          func(self, *args, **kwargs)
          self.apply_ind = apply_ind
  
      return new_init
docs: Decorator for adding partial application functionality to a basis object.
  
      This will add an "apply_ind" argument to a basis object initialiser that
      can be used to apply the basis function to only the dimensions specified in
      apply_ind. E.g.,
  
      >>> X = np.ones((100, 20))
      >>> base = LinearBasis(onescol=False, apply_ind=slice(0, 10))
      >>> base.transform(X).shape
      (100, 10)