Skip to content

Commit 5ca0b47

Browse files
authored
Cirq web supports LineQubits (#5211)
This would be to fix #5173
1 parent e616710 commit 5ca0b47

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

cirq-web/cirq_web/circuits/circuit.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,10 @@ def _build_3D_symbol(self, operation, moment) -> Operation3DSymbol:
8787
symbol_info = resolve_operation(operation, self._resolvers)
8888
location_info = []
8989
for qubit in operation.qubits:
90-
location_info.append({'row': qubit.row, 'col': qubit.col})
90+
if isinstance(qubit, cirq.GridQubit):
91+
location_info.append({'row': qubit.row, 'col': qubit.col})
92+
elif isinstance(qubit, cirq.LineQubit):
93+
location_info.append({'row': qubit.x, 'col': 0})
94+
else:
95+
raise ValueError('Unsupported qubit type')
9196
return Operation3DSymbol(symbol_info.labels, location_info, symbol_info.colors, moment)

cirq-web/cirq_web/circuits/circuit_test.py

+13-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import cirq
1515
import cirq_web
1616

17+
import pytest
18+
1719

1820
def strip_ws(string):
1921
return "".join(string.split())
@@ -28,9 +30,9 @@ def test_circuit_init_type():
2830
assert isinstance(circuit3d, cirq_web.Circuit3D)
2931

3032

31-
def test_circuit_client_code():
32-
qubits = [cirq.GridQubit(x, y) for x in range(2) for y in range(2)]
33-
moment = cirq.Moment(cirq.H(qubits[0]))
33+
@pytest.mark.parametrize('qubit', [cirq.GridQubit(0, 0), cirq.LineQubit(0)])
34+
def test_circuit_client_code(qubit):
35+
moment = cirq.Moment(cirq.H(qubit))
3436
circuit = cirq_web.Circuit3D(cirq.Circuit(moment))
3537

3638
circuit_obj = [
@@ -64,6 +66,14 @@ def test_circuit_client_code():
6466
assert strip_ws(circuit.get_client_code()) == strip_ws(expected_client_code)
6567

6668

69+
def test_circuit_client_code_unsupported_qubit_type():
70+
moment = cirq.Moment(cirq.H(cirq.NamedQubit('q0')))
71+
circuit = cirq_web.Circuit3D(cirq.Circuit(moment))
72+
73+
with pytest.raises(ValueError, match='Unsupported qubit type'):
74+
circuit.get_client_code()
75+
76+
6777
def test_circuit_default_bundle_name():
6878
qubits = [cirq.GridQubit(x, y) for x in range(2) for y in range(2)]
6979
moment = cirq.Moment(cirq.H(qubits[0]))

0 commit comments

Comments
 (0)