Skip to content

Commit c95af3e

Browse files
authored
Fix WaitGate for multiple qubits in cirq_google proto (#7189)
- WaitGate operations with multiple qubits need to specify the `num_qubits` parameter. - This PR fixes this and adds an appropriate test case.
1 parent 53d3331 commit c95af3e

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

cirq-google/cirq_google/serialization/circuit_serializer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,9 @@ def _deserialize_gate_op(
702702
total_nanos = arg_func_langs.float_arg_from_proto(
703703
operation_proto.waitgate.duration_nanos, required_arg_name=None
704704
)
705-
op = cirq.WaitGate(duration=cirq.Duration(nanos=total_nanos or 0.0))(*qubits)
705+
op = cirq.WaitGate(
706+
duration=cirq.Duration(nanos=total_nanos or 0.0), num_qubits=len(qubits)
707+
)(*qubits)
706708
elif which_gate_type == 'resetgate':
707709
dimensions_proto = operation_proto.resetgate.arguments.get('dimension', None)
708710
if dimensions_proto is not None:

cirq-google/cirq_google/serialization/circuit_serializer_test.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@ def circuit_proto(json: Dict, qubits: List[str]):
266266
{'waitgate': {'duration_nanos': {'float_value': 15}}, 'qubit_constant_index': [0]}
267267
),
268268
),
269+
(
270+
cirq.WaitGate(duration=cirq.Duration(nanos=15), num_qubits=2)(Q0, Q1),
271+
op_proto(
272+
{'waitgate': {'duration_nanos': {'float_value': 15}}, 'qubit_constant_index': [0, 1]}
273+
),
274+
),
269275
(
270276
cirq.R(Q0),
271277
op_proto(

0 commit comments

Comments
 (0)