- About
- Documentation
- Installation
- Computational requirements
- Deprecation Policy
- Contributing
- License
- References
Pauli propagation, also known as sparse Pauli dynamics (SPD), is a framework for approximating the evolution of operators in the Pauli basis under the action of other operators, such as quantum circuit gates and noise channels [1] - [4]. This approach can be effective when the operators involved are expected to remain sparse in the Pauli basis. The technique has been used to classically estimate expectation values of quantum systems and also to reduce the depths of quantum circuits to be run on a quantum processor [5]. Check out the tutorial to learn how to use this package to simulate expectation values of quantum systems.
This package provides a Rust-accelerated Python interface for performing the most common Pauli propagation routines.
-
propagate_through_rotation_gates: Evolve an operator specified in the Pauli basis,$O$ , through a sequence of Pauli rotation gates,$P$ , creating a transformed operator,$\tilde{O}$ . This evolution can be done in either the Heisenberg frame ($\tilde{O} = P^{\dagger}OP$ ) or the Schrödinger frame ($\tilde{O} = POP^{\dagger}$ ). -
propagate_through_operator: Evolve an operator specified in the Pauli basis,$O$ , through another such operator,$G$ , creating a transformed operator,$\tilde{O}$ . This evolution can be done in either the Heisenberg frame ($\tilde{O} = G^{\dagger}OG$ ) or the Schrödinger frame ($\tilde{O} = GOG^{\dagger}$ ). -
evolve_through_cliffords: Separate a quantum circuit,$U$ , into Clifford and non-Clifford parts,$C$ and$P$ respectively, such that$U = PC$ .
- Rust-accelerated Python interface
- Ability to truncate terms from
$\tilde{O}$ during evolution based on an absolute coefficient tolerance, a fixed number of terms in the evolving operator, or a combination of both. - Ability to perform Pauli propagation in both the Schrödinger and Heisenberg frames.
- Novel technique for approximating the conjugation of a Pauli-sum operator,
$O$ , by another such operator,$G$ , e.g.$GOG^{\dagger}$ or$G^{\dagger}OG$ . This heuristic implementation greedily generates contributions to the product expected to be most significant.
Both the memory and time cost for Pauli propagation routines generally scale with the size to which the evolved operator is allowed to grow.
propagate_through_rotation_gates: As the Pauli operator,
propagate_through_operator: Conjugates one operator in the Pauli basis by another,
(
All documentation is available at https://qiskit.github.io/pauli-propagation/.
We encourage installing this package via pip, when possible:
pip install 'pauli-propagation'For more installation information refer to these installation instructions.
We follow semantic versioning and are guided by the principles in Qiskit's deprecation policy. We may occasionally make breaking changes in order to improve the user experience. When possible, we will keep old interfaces and mark them as deprecated, as long as they can co-exist with the new ones. Each substantial improvement, breaking change, or deprecation will be documented in the release notes.
The source code is available on GitHub.
The developer guide is located at CONTRIBUTING.md in the root of this project's repository. By participating, you are expected to uphold Qiskit's code of conduct.
[1] Tomislav Begušić, Johnnie Gray, Garnet Kin-Lic Chan, Fast and converged classical simulations of evidence for the utility of quantum computing before fault tolerance, arXiv:2308.05077 [quant-ph].
[2] Manuel S. Rudolph, et al., Pauli Propagation: A Computational Framework for Simulating Quantum Systems, arXiv:2505.21606 [quant-ph].
[3] Hrant Gharibyan, et al., A Practical Guide to using Pauli Path Simulators for Utility-Scale Quantum Experiments, arXiv:2507.10771 [quant-ph].
[4] Lukas Broers, et al., Scalable Simulation of Quantum Many-Body Dynamics with Or-Represented Quantum Algebra, arXiv:2506.13241 [quant-ph].
[5] Bryce Fuller, et al., Improved Quantum Computation using Operator Backpropagation, arXiv:2502.01897 [quant-ph].