def _customize_doc(cls): #cdoc_old = cls.__doc__ # Need to append documentation to __init__ method idoc_old = cls.__init__.__doc__ idoc = """ SVM/SVR definition is dependent on specifying kernel, implementation type, and parameters for each of them which vary depending on the choices made. Desired implementation is specified in `svm_impl` argument. Here is the list if implementations known to this class, along with specific to them parameters (described below among the rest of parameters), and what tasks it is capable to deal with (e.g. regression, binary and/or multiclass classification): """ # XXX Deprecate # To not confuse sphinx -- lets avoid Implementations section # %s""" % (_rst_section('Implementations'),) class NOSClass(object): """Helper -- NothingOrSomething ;) If list is not empty -- return its entries within string s """ def __init__(self): self.seen = [] def __call__(self, l, s, empty=''): if l is None or not len(l): return empty else: lsorted = list(l) lsorted.sort() self.seen += lsorted return s % (', '.join(lsorted)) NOS = NOSClass() # Describe implementations idoc += ''.join( ['\n%s%s : %s' % (_rst_indentstr, k, v[3]) + NOS(v[1], "\n" + _rst_indentstr + " Parameters: %s") + NOS(v[2], "%s" % _rst(('','\n')[int(len(v[1])>0)], '') + _rst_indentstr + " Capabilities: %s") for k,v in cls._KNOWN_IMPLEMENTATIONS.iteritems()]) # Describe kernels idoc += """ Kernel choice is specified as a kernel instance with kwargument 'kernel`. Some kernels (e.g. Linear) might allow computation of per feature sensitivity. """ # XXX Deprecate # %s""" % (_rst_section('Kernels'),) #idoc += ''.join( # ['\n%s%s' % (_rst_indentstr, k) # + ('', ' : provides sensitivity')[int(v[2] is not None)] # + '\n ' + NOS(v[1], '%s', 'No parameters') # for k,v in cls._KERNELS.iteritems()]) # Finally parameters NOS.seen += cls._KNOWN_PARAMS# + cls._KNOWN_KERNEL_PARAMS idoc += '\n' + _rst_section('Parameters') + '\n' + '\n'.join( [v._paramdoc() for k,v in cls._SVM_PARAMS.iteritems() if k in NOS.seen]) cls.__dict__['__init__'].__doc__ = handle_docstring(idoc_old) + idoc
def _customize_doc(cls): #cdoc_old = cls.__doc__ # Need to append documentation to __init__ method idoc_old = cls.__init__.__doc__ idoc = """ SVM/SVR definition is dependent on specifying kernel, implementation type, and parameters for each of them which vary depending on the choices made. Desired implementation is specified in `svm_impl` argument. Here is the list if implementations known to this class, along with specific to them parameters (described below among the rest of parameters), and what tasks it is capable to deal with (e.g. regression, binary and/or multiclass classification): """ # XXX Deprecate # To not confuse sphinx -- lets avoid Implementations section # %s""" % (_rst_section('Implementations'),) class NOSClass(object): """Helper -- NothingOrSomething ;) If list is not empty -- return its entries within string s """ def __init__(self): self.seen = [] def __call__(self, l, s, empty=''): if l is None or not len(l): return empty else: lsorted = list(l) lsorted.sort() self.seen += lsorted return s % (', '.join(lsorted)) NOS = NOSClass() # Describe implementations idoc += ''.join([ '\n%s%s : %s' % (_rst_indentstr, k, v[3]) + NOS(v[1], "\n" + _rst_indentstr + " Parameters: %s") + NOS( v[2], "%s" % _rst(('', '\n')[int(len(v[1]) > 0)], '') + _rst_indentstr + " Capabilities: %s") for k, v in cls._KNOWN_IMPLEMENTATIONS.iteritems() ]) # Describe kernels idoc += """ Kernel choice is specified as a kernel instance with kwargument 'kernel`. Some kernels (e.g. Linear) might allow computation of per feature sensitivity. """ # XXX Deprecate # %s""" % (_rst_section('Kernels'),) #idoc += ''.join( # ['\n%s%s' % (_rst_indentstr, k) # + ('', ' : provides sensitivity')[int(v[2] is not None)] # + '\n ' + NOS(v[1], '%s', 'No parameters') # for k,v in cls._KERNELS.iteritems()]) # Finally parameters NOS.seen += cls._KNOWN_PARAMS # + cls._KNOWN_KERNEL_PARAMS idoc += '\n' + _rst_section('Parameters') + '\n' + '\n'.join([ v._paramdoc() for k, v in cls._SVM_PARAMS.iteritems() if k in NOS.seen ]) cls.__dict__['__init__'].__doc__ = handle_docstring(idoc_old) + idoc