code: def add_custom_feature(self, feature):
          
          if feature.dimension <= 0:
              raise ValueError("Dimension has to be positive. "
                               "Please override dimension attribute in feature!")
  
          if not hasattr(feature, 'transform'):
              raise ValueError("no 'transform' method in given feature")
          elif not callable(getattr(feature, 'transform')):
              raise ValueError("'transform' attribute exists but is not a method")
  
          self.__add_feature(feature)
docs: Adds a custom feature to the feature list.
  
          Parameters
          ----------
          feature : object
              an object with interface like CustomFeature (map, describe methods)