class PauliBasisChange(destination_basis=None, traverse=True, replacement_fn=None)[fuente]

Bases: ConverterBase

Deprecated: Converter for changing Paulis into other bases. By default, the diagonal basis composed only of Pauli {Z, I}^n is used as the destination basis to which to convert. Meaning, if a Pauli containing X or Y terms is passed in, which cannot be sampled or evolved natively on some Quantum hardware, the Pauli can be replaced by a composition of a change of basis circuit and a Pauli composed of only Z and I terms (diagonal), which can be evolved or sampled natively on the Quantum hardware.

The replacement function determines how the PauliOps should be replaced by their computed change-of-basis CircuitOps and destination PauliOps. Several convenient out-of-the-box replacement functions have been added as static methods, such as measurement_replacement_fn.

This class uses the typical basis change method found in most Quantum Computing textbooks (such as on page 210 of Nielsen and Chuang’s, «Quantum Computation and Quantum Information», ISBN: 978-1-107-00217-3), which involves diagonalizing the single-qubit Paulis with H and S† gates, mapping the eigenvectors of the diagonalized origin Pauli to the diagonalized destination Pauli using CNOTS, and then de-diagonalizing any single qubit Paulis to their non-diagonal destination values. Many other methods are possible, as well as variations on this method, such as the placement of the CNOT chains.

Obsoleto desde la versión 0.24.0: The class qiskit.opflow.converters.pauli_basis_change.PauliBasisChange is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. For code migration guidelines, visit

  • destination_basis (Optional[Union[Pauli, PauliOp]]) – The Pauli into the basis of which the operators will be converted. If None is specified, the destination basis will be the diagonal ({I, Z}^n) basis requiring only single qubit rotations.

  • traverse (bool) – If true and the operator passed into convert contains sub-Operators, such as ListOp, traverse the Operator and apply the conversion to every applicable sub-operator within it.

  • replacement_fn (Optional[Callable]) –

    A function specifying what to do with the basis-change CircuitOp and destination PauliOp when converting an Operator and replacing converted values. By default, this will be

    1. For StateFns (or Measurements): replacing the StateFn with ComposedOp(StateFn(d), c) where c is the conversion circuit and d is the destination Pauli, so the overall beginning and ending operators are equivalent.

    2. For non-StateFn Operators: replacing the origin p with c·d·c†, where c is the conversion circuit and d is the destination, so the overall beginning and ending operators are equivalent.

Methods Defined Here


Construct a CircuitOp (or PauliOp if equal to the identity) which takes the eigenvectors of diag_pauli_op1 to the eigenvectors of diag_pauli_op2, assuming both are diagonal (or performing this operation on their diagonalized Paulis implicitly if not).


Given a PauliOp, or an Operator containing PauliOps if _traverse is True, converts each Pauli into the basis specified by self._destination and a basis-change-circuit, calls replacement_fn with these two Operators, and replaces the PauliOps with the output of replacement_fn.


Construct an Operator which maps the +1 and -1 eigenvectors of the origin Pauli to the +1 and -1 eigenvectors of the destination Pauli.


Get the diagonal PualiOp to which pauli_op could be rotated with only single-qubit operations.


Construct a CircuitOp with only single-qubit gates which takes the eigenvectors of pauli to eigenvectors composed only of |0⟩ and |1⟩ tensor products.


Gets the Pauli (not PauliOp!) whose diagonalizing single-qubit rotations is a superset of the diagonalizing single-qubit rotations for each of the Paulis in list_op.


A built-in convenience replacement function which produces measurements isomorphic to an OperatorStateFn measurement holding the origin PauliOp.


A built-in convenience replacement function which produces Operators isomorphic to the origin PauliOp.


If pauli_op1 and pauli_op2 do not act over the same number of qubits, pad identities to the end of the shorter of the two so they are of equal length.


A built-in convenience replacement function which produces state functions isomorphic to an OperatorStateFn state function holding the origin PauliOp.



The destination PauliOp, or None if using the default destination, the diagonal basis.