def measure_1D2(self): ''' measure full window of vna while sweeping x_set_obj with parameters x_vec ''' if not self.x_set_obj: logging.error('axes parameters not properly set...aborting') return self._scan_1D = False self._scan_1D2 = True self._scan_2D = False self.data_complex = False if self.dirname == None: self.dirname = self.x_coordname.replace() self._file_name = '1D2_' + self.dirname if self.exp_name: self._file_name += '_' + self.exp_name self._p = Progress_Bar(len(self.x_vec),self.dirname) self._prepare_measurement_vna() if self.save_dat: self._prepare_measurement_dat_file() if self.save_hdf: self._prepare_measurement_hdf_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" qviewkit.plot(self._data_hdf.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_hdf) self._measure() self._end_measurement()
def measure_2D(self): ''' measure method to record a (averaged) VNA trace, S11 or S21 according to the setting on the VNA for all parameters x_vec in x_obj ''' if not self.x_set_obj: logging.error('axes parameters not properly set...aborting') return self._scan_1D = False self._scan_2D = True self._scan_3D = False if not self.dirname: self.dirname = self.x_coordname self._file_name = '2D_' + self.dirname.replace(' ', '').replace(',','_') if self.exp_name: self._file_name += '_' + self.exp_name self._p = Progress_Bar(len(self.x_vec),'2D VNA sweep '+self.dirname,self.vna.get_sweeptime()) self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" if self._nop < 10: qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude_midpoint', 'phase_midpoint']) else: qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) self._measure()
def measure_1D(self): ''' measure method to record a single (averaged) VNA trace, S11 or S21 according to the setting on the VNA ''' self._scan_1D = True self._scan_2D = False self._scan_3D = False if not self.dirname: self.dirname = 'VNA_tracedata' self._file_name = self.dirname.replace(' ', '').replace(',','_') if self.exp_name: self._file_name += '_' + self.exp_name self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" if self.open_qviewkit: qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) print 'recording trace...' sys.stdout.flush() qt.mstart() self.vna.avg_clear() if self.vna.get_averages() == 1 or self.vna.get_Average() == False: #no averaging self._p = Progress_Bar(1,self.dirname,self.vna.get_sweeptime()) qt.msleep(self.vna.get_sweeptime()) #wait single sweep self._p.iterate() else: #with averaging self._p = Progress_Bar(self.vna.get_averages(),self.dirname,self.vna.get_sweeptime()) if "avg_status" in self.vna.get_function_names(): for a in range(self.vna.get_averages()): while self.vna.avg_status() <= a: qt.msleep(.2) #maybe one would like to adjust this at a later point self._p.iterate() else: #old style for a in range(self.vna.get_averages()): qt.msleep(self.vna.get_sweeptime()) #wait single sweep time self._p.iterate() data_amp, data_pha = self.vna.get_tracedata() data_real, data_imag = self.vna.get_tracedata('RealImag') self._data_amp.append(data_amp) self._data_pha.append(data_pha) self._data_real.append(data_real) self._data_imag.append(data_imag) if self._fit_resonator: self._do_fit_resonator() qt.mend() self._end_measurement()
def measure_3D(self, web_visible=True): ''' measure full window of vna while sweeping x_set_obj and y_set_obj with parameters x_vec/y_vec. sweep over y_set_obj is the inner loop, for every value x_vec[i] all values y_vec are measured. optional: measure method to perform the measurement according to landscape, if set self.span is the range (in units of the vertical plot axis) data is taken around the specified funtion(s) note: make sure to have properly set x,y vectors before generating traces ''' if not self.x_set_obj or not self.y_set_obj: logging.error('axes parameters not properly set...aborting') return self._scan_1D = False self._scan_2D = False self._scan_3D = True self._scan_time = False self._measurement_object.measurement_func = 'measure_3D' self._measurement_object.x_axis = self.x_coordname self._measurement_object.y_axis = self.y_coordname self._measurement_object.z_axis = 'frequency' self._measurement_object.web_visible = web_visible if not self.dirname: self.dirname = self.x_coordname + ', ' + self.y_coordname self._file_name = '3D_' + self.dirname.replace(' ', '').replace( ',', '_') if self.exp_name: self._file_name += '_' + self.exp_name if self.progress_bar: self._p = Progress_Bar( len(self.x_vec) * len(self.y_vec), '3D VNA sweep ' + self.dirname, self.vna.get_sweeptime_averages()) self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" """only middle point in freq array is plotted vs x and y""" if self.open_qviewkit: self._qvk_process = qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) if self.landscape: self.center_freqs = np.array(self.landscape).T else: self.center_freqs = [] #load default sequence for i in range(len(self.x_vec)): self.center_freqs.append([0]) self._measure()
def measure_2D(self, web_visible=True): ''' measure method to record a (averaged) VNA trace, S11 or S21 according to the setting on the VNA for all parameters x_vec in x_obj ''' if not self.x_set_obj: logging.error('axes parameters not properly set...aborting') return if len(self.x_vec) == 0: logging.error( 'No points to measure given. Check your x vector... aborting') return self._scan_1D = False self._scan_2D = True self._scan_3D = False self._scan_time = False self._measurement_object.measurement_func = 'measure_2D' self._measurement_object.x_axis = self.x_coordname self._measurement_object.y_axis = 'frequency' self._measurement_object.z_axis = '' self._measurement_object.web_visible = web_visible if not self.dirname: self.dirname = self.x_coordname self._file_name = '2D_' + self.dirname.replace(' ', '').replace( ',', '_') if self.exp_name: self._file_name += '_' + self.exp_name if self.progress_bar: self._p = Progress_Bar(len(self.x_vec), '2D VNA sweep ' + self.dirname, self.vna.get_sweeptime_averages()) self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" if self._nop < 10: if self.open_qviewkit: self._qvk_process = qviewkit.plot( self._data_file.get_filepath(), datasets=['amplitude_midpoint', 'phase_midpoint']) else: if self.open_qviewkit: self._qvk_process = qviewkit.plot( self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) self._measure()
def measure_3D(self, web_visible = True): ''' measure full window of vna while sweeping x_set_obj and y_set_obj with parameters x_vec/y_vec. sweep over y_set_obj is the inner loop, for every value x_vec[i] all values y_vec are measured. optional: measure method to perform the measurement according to landscape, if set self.span is the range (in units of the vertical plot axis) data is taken around the specified funtion(s) note: make sure to have properly set x,y vectors before generating traces ''' if not self.x_set_obj or not self.y_set_obj: logging.error('axes parameters not properly set...aborting') return self._scan_1D = False self._scan_2D = False self._scan_3D = True self._scan_time = False self._measurement_object.measurement_func = 'measure_3D' self._measurement_object.x_axis = self.x_coordname self._measurement_object.y_axis = self.y_coordname self._measurement_object.z_axis = 'frequency' self._measurement_object.web_visible = web_visible if not self.dirname: self.dirname = self.x_coordname + ', ' + self.y_coordname self._file_name = '3D_' + self.dirname.replace(' ', '').replace(',','_') if self.exp_name: self._file_name += '_' + self.exp_name if self.progress_bar: self._p = Progress_Bar(len(self.x_vec)*len(self.y_vec),'3D VNA sweep '+self.dirname,self.vna.get_sweeptime_averages()) self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" """only middle point in freq array is plotted vs x and y""" if self.open_qviewkit: self._qvk_process = qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) if self.landscape: self.center_freqs = np.array(self.landscape).T else: self.center_freqs = [] #load default sequence for i in range(len(self.x_vec)): self.center_freqs.append([0]) self._measure()
def measure_2D(self): ''' measure full window of vna while sweeping x_set_obj and y_set_obj with parameters x_vec/y_vec. sweep over y_set_obj is the inner loop, for every value x_vec[i] all values y_vec are measured. optional: measure method to perform the measurement according to landscape, if set self.span is the range (in units of the vertical plot axis) data is taken around the specified funtion(s) note: make sure to have properly set x,y vectors before generating traces ''' if not self.x_set_obj or not self.y_set_obj: logging.error('axes parameters not properly set...aborting') return self._scan_1D = False self._scan_1D2 = False self._scan_2D = True self.data_complex = False if self.dirname == None: self.dirname = self.x_coordname.replace() + '_' + self.y_coordname.replace() self._file_name = '2D_' + self.dirname if self.exp_name: self._file_name += '_' + self.exp_name self._p = Progress_Bar(len(self.x_vec)*len(self.y_vec),self.dirname) self._prepare_measurement_vna() if self.save_dat: self._prepare_measurement_dat_file() if self.save_hdf: self._prepare_measurement_hdf_file() if self._fit_resonator: self._resonator = resonator(self._data_hdf) if self.landscape: self.center_freqs = np.array(self.landscape).T else: self.center_freqs = [] #load default sequence for i in range(len(self.x_vec)): self.center_freqs.append([0]) self._measure() self._end_measurement()
def measure_1D(self, rescan=True, web_visible=True): ''' measure method to record a single (averaged) VNA trace, S11 or S21 according to the setting on the VNA rescan: If True (default), the averages on the VNA are cleared and a new measurement is started. If False, it will directly take the data from the VNA without waiting. ''' self._scan_1D = True self._scan_2D = False self._scan_3D = False self._scan_time = False self._measurement_object.measurement_func = 'measure_1D' self._measurement_object.x_axis = 'frequency' self._measurement_object.y_axis = '' self._measurement_object.z_axis = '' self._measurement_object.web_visible = web_visible if not self.dirname: self.dirname = 'VNA_tracedata' self._file_name = self.dirname.replace(' ', '').replace(',', '_') if self.exp_name: self._file_name += '_' + self.exp_name self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" if self.open_qviewkit: self._qvk_process = qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) print 'recording trace...' sys.stdout.flush() qt.mstart() if rescan: if self.averaging_start_ready: self.vna.start_measurement() ti = time() if self.progress_bar: self._p = Progress_Bar(self.vna.get_averages(), self.dirname, self.vna.get_sweeptime()) qt.msleep(.2) while not self.vna.ready(): if time() - ti > self.vna.get_sweeptime(query=False): if self.progress_bar: self._p.iterate() ti = time() qt.msleep(.2) if self.progress_bar: while self._p.progr < self._p.max_it: self._p.iterate() else: self.vna.avg_clear() if self.vna.get_averages() == 1 or self.vna.get_Average( ) == False: #no averaging if self.progress_bar: self._p = Progress_Bar(1, self.dirname, self.vna.get_sweeptime()) qt.msleep(self.vna.get_sweeptime()) #wait single sweep if self.progress_bar: self._p.iterate() else: #with averaging if self.progress_bar: self._p = Progress_Bar(self.vna.get_averages(), self.dirname, self.vna.get_sweeptime()) if "avg_status" in self.vna.get_function_names(): for a in range(self.vna.get_averages()): while self.vna.avg_status() <= a: qt.msleep( .2 ) #maybe one would like to adjust this at a later point if self.progress_bar: self._p.iterate() else: #old style for a in range(self.vna.get_averages()): qt.msleep(self.vna.get_sweeptime() ) #wait single sweep time if self.progress_bar: self._p.iterate() data_amp, data_pha = self.vna.get_tracedata() data_real, data_imag = self.vna.get_tracedata('RealImag') self._data_amp.append(data_amp) self._data_pha.append(data_pha) self._data_real.append(data_real) self._data_imag.append(data_imag) if self._fit_resonator: self._do_fit_resonator() qt.mend() self._end_measurement()
def measure_1D(self, rescan = True, web_visible = True): ''' measure method to record a single (averaged) VNA trace, S11 or S21 according to the setting on the VNA rescan: If True (default), the averages on the VNA are cleared and a new measurement is started. If False, it will directly take the data from the VNA without waiting. ''' self._scan_1D = True self._scan_2D = False self._scan_3D = False self._scan_time = False self._measurement_object.measurement_func = 'measure_1D' self._measurement_object.x_axis = 'frequency' self._measurement_object.y_axis = '' self._measurement_object.z_axis = '' self._measurement_object.web_visible = web_visible if not self.dirname: self.dirname = 'VNA_tracedata' self._file_name = self.dirname.replace(' ', '').replace(',','_') if self.exp_name: self._file_name += '_' + self.exp_name self._prepare_measurement_vna() self._prepare_measurement_file() """opens qviewkit to plot measurement, amp and pha are opened by default""" if self.open_qviewkit: self._qvk_process = qviewkit.plot(self._data_file.get_filepath(), datasets=['amplitude', 'phase']) if self._fit_resonator: self._resonator = resonator(self._data_file.get_filepath()) print 'recording trace...' sys.stdout.flush() qt.mstart() if rescan: if self.averaging_start_ready: self.vna.start_measurement() ti = time() if self.progress_bar: self._p = Progress_Bar(self.vna.get_averages(),self.dirname,self.vna.get_sweeptime()) qt.msleep(.2) while not self.vna.ready(): if time()-ti > self.vna.get_sweeptime(query=False): if self.progress_bar: self._p.iterate() ti = time() qt.msleep(.2) if self.progress_bar: while self._p.progr < self._p.max_it: self._p.iterate() else: self.vna.avg_clear() if self.vna.get_averages() == 1 or self.vna.get_Average() == False: #no averaging if self.progress_bar:self._p = Progress_Bar(1,self.dirname,self.vna.get_sweeptime()) qt.msleep(self.vna.get_sweeptime()) #wait single sweep if self.progress_bar: self._p.iterate() else: #with averaging if self.progress_bar: self._p = Progress_Bar(self.vna.get_averages(),self.dirname,self.vna.get_sweeptime()) if "avg_status" in self.vna.get_function_names(): for a in range(self.vna.get_averages()): while self.vna.avg_status() <= a: qt.msleep(.2) #maybe one would like to adjust this at a later point if self.progress_bar: self._p.iterate() else: #old style for a in range(self.vna.get_averages()): qt.msleep(self.vna.get_sweeptime()) #wait single sweep time if self.progress_bar: self._p.iterate() data_amp, data_pha = self.vna.get_tracedata() data_real, data_imag = self.vna.get_tracedata('RealImag') self._data_amp.append(data_amp) self._data_pha.append(data_pha) self._data_real.append(data_real) self._data_imag.append(data_imag) if self._fit_resonator: self._do_fit_resonator() qt.mend() self._end_measurement()