def run(self, cxn, context):
     
     dv_args = {'output_size':self.rabi_flop.excite.output_size,
                'experiment_name': self.name,
                'window_name': 'Motional397PulseWidth',
                'dataset_name': 'pulse_width397'
                }
     scan_methods.setup_data_vault(cxn, self.save_context, dv_args)
     
     scan_param = self.parameters.Motion_Analysis.scan_pulse_width_397
     self.scan = scan_methods.simple_scan(scan_param, 'us')
     
     for i,t in enumerate(self.scan):
         should_stop = self.pause_or_stop()
         if should_stop: break
         replace = TreeDict.fromdict({
                                  'Motion_Analysis.pulse_width_397':t
                                 })
         self.rabi_flop.set_parameters(replace)
         excitation = self.rabi_flop.run(cxn, context)
         if excitation is None: break 
         submission = [t['us']]
         submission.extend([excitation])
         self.dv.add(submission, context = self.save_context)
         self.update_progress(i)
 def run(self, cxn, context):
     
     dv_args = {'output_size':self.rabi_flop.excite.output_size,
                'experiment_name': self.name,
                'window_name': 'current',
                'dataset_name': 'det_scan'
                }
     scan_methods.setup_data_vault(cxn, self.save_context, dv_args)
     
     scan_param = self.parameters.CalibrationScans.sbc_ac_stark
     self.scan = scan_methods.simple_scan(scan_param, 'kHz')
     
     for i,freq in enumerate(self.scan):
         should_stop = self.pause_or_stop()
         if should_stop: break
         replace = TreeDict.fromdict({
                                  'SidebandCooling.stark_shift':freq
                                 })
         self.rabi_flop.set_parameters(replace)
         excitation = self.rabi_flop.run(cxn, context)
         if excitation is None: break 
         submission = [freq['kHz']]
         submission.extend([excitation])
         self.dv.add(submission, context = self.save_context)
         self.update_progress(i)
 def run(self, cxn, context):
     
     dv_args = {'output_size':self.rabi_flop.excite.output_size,
                'experiment_name': self.name,
                'window_name': 'current',
                'dataset_name': '854_scan'
                }
     scan_methods.setup_data_vault(cxn, self.save_context, dv_args)
     
     scan_param = self.parameters.CalibrationScans.sbc_854_scan
     self.scan = scan_methods.simple_scan(scan_param, 'dBm')
     
     for i,ampl in enumerate(self.scan):
         should_stop = self.pause_or_stop()
         if should_stop: break
         replace = TreeDict.fromdict({
                                  'SidebandCooling.sideband_cooling_amplitude_854':ampl
                                 })
         self.rabi_flop.set_parameters(replace)
         excitation = self.rabi_flop.run(cxn, context)
         if excitation is None: break 
         submission = [ampl['dBm']]
         submission.extend([excitation])
         self.dv.add(submission, context = self.save_context)
         self.update_progress(i)
    def run(self, cxn, context):
        
        dv_args = {'output_size':self.rabi_flop.excite.output_size,
                   'experiment_name': self.name,
                   'window_name': 'current',
                   'dataset_name': 'beam_position_scan'
                   }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        picomotor= self.cxn.picomotorserver
        #picomotor.mark_current_setpoint() # return point after the scan

       
        axis = int(self.parameters.CalibrationScans.position_scan_axis)
        self.scan, steps_per_move, n_steps = self.generate_scan()
                
        print 'Engine zero pos',picomotor.get_position(axis)


        # move all the way to the left side of the scan
        picomotor.relative_move(axis, -n_steps)
        time.sleep(20)
    
        print 'Engine is moving to the scan begin',picomotor.get_position(axis)
    
        for i,x in enumerate(self.scan):
            
            print 'iter' ,i,'Motor in pos: ', picomotor.get_position(axis)
                      
            excitation = self.rabi_flop.run(cxn, context)
            print excitation
            #if excitation is None:break 

            submission = [WithUnit(x*1.0, '')]
            if isinstance(excitation, np.ndarray):
                submission.extend(excitation)
            else:
                #submission.extend([excitation])
                submission.extend(excitation)
            print submission
            self.dv.add(submission, context = self.save_context)
            self.update_progress(i)

            picomotor.relative_move(axis, steps_per_move)
            time.sleep(2) # needed to allow time for communication with picomotor

            should_stop = self.pause_or_stop()
            if should_stop: break  
         

               
        print "Going back home"
        self.Moving_home(picomotor,i+1,steps_per_move,n_steps,axis)
        
        #picomotor.return_to_setpoint() # go back to where we were before scan
        #picomotor.relative_move(axis, +n_steps)
            
        time.sleep(2) # needed to allow time for communication with picomotor
        print 'Motor in pos: '
        print picomotor.get_position(axis)
    def run(self, cxn, context):

        dv_args = {'output_size':self.rabi_flop.excite.output_size,
                   'experiment_name': self.name,
                   'window_name': 'current',
                   'dataset_name': 'injection_current_scan'
                   }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        scan_param = self.parameters.CalibrationScans.current_scan
        self.scan = scan_methods.simple_scan(scan_param, 'V')
        frequency = self.get_frequency()
        cs = self.parameters.CalibrationScans
        for i, v in  enumerate(self.scan):
            should_stop = self.pause_or_stop()
            if should_stop: break
            replace = TreeDict.fromdict({
                                     'RabiFlopping.frequency_selection':'manual',
                                     'RabiFlopping.manual_frequency_729':frequency,
                                     'RabiFlopping_Sit.sit_on_excitation': cs.excitation_time,
                                    })
            self.rabi_flop.set_parameters(replace)
            self.dac.set_individual_analog_voltages([('06', v['V'])])
            time.sleep(2) # time to make sure the current gets set from the dac

            excitation = self.rabi_flop.run(cxn, context)
            if excitation is None: break 
            submission = [v['V']]
            submission.extend([excitation])
            self.dv.add(submission, context = self.save_context)
            self.update_progress(i)
