Skip to content

Commit 793e005

Browse files
committed
Remove global gateset references
1 parent 90ecbe6 commit 793e005

File tree

6 files changed

+123
-179
lines changed

6 files changed

+123
-179
lines changed

cirq-google/cirq_google/calibration/phased_fsim_test.py

+46-47
Original file line numberDiff line numberDiff line change
@@ -222,55 +222,54 @@ def test_floquet_to_calibration_layer_with_measure_qubits():
222222

223223

224224
def test_xeb_to_calibration_layer():
225-
with cirq.testing.assert_deprecated('SerializableGateSet', deadline='v0.16', count=None):
226-
q_00, q_01, q_02, q_03 = [cirq.GridQubit(0, index) for index in range(4)]
227-
gate = cirq.FSimGate(theta=np.pi / 4, phi=0.0)
228-
request = XEBPhasedFSimCalibrationRequest(
229-
gate=gate,
230-
pairs=((q_00, q_01), (q_02, q_03)),
231-
options=XEBPhasedFSimCalibrationOptions(
232-
n_library_circuits=22,
233-
fsim_options=XEBPhasedFSimCharacterizationOptions(
234-
characterize_theta=True,
235-
characterize_zeta=True,
236-
characterize_chi=False,
237-
characterize_gamma=False,
238-
characterize_phi=True,
239-
),
225+
q_00, q_01, q_02, q_03 = [cirq.GridQubit(0, index) for index in range(4)]
226+
gate = cirq.FSimGate(theta=np.pi / 4, phi=0.0)
227+
request = XEBPhasedFSimCalibrationRequest(
228+
gate=gate,
229+
pairs=((q_00, q_01), (q_02, q_03)),
230+
options=XEBPhasedFSimCalibrationOptions(
231+
n_library_circuits=22,
232+
fsim_options=XEBPhasedFSimCharacterizationOptions(
233+
characterize_theta=True,
234+
characterize_zeta=True,
235+
characterize_chi=False,
236+
characterize_gamma=False,
237+
characterize_phi=True,
240238
),
241-
)
242-
layer = request.to_calibration_layer()
243-
assert layer == cirq_google.CalibrationLayer(
244-
calibration_type='xeb_phased_fsim_characterization',
245-
program=cirq.Circuit([gate.on(q_00, q_01), gate.on(q_02, q_03)]),
246-
args={
247-
'n_library_circuits': 22,
248-
'n_combinations': 10,
249-
'cycle_depths': '5_25_50_100_200_300',
250-
'fatol': 5e-3,
251-
'xatol': 5e-3,
252-
'characterize_theta': True,
253-
'characterize_zeta': True,
254-
'characterize_chi': False,
255-
'characterize_gamma': False,
256-
'characterize_phi': True,
257-
},
258-
)
239+
),
240+
)
241+
layer = request.to_calibration_layer()
242+
assert layer == cirq_google.CalibrationLayer(
243+
calibration_type='xeb_phased_fsim_characterization',
244+
program=cirq.Circuit([gate.on(q_00, q_01), gate.on(q_02, q_03)]),
245+
args={
246+
'n_library_circuits': 22,
247+
'n_combinations': 10,
248+
'cycle_depths': '5_25_50_100_200_300',
249+
'fatol': 5e-3,
250+
'xatol': 5e-3,
251+
'characterize_theta': True,
252+
'characterize_zeta': True,
253+
'characterize_chi': False,
254+
'characterize_gamma': False,
255+
'characterize_phi': True,
256+
},
257+
)
259258

260-
# Serialize to proto
261-
calibration = v2.calibration_pb2.FocusedCalibration()
262-
new_layer = calibration.layers.add()
263-
new_layer.calibration_type = layer.calibration_type
264-
for arg in layer.args:
265-
arg_to_proto(layer.args[arg], out=new_layer.args[arg])
266-
cirq_google.SQRT_ISWAP_GATESET.serialize(layer.program, msg=new_layer.layer)
267-
with open(os.path.dirname(__file__) + '/test_data/xeb_calibration_layer.textproto') as f:
268-
desired_textproto = f.read()
269-
270-
layer_str = str(new_layer)
271-
# Fix precision issues
272-
layer_str = re.sub(r'0.004999\d+', '0.005', layer_str)
273-
assert layer_str == desired_textproto
259+
# Serialize to proto
260+
calibration = v2.calibration_pb2.FocusedCalibration()
261+
new_layer = calibration.layers.add()
262+
new_layer.calibration_type = layer.calibration_type
263+
for arg in layer.args:
264+
arg_to_proto(layer.args[arg], out=new_layer.args[arg])
265+
cirq_google.CIRCUIT_SERIALIZER.serialize(layer.program, msg=new_layer.layer)
266+
with open(os.path.dirname(__file__) + '/test_data/xeb_calibration_layer.textproto') as f:
267+
desired_textproto = f.read()
268+
269+
layer_str = str(new_layer)
270+
# Fix precision issues
271+
layer_str = re.sub(r'0.004999\d+', '0.005', layer_str)
272+
assert layer_str == desired_textproto
274273

275274

276275
def test_from_moment():

cirq-google/cirq_google/calibration/test_data/xeb_calibration_layer.textproto

+40-17
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,58 @@
11
calibration_type: "xeb_phased_fsim_characterization"
22
layer {
33
language {
4-
gate_set: "sqrt_iswap"
4+
gate_set: "v2_5"
5+
arg_function_language: "exp"
56
}
67
circuit {
78
scheduling_strategy: MOMENT_BY_MOMENT
89
moments {
910
operations {
10-
gate {
11-
id: "fsim_pi_4"
12-
}
13-
qubits {
14-
id: "0_0"
15-
}
16-
qubits {
17-
id: "0_1"
11+
qubit_constant_index: 0
12+
qubit_constant_index: 1
13+
fsimgate {
14+
theta {
15+
float_value: 0.7853981852531433
16+
}
17+
phi {
18+
float_value: 0.0
19+
}
1820
}
1921
}
2022
operations {
21-
gate {
22-
id: "fsim_pi_4"
23-
}
24-
qubits {
25-
id: "0_2"
26-
}
27-
qubits {
28-
id: "0_3"
23+
qubit_constant_index: 2
24+
qubit_constant_index: 3
25+
fsimgate {
26+
theta {
27+
float_value: 0.7853981852531433
28+
}
29+
phi {
30+
float_value: 0.0
31+
}
2932
}
3033
}
3134
}
3235
}
36+
constants {
37+
qubit {
38+
id: "0_0"
39+
}
40+
}
41+
constants {
42+
qubit {
43+
id: "0_1"
44+
}
45+
}
46+
constants {
47+
qubit {
48+
id: "0_2"
49+
}
50+
}
51+
constants {
52+
qubit {
53+
id: "0_3"
54+
}
55+
}
3356
}
3457
args {
3558
key: "characterize_chi"

cirq-google/cirq_google/engine/engine_validator_test.py

+19-21
Original file line numberDiff line numberDiff line change
@@ -38,34 +38,32 @@ def _big_circuit(num_cycles: int) -> cirq.Circuit:
3838

3939

4040
def test_validate_gate_set():
41-
with cirq.testing.assert_deprecated('SerializableGateSet', deadline='v0.16', count=None):
42-
circuit = _big_circuit(4)
41+
circuit = _big_circuit(4)
42+
43+
engine_validator.validate_program(
44+
[circuit] * 5, [{}] * 5, 1000, cg.CIRCUIT_SERIALIZER, max_size=30000
45+
)
4346

47+
with pytest.raises(RuntimeError, match='Program too long'):
4448
engine_validator.validate_program(
45-
[circuit] * 5, [{}] * 5, 1000, cg.FSIM_GATESET, max_size=100000
49+
[circuit] * 10, [{}] * 10, 1000, cg.CIRCUIT_SERIALIZER, max_size=30000
4650
)
4751

48-
with pytest.raises(RuntimeError, match='Program too long'):
49-
engine_validator.validate_program(
50-
[circuit] * 10, [{}] * 10, 1000, cg.FSIM_GATESET, max_size=100000
51-
)
52-
53-
with pytest.raises(RuntimeError, match='Program too long'):
54-
engine_validator.validate_program(
55-
[circuit] * 5, [{}] * 5, 1000, cg.FSIM_GATESET, max_size=10000
56-
)
52+
with pytest.raises(RuntimeError, match='Program too long'):
53+
engine_validator.validate_program(
54+
[circuit] * 5, [{}] * 5, 1000, cg.CIRCUIT_SERIALIZER, max_size=10000
55+
)
5756

5857

5958
def test_create_gate_set_validator():
60-
with cirq.testing.assert_deprecated('SerializableGateSet', deadline='v0.16', count=None):
61-
circuit = _big_circuit(4)
62-
63-
smaller_size_validator = engine_validator.create_program_validator(max_size=30000)
64-
smaller_size_validator([circuit] * 2, [{}] * 2, 1000, cg.FSIM_GATESET)
65-
with pytest.raises(RuntimeError, match='Program too long'):
66-
smaller_size_validator([circuit] * 5, [{}] * 5, 1000, cg.FSIM_GATESET)
67-
larger_size_validator = engine_validator.create_program_validator(max_size=500000)
68-
larger_size_validator([circuit] * 10, [{}] * 10, 1000, cg.FSIM_GATESET)
59+
circuit = _big_circuit(4)
60+
61+
smaller_size_validator = engine_validator.create_program_validator(max_size=30000)
62+
smaller_size_validator([circuit] * 2, [{}] * 2, 1000, cg.CIRCUIT_SERIALIZER)
63+
with pytest.raises(RuntimeError, match='Program too long'):
64+
smaller_size_validator([circuit] * 5, [{}] * 5, 1000, cg.CIRCUIT_SERIALIZER)
65+
larger_size_validator = engine_validator.create_program_validator(max_size=500000)
66+
larger_size_validator([circuit] * 10, [{}] * 10, 1000, cg.CIRCUIT_SERIALIZER)
6967

7068

7169
def test_validate_for_engine():

cirq-google/cirq_google/optimizers/convert_to_sqrt_iswap_test.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,9 @@ def test_two_qubit_gates(gate: cirq.Gate, expected_length: int):
5151
)
5252
with cirq.testing.assert_deprecated("Use cirq.optimize_for_target_gateset", deadline='v1.0'):
5353
cgoc.ConvertToSqrtIswapGates().optimize_circuit(converted_circuit)
54-
with cirq.testing.assert_deprecated('SerializableGateSet', deadline='v0.16', count=None):
55-
cig.SQRT_ISWAP_GATESET.serialize(converted_circuit)
56-
cig.SQRT_ISWAP_GATESET.serialize(converted_circuit_iswap)
57-
cig.SQRT_ISWAP_GATESET.serialize(converted_circuit_iswap_inv)
54+
cig.CIRCUIT_SERIALIZER.serialize(converted_circuit)
55+
cig.CIRCUIT_SERIALIZER.serialize(converted_circuit_iswap)
56+
cig.CIRCUIT_SERIALIZER.serialize(converted_circuit_iswap_inv)
5857
assert len(converted_circuit) <= expected_length
5958
assert (
6059
len(converted_circuit_iswap) <= expected_length

cirq-google/cirq_google/optimizers/optimize_for_sycamore_test.py

-74
Original file line numberDiff line numberDiff line change
@@ -24,51 +24,6 @@ def __init__(self):
2424
pass
2525

2626

27-
def _optimizers_and_gatesets():
28-
with cirq.testing.assert_deprecated('SerializableGateSet', deadline='v0.16', count=None):
29-
return [
30-
('sqrt_iswap', cg.SQRT_ISWAP_GATESET),
31-
('sycamore', cg.SYC_GATESET),
32-
('xmon', cg.XMON),
33-
('xmon_partial_cz', cg.XMON),
34-
]
35-
36-
37-
@pytest.mark.parametrize('optimizer_type, gateset', _optimizers_and_gatesets())
38-
def test_optimizer_output_gates_are_supported(optimizer_type, gateset):
39-
q0, q1 = cirq.LineQubit.range(2)
40-
circuit = cirq.Circuit(
41-
cirq.CZ(q0, q1), cirq.X(q0) ** 0.2, cirq.Z(q1) ** 0.2, cirq.measure(q0, q1, key='m')
42-
)
43-
44-
with cirq.testing.assert_deprecated(
45-
'Use `cirq.optimize_for_target_gateset', deadline='v0.16', count=1
46-
):
47-
new_circuit = cg.optimized_for_sycamore(circuit, optimizer_type=optimizer_type)
48-
for moment in new_circuit:
49-
for op in moment:
50-
assert gateset.is_supported_operation(op)
51-
52-
53-
@pytest.mark.parametrize('optimizer_type, gateset', _optimizers_and_gatesets())
54-
def test_optimize_large_measurement_gates(optimizer_type, gateset):
55-
qubits = cirq.LineQubit.range(53)
56-
circuit = cirq.Circuit(
57-
cirq.X.on_each(qubits),
58-
[cirq.CZ(qubits[i], qubits[i + 1]) for i in range(0, len(qubits) - 1, 2)],
59-
[cirq.CZ(qubits[i], qubits[i + 1]) for i in range(1, len(qubits) - 1, 2)],
60-
cirq.measure(*qubits, key='m'),
61-
)
62-
63-
with cirq.testing.assert_deprecated(
64-
'Use `cirq.optimize_for_target_gateset', deadline='v0.16', count=1
65-
):
66-
new_circuit = cg.optimized_for_sycamore(circuit, optimizer_type=optimizer_type)
67-
for moment in new_circuit:
68-
for op in moment:
69-
assert gateset.is_supported_operation(op)
70-
71-
7227
def test_invalid_input():
7328
with cirq.testing.assert_deprecated(
7429
'Use `cirq.optimize_for_target_gateset', deadline='v0.16', count=1
@@ -124,35 +79,6 @@ def test_no_tabulation():
12479
)
12580

12681

127-
def test_one_q_matrix_gate():
128-
u = cirq.testing.random_special_unitary(2)
129-
q = cirq.LineQubit(0)
130-
circuit0 = cirq.Circuit(cirq.MatrixGate(u).on(q))
131-
assert len(circuit0) == 1
132-
133-
# Deprecations: well-known cirq_google SerializableGateSets
134-
# (e.g. cirq_google.SYC_GATESET), and
135-
# cirq_google.optimized_for_sycamore
136-
with cirq.testing.assert_deprecated(
137-
'SerializableGateSet', 'Use `cirq.optimize_for_target_gateset', deadline='v0.16', count=6
138-
):
139-
circuit_iswap = cg.optimized_for_sycamore(circuit0, optimizer_type='sqrt_iswap')
140-
assert len(circuit_iswap) == 1
141-
for moment in circuit_iswap:
142-
for op in moment:
143-
assert cg.SQRT_ISWAP_GATESET.is_supported_operation(op)
144-
# single qubit gates shared between gatesets, so:
145-
assert cg.SYC_GATESET.is_supported_operation(op)
146-
147-
circuit_syc = cg.optimized_for_sycamore(circuit0, optimizer_type='sycamore')
148-
assert len(circuit_syc) == 1
149-
for moment in circuit_iswap:
150-
for op in moment:
151-
assert cg.SYC_GATESET.is_supported_operation(op)
152-
# single qubit gates shared between gatesets, so:
153-
assert cg.SQRT_ISWAP_GATESET.is_supported_operation(op)
154-
155-
15682
@pytest.mark.parametrize(
15783
'optimizer_type, two_qubit_gate_type',
15884
[('sycamore', cg.SycamoreGate), ('sqrt_iswap', cirq.ISwapPowGate), ('xmon', cirq.CZPowGate)],

cirq-google/cirq_google/serialization/arg_func_langs_test.py

+15-16
Original file line numberDiff line numberDiff line change
@@ -154,22 +154,21 @@ def test_serialize_conversion(value: ARG_LIKE, proto: v2.program_pb2.Arg):
154154

155155

156156
def test_infer_language():
157-
with cirq.testing.assert_deprecated('SerializableGateSet', deadline='v0.16', count=None):
158-
q = cirq.GridQubit(0, 0)
159-
a = sympy.Symbol('a')
160-
b = sympy.Symbol('b')
161-
162-
c_linear = cirq.Circuit(cirq.X(q) ** (b - a))
163-
packed = cirq_google.XMON.serialize(c_linear)
164-
assert packed.language.arg_function_language == 'linear'
165-
166-
c_empty = cirq.Circuit(cirq.X(q) ** b)
167-
packed = cirq_google.XMON.serialize(c_empty)
168-
assert packed.language.arg_function_language == ''
169-
170-
c_exp = cirq.Circuit(cirq.X(q) ** (b**a))
171-
packed = cirq_google.XMON.serialize(c_exp)
172-
assert packed.language.arg_function_language == 'exp'
157+
q = cirq.GridQubit(0, 0)
158+
a = sympy.Symbol('a')
159+
b = sympy.Symbol('b')
160+
161+
c_linear = cirq.Circuit(cirq.X(q) ** (b - a))
162+
packed = cirq_google.CIRCUIT_SERIALIZER.serialize(c_linear)
163+
assert packed.language.arg_function_language == 'linear'
164+
165+
c_empty = cirq.Circuit(cirq.X(q) ** b)
166+
packed = cirq_google.CIRCUIT_SERIALIZER.serialize(c_empty)
167+
assert packed.language.arg_function_language == ''
168+
169+
c_exp = cirq.Circuit(cirq.X(q) ** (b**a))
170+
packed = cirq_google.CIRCUIT_SERIALIZER.serialize(c_exp)
171+
assert packed.language.arg_function_language == 'exp'
173172

174173

175174
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)