@@ -262,14 +262,6 @@ def _add_gate_to_tick(
262262 symbol = symbol .symbol if hasattr (symbol , "symbol" ) else str (symbol )
263263 symbol_upper = symbol .upper ()
264264
265- # Convert locations to list, filtering out None values (placeholders for logical gates)
266- loc_list = [loc for loc in locations if loc is not None ]
267- if not loc_list :
268- # No qubit operands -- store symbol as tick-level metadata
269- # (e.g., global barriers or marker gates)
270- tick_handle .meta ("_symbol" , symbol )
271- return
272-
273265 # Serialize params for storage (handle tuples -> lists)
274266 def make_serializable (obj : object ) -> object :
275267 if isinstance (obj , tuple ):
@@ -282,6 +274,16 @@ def make_serializable(obj: object) -> object:
282274
283275 params_json = json .dumps ({k : make_serializable (v ) for k , v in params .items ()}) if params else ""
284276
277+ # Convert locations to list, filtering out None values (placeholders for logical gates)
278+ loc_list = [loc for loc in locations if loc is not None ]
279+ if not loc_list :
280+ # No qubit operands -- store symbol and params as tick-level metadata
281+ # (e.g., global barriers or marker gates)
282+ tick_handle .meta ("_symbol" , symbol )
283+ if params_json :
284+ tick_handle .meta ("_params" , params_json )
285+ return
286+
285287 # Helper to store original symbol and params in metadata (idempotent - skips if qubit already used)
286288 def add_with_symbol (
287289 method : Callable [..., object ],
@@ -757,7 +759,15 @@ def _iter_tick(
757759 if not grouped :
758760 tick_symbol = tick_obj .get_attr ("_symbol" )
759761 if tick_symbol is not None :
760- yield tick_symbol , set (), {}
762+ tick_params : JSONDict = {}
763+ tick_params_json = tick_obj .get_attr ("_params" )
764+ if tick_params_json is not None :
765+ try :
766+ tick_params = json .loads (tick_params_json )
767+ tick_params = self ._fix_json_meta (tick_params )
768+ except json .JSONDecodeError :
769+ pass
770+ yield tick_symbol , set (), tick_params
761771 return
762772
763773 # Yield grouped results
@@ -898,7 +908,7 @@ def __setitem__(self, tick: int, item: tuple[GateDict, JSONDict]) -> None:
898908 # Get qubits to discard first
899909 tick_obj = self ._inner .get_tick (actual_tick )
900910 if tick_obj is not None :
901- qubits_to_discard = list ( tick_obj .active_qubits ())
911+ qubits_to_discard = [ int ( q ) for q in tick_obj .active_qubits ()]
902912 if qubits_to_discard :
903913 self ._inner .discard (qubits_to_discard , actual_tick )
904914
@@ -926,7 +936,7 @@ def __delitem__(self, tick: int) -> None:
926936 actual_tick = tick if tick >= 0 else len (self ) + tick
927937 tick_obj = self ._inner .get_tick (actual_tick )
928938 if tick_obj is not None :
929- qubits_to_discard = list ( tick_obj .active_qubits ())
939+ qubits_to_discard = [ int ( q ) for q in tick_obj .active_qubits ()]
930940 if qubits_to_discard :
931941 self ._inner .discard (qubits_to_discard , actual_tick )
932942
0 commit comments