Exemplo n.º 6
0
    def run(self, cxn, context):
        
        dv_args = {'output_size':3,
                   'experiment_name': self.name,
                   'window_name': 'current',
                   'dataset_name': 'Two_Line_Rabi_Flop'
                   }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)
        
        scan_param = self.parameters.RabiFlopping.manual_scan
        self.scan = scan_methods.simple_scan(scan_param, 'us')
        
        for i,duration in enumerate(self.scan):
            should_stop = self.pause_or_stop()
            if should_stop: break
            replace = TreeDict.fromdict({
                                     'RabiFlopping_Sit.sit_on_excitation':duration,
                                     'RabiFlopping.frequency_selection':'auto',
                                     'RabiFlopping.sideband_selection':[0,0,0,0],
                                     'RabiFlopping.line_selection':'S-1/2D-1/2'
                                    })
            self.rabi_flop.set_parameters(replace)
            excitation_delta_m0 = self.rabi_flop.run(cxn, context)
            if excitation_delta_m0 is None: break 

            replace = TreeDict.fromdict({
                                     'RabiFlopping_Sit.sit_on_excitation':duration,
                                     'RabiFlopping.frequency_selection':'auto',
                                     'RabiFlopping.sideband_selection':[0,0,0,0],
                                     'RabiFlopping.line_selection':'S-1/2D-3/2'
                                    })
            self.rabi_flop.set_parameters(replace)
            excitation_delta_m1 = self.rabi_flop.run(cxn, context)
            if excitation_delta_m1 is None: break 

            replace = TreeDict.fromdict({
                                     'RabiFlopping_Sit.sit_on_excitation':duration,
                                     'RabiFlopping.frequency_selection':'auto',
                                     'RabiFlopping.sideband_selection':[0,0,0,0],
                                     'RabiFlopping.line_selection':'S-1/2D-5/2'
                                    })
            self.rabi_flop.set_parameters(replace)
            excitation_delta_m2 = self.rabi_flop.run(cxn, context)
            if excitation_delta_m2 is None: break 

            submission = [duration['us']]
            submission.extend([excitation_delta_m0, excitation_delta_m1, excitation_delta_m2])
            
            self.dv.add(submission, context = self.save_context)
            self.update_progress(i)
