Skip to content

Commit a3eed6b

Browse files
convert SingleQubitCliffordGate to phasedXZ during serialization (#6419)
1 parent 7da7f64 commit a3eed6b

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

cirq-google/cirq_google/serialization/circuit_serializer.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ def _serialize_gate_op(
175175
out=msg.phasedxpowgate.exponent,
176176
arg_function_language=arg_function_language,
177177
)
178-
elif isinstance(gate, cirq.PhasedXZGate):
178+
elif isinstance(gate, (cirq.PhasedXZGate, cirq.ops.SingleQubitCliffordGate)):
179+
if isinstance(gate, cirq.ops.SingleQubitCliffordGate):
180+
gate = gate.to_phased_xz_gate()
179181
arg_func_langs.float_arg_to_proto(
180182
gate.x_exponent,
181183
out=msg.phasedxzgate.x_exponent,

cirq-google/cirq_google/serialization/circuit_serializer_test.py

+13
Original file line numberDiff line numberDiff line change
@@ -668,3 +668,16 @@ def test_measurement_gate_deserialize() -> None:
668668
msg = cg.CIRCUIT_SERIALIZER.serialize(circuit)
669669

670670
assert cg.CIRCUIT_SERIALIZER.deserialize(msg) == circuit
671+
672+
673+
def test_circuit_with_cliffords():
674+
q = cirq.NamedQubit('q')
675+
circuit = cirq.Circuit(
676+
g(q) for g in cirq.ops.SingleQubitCliffordGate.all_single_qubit_cliffords
677+
)
678+
want = cirq.Circuit(
679+
g.to_phased_xz_gate()(q)
680+
for g in cirq.ops.SingleQubitCliffordGate.all_single_qubit_cliffords
681+
)
682+
msg = cg.CIRCUIT_SERIALIZER.serialize(circuit)
683+
assert cg.CIRCUIT_SERIALIZER.deserialize(msg) == want

0 commit comments

Comments
 (0)