def gaussFit(data): # Create x-axis xaxis = np.arange(data.size) # Estimate parameters params_estimate = GaussFit.gauss_params_estimate(data) print "Estimate:", params_estimate print "Fitting" fit_params, fit_cov = GaussFit.curve_fit(GaussFit.gauss, xaxis, data, params_estimate) fit_params_error = np.sqrt(np.diag(fit_cov)) fit_results = { 'mean': fit_params[0], 'sigma': fit_params[1], 'height': fit_params[2], 'pedestal': fit_params[3], 'mean_error': fit_params_error[0], 'sigma_error': fit_params_error[1], 'height_error': fit_params_error[2], 'pedestal_error': fit_params_error[3] } return fit_results
def gaussFit(data): # Create x-axis xaxis = np.arange(data.size) # Estimate parameters params_estimate = GaussFit.gauss_params_estimate(data) print "Estimate:", params_estimate print "Fitting" fit_params, fit_cov = GaussFit.curve_fit(GaussFit.gauss, xaxis, data, params_estimate) fit_params_error = np.sqrt(np.diag(fit_cov)) #print "Final Fit(errors):",zip(fit_params,fit_params_error) #print "Covariance Matrix:",fit_cov combinedvals = zip(fit_params, fit_params_error) print "Fit Values(errors):" print "mean:", combinedvals[0], print "sigma:", combinedvals[1], print "Height:", combinedvals[2], print "Pedestal:", combinedvals[3] return fit_params, fit_params_error
def fit_gauss(mirrorpos, sharpness): """ Fit mirror position vs sharpness to a Gaussian to find optimal mirror position """ # Estimate parameters params_estimate = GaussFit.gauss_params_estimate(sharpness) # Translate mean and sigma from array index units to mirror # position units gradient = (mirrorpos[-1] - mirrorpos[0]) / float(mirrorpos.size) params_estimate[0] = mirrorpos[0] + (params_estimate[0] * gradient) params_estimate[1] = params_estimate[1] * gradient # Fit to Gaussian fit_params, fit_cov = GaussFit.curve_fit(GaussFit.gauss, mirrorpos, sharpness, params_estimate) fit_params_error = np.sqrt(np.diag(fit_cov)) # Return the fitted mean position return fit_params[0], GaussFit.gaus(mirrorpos, *fit_params)