def test_Qubit_spectroscopy_analysis_one_peak(self):

        a = ma.Qubit_Spectroscopy_Analysis(timestamp='20170929_175516')
        self.assertAlmostEqual(a.fit_res.values['f0'] / 1e9, 6.11181, places=2)
        self.assertAlmostEqual(a.fit_res.values['kappa'] / 1e6,
                               0.332,
                               places=2)
    def test_Qubit_spectroscopy_analysis_two_peaks(self):

        a = ma.Qubit_Spectroscopy_Analysis(
            timestamp='20170929_144754', analyze_ef=True)
        self.assertAlmostEqual(a.fit_res.values['f0']/1e9, 6.11089, places=2)
        self.assertAlmostEqual(a.fit_res.values['kappa']/1e6, 17, places=0)
        self.assertAlmostEqual(
            a.fit_res.values['f0_gf_over_2']/1e9, 5.998, places=2)
        self.assertAlmostEqual(
            a.fit_res.values['kappa_gf_over_2']/1e6, 1.6, places=1)
    def measure_pulsed_spectroscopy(self, freqs, MC=None, analyze=True,
                                    return_detector=False,
                                    close_fig=True, upload=True, update=True,
                                    use_max=False):
        """
        Measure pulsed spec with the qubit.

            Accepts a manual sequence parameters, which has to be a call to a
            pulse generation allowing for alternative sequences to be played
            instead of the standard one

        """

        self.prepare_for_pulsed_spec()
        self.heterodyne_instr.get_instr()._disable_auto_seq_loading = True

        self.cw_source.get_instr().pulsemod_state.set('On')
        self.cw_source.get_instr().power.set(self.spec_pow_pulsed.get())
        self.cw_source.get_instr().on()

        if MC is None:
            MC = self.MC.get_instr()

        spec_pars, RO_pars = self.get_spec_pars()
        # Upload the AWG sequence
        sq.Pulsed_spec_seq(spec_pars, RO_pars)

        self.AWG.get_instr().start()
        if return_detector:
            return det.Heterodyne_probe(self.heterodyne_instr.get_instr())

        else:
            MC.set_sweep_function(pw.wrap_par_to_swf(
                self.cw_source.get_instr().frequency, retrieve_value=True))
            MC.set_sweep_points(freqs)
            MC.set_detector_function(
                det.Heterodyne_probe(self.heterodyne_instr.get_instr()))
            MC.run(name='pulsed-spec'+self.msmt_suffix)
            if analyze or update:
                ma_obj = ma.Qubit_Spectroscopy_Analysis(
                    auto=True, label='pulsed', close_fig=close_fig)
                if use_max:
                    f_qubit = ma_obj.peaks['peak']
                else:
                    f_qubit = ma_obj.fitted_freq
                if update:
                    self.f_qubit(f_qubit)
            self.cw_source.get_instr().off()
            return f_qubit
Example #4
0
    def find_frequency(self,
                       method='spectroscopy',
                       pulsed=False,
                       steps=[1, 3, 10, 30, 100, 300, 1000],
                       freqs=None,
                       f_span=100e6,
                       use_max=False,
                       f_step=1e6,
                       verbose=True,
                       update=True,
                       close_fig=True):
        """
        Finds the qubit frequency using either the spectroscopy or the Ramsey
        method.
        Frequency prediction is done using
        """

        if method.lower() == 'spectroscopy':
            if freqs is None:
                f_qubit_estimate = self.calculate_frequency()
                freqs = np.arange(f_qubit_estimate - f_span / 2,
                                  f_qubit_estimate + f_span / 2, f_step)
            # args here should be handed down from the top.
            self.measure_spectroscopy(freqs,
                                      pulsed=pulsed,
                                      MC=None,
                                      analyze=True,
                                      close_fig=close_fig)
            if pulsed:
                label = 'pulsed-spec'
            else:
                label = 'spectroscopy'
            analysis_spec = ma.Qubit_Spectroscopy_Analysis(label=label,
                                                           close_fig=True)

            if update:
                if use_max:
                    self.f_qubit(analysis_spec.peaks['peak'])
                else:
                    self.f_qubit(analysis_spec.fitted_freq)
                # TODO: add updating and fitting
        elif method.lower() == 'ramsey':
            return self.calibrate_frequency_ramsey(steps=steps,
                                                   verbose=verbose,
                                                   update=update,
                                                   close_fig=close_fig)
        return self.f_qubit()
 def setUpClass(self):
     self.datadir = os.path.join(pq.__path__[0], 'tests', 'test_data')
     ma.a_tools.datadir = self.datadir
     self.a_pk = ma.Qubit_Spectroscopy_Analysis(timestamp='20170412_163359')