diff --git a/pulse_lib/fast_scan/qblox_fast_scans.py b/pulse_lib/fast_scan/qblox_fast_scans.py index bc1254efc7d014bc27d963b75fc1f72f0f870ae9..ca4bcf5d9a5a88d0e6df1c3d3c5facbb0ca36e37 100644 --- a/pulse_lib/fast_scan/qblox_fast_scans.py +++ b/pulse_lib/fast_scan/qblox_fast_scans.py @@ -6,7 +6,7 @@ import logging def fast_scan1D_param(pulse_lib, gate, swing, n_pt, t_step, biasT_corr=False, - acquisition_delay_ns=100, + acquisition_delay_ns=200, line_margin=0, channels=None, channel_map=None, @@ -119,7 +119,7 @@ def fast_scan1D_param(pulse_lib, gate, swing, n_pt, t_step, def fast_scan2D_param(pulse_lib, gate1, swing1, n_pt1, gate2, swing2, n_pt2, t_step, biasT_corr=True, - acquisition_delay_ns=100, + acquisition_delay_ns=200, line_margin=0, channels=None, channel_map=None, @@ -313,7 +313,8 @@ class _scan_parameter(MultiParameter): data = [] for setting in self.channel_map.values(): ch, func = setting - ch_data = raw_dict[ch] * 1000.0 # mV + # channel data already is in mV + ch_data = raw_dict[ch] data.append(func(ch_data)) # make sure that data is put in the right order. diff --git a/pulse_lib/qblox/pulsar_uploader.py b/pulse_lib/qblox/pulsar_uploader.py index 11d8058dda2676200d5ef29f511b9fa6e0bf526d..8278334651f53ff9c978e4e7a81086b667c1463b 100644 --- a/pulse_lib/qblox/pulsar_uploader.py +++ b/pulse_lib/qblox/pulsar_uploader.py @@ -269,18 +269,24 @@ class PulsarUploader: for channel_name in acq_desc.channels: scaling = acq_desc.acq_data_scaling[channel_name] + dig_ch = self.digitizer_channels[channel_name] in_ch = dig_ch.channel_numbers in_ranges = self.q1instrument.get_input_ranges(channel_name) - try: - bin_data = self.q1instrument.get_acquisition_bins(channel_name, 'default') - raw = [] - for i in range(2): - path_data = np.require(bin_data['integration'][f'path{i}'], dtype=float) - raw.append(self._scale_acq_data(path_data, in_ranges[i]/2*scaling)) - except KeyError: + if scaling is None: + # Scaling is None when there are no acquisitions. @@@ TODO make clearer code. raw = [np.zeros(0)]*2 + else: + try: + bin_data = self.q1instrument.get_acquisition_bins(channel_name, 'default') # @@@ handle timeout + raw = [] + for i in range(2): + path_data = np.require(bin_data['integration'][f'path{i}'], dtype=float) + # scale to mV values; in_range is voltage peak-peak + raw.append(self._scale_acq_data(path_data, in_ranges[i]/2*scaling*1000)) + except KeyError: + raw = [np.zeros(0)]*2 if dig_ch.frequency or len(in_ch) == 2: @@ -449,7 +455,7 @@ class SegmentRenderInfo: class UploadAggregator: - verbose = False + verbose = True def __init__(self, q1instrument, awg_channels, marker_channels, digitizer_channels, qubit_channels, awg_voltage_channels, marker_sequencers, seq_markers): diff --git a/pulse_lib/sequencer.py b/pulse_lib/sequencer.py index f2b79d8b34c5f83653d701ea892d7eea66bd7838..0ee9e21c7c9af255b87dfde348ad1166978b10ca 100644 --- a/pulse_lib/sequencer.py +++ b/pulse_lib/sequencer.py @@ -439,14 +439,18 @@ class sequencer(): def get_measurement_data(self, index=None): ''' Deprecated + Returns channel data in V (!) ''' logging.warning('get_measurement_data is deprecated. Use get_channel_data') - return self.get_channel_data(index) + return { + name:value/1000.0 + for name, value in self.get_channel_data(index).items() + } def get_channel_data(self, index=None): ''' - Returns acquisition data per channel in a 1D or 2D array. + Returns acquisition data in mV per channel in a 1D or 2D array. The array is 1D for video mode scans and 2D for single shot measurements. ''' if index is None: