PauliTwoDesign
class qiskit.circuit.library.PauliTwoDesign(num_qubits=None, reps=3, seed=None, insert_barriers=False, name='PauliTwoDesign')
Bases: TwoLocal
The Pauli Two-Design ansatz.
This class implements a particular form of a 2-design circuit [1], which is frequently studied in quantum machine learning literature, such as e.g. the investigating of Barren plateaus in variational algorithms [2].
The circuit consists of alternating rotation and entanglement layers with an initial layer of gates. The rotation layers contain single qubit Pauli rotations, where the axis is chosen uniformly at random to be X, Y or Z. The entanglement layers is compromised of pairwise CZ gates with a total depth of 2.
For instance, the circuit could look like this (but note that choosing a different seed yields different Pauli rotations).
┌─────────┐┌──────────┐ ░ ┌──────────┐ ░ ┌──────────┐
q_0: ┤ RY(π/4) ├┤ RZ(θ[0]) ├─■─────░─┤ RY(θ[4]) ├─■─────░──┤ RZ(θ[8]) ├
├─────────┤├──────────┤ │ ░ ├──────────┤ │ ░ ├──────────┤
q_1: ┤ RY(π/4) ├┤ RZ(θ[1]) ├─■──■──░─┤ RY(θ[5]) ├─■──■──░──┤ RX(θ[9]) ├
├─────────┤├──────────┤ │ ░ ├──────────┤ │ ░ ┌┴──────────┤
q_2: ┤ RY(π/4) ├┤ RX(θ[2]) ├─■──■──░─┤ RY(θ[6]) ├─■──■──░─┤ RX(θ[10]) ├
├─────────┤├──────────┤ │ ░ ├──────────┤ │ ░ ├───────────┤
q_3: ┤ RY(π/4) ├┤ RZ(θ[3]) ├─■─────░─┤ RX(θ[7]) ├─■─────░─┤ RY(θ[11]) ├
└─────────┘└──────────┘ ░ └──────────┘ ░ └───────────┘
Examples
from qiskit.circuit.library import PauliTwoDesign
circuit = PauliTwoDesign(4, reps=2, seed=5, insert_barriers=True)
circuit.draw('mpl')

The pauli_two_design()
function constructs the functionally same circuit, but faster.
References
[1]: Nakata et al., Unitary 2-designs from random X- and Z-diagonal unitaries.
[2]: McClean et al., Barren plateaus in quantum neural network training landscapes.
The class qiskit.circuit.library.n_local.pauli_two_design.PauliTwoDesign
is deprecated as of Qiskit 2.1. It will be removed in Qiskit 3.0. Use the function qiskit.circuit.library.pauli_two_design instead.
Parameters
- num_qubits (int | None) – The number of qubits of the Pauli Two-Design circuit.
- reps (int) – Specifies how often a block consisting of a rotation layer and entanglement layer is repeated.
- seed (int | None) – The seed for randomly choosing the axes of the Pauli rotations.
- insert_barriers (bool) – If
True
, barriers are inserted in between each layer. IfFalse
, no barriers are inserted. Defaults toFalse
. - name (str) –
Attributes
num_parameters_settable
Return the number of settable parameters.
Returns
The number of possibly distinct parameters.
name
Type: str
A human-readable name for the circuit.
Example
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit