From 122639a14ac3088e53e4d34fb926428111e1a673 Mon Sep 17 00:00:00 2001 From: sldesnoo-Delft <s.l.desnoo@tudelft.nl> Date: Fri, 15 Jul 2022 12:11:22 +0200 Subject: [PATCH] Fixed digitizer configuring and get_channel_data after testing with mock --- pulse_lib/keysight/M3202A_uploader.py | 16 ++++++++++++---- pulse_lib/tests/mock_m3102a.py | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/pulse_lib/keysight/M3202A_uploader.py b/pulse_lib/keysight/M3202A_uploader.py index 37215c47..6f7ecdac 100644 --- a/pulse_lib/keysight/M3202A_uploader.py +++ b/pulse_lib/keysight/M3202A_uploader.py @@ -76,7 +76,7 @@ class M3202A_Uploader: def get_num_samples(self, acquisition_channel, t_measure, sample_rate): dig_ch = self.digitizer_channels[acquisition_channel] digitizer = self.digitizers[dig_ch.module_name] - return digitizer.get_points_per_cycle(t_measure, sample_rate) + return digitizer.get_samples_per_measurement(t_measure, sample_rate) def create_job(self, sequence, index, seq_id, n_rep, sample_rate, neutralize=True, alignment=None): # TODO @@@ implement alignment @@ -174,7 +174,9 @@ class M3202A_Uploader: dig.set_active_channels(channel_nums) self.acq_description = AcqDescription(job.seq_id, job.index, channels, - job.acquisitions, enabled_channels) + job.acquisitions, enabled_channels, + job.n_rep, + job.acquisition_conf.average_repetitions) def __get_job(self, seq_id, index): @@ -293,13 +295,17 @@ class M3202A_Uploader: raw_ch = (raw_I + 1j * raw_Q) * np.exp(1j*channel.phase) else: # this can be complex valued output with LO modulation or phase shift in digitizer (FPGA) - raw_ch = dig_data[dig_name][channel.in_ch[0]] + raw_ch = dig_data[dig_name][in_ch[0]] if not channel.iq_out: raw_ch = raw_ch.real result[channel_name] = raw_ch + if not acq_desc.average_repetitions: + for key,value in result.items(): + result[key] = value.reshape((acq_desc.n_rep, -1)) + return result def release_memory(self, seq_id=None, index=None): @@ -344,7 +350,9 @@ class AcqDescription: index: List[int] channels: List[str] acquisitions: Dict[str, List[str]] - enabled_channels : Dict[str, List[int]] + enabled_channels: Dict[str, List[int]] + n_rep: int + average_repetitions: bool @dataclass class AwgQueueItem: diff --git a/pulse_lib/tests/mock_m3102a.py b/pulse_lib/tests/mock_m3102a.py index ba27e167..f66528f1 100644 --- a/pulse_lib/tests/mock_m3102a.py +++ b/pulse_lib/tests/mock_m3102a.py @@ -18,11 +18,11 @@ class MockM3102A(Instrument): def slot_number(self): return self._slot_number - def set_operation_mode(self, value): + def set_operating_mode(self, value): pass def set_active_channels(self, channel_list): - self.measure._active_channels = channel_list + self.measure._active_channels = set(channel_list) @property def active_channels(self): @@ -58,7 +58,7 @@ class ChannelProperties: class ChannelData: def __init__(self): self._active_channels = set([1,2,3,4]) - self._data = {i:[] for i in self._active_channels} + self._data = {i:None for i in self._active_channels} self._ch_properties = {i:ChannelProperties() for i in self._active_channels} def get_data(self): -- GitLab