Example #1
0
    def test_spectroscopy_analysis_hanger_model(self):

        a = ma.Homodyne_Analysis(timestamp='20170929_174145',
                                 label='resonator_spec')
        self.assertAlmostEqual(a.fit_results.values['f0'], 7.1875, places=2)
        self.assertAlmostEqual(a.fit_results.values['Q'], 1523.119, places=1)

        a = ma.Homodyne_Analysis(timestamp='20170929_120456',
                                 label='resonator_spec')
        self.assertAlmostEqual(a.fit_results.values['f0'], 7.4942, places=2)
        self.assertAlmostEqual(a.fit_results.values['Q'], 7430.27187, places=1)
Example #2
0
 def setUpClass(self):
     self.datadir = os.path.join(pq.__path__[0], 'tests', 'test_data')
     ma.a_tools.datadir = self.datadir
     self.a_spectroscopy = ma.Homodyne_Analysis(label='resonator_scan',
                                                fitting_model='lorentzian')
     self.a_acq_delay = ma.Acquisition_Delay_Analysis(
         label='acquisition_delay_scan')
    def find_resonator_frequency(self,
                                 update=True,
                                 freqs=None,
                                 MC=None,
                                 close_fig=True):
        """
        Finds the resonator frequency by performing a heterodyne experiment
        if freqs == None it will determine a default range dependent on the
        last known frequency of the resonator.
        """
        if freqs is None:
            if self.f_RO_resonator() != 0 and self.Q_RO_resonator() != 0:
                fmin = self.f_RO_resonator() * (1 - 10 / self.Q_RO_resonator())
                fmax = self.f_RO_resonator() * (1 + 10 / self.Q_RO_resonator())
                freqs = np.linspace(fmin, fmax, 100)
            else:
                raise ValueError("Unspecified frequencies for find_resonator_"
                                 "frequency and no previous value exists")

        if MC is None:
            MC = self.MC

        self.measure_heterodyne_spectroscopy(freqs, MC, analyze=False)

        HA = ma.Homodyne_Analysis(label=self.msmt_suffix,
                                  close_fig=close_fig,
                                  fitting_model='lorentzian')
        f0 = HA.fit_results.params['f0'].value
        df0 = HA.fit_results.params['f0'].stderr
        Q = HA.fit_results.params['Q'].value
        dQ = HA.fit_results.params['Q'].stderr
        if f0 > max(freqs) or f0 < min(freqs):
            logging.warning('exracted frequency outside of range of scan')
        elif df0 > f0:
            logging.warning('resonator frequency uncertainty greater than '
                            'value')
        elif dQ > Q:
            logging.warning('resonator Q factor uncertainty greater than '
                            'value')
        elif update:  # don't update if there was trouble
            self.f_RO_resonator(f0)
            self.Q_RO_resonator(Q)
            self.heterodyne_instr.frequency(f0)
        return f0
Example #4
0
    def find_resonator_frequency(self,
                                 use_min=False,
                                 update=True,
                                 freqs=None,
                                 MC=None,
                                 close_fig=True):
        '''
        Finds the resonator frequency by performing a heterodyne experiment
        if freqs == None it will determine a default range dependent on the
        last known frequency of the resonator.
        '''
        # This snippet exists to be backwards compatible 9/2017.
        try:
            freq_res_par = self.freq_res
            freq_RO_par = self.ro_freq
        except:
            logging.warning('Rename the f_res parameter to freq_res')
            freq_res_par = self.f_res
            freq_RO_par = self.f_RO

        if freqs is None:
            f_center = freq_res_par()
            if f_center is None:
                raise ValueError('Specify "freq_res" to generate a freq span')
            f_span = 10e6
            f_step = 100e3
            freqs = np.arange(f_center - f_span / 2, f_center + f_span / 2,
                              f_step)
        self.measure_heterodyne_spectroscopy(freqs, MC, analyze=False)
        a = ma.Homodyne_Analysis(label=self.msmt_suffix, close_fig=close_fig)
        if use_min:
            f_res = a.min_frequency
        else:
            f_res = a.fit_results.params['f0'].value * 1e9  # fit converts to Hz
        if f_res > max(freqs) or f_res < min(freqs):
            logging.warning('exracted frequency outside of range of scan')
        elif update:  # don't update if the value is out of the scan range
            freq_res_par(f_res)
            freq_RO_par(f_res)
        return f_res