def plot_laserscan(d, gv): x = d[d[:, 3] == gv, 1] y = d[d[:, 3] == gv, 2] plt.figure() plt.subplot(1, 1, 1) plt.plot(x, y) try: gx = float(raw_input('Ey?')) gy = float(raw_input('Ex?')) x1, y2 = nvlevels.get_ES_ExEy_plottable(gx, gy, np.max(y)) plt.plot(x1, y2) except: print 'could not understand input'
def plot_laserscan(d,gv): x=d[d[:,3]==gv,1] y=d[d[:,3]==gv,2] plt.figure() plt.subplot(1,1,1) plt.plot(x,y) try: gx= float(raw_input('Ey?')) gy= float(raw_input('Ex?')) x1,y2=nvlevels.get_ES_ExEy_plottable(gx,gy,np.max(y)) plt.plot(x1,y2) except: print 'could not understand input'
def run_scan(self, **kw): stabilizing_time = kw.pop('stabilizing_time', 0.01) d = qt.Data(name=self.mprefix+'_'+self.name) d.add_coordinate('Voltage (V)') d.add_coordinate('Frequency (GHz)') d.add_coordinate('Counts [Hz]') d.add_coordinate('Gate Voltage(V)') p = qt.Plot2D(d, 'ro', title='Frq (left) vs Voltage (bottom)', plottitle=self.mprefix, name='Laser Scan', clear=True, coorddim=0, valdim=1, maxtraces=1) p.add(d, 'bo', title='Counts (right) vs Frq (top)', coorddim=1, valdim=2, right=True, top=True) p.set_x2tics(True) p.set_y2tics(True) p.set_x2label('Frequency (GHz)') p.set_y2label('Counts [Hz]') if self.gate_pts>1: p3=qt.Plot3D(d, name='Laser_Scan2D', plottitle=self.mprefix, coorddims=(1,3), valdim=2, clear=True) qt.mstart() ###### HERE THE MEASUREMENT LOOP STARTS ###### for j,gv in enumerate(np.linspace(self.gate_start_voltage, self.gate_stop_voltage, self.gate_pts)): if (msvcrt.kbhit() and (msvcrt.getch() == 'c')): break self.scan_to_voltage(self.start_voltage) if not self.use_repump_during: self.repump_pulse() if self.set_gate_after_repump: self.gate_scan_to_voltage(gv) for i,v in enumerate(np.linspace(self.start_voltage, self.stop_voltage, self.pts)): if msvcrt.kbhit(): chr=msvcrt.getch() if chr=='q': break elif chr =='r': self.repump_pulse() self.set_laser_voltage(v) qt.msleep(stabilizing_time) cts = float(self.get_counts(self.integration_time)[self.counter_channel])/(self.integration_time*1e-3) frq = self.get_frequency(self.wm_channel)*self.frq_factor - self.frq_offset if frq < 0: continue d.add_data_point(v, frq, cts, gv) if np.mod(i,10)==0: p.update() if self.set_gate_after_repump: self.gate_scan_to_voltage(0.) p.update() if self.plot_strain_lines: p.set_maxtraces(2) try: from analysis.lib.nv import nvlevels Ey_line=float(raw_input('Ey line?')) #GHz Ex_line=float(raw_input('Ex line?')) #GHz lx,ly=nvlevels.get_ES_ExEy_plottable(Ex_line,Ey_line,max(d.get_data()[:,2])) tit=str('Frequency (GHz) lines: [%2.2f,%2.2f,%2.2f,%2.2f,%2.2f,%2.2f] ' % tuple(nvlevels.get_ES_ExEy(Ex_line,Ey_line))) p.add(lx,ly,right=True, top=True, title=tit) except ValueError: print 'Could not understand input for lines' pass plotsavename=os.path.splitext(d.get_filepath())[0] + ('_gate_voltage_%2.3f' % gv) + '.png' p.set_plottitle(str(os.path.splitext(d.get_filename())[0])) p.save_png(filepath=plotsavename) d.new_block() if self.gate_pts>1: p3.update() qt.mend() if self.gate_pts>1: p3.reset() qt.msleep(1) p3.save_png() np.savez(os.path.splitext(d.get_filepath())[0]+ '.npz', data=d.get_data()) d.close_file()
def run_scan(self, **kw): stabilizing_time = kw.pop("stabilizing_time", 0.01) d = qt.Data(name=self.mprefix + "_" + self.name) d.add_coordinate("Voltage (V)") d.add_coordinate("Frequency (GHz)") d.add_coordinate("Counts [Hz]") d.add_coordinate("Gate Voltage(V)") p = qt.Plot2D( d, "ro", title="Frq (left) vs Voltage (bottom)", plottitle=self.mprefix, name="Laser Scan", clear=True, coorddim=0, valdim=1, maxtraces=1, ) p.add(d, "bo", title="Counts (right) vs Frq (top)", coorddim=1, valdim=2, right=True, top=True) p.set_x2tics(True) p.set_y2tics(True) p.set_x2label("Frequency (GHz)") p.set_y2label("Counts [Hz]") if self.gate_pts > 1: p3 = qt.Plot3D(d, name="Laser_Scan2D", plottitle=self.mprefix, coorddims=(1, 3), valdim=2, clear=True) qt.mstart() ####### for j, gv in enumerate(np.linspace(self.gate_start_voltage, self.gate_stop_voltage, self.gate_pts)): if msvcrt.kbhit() and (msvcrt.getch() == "c"): break prev_v = v = self.scan_to_frequency(self.start_frequency) self.set_laser_power(self.laser_power) if not self.use_repump_during: self.repump_pulse() if self.set_gate: self.gate_scan_to_voltage(gv) i = 0 while (v < self.max_v) and (v > self.min_v): i = i + 1 if msvcrt.kbhit(): chr = msvcrt.getch() if chr == "q": break elif chr == "r": self.repump_pulse() v = prev_v - self.v_step prev_v = v self.set_laser_voltage(v) qt.msleep(stabilizing_time) cts = float(self.get_counts(self.integration_time)[self.counter_channel]) / ( self.integration_time * 1e-3 ) frq = self.get_frequency(self.wm_channel) * self.frq_factor - self.frq_offset if frq < 0: print "WARNING: WM gives frq", frq continue d.add_data_point(v, frq, cts, gv) if np.mod(i, 10) == 0: p.update() if frq > self.stop_frequency: break self.set_laser_power(0) if self.set_gate_to_zero_before_repump: self.gate_scan_to_voltage(0.0) p.update() if self.plot_strain_lines: p.set_maxtraces(2) try: from analysis.lib.nv import nvlevels Ey_line = float(raw_input("Ey line?")) # GHz Ex_line = float(raw_input("Ex line?")) # GHz lx, ly = nvlevels.get_ES_ExEy_plottable(Ex_line, Ey_line, max(d.get_data()[:, 2])) tit = str( "Frequency (GHz) lines: [%2.2f,%2.2f,%2.2f,%2.2f,%2.2f,%2.2f] " % tuple(nvlevels.get_ES_ExEy(Ex_line, Ey_line)) ) p.add(lx, ly, right=True, top=True, title=tit) except ValueError: print "Could not understand input for lines" pass plotsavename = os.path.splitext(d.get_filepath())[0] + ("_gate_voltage_%2.3f" % gv) + ".png" p.set_plottitle(str(os.path.splitext(d.get_filename())[0])) p.save_png(filepath=plotsavename) d.new_block() if self.gate_pts > 1: p3.update() qt.mend() if self.gate_pts > 1: p3.reset() qt.msleep(1) p3.save_png() np.savez(os.path.splitext(d.get_filepath())[0] + ".npz", data=d.get_data()) d.close_file()
def run_scan(self, **kw): stabilizing_time = kw.pop('stabilizing_time', 0.01) d = qt.Data(name=self.mprefix + '_' + self.name) d.add_coordinate('Voltage (V)') d.add_coordinate('Frequency (GHz)') d.add_coordinate('Counts [Hz]') d.add_coordinate('Gate Voltage(V)') p = qt.Plot2D(d, 'ro', title='Frq (left) vs Voltage (bottom)', plottitle=self.mprefix, name='Laser Scan', clear=True, coorddim=0, valdim=1, maxtraces=1) p.add(d, 'bo', title='Counts (right) vs Frq (top)', coorddim=1, valdim=2, right=True, top=True) p.set_x2tics(True) p.set_y2tics(True) p.set_x2label('Frequency (GHz)') p.set_y2label('Counts [Hz]') if self.gate_pts > 1: p3 = qt.Plot3D(d, name='Laser_Scan2D', plottitle=self.mprefix, coorddims=(1, 3), valdim=2, clear=True) qt.mstart() ###### for j, gv in enumerate( np.linspace(self.gate_start_voltage, self.gate_stop_voltage, self.gate_pts)): if (msvcrt.kbhit() and (msvcrt.getch() == 'c')): break self.scan_to_voltage(self.start_voltage) if not self.use_repump_during: self.repump_pulse() if self.set_gate: self.gate_scan_to_voltage(gv) for i, v in enumerate( np.linspace(self.start_voltage, self.stop_voltage, self.pts)): if msvcrt.kbhit(): chr = msvcrt.getch() if chr == 'q': break elif chr == 'r': self.repump_pulse() self.set_laser_voltage(v) qt.msleep(stabilizing_time) cts = float( self.get_counts(self.integration_time)[ self.counter_channel]) / (self.integration_time * 1e-3) frq = self.get_frequency( self.wm_channel) * self.frq_factor - self.frq_offset if frq < 0: print 'WARNING: WM gives frq', frq continue d.add_data_point(v, frq, cts, gv) if np.mod(i, 10) == 0: p.update() if self.set_gate_to_zero_before_repump: self.gate_scan_to_voltage(0.) p.update() if self.plot_strain_lines: p.set_maxtraces(2) try: from analysis.lib.nv import nvlevels Ey_line = float(raw_input('Ey line?')) #GHz Ex_line = float(raw_input('Ex line?')) #GHz lx, ly = nvlevels.get_ES_ExEy_plottable( Ex_line, Ey_line, max(d.get_data()[:, 2])) tit = str( 'Frequency (GHz) lines: [%2.2f,%2.2f,%2.2f,%2.2f,%2.2f,%2.2f] ' % tuple(nvlevels.get_ES_ExEy(Ex_line, Ey_line))) p.add(lx, ly, right=True, top=True, title=tit) except ValueError: print 'Could not understand input for lines' pass plotsavename = os.path.splitext( d.get_filepath())[0] + ('_gate_voltage_%2.3f' % gv) + '.png' p.set_plottitle(str(os.path.splitext(d.get_filename())[0])) p.save_png(filepath=plotsavename) d.new_block() if self.gate_pts > 1: p3.update() qt.mend() if self.gate_pts > 1: p3.reset() qt.msleep(1) p3.save_png() np.savez(os.path.splitext(d.get_filepath())[0] + '.npz', data=d.get_data()) d.close_file()
def laserscan(dataname=mname, start_v = start_v, stop_v = stop_v, steps = steps, pxtime = pxtime, #ms green_during = green_during, green_before = green_before, red_during= red_during, f_offset = f_offset, # GHz mw = mw, # True amp = amp, mw_power = mw_power, mw_frq = mw_frq, LT2 = LT2, gate_phase_locking=gate_phase_locking, #has no effect if measuring LT1 #SO LEAVE IT AT 1 good_phase=good_phase, do_smooth = do_smooth, plot_strain_lines=plot_strain_lines): if LT2: ins_adwin = qt.instruments['adwin'] ins_laser_scan = qt.instruments['laser_scan'] ins_mw = qt.instruments['SMB100'] ins_adwin.set_linescan_var(set_phase_locking_on=gate_phase_locking, set_gate_good_phase=good_phase) ins_green=qt.instruments['GreenAOM'] ins_newfocus=qt.instruments['NewfocusAOM'] else: ins_adwin = qt.instruments['adwin_lt1'] ins_laser_scan = qt.instruments['laser_scan_lt1'] ins_mw = qt.instruments['SMB100_lt1'] ins_green=qt.instruments['GreenAOM_lt1'] ins_newfocus=qt.instruments['NewfocusAOM_lt1'] ins_laser_scan.set_StartVoltage(start_v) ins_laser_scan.set_StopVoltage(stop_v) ins_laser_scan.set_ScanSteps(steps) ins_laser_scan.set_IntegrationTime(pxtime) ins_running = True step = 0 #_before_voltages = ins_adwin.get_dac_voltages(['green_aom','newfocus_aom']) #FIXME NEED A CONDITION FOR WHEN THE Newfocus IS ONE THE AWG. ins_green.set_power(green_before) qt.msleep(1) ins_newfocus.set_power(red_during) ins_green.set_power(green_during) ins_adwin.set_dac_voltage(('gate',gate_voltage_during)) #make sure microwaves are off ins_mw.set_status('off') if mw: ins_mw.set_iq('off') ins_mw.set_pulm('off') ins_mw.set_power(mw_power) ins_mw.set_frequency(mw_frq) ins_mw.set_status('on') qt.mstart() qt.Data.set_filename_generator(data.DateTimeGenerator()) d = qt.Data(name=dataname) d.add_coordinate('voltage [V]') d.add_value('frequency [GHz]') d.add_value('counts') d.create_file() p_f = qt.Plot2D(d, 'rO', name='frequency', coorddim=0, valdim=1, clear=True) p_c = qt.Plot2D(d, 'bO', name='counts', coorddim=1, valdim=2, clear=True) # go manually to initial position ins_adwin.set_dac_voltage(('newfocus_frq',start_v)) qt.msleep(1) print 'starting scan' ins_laser_scan.start_scan() qt.msleep(1) timer_id=gobject.timeout_add(abort_check_time,check_for_abort,ins_laser_scan) while(ins_running): ins_running = not ins_laser_scan.get_TraceFinished() _step = ins_laser_scan.get_CurrentStep() qt.msleep(0.3) if _step > step: _v = ins_laser_scan.get_voltages()[step:_step] _f = ins_laser_scan.get_frequencies()[step:_step] - f_offset _c = ins_laser_scan.get_counts()[step:_step] # print _v,_f,_c _valid_elmnts=(_f>0) _v=_v[_valid_elmnts] _f=_f[_valid_elmnts] _c=_c[_valid_elmnts] if not(len(_v) == 0): if len(_v) == 1: _v = _v[0] _f = _f[0] _c = _c[0] d.add_data_point(_v,_f,_c) step = _step p_f.update() p_c.update() ins_laser_scan.end_scan() gobject.source_remove(timer_id) #ins_adwin.set_dac_voltage(['green_aom',_before_voltages[0]]) #ins_adwin.set_dac_voltage(['newfocus_aom',_before_voltages[1]]) if mw: ins_mw.set_status('off') qt.mend() pfsave=p_f pcsave=p_c if do_smooth: basepath = d.get_filepath()[:-4] ds = qt.Data() ds.set_filename_generator(data.IncrementalGenerator(basepath)) ds.add_coordinate('voltage [V]') ds.add_value('smoothed frequency [GHz]') ds.add_value('counts') ds.create_file() p_fs = qt.Plot2D(ds, 'r-', name='frequency smoothed', coorddim=0, valdim=1, clear=True) p_cs = qt.Plot2D(ds, 'b-', name='counts smoothed', coorddim=1, valdim=2, clear=True) ds.add_data_point(d.get_data()[:,0], rolling_avg(d.get_data()[:,1]), d.get_data()[:,2]) ds.close_file() pfsave=p_fs pcsave=p_cs if plot_strain_lines: try: from analysis.lib.nv import nvlevels Ey_line=float(raw_input('Ey line?')) #GHz Ex_line=float(raw_input('Ex line?')) #GHz lx,ly=nvlevels.get_ES_ExEy_plottable(Ex_line,Ey_line,max(d.get_data()[:,2])) pcsave.add(lx,ly) except ValueError: print 'Could not understand input for lines' pass pfsave.save_png() pcsave.save_png() d.close_file() qt.Data.set_filename_generator(data.DateTimeGenerator()) if LT2: ins_adwin.set_linescan_var(set_phase_locking_on=0, set_gate_good_phase=0) ins_newfocus.set_power(0) ins_adwin.set_dac_voltage(('gate',gate_voltage_after)) ins_green.set_power(green_before)
def laserscan( dataname=mname, start_v=start_v, stop_v=stop_v, steps=steps, pxtime=pxtime, #ms green_during=green_during, green_before=green_before, red_during=red_during, f_offset=f_offset, # GHz mw=mw, # True amp=amp, mw_power=mw_power, mw_frq=mw_frq, LT2=LT2, gate_phase_locking=gate_phase_locking, #has no effect if measuring LT1 #SO LEAVE IT AT 1 good_phase=good_phase, do_smooth=do_smooth, plot_strain_lines=plot_strain_lines): if LT2: ins_adwin = qt.instruments['adwin'] ins_laser_scan = qt.instruments['laser_scan'] ins_mw = qt.instruments['SMB100'] ins_adwin.set_linescan_var(set_phase_locking_on=gate_phase_locking, set_gate_good_phase=good_phase) ins_green = qt.instruments['GreenAOM'] ins_newfocus = qt.instruments['NewfocusAOM'] else: ins_adwin = qt.instruments['adwin_lt1'] ins_laser_scan = qt.instruments['laser_scan_lt1'] ins_mw = qt.instruments['SMB100_lt1'] ins_green = qt.instruments['GreenAOM_lt1'] ins_newfocus = qt.instruments['NewfocusAOM_lt1'] ins_laser_scan.set_StartVoltage(start_v) ins_laser_scan.set_StopVoltage(stop_v) ins_laser_scan.set_ScanSteps(steps) ins_laser_scan.set_IntegrationTime(pxtime) ins_running = True step = 0 #_before_voltages = ins_adwin.get_dac_voltages(['green_aom','newfocus_aom']) #FIXME NEED A CONDITION FOR WHEN THE Newfocus IS ONE THE AWG. ins_green.set_power(green_before) qt.msleep(1) ins_newfocus.set_power(red_during) ins_green.set_power(green_during) ins_adwin.set_dac_voltage(('gate', gate_voltage_during)) #make sure microwaves are off ins_mw.set_status('off') if mw: ins_mw.set_iq('off') ins_mw.set_pulm('off') ins_mw.set_power(mw_power) ins_mw.set_frequency(mw_frq) ins_mw.set_status('on') qt.mstart() qt.Data.set_filename_generator(data.DateTimeGenerator()) d = qt.Data(name=dataname) d.add_coordinate('voltage [V]') d.add_value('frequency [GHz]') d.add_value('counts') d.create_file() p_f = qt.Plot2D(d, 'rO', name='frequency', coorddim=0, valdim=1, clear=True) p_c = qt.Plot2D(d, 'bO', name='counts', coorddim=1, valdim=2, clear=True) # go manually to initial position ins_adwin.set_dac_voltage(('newfocus_frq', start_v)) qt.msleep(1) print 'starting scan' ins_laser_scan.start_scan() qt.msleep(1) timer_id = gobject.timeout_add(abort_check_time, check_for_abort, ins_laser_scan) while (ins_running): ins_running = not ins_laser_scan.get_TraceFinished() _step = ins_laser_scan.get_CurrentStep() qt.msleep(0.3) if _step > step: _v = ins_laser_scan.get_voltages()[step:_step] _f = ins_laser_scan.get_frequencies()[step:_step] - f_offset _c = ins_laser_scan.get_counts()[step:_step] # print _v,_f,_c _valid_elmnts = (_f > 0) _v = _v[_valid_elmnts] _f = _f[_valid_elmnts] _c = _c[_valid_elmnts] if not (len(_v) == 0): if len(_v) == 1: _v = _v[0] _f = _f[0] _c = _c[0] d.add_data_point(_v, _f, _c) step = _step p_f.update() p_c.update() ins_laser_scan.end_scan() gobject.source_remove(timer_id) #ins_adwin.set_dac_voltage(['green_aom',_before_voltages[0]]) #ins_adwin.set_dac_voltage(['newfocus_aom',_before_voltages[1]]) if mw: ins_mw.set_status('off') qt.mend() pfsave = p_f pcsave = p_c if do_smooth: basepath = d.get_filepath()[:-4] ds = qt.Data() ds.set_filename_generator(data.IncrementalGenerator(basepath)) ds.add_coordinate('voltage [V]') ds.add_value('smoothed frequency [GHz]') ds.add_value('counts') ds.create_file() p_fs = qt.Plot2D(ds, 'r-', name='frequency smoothed', coorddim=0, valdim=1, clear=True) p_cs = qt.Plot2D(ds, 'b-', name='counts smoothed', coorddim=1, valdim=2, clear=True) ds.add_data_point(d.get_data()[:, 0], rolling_avg(d.get_data()[:, 1]), d.get_data()[:, 2]) ds.close_file() pfsave = p_fs pcsave = p_cs if plot_strain_lines: try: from analysis.lib.nv import nvlevels Ey_line = float(raw_input('Ey line?')) #GHz Ex_line = float(raw_input('Ex line?')) #GHz lx, ly = nvlevels.get_ES_ExEy_plottable(Ex_line, Ey_line, max(d.get_data()[:, 2])) pcsave.add(lx, ly) except ValueError: print 'Could not understand input for lines' pass pfsave.save_png() pcsave.save_png() d.close_file() qt.Data.set_filename_generator(data.DateTimeGenerator()) if LT2: ins_adwin.set_linescan_var(set_phase_locking_on=0, set_gate_good_phase=0) ins_newfocus.set_power(0) ins_adwin.set_dac_voltage(('gate', gate_voltage_after)) ins_green.set_power(green_before)