ppvm / Pauli propagation & tableau simulation
Sections
  1. § 1 Install
  2. § 2 Stim circuits & sampling
  3. § 3 Generalized Tableau
  4. § 4 Pauli Propagation
  5. § 5 Loss channel details
  6. § 6 Next steps
Python · For researchers

pyQuick Start

For physicists and students who want to run circuits under noise and inspect outcomes — without writing any Rust. Code you'd paste into a Jupyter cell.

Audience

This Quick Start walks you through the Python interface end-to-end: how to install ppvm, parse and sample Stim circuits, drive the generalized stabilizer tableau gate-by-gate, compute expectation values via Pauli propagation, and model neutral-atom qubit loss. Each topic is its own section on the left.

If you'd rather embed ppvm into a Rust simulator or build on its trait hierarchy, jump to the Rust Quick Start instead.

Install ppvm

Requires Python ≥ 3.10. The native extension is compiled automatically from Rust during install. We recommend using uv to manage your Python environment.

uv add git+https://github.com/QuEraComputing/ppvm.git#subdirectory=ppvm-python

If you prefer plain pip inside an existing virtualenv, the same source URL works there too — the project policy in this repository's own docs is uv, but the wheel itself carries no opinions.

Verify the install

Drop the following into a Python REPL or a Jupyter cell:

from ppvm import GeneralizedTableau

tab = GeneralizedTableau(n_qubits=1)
tab.h(0)
print(tab.measure(0))  # MeasurementResult.ZERO or MeasurementResult.ONE

If that prints a MeasurementResult, you're ready to move on to § 2 Stim circuits & sampling.

On this page
  1. Audience
  2. Install ppvm
  3. Verify