def rabiFit(t, x): from analysis.fitting import Cosinus_phase, Cosinus_phaseEstimator, fit parameters = Cosinus_phaseEstimator(t, x) fitParameters = fit(t, x, Cosinus_phase, parameters) print "Period = %f and frequency = %f " % (fitParameters[2], fitParameters[2]**(-1) * 1e9) return Cosinus_phase(*fitParameters)
def fit_z(self): if self.fit_method_z == 'Maximum': zp = self.Z[self.data_z.argmax()] self.zfit = zp return zp elif self.fit_method_z == 'Gaussian': x = self.Z y = self.data_z def GaussianEstimator(x, y): n = len(x) dx = np.abs(x[1] - x[0]) c = y.min() center = x[y.argmax()] amp = y.max() - c integral = (y.sum() - n * c) * dx width = integral / amp * (2 * np.pi)**-0.5 return c, amp, center, width p = fit(x, y, Gaussian, GaussianEstimator) self.zfit_p = p offset, amp, center, width = p self.zfit = center self.zfit_ind = center self.zfit_val = Gaussian(*p)(center) self.data_fit_z = Gaussian(*p)(x) elif self.fit_method_z == 'Spline': from scipy.interpolate import UnivariateSpline sort_map = self.Z.argsort() x = self.Z[sort_map] y = self.data_z[sort_map] x1 = x[::2] y1 = y[::2] x2 = x[1::2] y2 = y[1::2] s1 = UnivariateSpline(x1, y1, k=3, s=self.smoothing) s2 = UnivariateSpline(x2, y2, k=3, s=self.smoothing) ind1 = s1(x1).argmax() ind2 = s2(x2).argmax() x0 = 0.5 * (x1[ind1] + x2[ind2]) y0 = 0.5 * (y1[ind1] + y2[ind2]) center = x0 self.zfit = x0 self.zfit_ind = x0 self.zfit_val = y0 self.data_fit_z = 0.5 * (s1(self.Z) + s2(self.Z)) else: raise ValueError('Unknown fit method') return center
def hahnFit(t, x): from analysis.fitting import fit parameters = Cosinus_phaseEstimator(t, x) fitParameters = fit(t, x, cosinusExp, parameters) print "T1 = %f " % (fitParameters[-1]) return cosinusExp(*fitParameters)