Skip to content

Commit

Permalink
Deperecate {ion,neutral_atom}.qubit_set. (#4943)
Browse files Browse the repository at this point in the history
More of #4744
  • Loading branch information
MichaelBroughton authored Feb 8, 2022
1 parent eb15907 commit aadc56d
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 4 deletions.
13 changes: 13 additions & 0 deletions cirq-core/cirq/ion/ion_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# limitations under the License.

from typing import Any, FrozenSet, Iterable, Optional, Set, TYPE_CHECKING
import networkx as nx
from cirq import _compat, circuits, value, devices, ops, protocols
from cirq.ion import convert_to_ion_gates

Expand Down Expand Up @@ -70,6 +71,18 @@ def __init__(
self.qubits = frozenset(qubits)
self.gateset = get_ion_gateset()

graph = nx.Graph()
graph.add_edges_from([(a, b) for a in qubits for b in qubits if a != b], directed=False)
self._metadata = devices.DeviceMetadata(self.qubits, graph)

@property
def metadata(self) -> devices.DeviceMetadata:
return self._metadata

@_compat.deprecated(
fix='Use metadata.qubit_set if applicable.',
deadline='v0.15',
)
def qubit_set(self) -> FrozenSet['cirq.LineQubit']:
return self.qubits

Expand Down
13 changes: 11 additions & 2 deletions cirq-core/cirq/ion/ion_device_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ def test_init():
)


def test_metadata():
d = ion_device(3)
assert d.metadata.qubit_set == frozenset(
{cirq.LineQubit(0), cirq.LineQubit(1), cirq.LineQubit(2)}
)
assert len(d.metadata.nx_graph.edges()) == 3


def test_init_timedelta():
d = ion_device(3, use_timedelta=True)
ms = 1000 * cirq.Duration(nanos=1)
Expand Down Expand Up @@ -209,8 +217,9 @@ def test_at():
assert d.at(2) == cirq.LineQubit(2)


def test_qubit_set():
assert ion_device(3).qubit_set() == frozenset(cirq.LineQubit.range(3))
def test_qubit_set_deprecated():
with cirq.testing.assert_deprecated('qubit_set', deadline='v0.15'):
assert ion_device(3).qubit_set() == frozenset(cirq.LineQubit.range(3))


def test_qid_pairs_deprecated():
Expand Down
9 changes: 9 additions & 0 deletions cirq-core/cirq/neutral_atoms/neutral_atom_devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,15 @@ def __init__(
raise ValueError(f'Unsupported qubit type: {q!r}')
self.qubits = frozenset(qubits)

self._metadata = devices.GridDeviceMetadata(
[(a, b) for a in self.qubits for b in self.qubits if a.is_adjacent(b)], self.gateset
)

@property
def metadata(self) -> devices.GridDeviceMetadata:
return self._metadata

@_compat.deprecated(fix='Use metadata.qubit_set if applicable.', deadline='v0.15')
def qubit_set(self) -> FrozenSet['cirq.GridQubit']:
return self.qubits

Expand Down
20 changes: 18 additions & 2 deletions cirq-core/cirq/neutral_atoms/neutral_atom_devices_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,21 @@ def test_init():
_ = d.duration_of(cirq.SingleQubitGate().on(q00))


def test_metadata():
d = square_device(2, 3)
assert d.metadata.qubit_set == frozenset(
{
cirq.GridQubit(0, 0),
cirq.GridQubit(0, 1),
cirq.GridQubit(1, 0),
cirq.GridQubit(1, 1),
cirq.GridQubit(2, 0),
cirq.GridQubit(2, 1),
}
)
assert len(d.metadata.nx_graph.edges()) == 7


def test_init_timedelta():
d = square_device(2, 2, holes=[cirq.GridQubit(1, 1)], use_timedelta=True)
us = cirq.Duration(nanos=10 ** 3)
Expand Down Expand Up @@ -282,5 +297,6 @@ def test_repr_pretty():
cirq.testing.assert_repr_pretty(square_device(2, 2), "cirq.NeutralAtomDevice(...)", cycle=True)


def test_qubit_set():
assert square_device(2, 2).qubit_set() == frozenset(cirq.GridQubit.square(2, 0, 0))
def test_qubit_set_deprecated():
with cirq.testing.assert_deprecated('qubit_set', deadline='v0.15'):
assert square_device(2, 2).qubit_set() == frozenset(cirq.GridQubit.square(2, 0, 0))

0 comments on commit aadc56d

Please sign in to comment.