5

As far I understand, qubits in cirq are labelled by their positions on chip. For example

print( cirq.google.Foxtail.qubits )

yields

frozenset({GridQubit(0, 1), GridQubit(1, 9), GridQubit(0, 2), ...

I would like to get a simpler version of the above, namely a simple array of tuples for the positions of all qubits

[ (0,1), (0,2), (0,3), ..., (1,1), (1,2), (1,3), ... ]

What is the easiest way to obtain this for a given known device in cirq?

James Wootton
  • 11,700
  • 1
  • 35
  • 74

1 Answers1

7

GridQubit has comparison methods defined, so sorted will give you a list of the qubits in row-major order:

>>> sorted(cirq.google.Foxtail.qubits)
[GridQubit(0, 0), GridQubit(0, 1), [...] GridQubit(1, 9), GridQubit(1, 10)]

Once you have that, you're one list comprehension away:

>>> [(q.row, q.col) for q in sorted(cirq.google.Foxtail.qubits)]
[(0, 0), (0, 1), [...] (1, 9), (1, 10)]

Because tuples also have a default ordering, it doesn't matter whether you sort before or after the conversion:

>>> sorted((q.row, q.col) for q in cirq.google.Foxtail.qubits)
[(0, 0), (0, 1), [...] (1, 9), (1, 10)]
Craig Gidney
  • 44,299
  • 1
  • 41
  • 116