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.