def set_functions(self,  f='<STR_LIT>', p='<STR_LIT>', c=None, bg=None, **kwargs):
<EOL>self._pnames    = []<EOL>self._cnames    = []<EOL>self._pguess    = []<EOL>self._constants = []<EOL>self._globals.update(kwargs)<EOL>self._f_raw  = f<EOL>self._bg_raw = bg<EOL>if c:<EOL><INDENT>for s in c.split('<STR_LIT:U+002C>'):<EOL><INDENT>s = s.split('<STR_LIT:=>')<EOL>self._cnames.append(s[<NUM_LIT:0>].strip())<EOL>if len(s) > <NUM_LIT:1>: self._constants.append(float(s[<NUM_LIT:1>]))<EOL>else:          self._constants.append(<NUM_LIT:1.0>)<EOL><DEDENT><DEDENT>for s in p.split('<STR_LIT:U+002C>'):<EOL><INDENT>s = s.split('<STR_LIT:=>')<EOL>self._pnames.append(s[<NUM_LIT:0>].strip())<EOL>if len(s) > <NUM_LIT:1>: self._pguess.append(float(s[<NUM_LIT:1>]))<EOL>else:          self._pguess.append(<NUM_LIT:1.0>)<EOL><DEDENT>self._update_functions()<EOL>if self['<STR_LIT>']: self.plot()<EOL>return self<EOL>
Sets the function(s) used to describe the data.

Parameters
----------
f=['a*x*cos(b*x)+c', 'a*x+c']  
    This can be a string function, a defined function
    my_function(x,a,b), or a list of some combination
    of these two types of objects. The length of such
    a list must be equal to the number of data sets
    supplied to the fit routine.
p='a=1.5, b'    
    This must be a comma-separated string list of
    parameters used to fit. If an initial guess value is
    not specified, 1.0 will be used.
    If a function object is supplied, it is assumed that
    this string lists the parameter names in order.
c=None          
    Fit _constants; like p, but won't be allowed to float
    during the fit. This can also be None.
bg=None         
    Can be functions in the same format as f describing a
    background (which can be subtracted during fits, etc)


Additional keyword arguments are added to the globals used when
evaluating the functions.