@@ -277,13 +277,20 @@ def generate_lists(self) -> None:
277
277
self .compensating_leverarms : list [list [float ]] = []
278
278
self .compensated_parameters : list [list [str ]] = []
279
279
self .compensating_limits : list [list ] = []
280
+ self .abstract_parameters : list [str ] = []
281
+ self .abstract_setpoints : list [list ] = []
280
282
self .groups : dict [dict ] = {}
281
283
self .buffers : set = set () # All buffers of gettable parameters
282
284
self .trigger_ins : set = set () # All trigger inputs that do not belong to buffers
283
285
self .priorities : dict = {}
286
+ self .loop : int = 0 #For usage with looped measurements
284
287
285
288
for gate , parameters in self .gate_parameters .items ():
286
289
for parameter , channel in parameters .items ():
290
+ if gate == "abstract" :
291
+ self .abstract_parameters .append ()
292
+ self .abstract_setpoints .append (self .properties [gate ][parameter ]["setpoints" ])
293
+
287
294
if self .properties [gate ][parameter ]["type" ].find ("static" ) >= 0 :
288
295
self .static_parameters .append ({"gate" : gate , "parameter" : parameter })
289
296
self .static_channels .append (channel )
@@ -302,32 +309,34 @@ def generate_lists(self) -> None:
302
309
try :
303
310
self .compensating_parameters_values .append (self .properties [gate ][parameter ]["value" ])
304
311
except KeyError as e :
305
- print (f"No value assigned for compensating parameter { self .compensating_parameters [- 1 ]} " )
312
+ print (f"No value assigned for compensating parameter \
313
+ { self .compensating_parameters [- 1 ]} " )
306
314
raise e
307
315
try :
308
316
leverarms = self .properties [gate ][parameter ]["leverarms" ]
309
- assert type (leverarms ) == list
317
+ assert isinstance (leverarms , list )
310
318
self .compensating_leverarms .append (self .properties [gate ][parameter ]["leverarms" ])
311
319
except KeyError as e :
312
320
print (f"No leverarm specified for parameters { self .compensating_parameters [- 1 ]} !" )
313
321
raise e
314
322
try :
315
- comp_list = []
323
+ comp_list = []
316
324
for entry in self .properties [gate ][parameter ]["compensated_gates" ]:
317
- assert type (entry ) == dict
318
- comp_list .append ({"gate" : entry ["terminal" ], "parameter" : entry ["parameter" ]})
325
+ assert isinstance (entry , dict )
326
+ comp_list .append ({"gate" : entry ["terminal" ],
327
+ "parameter" : entry ["parameter" ]})
319
328
self .compensated_parameters .append (comp_list )
320
329
except KeyError as e :
321
- print (
322
- f"The terminal to be compensated for with { self .compensating_parameters [- 1 ]} \
323
- is not properly specified! Make sure to define a dictionary with terminal and parameter as keys."
324
- )
330
+ print (f"The terminal to be compensated for with { self .compensating_parameters [- 1 ]} \
331
+ is not properly specified! Make sure to define a dictionary with \
332
+ terminal and parameter as keys." )
325
333
raise e
326
334
try :
327
335
limits = self .properties [gate ][parameter ]["limits" ]
328
336
self .compensating_limits .append (limits )
329
337
except KeyError as e :
330
- print (f"No limits assigned to compensating parameter { self .compensating_parameters [- 1 ]} !" )
338
+ print (f"No limits assigned to compensating parameter \
339
+ { self .compensating_parameters [- 1 ]} !" )
331
340
raise e
332
341
333
342
elif self .properties [gate ][parameter ]["type" ].find ("dynamic" ) >= 0 :
@@ -336,7 +345,8 @@ def generate_lists(self) -> None:
336
345
if self .properties [gate ][parameter ].get ("_is_triggered" , False ) and self .buffered :
337
346
if "num_points" in self .properties [gate ][parameter ].keys ():
338
347
try :
339
- assert self .properties [gate ][parameter ]["num_points" ] == self .buffered_num_points
348
+ assert self .properties [
349
+ gate ][parameter ]["num_points" ] == self .buffered_num_points
340
350
except AssertionError :
341
351
logger .warning (
342
352
f"Number of datapoints from buffer_settings\
@@ -346,7 +356,8 @@ def generate_lists(self) -> None:
346
356
)
347
357
elif "setpoints" in self .properties [gate ][parameter ].keys ():
348
358
try :
349
- assert len (self .properties [gate ][parameter ]["setpoints" ]) == self .buffered_num_points
359
+ assert len (
360
+ self .properties [gate ][parameter ]["setpoints" ]) == self .buffered_num_points
350
361
except AssertionError :
351
362
logger .warning (
352
363
f"Number of datapoints from buffer_settings\
@@ -412,7 +423,8 @@ def generate_lists(self) -> None:
412
423
if self .groups [group ]["priority" ] in self .priorities .keys ():
413
424
raise Exception ("Assigned the same priority to multiple groups" )
414
425
elif self .groups [group ]["priority" ] is None :
415
- self .groups [group ]["priority" ] = int (self .properties [gate ][parameter ]["priority" ])
426
+ self .groups [group ]["priority" ] = int (
427
+ self .properties [gate ][parameter ]["priority" ])
416
428
self .priorities [int (self .groups [group ]["priority" ])] = self .groups [group ]
417
429
else :
418
430
try :
@@ -605,13 +617,11 @@ def initialize(self, dyn_ramp_to_val=False, inactive_dyn_channels: list | None =
605
617
try :
606
618
i = self .compensating_parameters .index ({"gate" : gate , "parameter" : parameter })
607
619
leverarms = self .compensating_leverarms [i ]
608
- comped_params = copy .deepcopy (
609
- self .compensated_parameters [i ]
610
- ) # list of parameters compensated by the current parameter
620
+ comped_params = copy .deepcopy (self .compensated_parameters [i ]) #list of parameters compensated by the current parameter
611
621
comped_sweeps = [] # Sweeps that are compensated by current param
612
- comped_leverarms = [] # Leverarms of the current param
613
- comping_sweeps = [] # List to store only the sweeps for the current param
614
- k = 0
622
+ comped_leverarms = [] # Leverarms of the current param
623
+ comping_sweeps = [] # List to store only the sweeps for the current param
624
+ k = 0
615
625
for comped_param in comped_params .copy ():
616
626
# Check if the parameter is actually ramped in this part of the measurement
617
627
if comped_param in inactive_dyn_params :
@@ -621,15 +631,13 @@ def initialize(self, dyn_ramp_to_val=False, inactive_dyn_channels: list | None =
621
631
try :
622
632
comped_index = self .dynamic_parameters .index (comped_param )
623
633
except ValueError as e :
624
- logger .exception (
625
- "Watch out, there is an Exception incoming!"
626
- + "Did you try to compensate for a not dynamic parameter?"
627
- )
634
+ logger .exception ("Watch out, there is an Exception incoming!" +
635
+ "Did you try to compensate for a not dynamic parameter?" )
628
636
raise e
629
637
comped_sweeps .append (self .dynamic_sweeps [comped_index ])
630
638
comped_leverarms .append (leverarms [k ])
631
639
self .active_compensated_channels .append (self .dynamic_channels [comped_index ])
632
- k += 1
640
+ k += 1
633
641
compensating_param = self .compensating_parameters [i ]
634
642
self .active_compensating_parameters .append (compensating_param )
635
643
if len (comped_params ) > 0 :
@@ -638,34 +646,20 @@ def initialize(self, dyn_ramp_to_val=False, inactive_dyn_channels: list | None =
638
646
# Here we create lists/sweeps only containing the difference required for compensation.
639
647
# Still has to be substracted from the set value in the measurement script as this can depend
640
648
# on the measurement script used (e.g. 1D vs 2D sweeps)
641
- comping_setpoints = (
642
- - 1
643
- * float (comped_leverarms [j ])
644
- * (np .array (comped_sweeps [j ].get_setpoints ()) - comped_sweeps [j ].get_setpoints ()[0 ])
645
- )
649
+ comping_setpoints = - 1 * float (comped_leverarms [j ])* (np .array (comped_sweeps [j ].get_setpoints ()) - comped_sweeps [j ].get_setpoints ()[0 ])
646
650
# This creates an inner list of required setpoint differences only for the param that is currently iterated over!
647
651
# The final self.compensating_sweeps list will contain list for each compensating parameters with one sweep per
648
652
# parameter that is compensated by this compensating parameters.
649
- comping_sweeps .append (
650
- CustomSweep (
651
- channel ,
652
- comping_setpoints ,
653
- delay = self .properties [gate ][parameter ].setdefault ("delay" , 0 ),
654
- )
653
+ comping_sweeps .append (CustomSweep (
654
+ channel ,
655
+ comping_setpoints ,
656
+ delay = self .properties [gate ][parameter ].setdefault ("delay" , 0 ))
655
657
)
656
658
self .compensating_sweeps .append (comping_sweeps )
657
- if (
658
- any (
659
- [
660
- self .properties [param ["gate" ]][param ["parameter" ]].get ("_is_triggered" , False )
661
- for param in comped_params
662
- ]
663
- )
664
- and self .buffered
665
- ):
666
- self .properties [compensating_param ["gate" ]][compensating_param ["parameter" ]][
667
- "_is_triggered"
668
- ] = True
659
+ if any (
660
+ [self .properties [param ["gate" ]][param ["parameter" ]].get (
661
+ "_is_triggered" , False ) for param in comped_params ]) and self .buffered :
662
+ self .properties [compensating_param ["gate" ]][compensating_param ["parameter" ]]["_is_triggered" ] = True
669
663
# TODO: This part has to be moved into the measurement script, as the final setpoints for the comping params
670
664
# are now set at the measurement script. A helper method would be nice to have.
671
665
# if min(self.compensating_sweeps[-1].get_setpoints()) < min(*self.compensating_limits[i]) or max(
@@ -680,7 +674,7 @@ def initialize(self, dyn_ramp_to_val=False, inactive_dyn_channels: list | None =
680
674
)
681
675
except ValueError as e :
682
676
raise e
683
-
677
+
684
678
if self .buffered :
685
679
for gettable_param in list (set (self .gettable_channels ) - set (self .static_gettable_channels )):
686
680
if is_bufferable (gettable_param ):
0 commit comments