From c394f08fa0a605b8e5b7972a262673c8745a17e1 Mon Sep 17 00:00:00 2001 From: Runner PC Cavity Lab <johannes.schabbauer@tuwien.ac.at> Date: Fri, 7 Mar 2025 15:52:29 +0100 Subject: [PATCH] Conditional Tweezer programming: add arguments that we can pass to 'OccupationReceiver' (e.g. a target occupation) --- SpectrumAWG/blacs_workers.py | 3 ++- SpectrumAWG/labscript_devices.py | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/SpectrumAWG/blacs_workers.py b/SpectrumAWG/blacs_workers.py index aba623a..82621f3 100644 --- a/SpectrumAWG/blacs_workers.py +++ b/SpectrumAWG/blacs_workers.py @@ -72,6 +72,7 @@ class SpectrumAWGWorker(Worker): with h5py.File(h5_file,'r') as f: group = f[f"devices/{device_name}"] function_conditional_programming = group.attrs.get("function_conditional_programming", "") + function_conditional_programming_args = group.attrs.get("function_conditional_programming_args", ()) for ch in self.channels: if fresh or len(self.smart_cache)+len(group[ch].attrs) > self.memory_segments: # Reset smart programming and start writing memory from the beginning @@ -136,8 +137,8 @@ class SpectrumAWGWorker(Worker): freq = instruction[1:num_tones+1] ampl = instruction[num_tones+1:2*num_tones+1] phase= instruction[2*num_tones+1:] + self.occupation_receiver.set_function(function_conditional_programming, function_conditional_programming_args) self.occupation_receiver.last_tweezer_params(index+1, len(self.smart_cache), freq, ampl, phase, num_samples, self.sample_rate) - self.occupation_receiver.set_function(function_conditional_programming) return initial_values diff --git a/SpectrumAWG/labscript_devices.py b/SpectrumAWG/labscript_devices.py index b58c58f..84ce902 100644 --- a/SpectrumAWG/labscript_devices.py +++ b/SpectrumAWG/labscript_devices.py @@ -154,8 +154,9 @@ class SpectrumAWG(Device): internal_memory = 2**32 # 4GB self.max_sample_size = internal_memory//2//memory_segments - def set_conditional_reprogramming(self, function_name): + def set_conditional_reprogramming(self, function_name, function_args=None): self.function_conditional_programming = function_name + self.function_conditional_programming_args = function_args def do_checks(self): if len(self.child_devices)>1: @@ -174,6 +175,7 @@ class SpectrumAWG(Device): group[output.connection].require_group("labels") group.attrs["function_conditional_programming"] = getattr(self,"function_conditional_programming","") + group.attrs["function_conditional_programming_args"] = getattr(self,"function_conditional_programming_args",tuple()) for i,t in enumerate(np.sort(change_times)): group[output.connection].attrs[str(i)] = output.instructions[t][:-1] -- GitLab