Skip to content

Commit 610ad81

Browse files
MichaelBroughtonrht
authored andcommitted
Remove Bristlecone and Foxtail deprecated XmonDevices. (quantumlib#5483)
Before removing XmonDevice outright, remove child classes.
1 parent 3b60720 commit 610ad81

18 files changed

+29
-437
lines changed

cirq-google/cirq_google/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@
5656
)
5757

5858
from cirq_google.devices import (
59-
Bristlecone,
60-
Foxtail,
6159
GoogleNoiseProperties,
6260
GridDevice,
6361
NoiseModelFromGoogleNoiseProperties,

cirq-google/cirq_google/devices/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
NoiseModelFromGoogleNoiseProperties,
1818
)
1919

20-
from cirq_google.devices.known_devices import Bristlecone, Foxtail, Sycamore, Sycamore23
20+
from cirq_google.devices.known_devices import Sycamore, Sycamore23
2121

2222
from cirq_google.devices.grid_device import GridDevice
2323

cirq-google/cirq_google/devices/known_devices.py

Lines changed: 1 addition & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,12 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from typing import Any, Collection, Dict, Optional, Iterable, List, Set, Tuple
15+
from typing import Collection, Dict, Optional, Iterable, List, Set, Tuple
1616

1717
import cirq
18-
from cirq import _compat
19-
from cirq._doc import document
2018
from cirq_google.api import v2
2119
from cirq_google.api.v2 import device_pb2
2220
from cirq_google.devices.serializable_device import SerializableDevice
23-
from cirq_google.devices.xmon_device import _XmonDeviceBase
2421
from cirq_google.serialization import gate_sets, op_serializer, serializable_gate_set
2522

