コード例 #1
0
    def __init__(self,
                 path='',
                 prefix='MM_Flux_Sideband_Rabi',
                 config_file=None,
                 use_cal=False,
                 **kwargs):
        Experiment.__init__(self,
                            path=path,
                            prefix=prefix,
                            config_file=config_file,
                            **kwargs)

        self.pulse_type = self.cfg['mm_flux_sideband_rabi']['pulse_type']

        self.mm_flux_sideband_cfg = self.cfg['mm_flux_sideband']

        if self.mm_flux_sideband_cfg['freq_step'] is not None:
            self.mm_flux_sideband_freq_pts = arange(
                self.mm_flux_sideband_cfg['start_freq'],
                self.mm_flux_sideband_cfg['stop_freq'],
                self.mm_flux_sideband_cfg['freq_step'])
        else:
            self.mm_flux_sideband_freq_pts = linspace(
                self.mm_flux_sideband_cfg['start_freq'],
                self.mm_flux_sideband_cfg['stop_freq'],
                self.mm_flux_sideband_cfg['freq_num_pts'])

        if self.cfg['pulse_info'][self.pulse_type] is None:
            print("This pulse type is not valid.")
            self.ready_to_go = False
            return

        pulse_calibrated = self.cfg['pulse_info'][
            self.pulse_type]['rabi_calibrated']

        if not pulse_calibrated:
            print("This pulse type has not been calibrated.")
            self.ready_to_go = False
            return

        self.pulse_sequence = MultimodeFluxSideBandRabiSequence(
            self.cfg['awgs'], self.cfg['mm_flux_sideband_rabi'],
            self.cfg['readout'], self.cfg['pulse_info'][self.pulse_type])
        self.pulse_sequence.build_sequence()
        self.pulse_sequence.write_sequence(os.path.join(
            self.path, 'sequences/'),
                                           prefix,
                                           upload=True)

        self.mm_flux_sideband_pts = self.pulse_sequence.mm_flux_sideband_pts
        #self.cfg['alazar']['samplesPerRecord'] = self.pulse_sequence.waveform_length
        self.cfg['alazar'][
            'recordsPerBuffer'] = self.pulse_sequence.sequence_length
        self.cfg['alazar']['recordsPerAcquisition'] = int(
            self.pulse_sequence.sequence_length *
            min(self.cfg['mm_flux_sideband']['averages'], 100))

        self.ready_to_go = True

        ### Hard coding TEK7
        self.tek7 = InstrumentManager()["TEK2"]

        return