Exemplo n.º 7
0
    def run(self, cxn, context):

        dv_args = {
            'output_size': self.rabi_flop.excite.output_size,
            'experiment_name': self.name,
            'window_name': 'RabiExcitationContinuous',
            'dataset_name': 'rabi_excitation'
        }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        while True:
            should_stop = self.pause_or_stop()
            if should_stop: break
            excitation = self.rabi_flop.run(cxn, context)
            if excitation is None: break
            t = time.time()
            submission = [t]
            submission.extend([excitation])
            self.dv.add(submission, context=self.save_context)
    def run(self, cxn, context):

        dv_args = {
            'output_size': 1,
            'experiment_name': self.name,
            'window_name': 'current',
            'dataset_name': 'Heating_Rate'
        }

        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        scan_param = self.parameters.CalibrationScans.heating_rate_scan_interval

        self.scan = scan_methods.simple_scan(scan_param, 'us')

        # randomizing scan
        shuffle(self.scan)

        for i, heat_time in enumerate(self.scan):
            #should_stop = self.pause_or_stop()
            #if should_stop: break

            replace = TreeDict.fromdict({
                'Heating.background_heating_time':
                heat_time,
                'Documentation.sequence':
                'calibrate_heating_rates',
            })

            self.calibrate_temp.set_parameters(replace)
            #self.calibrate_temp.set_progress_limits(0, 33.0)

            (rsb_ex, bsb_ex) = self.calibrate_temp.run(cxn, context)

            fac = rsb_ex / bsb_ex
            nbar = fac / (1.0 - fac)

            submission = [heat_time['us']]
            submission.extend([nbar])
            print nbar
            self.dv.add(submission, context=self.save_context)
    def run(self, cxn, context):

        dv_args = {
            "output_size": self.rabi_flop.excite.output_size,
            "experiment_name": self.name,
            "window_name": "RabiExcitationContinuous",
            "dataset_name": "rabi_excitation",
        }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        while True:
            should_stop = self.pause_or_stop()
            if should_stop:
                break
            excitation = self.rabi_flop.run(cxn, context)
            if excitation is None:
                break
            t = time.time()
            submission = [t]
            submission.extend([excitation])
            self.dv.add(submission, context=self.save_context)
    def run(self, cxn, context):

        dv_args = {'output_size': 1,
                    'experiment_name' : self.name,
                    'window_name': 'current',
                    'dataset_name' : 'Heating_Rate'
                    }

        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        scan_param = self.parameters.CalibrationScans.heating_rate_scan_interval

        self.scan = scan_methods.simple_scan(scan_param, 'us')

        # randomizing scan
        shuffle(self.scan)

        for i,heat_time in enumerate(self.scan):
            #should_stop = self.pause_or_stop()
            #if should_stop: break
       
            replace = TreeDict.fromdict({
                                    'Heating.background_heating_time':heat_time,
                                    'Documentation.sequence':'calibrate_heating_rates',
                                       })
            
            self.calibrate_temp.set_parameters(replace)
            #self.calibrate_temp.set_progress_limits(0, 33.0)
   
            (rsb_ex, bsb_ex) = self.calibrate_temp.run(cxn, context)

            fac = rsb_ex/bsb_ex
            nbar = fac/(1.0-fac)

            submission = [heat_time['us']]
            submission.extend([nbar])
            print nbar
            self.dv.add(submission, context = self.save_context)
Exemplo n.º 11
0
    def run(self, cxn, context):

        dv_args = {
            'output_size': self.rabi_flop.excite.output_size,
            'experiment_name': self.name,
            'window_name': 'current',
            'dataset_name': 'injection_current_scan'
        }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        scan_param = self.parameters.CalibrationScans.current_scan
        self.scan = scan_methods.simple_scan(scan_param, 'V')
        frequency = self.get_frequency()
        cs = self.parameters.CalibrationScans
        for i, v in enumerate(self.scan):
            should_stop = self.pause_or_stop()
            if should_stop: break
            replace = TreeDict.fromdict({
                'RabiFlopping.frequency_selection':
                'manual',
                'RabiFlopping.manual_frequency_729':
                frequency,
                'RabiFlopping_Sit.sit_on_excitation':
                cs.excitation_time,
            })
            self.rabi_flop.set_parameters(replace)
            self.dac.set_individual_analog_voltages([('06', v['V'])])
            time.sleep(
                2)  # time to make sure the current gets set from the dac

            excitation = self.rabi_flop.run(cxn, context)
            if excitation is None: break
            submission = [v['V']]
            submission.extend([excitation])
            self.dv.add(submission, context=self.save_context)
            self.update_progress(i)
