Skip to main content

Library for performing Pauli propagation.

Project description

Pauli Prop

About

Pauli propagation 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] - [5]. 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 [6].

This package provides a Rust-accelerated Python interface for performing Pauli propagation. The subroutines in this package may be used to implement:

  • Lightcone shading [7] and other novel error mitigation techniques
  • Operator backpropagation (OBP) [6]
  • Classical simulation of expectation values [tutorials]
Technical details
  • Rust-accelerated Python interface
  • Support for noisy simulations [tutorial 3]
  • Ability to truncate operator terms 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 frameworks.
  • Novel technique for approximating the conjugation of two Pauli-sum operators. This heuristic implementation greedily generates contributions to the product expected to be most significant.
  • Current implementation is single-threaded
Computational requirements

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 is propagated in the Pauli basis under the action of a sequence of $N$ Pauli rotation gates of an $M$-qubit circuit, the number of terms will grow as $\mathcal{O}(2^{N})$ towards a maximum of $4^M$ unique Pauli components. To control the memory usage, the operator is truncated after application of each gate, which introduces some error proportional to the magnitudes of the truncated terms' coefficients. The memory requirements are generally linear in the size of the evolved operator and runtime scales linearly in both the operator size and the number of gates.

propagate_through_operator: Conjugates one operator in the Pauli basis by another by greedily accumulating terms in the sum, $\sum_{i,j,k}G^{\dagger}_iO_jG_k$, where $i,j,k$ are sparse indices over the Pauli basis. This implementation sorts the coefficients in each operator by descending magnitude then searches the 3D index space for the terms with the largest coefficients, starting with the origin, $(0, 0, 0)$, and accumulating $(i,j,k)$ triplets up to a specified cutoff. The time spent searching can often be made negligible by increasing the search step size in $(i,j,k)$ space, which provides a cubic speedup for this subroutine. In our profiling, significant time can be spent sorting the operators and performing Pauli multiplication to generate the terms in the new operator.


Documentation

All documentation is available at https://qiskit.github.io/pauli-prop/.


Installation

We encourage installing the package via pip, when possible:

pip install pauli-prop

For more installation information refer to these installation instructions.


Deprecation Policy

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.


Contributing

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.


License

Apache License 2.0


References

[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] Nicolas Loizeau, et al., Quantum many-body simulations with PauliStrings.jl, arXiv:2410.09654 [quant-ph].

[3] Manuel S. Rudolph, et al., Pauli Propagation: A Computational Framework for Simulating Quantum Systems, arXiv:2505.21606 [quant-ph].

[4] Hrant Gharibyan, et al., A Practical Guide to using Pauli Path Simulators for Utility-Scale Quantum Experiments, arXiv:2507.10771 [quant-ph].

[5] Lukas Broers, et al., Scalable Simulation of Quantum Many-Body Dynamics with Or-Represented Quantum Algebra, arXiv:2506.13241 [quant-ph].

[6] Bryce Fuller, et al., Improved Quantum Computation using Operator Backpropagation, arXiv:2502.01897 [quant-ph].

[7] Andrew Eddins, Minh C. Tran, Patrick Rall, Lightcone shading for classically accelerated quantum error mitigation, arXiv:2409.04401 [quant-ph].

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pauli_prop-0.2.0.tar.gz (653.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pauli_prop-0.2.0-cp310-abi3-win_amd64.whl (206.6 kB view details)

Uploaded CPython 3.10+Windows x86-64

pauli_prop-0.2.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (353.6 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

pauli_prop-0.2.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (338.6 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

pauli_prop-0.2.0-cp310-abi3-macosx_11_0_arm64.whl (307.4 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

pauli_prop-0.2.0-cp310-abi3-macosx_10_12_x86_64.whl (319.7 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file pauli_prop-0.2.0.tar.gz.

File metadata

  • Download URL: pauli_prop-0.2.0.tar.gz
  • Upload date:
  • Size: 653.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pauli_prop-0.2.0.tar.gz
Algorithm Hash digest
SHA256 99c9b5e7c61b8f4f2726a359f1bf5d79e9bcd6263107464fee28548eed10f63c
MD5 654622fddf8b7158f7b0432cc5910bf2
BLAKE2b-256 7c7eb4f32ac21bf93d95802b00c684d5f39d587984b61a06435c547bbbeca296

See more details on using hashes here.

Provenance

The following attestation bundles were made for pauli_prop-0.2.0.tar.gz:

Publisher: release.yml on Qiskit/pauli-prop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pauli_prop-0.2.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: pauli_prop-0.2.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 206.6 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pauli_prop-0.2.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9043b98bf84288e56a66592e1b6f8ed121df7f360da62526dfa3b436d6dcef18
MD5 d02062470364f647631972ec0e6fa263
BLAKE2b-256 656c420f5bd061fba17698f095aded925309d0989423bd07e81a92329de9acd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pauli_prop-0.2.0-cp310-abi3-win_amd64.whl:

Publisher: release.yml on Qiskit/pauli-prop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pauli_prop-0.2.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pauli_prop-0.2.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 46e86c5797c48e8b62a188776982c7795440ee48f694e1cdbf6301bbd2b56683
MD5 fc4016d23d7aae18575d24c1745294fd
BLAKE2b-256 0f991d6d7b21c1e524a86c81fbb6afec322fcb2883ca96c3d2850318456902c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pauli_prop-0.2.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: release.yml on Qiskit/pauli-prop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pauli_prop-0.2.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pauli_prop-0.2.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 4cbd9e5d71a399c2ae0fa384b7f673d5057e7476bd57543aff504eb9f7f83a63
MD5 b77301b607f50f032f6d3e5cf3029213
BLAKE2b-256 950b26aec8b48670793530e7707a9dee30f6bfb03412820afe79500f6627bd37

See more details on using hashes here.

Provenance

The following attestation bundles were made for pauli_prop-0.2.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on Qiskit/pauli-prop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pauli_prop-0.2.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pauli_prop-0.2.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fce56be4c801c9c867ee34f9e80c740ace3fbf49bc4157e50573ebee0fb9546e
MD5 c0170ff78153091328232b73a0339de9
BLAKE2b-256 aebd40b5185078ff0fe787f9b1d1ea8b2da3e5322be4d95e5d5cf997a4f563d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pauli_prop-0.2.0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on Qiskit/pauli-prop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pauli_prop-0.2.0-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pauli_prop-0.2.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dd9e61cd92e1756e552b4c65fe5f63592d805ca0d5a9d4a272a03896fef41996
MD5 e7d75864cc018eb37bbd737d8a6a0965
BLAKE2b-256 f78395b2e355b71b2a18b88a939c720b0a676cdd215c75fc3f9ffd032f87685c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pauli_prop-0.2.0-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on Qiskit/pauli-prop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page