Exemple #1
0
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)
Exemple #2
0
    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
Exemple #3
0
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)