Pauli Utilities
Pauli utilities convert between matrices, Pauli strings, and quantum circuits, and support products, powers, commutators, and candidate sets for banded matrices. The leftmost character in a Pauli string corresponds to qubit 0.
Recommended imports and minimal example
import numpy as np
from unitarylab.library.pauli_operator.pauli_string_decomposition import (
pauli_string_decomposition,
pauli_string_to_matrix,
)
H = np.array([[1.0, 0.5], [0.5, -1.0]], dtype=complex)
terms = pauli_string_decomposition(H)
recovered = pauli_string_to_matrix(terms)
print(terms)
print(np.allclose(H, recovered))pauli_string_decomposition() returns list[tuple[str, complex]], not a dictionary. By default, coefficients with magnitude less than are discarded.
Interface categories
from unitarylab.library.pauli_operator.pauli_string_decomposition import (
pauli_string_decomposition,
pauli_string_to_matrix,
pauli_string_circuit,
pauli_string_evolution,
pauli_string_multiply,
pauli_string_product,
pauli_string_power,
pauli_string_commutator,
pauli_string_band_matrix,
pauli_string_band_matrix_prepared,
)| Interface | Input | Return value |
|---|---|---|
pauli_string_decomposition(H, sets=None, partition_commuting=True, real_symmetric_hint=False) | Hermitian matrix | List of Pauli terms |
pauli_string_to_matrix(decomposition) | String, single term, list, or dictionary | NumPy matrix |
pauli_string_circuit(pauli_string) | For example, "XYZ" | Circuit for the Pauli operations |
pauli_string_evolution(pauli_string, theta) | Pauli string and rotation angle | Circuit for |
pauli_string_multiply(p1, p2) | Equal-length Pauli strings | (pauli_string, phase) |
pauli_string_product(decomposition) | Multiple Pauli terms | Merged Pauli strings and coefficients |
pauli_string_power(decomposition, order) | Pauli expansion and nonnegative integer power | Expanded power |
pauli_string_commutator(p1, p2) | Equal-length Pauli strings | Pauli strings and coefficients for the commutator |
pauli_string_band_matrix(n_qubits, width, as_tuple=False) | Qubit count and bandwidth | Candidate Pauli set for a banded matrix |
pauli_string_band_matrix_prepared(n_qubits, width) | Qubit count and bandwidth | Prepared candidate set |
Decomposition options
sets: decompose only over the specified Pauli candidate set.partition_commuting=True: reorder the result by commutation relationships to support measurement grouping.real_symmetric_hint=True: when the input is known to be real symmetric, skip candidates containing an odd number ofYoperators.
Matrix dimensions must be , and the matrix must be Hermitian. Pauli strings may contain only I, X, Y, and Z; the two strings used in multiplication and commutator operations must have equal lengths. A narrow candidate set can omit matrix components, so verify reconstruction with sets by converting the result back to a matrix.
Resource limits
The complete Pauli basis contains strings, so general decomposition grows rapidly with qubit count. For known matrix structure, use real_symmetric_hint, sets, or a banded-matrix candidate set, then check small examples with np.allclose().