Skip to content

Commit 83a8e0e

Browse files
authored
Add examples for transform_qubits function (#6915)
* Add examples for transform_qubits function - Adds a simple example for Circuit.transform_qubits and Operation.transform_qubits Fixes: #4014 * Fix Doc test.
1 parent c5d29fe commit 83a8e0e

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

cirq-core/cirq/circuits/circuit.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2010,6 +2010,24 @@ def transform_qubits(
20102010
) -> 'cirq.Circuit':
20112011
"""Returns the same circuit, but with different qubits.
20122012
2013+
This function will return a new `Circuit` with the same gates but
2014+
with qubits mapped according to the argument.
2015+
2016+
For example, the following will translate LineQubits to GridQubits:
2017+
2018+
>>> grid_qubits = cirq.GridQubit.square(2)
2019+
>>> line_qubits = cirq.LineQubit.range(4)
2020+
>>> circuit = cirq.Circuit([cirq.H(q) for q in line_qubits])
2021+
>>> circuit.transform_qubits(lambda q : grid_qubits[q.x])
2022+
cirq.Circuit([
2023+
cirq.Moment(
2024+
cirq.H(cirq.GridQubit(0, 0)),
2025+
cirq.H(cirq.GridQubit(0, 1)),
2026+
cirq.H(cirq.GridQubit(1, 0)),
2027+
cirq.H(cirq.GridQubit(1, 1)),
2028+
),
2029+
])
2030+
20132031
Args:
20142032
qubit_map: A function or a dict mapping each current qubit into a desired
20152033
new qubit.

cirq-core/cirq/ops/raw_types.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,26 @@ def transform_qubits(
566566
) -> Self:
567567
"""Returns the same operation, but with different qubits.
568568
569+
This function will return a new operation with the same gate but
570+
with qubits mapped according to the argument.
571+
572+
For example, the following will translate LineQubits to GridQubits
573+
using a grid with 4 columns:
574+
575+
>>> op = cirq.CZ(cirq.LineQubit(5), cirq.LineQubit(9))
576+
>>> op.transform_qubits(lambda q: cirq.GridQubit(q.x // 4, q.x % 4))
577+
cirq.CZ(cirq.GridQubit(1, 1), cirq.GridQubit(2, 1))
578+
579+
This can also be used with a dictionary that has a mapping, such
580+
as the following which maps named qubits to line qubits:
581+
582+
>>> a = cirq.NamedQubit('alice')
583+
>>> b = cirq.NamedQubit('bob')
584+
>>> d = {a: cirq.LineQubit(4), b: cirq.LineQubit(5)}
585+
>>> op = cirq.CNOT(a, b)
586+
>>> op.transform_qubits(d)
587+
cirq.CNOT(cirq.LineQubit(4), cirq.LineQubit(5))
588+
569589
Args:
570590
qubit_map: A function or a dict mapping each current qubit into a desired
571591
new qubit.

0 commit comments

Comments
 (0)