Skip to main content

propaq

Docs CI PyPI License: MIT arXiv

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).

The core install pulls in only numpy, scipy, qiskit and tqdm. Framework integrations are opt-in extras:

pip install "propaq[cirq,ffsim,openfermion,hybrid]"
Extra Enables
cirq Building circuits from Cirq, and register_cirq_gate
ffsim The from_ffsim_* circuit constructors and MajoranaTermSum.from_ffsim
openfermion Converting OpenFermion fermionic operators into propaq observables
hybrid propaq.hybrid: hybrid Schrodinger-Heisenberg expectation values against a quimb MPS

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 target/wheels/propaq-*.whl. We also recommend installing pre-commit hooks via

pre-commit install

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
from propaq.propagators import MajoranaPropagator
from propaq.truncation import TruncationPolicy

# 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),
)

# 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 documentation:

Building the docs locally

pip install -e ".[docs]"
mkdocs serve

Citation

If you use propaq in your research, please cite:

@misc{Propaq,
      title={Propaq: A Python package for Heisenberg Propagation}, 
      author={Hrishikesh Belagali and Ryan LaRose},
      year={2026},
      eprint={2609.07730},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      url={https://arxiv.org/abs/2609.07730}, 
}

License

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

propaq-0.1.5-cp312-cp312-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.12Windows x86-64

propaq-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

propaq-0.1.5-cp312-cp312-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

propaq-0.1.5-cp311-cp311-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.11Windows x86-64

propaq-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

propaq-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

propaq-0.1.5-cp310-cp310-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.10Windows x86-64

propaq-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

propaq-0.1.5-cp310-cp310-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file propaq-0.1.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: propaq-0.1.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.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

Hashes for propaq-0.1.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 803e9d8784693347734b2d6a527a570b18ce181726d81e9e973323c0a9cdd429
MD5 e7472bd5e9543fd6d5a5c07966d1a8b1
BLAKE2b-256 e430bfc32c6ba372f3ffa401e417026279c5a494d5f3fbd7c01b93c12f4634fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp312-cp312-win_amd64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for propaq-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db4e4b07160d8492eb82ca6a7e3f998e83e5ac4d72b08cf574e786e4b7bf5623
MD5 96e637d9d70df9368982756936e4744c
BLAKE2b-256 1cc85a1a93c7a6c0c8449d99568070fdbcb9ee3ff11bb61337680eb93458d87c

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for propaq-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7cc831da24c03f34c4838137ce2162f651c3b19a7dac6c96dbee8478d9ca7ba3
MD5 ac8cba6a0303a94604cf6104098469b5
BLAKE2b-256 30e1188272afe18226d15c81d21cd3398c767ef3ba2640614d35272f615d9904

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: propaq-0.1.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.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

Hashes for propaq-0.1.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 380355954dafc55945a46914e6e3dac180e10cfcd9d4f6fb982ab76cd7406aec
MD5 69d7653de0e64faf1918f48071da4190
BLAKE2b-256 6cfa9a8e756de12407b8cb199c82f50f563b0520db0367c1a1e3c17320853738

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp311-cp311-win_amd64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for propaq-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 520983fdac7730d4320c384a919a9348e0cb24f6d848b2dadd65fa2a95743b31
MD5 1e03587b15ed7c9dd0ba591a6cbd09a5
BLAKE2b-256 c2175917f1819e11b712d8fa13e372d5b56553a36cc3c510b187113695940484

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for propaq-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 484926752fa23a7ad4e88481b2f9943bf5f96148b28579c4b4138f19eb373e09
MD5 06301920411f744782b9caf55eff360f
BLAKE2b-256 d75fbac7d44fdd7d486d08a4d5f3b4a21afd11bd807673540dc08ca81c52acb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: propaq-0.1.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.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

Hashes for propaq-0.1.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bc1d1e859c395059397a4daf41323fe68cefb4bfb2fcc2177373f87abc053887
MD5 7e2a0871f42d3866f3509f8152e2ef03
BLAKE2b-256 75c6a45355152965460bf4ec23656efaddbef71f3d2cc9390235fb0a8b07b71a

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp310-cp310-win_amd64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for propaq-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca594b2b4585e03b365430d170424b57e487542bb2026015985dbbfd6ad2f1cb
MD5 5c104580cdf7fa28f42ec97f7810603b
BLAKE2b-256 b3bd8f7758339d428074ae400aff553200732c96336bdb45ee13fd32537947d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

File details

Details for the file propaq-0.1.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for propaq-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01bfca512f8392c99fb317125bb50b91a8e924cfa608800bfef27749c793d5b5
MD5 0c7827083eeecd5ca253d5b51b5b84c2
BLAKE2b-256 5b314fddf3dd21687e7a073e1fe7558cb13e3e547e19cddba6b7ad1a10e74202

See more details on using hashes here.

Provenance

The following attestation bundles were made for propaq-0.1.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: workflow.yml on hkbelagali/propaq

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

Release history Release notifications | RSS feed

This release

0.1.5 This release

9 files

0.1.4

9 files

0.1.3

9 files

0.1.2

9 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page