code: def curve_fit(self):
          
          if not hasattr(self,'_curve_fit'):
              options = self.options.copy()
              fit_function = options.pop('fit_function')
              independent_values = self.data.array[0]
              dependent_values = self.data.array[1]
  
              if fit_function == 'lmfit':
                  self._curve_fit = lmfit.minimize(
                      self.lmfit_fcn2min, self.lmfit_parameters,
                      args=(independent_values, dependent_values, self.data.error), **options)
              else:
                  p0 = [ prefix_factor(param) * param['guess'] for param in self.fitting_parameters ]
                  self._curve_fit = fit_function(
                      self.function, independent_values, dependent_values, p0, **options)
  
          return self._curve_fit
docs: Fits `scipy_data_fitting.Fit.function` to the data and returns
          the output from the specified curve fit function.
  
          See `scipy_data_fitting.Fit.options` for details on how to control
          or override the the curve fitting algorithm.