Exemplo n.º 12
0
    def run(self, cxn, context):

        dv_args = {
            'output_size': self.rabi_flop.excite.output_size,
            'experiment_name': self.name,
            'window_name': 'MotionalRamseyTime',
            'dataset_name': 'ramsey_time'
        }
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        scan_param = self.parameters.Motion_Analysis.scan_ramsey_time
        self.scan = scan_methods.simple_scan(scan_param, 'us')

        for i, t in enumerate(self.scan):
            should_stop = self.pause_or_stop()
            if should_stop: break
            replace = TreeDict.fromdict({'Motion_Analysis.ramsey_time': t})
            self.rabi_flop.set_parameters(replace)
            excitation = self.rabi_flop.run(cxn, context)
            if excitation is None: break
            submission = [t['us']]
            submission.extend([excitation])
            self.dv.add(submission, context=self.save_context)
            self.update_progress(i)
    def run(self, cxn, context):
        scan_param = self.parameters.Motion_Analysis.scan_frequency

        if self.parameters.Motion_Analysis.do_radial1_scan:
            #mode = self.parameters.Motion_Analysis.sideband_selection
            mode = 'radial_frequency_1'
            self.scan = scan_methods.simple_scan(
                scan_param,
                'MHz',
                offset=self.parameters['TrapFrequencies.' + mode])

            dv_args = {
                'output_size': self.rabi_flop.excite.output_size,
                'experiment_name': self.name,
                'window_name': 'radial1',
                'dataset_name': 'exc_freq',
                'axis': self.scan,
                'send_to_current': True,
            }

            scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

            self.rabi_flop.set_progress_limits(0, 50.0)

            for i, f in enumerate(self.scan):
                should_stop = self.pause_or_stop()
                if should_stop: break
                self.agi.set_frequency(f)
                time.sleep(1)

                replace = TreeDict.fromdict({
                    #                                             'Motion_Analysis.excitation_enable':True,
                    'RabiFlopping.sideband_selection': [1, 0, 0, 0],
                })
                self.rabi_flop.set_parameters(replace)
                excitation = self.rabi_flop.run(cxn, context)
                print excitation
                if excitation is None: break
                submission = [f['MHz']]
                submission.extend([excitation])
                self.dv.add(submission, context=self.save_context)
                self.update_progress(i)

            self.rabi_flop.save_parameters(self.dv, cxn, self.cxnlab,
                                           self.save_context)
            self.rabi_flop.finalize(cxn, context)

        # secondary scan
        if self.parameters.Motion_Analysis.do_radial2_scan:

            mode = 'radial_frequency_2'
            self.scan = scan_methods.simple_scan(
                scan_param,
                'MHz',
                offset=self.parameters['TrapFrequencies.' + mode])

            dv_args = {
                'output_size': self.rabi_flop.excite.output_size,
                'experiment_name': self.name,
                'window_name': 'radial2',
                'dataset_name': 'exc_freq',
                'axis': self.scan,
                'send_to_current': True,
            }

            scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

            self.rabi_flop.set_progress_limits(50.0, 100.0)

            for i, f in enumerate(self.scan):
                should_stop = self.pause_or_stop()
                if should_stop: break
                self.agi.set_frequency(f)
                time.sleep(1)

                replace = TreeDict.fromdict({
                    #                                             'Motion_Analysis.excitation_enable':True,
                    'RabiFlopping.sideband_selection': [0, 1, 0, 0],
                })
                self.rabi_flop.set_parameters(replace)
                excitation = self.rabi_flop.run(cxn, context)
                if excitation is None: break
                submission = [f['MHz']]
                submission.extend([excitation])
                self.dv.add(submission, context=self.save_context)
                self.update_progress(i)

            self.rabi_flop.save_parameters(self.dv, cxn, self.cxnlab,
                                           self.save_context)
            self.rabi_flop.finalize(cxn, context)
 def run(self, cxn, context):
     scan_param = self.parameters.Motion_Analysis.scan_ramsey_time
     
     
     if self.parameters.Motion_Analysis.do_radial1_scan:
         #mode = self.parameters.Motion_Analysis.sideband_selection
         self.scan = scan_methods.simple_scan(scan_param, 'us') #Creates linspace to scan over
         
         dv_args = {'output_size':self.rabi_flop.excite.output_size,
                           'experiment_name': self.name,
                           'window_name': 'ramsey',
                           'dataset_name': 'exc_freq',
                           'axis': self.scan,
                           'send_to_current': True,
                           }
                
         scan_methods.setup_data_vault(cxn, self.save_context, dv_args)
         freq=self.parameters.TrapFrequencies.radial_frequency_1+self.parameters.Motion_Analysis.ramsey_detuning
         self.rabi_flop.set_progress_limits(0, 50.0)
         
         for i,t in enumerate(self.scan):
             should_stop = self.pause_or_stop()
             if should_stop: break
             self.agi.set_frequency(freq)
             time.sleep(1)                            
             
             replace = TreeDict.fromdict({
                                          'Motion_Analysis.excitation_enable':True,
                                          'RabiFlopping.sideband_selection':[1,0,0,0],
                                          'Motion_Analysis.ramsey_time':t,
                                          })
             self.rabi_flop.set_parameters(replace)
             excitation = self.rabi_flop.run(cxn, context)
             if excitation is None: break 
             submission = [t['us']]
             submission.extend([excitation])
             self.dv.add(submission, context = self.save_context)
             self.update_progress(i)
             
         self.rabi_flop.save_parameters(self.dv, cxn, self.cxnlab, self.save_context)
         self.rabi_flop.finalize(cxn, context)
                
     # secondary scan
     if self.parameters.Motion_Analysis.do_radial2_scan:
                 
         self.scan = scan_methods.simple_scan(scan_param, 'us') #Creates linspace to scan over
                 
         dv_args = {'output_size':self.rabi_flop.excite.output_size,
                    'experiment_name': self.name,
                    'window_name': 'ramsey',
                    'dataset_name': 'exc_freq',
                    'axis': self.scan,
                    'send_to_current': True,
                    }
     
         scan_methods.setup_data_vault(cxn, self.save_context, dv_args)
         freq=self.parameters.TrapFrequencies.radial_frequency_2+self.parameters.Motion_Analysis.ramsey_detuning            
         self.rabi_flop.set_progress_limits(50.0, 100.0)
                     
         for i,t in enumerate(self.scan):
             should_stop = self.pause_or_stop()
             if should_stop: break
             self.agi.set_frequency(freq)
             time.sleep(1)
                             
             replace = TreeDict.fromdict({
                                          'Motion_Analysis.excitation_enable':True,
                                          'RabiFlopping.sideband_selection':[0,1,0,0],
                                          'Motion_Analysis.ramsey_time':t,
                                          })
             self.rabi_flop.set_parameters(replace)
             excitation = self.rabi_flop.run(cxn, context)
             if excitation is None: break 
             submission = [t['us']]
             submission.extend([excitation])
             self.dv.add(submission, context = self.save_context)
             self.update_progress(i)
             
         self.rabi_flop.save_parameters(self.dv, cxn, self.cxnlab, self.save_context)
         self.rabi_flop.finalize(cxn, context)
