propaq
Fast Heisenberg-picture propagation for quantum circuit simulation, with a parallel Rust backend!
propaq features the following:
- Hybrid Schrodinger-Heisenberg simulation for quantum circuits, with functionality for both Pauli and Majorana propagation.
- Support for both Pauli and Majorana propagation, with integration with Qiskit and Cirq.
- Support for custom, composable noise models and truncation policies, written in C, Rust, AOT Julia, or Python via a plugin ABI.
- Support to define fast paths for custom unitary gates.
- Logging and profiling capabilities for propagation runs, as well as lazy I/O operations for saving and loading results.
- Extrapolation methods for estimating expectation values in the limit of zero noise and/or zero truncation error.
- Surrogate/Symbolic propagation for computing expectation values of parameterized circuits, i.e. for variational quantum algorithms.
propaq implements the algorithms described in:
M. S. Rudolph, T. Jones, Y. Teng, A. Angrisani, and Z. Holmes, “Pauli Propagation: A Computational Framework for Simulating Quantum Systems,” May 27, 2025, arXiv: arXiv:2505.21606. doi: 10.48550/arXiv.2505.21606.
A. Miller et al., "Simulation of Fermionic circuits using Majorana Propagation," Dec. 16, 2025, arXiv: arXiv:2503.18939. doi: 10.48550/arXiv.2503.18939.
Installation
pip install propaq
Requires Python 3.10+ and a pre-built wheel for your platform (Linux x86-64, macOS, Windows).
For development, clone the repo and install with:
pip install -e .[dev]
which will install the Rust toolchain and build the Rust backend from source via maturin. You can also build the Rust backend manually with
maturin develop or maturin build and then install the resulting wheel with pip install dist/propaq-*.whl.
Quick start
import numpy as np
from qiskit import QuantumCircuit
from qiskit.circuit.library import XXPlusYYGate, RZGate, SwapGate
from qiskit.quantum_info import SparsePauliOp
from propaq.circuits import MajoranaCircuit
from propaq.datatypes import MajoranaTermSum
from propaq.noise import UniformNoiseModel, TruncationPolicy
from propaq.propagators import MajoranaPropagator
# Build a random 4-qubit circuit
qc = QuantumCircuit(4)
qc.append(XXPlusYYGate(np.pi / 4, 0.0), [0, 1])
qc.append(RZGate(np.pi / 3), [2])
qc.append(SwapGate(), [2, 3])
# Observable: sum of single-site X operators
observable = SparsePauliOp.from_list([
("XIII", 1.0), ("IXII", 1.0), ("IIXI", 1.0), ("IIIX", 1.0)
])
# Convert to propaq types
mc = MajoranaCircuit.from_qiskit(qc, n_modes=2 * qc.num_qubits)
mts = MajoranaTermSum.from_sparse_pauli_op(observable)
# Build propagator with noise and truncation
prop = MajoranaPropagator(
noise=UniformNoiseModel(damping=0.001),
truncation=TruncationPolicy(weight_cutoff=10, coeff_cutoff=1e-5, truncation_range=(None, 10_000_000)),
)
# Back-propagate and evaluate
result = prop.expectation_value(mts, mc, initial_state=0)
print("Expectation value:", result.expectation_value)
For a more detailed introduction, see the example notebooks in the documentation.
Citation
If you use propaq in your research, please cite:
</code></pre>
<h2><a href="#user-content-license" aria-hidden="true" class="anchor" id="user-content-license"></a>License</h2>
<pre><code class="language-md">MIT License
Copyright (c) 2026 Hrishikesh Belagali
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file propaq-0.1.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: propaq-0.1.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37759c4716795f4c579060c7fe8f183bfbe235b2dd895962401d08cfadce255d
|
|
| MD5 |
bbac8acbfa000e7cc661ee3414c25947
|
|
| BLAKE2b-256 |
5a6675723ba6de96f94a484ea5cf93728d50b794b9129d7ad47d95949db920f6
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp312-cp312-win_amd64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp312-cp312-win_amd64.whl -
Subject digest:
37759c4716795f4c579060c7fe8f183bfbe235b2dd895962401d08cfadce255d - Sigstore transparency entry: 2308116843
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: propaq-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e93b9abf86e65720220bb54e9ac53ed03915b7525e9f30d771023fc5d7f822f
|
|
| MD5 |
f1c6e4aab8d0b1f6a304255b0089e3bf
|
|
| BLAKE2b-256 |
70e97f84b13ddeff970b19ab46d851f74f7bba22ab2be05614276e25b619cd78
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
7e93b9abf86e65720220bb54e9ac53ed03915b7525e9f30d771023fc5d7f822f - Sigstore transparency entry: 2308117033
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: propaq-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ca72c242fdb2cf4465200ce320991a9e581ed94371d7d126c2ab0b8bccbe7aa
|
|
| MD5 |
f96e8253f52b624f90a37c6fae4e45ba
|
|
| BLAKE2b-256 |
467889942ec6f6480ab4c0067fa7f272adf7e40d7f022ce091760fde43485e3d
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
7ca72c242fdb2cf4465200ce320991a9e581ed94371d7d126c2ab0b8bccbe7aa - Sigstore transparency entry: 2308117118
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: propaq-0.1.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bf005ff1cba01be9d6b669abb929dadec616c96528c52a0affad6d07dd6a701
|
|
| MD5 |
25db4142635f42ea2df4bff6956081c4
|
|
| BLAKE2b-256 |
09ca343e5622eaf2594dd10bb76d8883945e8abe0b6de3e4a46c29071a13204c
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp311-cp311-win_amd64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp311-cp311-win_amd64.whl -
Subject digest:
8bf005ff1cba01be9d6b669abb929dadec616c96528c52a0affad6d07dd6a701 - Sigstore transparency entry: 2308116938
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: propaq-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cb65df9096fc35246b984bfb5dfdc60cb7314c7892c69bc7537282a46cf0611
|
|
| MD5 |
71351fb3f3fe238f25f42cc8761ccbd6
|
|
| BLAKE2b-256 |
88d1f48c7f4dfabdc84dedae0ce6b13f21577de985dbc34ad123aeb63d0ef1cf
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
1cb65df9096fc35246b984bfb5dfdc60cb7314c7892c69bc7537282a46cf0611 - Sigstore transparency entry: 2308116653
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: propaq-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57c5ecb2c8c993f9b1f1d7c9ba025d1abdd7115baa349812c90855544f34f17e
|
|
| MD5 |
3054a9cf52de2695af4e801ae8bb1906
|
|
| BLAKE2b-256 |
8ebe7ee363f7a8588235a2bfe510e3fcbb4d91bf250fd926630f2de618c486ae
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
57c5ecb2c8c993f9b1f1d7c9ba025d1abdd7115baa349812c90855544f34f17e - Sigstore transparency entry: 2308116754
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: propaq-0.1.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
424db2c973a7291fd25e845fc0ebd4e3e913da0bdb0b6a9e9931c1e1612fe463
|
|
| MD5 |
274e6ff60b9cad5544bd9e6ee8d2de81
|
|
| BLAKE2b-256 |
ea49d76a025b18636721e7f62999305a9542b907e96d4f129fe62702d07aa177
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp310-cp310-win_amd64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp310-cp310-win_amd64.whl -
Subject digest:
424db2c973a7291fd25e845fc0ebd4e3e913da0bdb0b6a9e9931c1e1612fe463 - Sigstore transparency entry: 2308116589
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: propaq-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
578787fd66f0efb7bac2c9a2dc387c53242f6533585c06364d56f6e431563cc2
|
|
| MD5 |
cebfa606e81d815f8ac3164ef154dde5
|
|
| BLAKE2b-256 |
63d2ac146fa8d46ecf3ca31b6c5d9e1e66b0f988fea5d6babd9c2d8ce6c788d5
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
578787fd66f0efb7bac2c9a2dc387c53242f6533585c06364d56f6e431563cc2 - Sigstore transparency entry: 2308116443
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file propaq-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: propaq-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dea65e210405544ca2f2be763d5ebd18e8e336ba9131028b7afd9652514a7567
|
|
| MD5 |
44e7258e19711cc8a6a0b3b9889caa2c
|
|
| BLAKE2b-256 |
b28788f69ff84980b47641686244c3e63cc1fec2627ac36275889b9f497d11e0
|
Provenance
The following attestation bundles were made for propaq-0.1.2-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
workflow.yml on hkbelagali/propaq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propaq-0.1.2-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
dea65e210405544ca2f2be763d5ebd18e8e336ba9131028b7afd9652514a7567 - Sigstore transparency entry: 2308116507
- Sigstore integration time:
-
Permalink:
hkbelagali/propaq@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hkbelagali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@eae5f5f694c70546e901b93a33848933ee7e4a6a -
Trigger Event:
release
-
Statement type: