Skip to content

Commit 9a85a8d

Browse files
MichaelBroughton95-martin-orion
authored andcommitted
Deperecate {ion,neutral_atom}.qubit_set. (quantumlib#4943)
More of quantumlib#4744
1 parent 4d10e5c commit 9a85a8d

File tree

4 files changed

+51
-4
lines changed

4 files changed

+51
-4
lines changed

cirq-core/cirq/ion/ion_device.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414

1515
from typing import Any, FrozenSet, Iterable, Optional, Set, TYPE_CHECKING
16+
import networkx as nx
1617
from cirq import _compat, circuits, value, devices, ops, protocols
1718
from cirq.ion import convert_to_ion_gates
1819

@@ -70,6 +71,18 @@ def __init__(
7071
self.qubits = frozenset(qubits)
7172
self.gateset = get_ion_gateset()
7273

74+
graph = nx.Graph()
75+
graph.add_edges_from([(a, b) for a in qubits for b in qubits if a != b], directed=False)
76+
self._metadata = devices.DeviceMetadata(self.qubits, graph)
77+
78+
@property
79+
def metadata(self) -> devices.DeviceMetadata:
80+
return self._metadata
81+
82+
@_compat.deprecated(
83+
fix='Use metadata.qubit_set if applicable.',
84+
deadline='v0.15',
85+
)
7386
def qubit_set(self) -> FrozenSet['cirq.LineQubit']:
7487
return self.qubits
7588

cirq-core/cirq/ion/ion_device_test.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ def test_init():
6565
)
6666

6767

68+
def test_metadata():
69+
d = ion_device(3)
70+
assert d.metadata.qubit_set == frozenset(
71+
{cirq.LineQubit(0), cirq.LineQubit(1), cirq.LineQubit(2)}
72+
)
73+
assert len(d.metadata.nx_graph.edges()) == 3
74+
75+
6876
def test_init_timedelta():
6977
d = ion_device(3, use_timedelta=True)
7078
ms = 1000 * cirq.Duration(nanos=1)
@@ -209,8 +217,9 @@ def test_at():
209217
assert d.at(2) == cirq.LineQubit(2)
210218

211219

212-
def test_qubit_set():
213-
assert ion_device(3).qubit_set() == frozenset(cirq.LineQubit.range(3))
220+
def test_qubit_set_deprecated():
221+
with cirq.testing.assert_deprecated('qubit_set', deadline='v0.15'):
222+
assert ion_device(3).qubit_set() == frozenset(cirq.LineQubit.range(3))
214223

215224

216225
def test_qid_pairs_deprecated():

cirq-core/cirq/neutral_atoms/neutral_atom_devices.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,15 @@ def __init__(
116116
raise ValueError(f'Unsupported qubit type: {q!r}')
117117
self.qubits = frozenset(qubits)
118118

119+
self._metadata = devices.GridDeviceMetadata(
120+
[(a, b) for a in self.qubits for b in self.qubits if a.is_adjacent(b)], self.gateset
121+
)
122+
123+
@property
124+
def metadata(self) -> devices.GridDeviceMetadata:
125+
return self._metadata
126+
127+
@_compat.deprecated(fix='Use metadata.qubit_set if applicable.', deadline='v0.15')
119128
def qubit_set(self) -> FrozenSet['cirq.GridQubit']:
120129
return self.qubits
121130

cirq-core/cirq/neutral_atoms/neutral_atom_devices_test.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,21 @@ def test_init():
5656
_ = d.duration_of(cirq.SingleQubitGate().on(q00))
5757

5858

59+
def test_metadata():
60+
d = square_device(2, 3)
61+
assert d.metadata.qubit_set == frozenset(
62+
{
63+
cirq.GridQubit(0, 0),
64+
cirq.GridQubit(0, 1),
65+
cirq.GridQubit(1, 0),
66+
cirq.GridQubit(1, 1),
67+
cirq.GridQubit(2, 0),
68+
cirq.GridQubit(2, 1),
69+
}
70+
)
71+
assert len(d.metadata.nx_graph.edges()) == 7
72+
73+
5974
def test_init_timedelta():
6075
d = square_device(2, 2, holes=[cirq.GridQubit(1, 1)], use_timedelta=True)
6176
us = cirq.Duration(nanos=10 ** 3)
@@ -282,5 +297,6 @@ def test_repr_pretty():
282297
cirq.testing.assert_repr_pretty(square_device(2, 2), "cirq.NeutralAtomDevice(...)", cycle=True)
283298

284299

285-
def test_qubit_set():
286-
assert square_device(2, 2).qubit_set() == frozenset(cirq.GridQubit.square(2, 0, 0))
300+
def test_qubit_set_deprecated():
301+
with cirq.testing.assert_deprecated('qubit_set', deadline='v0.15'):
302+
assert square_device(2, 2).qubit_set() == frozenset(cirq.GridQubit.square(2, 0, 0))

0 commit comments

Comments
 (0)