Exemplo n.º 15
0
    def run(self, cxn, context):
       
        dv_args = {'output_size': 1,
                    'experiment_name' : self.name,
                    'window_name': 'current',
                    'dataset_name' : 'Line_Trigger_Scan'
                    }

        scan_param = (WithUnit(2.0, 'ms'), WithUnit(16.0, 'ms'), 10)
        
        self.scan = scan_methods.simple_scan(scan_param, 'ms')
        
        scan_methods.setup_data_vault(cxn, self.save_context, dv_args)

        dt = self.parameters.DriftTracker

        original_linetrigger_state = self.pulser.line_trigger_state()
        self.pulser.line_trigger_state(True)

        # save original state of DDS 5
        dds5_state = self.dds_cw.output('5')

        self.dds_cw.output('5', True)
        time.sleep(1)

        for i,line_trigger_time in enumerate(self.scan):

            #'StateReadout.repeat_each_measurement':no_of_repeats,
            replace = TreeDict.fromdict({
                'DopplerCooling.doppler_cooling_duration':line_trigger_time,
                'Spectrum.line_selection':'S-1/2D-5/2',
                'Spectrum.sideband_selection':[0,0,0,0],
                'Spectrum.sensitivity_selection':'custom',
                'StatePreparation.sideband_cooling_enable':False,
                'StatePreparation.optical_pumping_enable':True,
                'Display.relative_frequencies':False,
                'StateReadout.use_camera_for_readout':False
                })

            self.spectrum.set_parameters(self.parameters)
            self.spectrum.set_parameters(replace)
            self.spectrum.set_progress_limits(0.0, 100.0)
        
            fr, ex = self.spectrum.run(cxn, context)

            fr = np.array(fr)
            ex = np.array(ex)
            ex = ex.flatten()
    
            # take the maximum of the line excitation
            try:
                fit_center, rsb_ex, fit_width = self.fitter.fit(fr, ex, return_all_params = True)
            except:
                fit_center = None

            submission = [line_trigger_time['ms']]
            submission.extend([ 1e3 * (fit_center - self.linecenter) ])
            self.dv.add(submission, context = self.save_context)
 

        # resetting DDS5 state
        time.sleep(1)
        #self.dds_cw.output('5', False)
        self.dds_cw.output('5', dds5_state)
        time.sleep(1)

        # set line trigger back to original state
        self.pulser.line_trigger_state(original_linetrigger_state)