2623
_2_QUBIT_TARGET_SET = "2_qubit_targets"
@@ -210,103 +207,6 @@ def populate_qubit_pairs_in_device_proto(
210207
new_target.ids.extend(v2.qubit_to_proto_id(q) for q in pair)
211208

212209

213-
_FOXTAIL_GRID = """
214-
AAAAABBBBBB
215-
CCCCCCDDDDD
216-
"""
217-
218-
219-
class _NamedConstantXmonDevice(_XmonDeviceBase):
220-
def __init__(self, constant: str, **kwargs) -> None:
221-
super().__init__(**kwargs)
222-
self._repr = constant
223-
224-
def __repr__(self) -> str:
225-
return self._repr
226-
227-
@classmethod
228-
def _from_json_dict_(cls, constant: str, **kwargs):
229-
_compat._warn_or_error(
230-
f'NamedConstantXmonDevice was used but is deprecated.\n'
231-
f'It will be removed in cirq v0.15.\n'
232-
)
233-
if constant in ['cirq.google.Foxtail', 'cirq_google.Foxtail']:
234-
return Foxtail
235-
if constant in ['cirq.google.Bristlecone', 'cirq_google.Bristlecone']:
236-
return Bristlecone
237-
raise ValueError(f'Unrecognized xmon device name: {constant!r}')
238-
239-
def _json_dict_(self) -> Dict[str, Any]:
240-
return {'constant': self._repr}
241-
242-
243-
Foxtail = _NamedConstantXmonDevice(
244-
'cirq_google.Foxtail',
245-
measurement_duration=cirq.Duration(nanos=4000),
246-
exp_w_duration=cirq.Duration(nanos=20),
247-
exp_11_duration=cirq.Duration(nanos=50),
248-
qubits=_parse_device(_FOXTAIL_GRID)[0],
249-
)
250-
document(
251-
Foxtail,
252-
f"""72 xmon qubit device.
253-
254-
**Qubit grid**:
255-
```
256-
{str(Foxtail)}
257-
```
258-
""",
259-
)
260-
261-
# Duration dict in picoseconds
262-
_DURATIONS_FOR_XMON = {
263-
'cz': 45_000,
264-
'xy': 15_000,
265-
'z': 0,
266-
'meas': 4_000_000, # 1000ns for readout, 3000ns for "ring down"
267-
}
268-
269-
FOXTAIL_PROTO = create_device_proto_from_diagram(
270-
_FOXTAIL_GRID, [gate_sets.XMON], _DURATIONS_FOR_XMON
271-
)
272-
273-
_BRISTLECONE_GRID = """
274-
-----AB-----
275-
----ABCD----
276-
---ABCDEF---
277-
--ABCDEFGH--
278-
-ABCDEFGHIJ-
279-
ABCDEFGHIJKL
280-
-CDEFGHIJKL-
281-
--EFGHIJKL--
282-
---GHIJKL---
283-
----IJKL----
284-
-----KL-----
285-
"""
286-
287-
Bristlecone = _NamedConstantXmonDevice(
288-
'cirq_google.Bristlecone',
289-
measurement_duration=cirq.Duration(nanos=4000),
290-
exp_w_duration=cirq.Duration(nanos=20),
291-
exp_11_duration=cirq.Duration(nanos=50),
292-
qubits=_parse_device(_BRISTLECONE_GRID)[0],
293-
)
294-
295-
document(
296-
Bristlecone,
297-
f"""72 xmon qubit device.
298-
299-
**Qubit grid**:
300-
```
301-
{str(Bristlecone)}
302-
```
303-
""",
304-
)
305-
306-
BRISTLECONE_PROTO = create_device_proto_from_diagram(
307-
_BRISTLECONE_GRID, [gate_sets.XMON], _DURATIONS_FOR_XMON
308-
)
309-
310210
_SYCAMORE_GRID = """
311211
-----AB---
312212
----ABCD--

cirq-google/cirq_google/devices/known_devices_test.py

Lines changed: 0 additions & 236 deletions
Original file line numberDiff line numberDiff line change
@@ -20,242 +20,6 @@
2020
import cirq_google.serialization.common_serializers as cgc
2121

2222

23-
def test_foxtail_device_proto():
24-
assert (
25-
str(known_devices.FOXTAIL_PROTO)
26-
== """\
27-
valid_gate_sets {
28-
name: "xmon"
29-
valid_gates {
30-
id: "xy"
31-
number_of_qubits: 1
32-
valid_args {
33-
name: "axis_half_turns"
34-
type: FLOAT
35-
}
36-
valid_args {
37-
name: "half_turns"
38-
type: FLOAT
39-
}
40-
gate_duration_picos: 15000
41-
}
42-
valid_gates {
43-
id: "z"
44-
number_of_qubits: 1
45-
valid_args {
46-
name: "half_turns"
47-
type: FLOAT
48-
}
49-
valid_args {
50-
name: "type"
51-
type: STRING
52-
}
53-
}
54-
valid_gates {
55-
id: "xyz"
56-
number_of_qubits: 1
57-
valid_args {
58-
name: "x_exponent"
59-
type: FLOAT
60-
}
61-
valid_args {
62-
name: "z_exponent"
63-
type: FLOAT
64-
}
65-
valid_args {
66-
name: "axis_phase_exponent"
67-
type: FLOAT
68-
}
69-
}
70-
valid_gates {
71-
id: "cz"
72-
number_of_qubits: 2
73-
valid_args {
74-
name: "half_turns"
75-
type: FLOAT
76-
}
77-
valid_args {
78-
name: "phase_match"
79-
type: STRING
80-
}
81-
gate_duration_picos: 45000
82-
valid_targets: "2_qubit_targets"
83-
}
84-
valid_gates {
85-
id: "meas"
86-
valid_args {
87-
name: "key"
88-
type: STRING
89-
}
90-
valid_args {
91-
name: "invert_mask"
92-
type: REPEATED_BOOLEAN
93-
}
94-
gate_duration_picos: 4000000
95-
valid_targets: "meas_targets"
96-
}
97-
valid_gates {
98-
id: "circuit"
99-
}
100-
}
101-
valid_qubits: "0_0"
102-
valid_qubits: "0_1"
103-
valid_qubits: "0_2"
104-
valid_qubits: "0_3"
105-
valid_qubits: "0_4"
106-
valid_qubits: "0_5"
107-
valid_qubits: "0_6"
108-
valid_qubits: "0_7"
109-
valid_qubits: "0_8"
110-
valid_qubits: "0_9"
111-
valid_qubits: "0_10"
112-
valid_qubits: "1_0"
113-
valid_qubits: "1_1"
114-
valid_qubits: "1_2"
115-
valid_qubits: "1_3"
116-
valid_qubits: "1_4"
117-
valid_qubits: "1_5"
118-
valid_qubits: "1_6"
119-
valid_qubits: "1_7"
120-
valid_qubits: "1_8"
121-
valid_qubits: "1_9"
122-
valid_qubits: "1_10"
123-
valid_targets {
124-
name: "meas_targets"
125-
target_ordering: SUBSET_PERMUTATION
126-
}
127-
valid_targets {
128-
name: "2_qubit_targets"
129-
target_ordering: SYMMETRIC
130-
targets {
131-
ids: "0_0"
132-
ids: "0_1"
133-
}
134-
targets {
135-
ids: "0_0"
136-
ids: "1_0"
137-
}
138-
targets {
139-
ids: "0_1"
140-
ids: "0_2"
141-
}
142-
targets {
143-
ids: "0_1"
144-
ids: "1_1"
145-
}
146-
targets {
147-
ids: "0_2"
148-
ids: "0_3"
149-
}
150-
targets {
151-
ids: "0_2"
152-
ids: "1_2"
153-
}
154-
targets {
155-
ids: "0_3"
156-
ids: "0_4"
157-
}
158-
targets {
159-
ids: "0_3"
160-
ids: "1_3"
161-
}
162-
targets {
163-
ids: "0_4"
164-
ids: "0_5"
165-
}
166-
targets {
167-
ids: "0_4"
168-
ids: "1_4"
169-
}
170-
targets {
171-
ids: "0_5"
172-
ids: "0_6"
173-
}
174-
targets {
175-
ids: "0_5"
176-
ids: "1_5"
177-
}
178-
targets {
179-
ids: "0_6"
180-
ids: "0_7"
181-
}
182-
targets {
183-
ids: "0_6"
184-
ids: "1_6"
185-
}
186-
targets {
187-
ids: "0_7"
188-
ids: "0_8"
189-
}
190-
targets {
191-
ids: "0_7"
192-
ids: "1_7"
193-
}
194-
targets {
195-
ids: "0_8"
196-
ids: "0_9"
197-
}
198-
targets {
199-
ids: "0_8"
200-
ids: "1_8"
201-
}
202-
targets {
203-
ids: "0_9"
204-
ids: "0_10"
205-
}
206-
targets {
207-
ids: "0_9"
208-
ids: "1_9"
209-
}
210-
targets {
211-
ids: "0_10"
212-
ids: "1_10"
213-
}
214-
targets {
215-
ids: "1_0"
216-
ids: "1_1"
217-
}
218-
targets {
219-
ids: "1_1"
220-
ids: "1_2"
221-
}
222-
targets {
223-
ids: "1_2"
224-
ids: "1_3"
225-
}
226-
targets {
227-
ids: "1_3"
228-
ids: "1_4"
229-
}
230-
targets {
231-
ids: "1_4"
232-
ids: "1_5"
233-
}
234-
targets {
235-
ids: "1_5"
236-
ids: "1_6"
237-
}
238-
targets {
239-
ids: "1_6"
240-
ids: "1_7"
241-
}
242-
targets {
243-
ids: "1_7"
244-
ids: "1_8"
245-
}
246-
targets {
247-
ids: "1_8"
248-
ids: "1_9"
249-
}
250-
targets {
251-
ids: "1_9"
252-
ids: "1_10"
253-
}
254-
}
255-
"""
256-
)
257-
258-
25923
def test_create_device_proto_for_irregular_grid():
26024
qubits = cirq.GridQubit.rect(2, 2)
26125
pairs = [

0 commit comments

Comments
 (0)