Qiskit Paulice
qiskit-paulice is a package for embedding hardware efficient Pauli checks into arbitrary
Clifford circuits on arbitrary qubit connectivities using spacetime stabilizer codes. These checks
can be used to detect logical errors during circuit execution. Postselecting only samples with no
detected errors can improve the fidelity of states sampled with a quantum processor at the cost of
some ancilla qubits and an increase in sampling overhead. This method is particularly suited to
near-term hardware since it has a much milder overhead in qubits and gates compared to
fault tolerant quantum computing, while having a better sampling overhead than error mitigation
methods such as ZNE or PEC [1].
Although spacetime Pauli checks may be used to implement standalone error detection routines, they are also relevant in the context of error mitigation and error correction. Error detection can complement error mitigation techniques such as probabilistic error cancellation (PEC) by capturing some of the noise affecting gates and measurements, reducing the impact of the noise channel being inverted and thus reducing the sampling overhead. They may also be viewed as an early step toward practical fault tolerance since implementing stabilizer codes to protect data qubits from logical errors is a core concept of traditional error correction. Since this method provides single shot access to the quantum state it can be used in both sampling-based and expectation value-based workflows.
Documentation
Documentation for this package is available on the IBM Quantum Platform.
Installation
We encourage installing this package via pip, when possible:
pip install 'qiskit-paulice'
For more installation information refer to these installation instructions.
Getting started
A simple guide to help you get started quickly with this package is available here.
Use case examples
This technique has been used to improve the fidelity of samples from Clifford-dominated circuits up to 50 qubits and 2450 entangling gates [1].
Technical discussion
Finding good sets of spacetime Pauli checks
A set of spacetime Pauli checks is "good" if each check is valid, low weight, and effective.
A check is comprised of a number of controlled Pauli rotations, $P$, placed on some wires in the circuit, $w$: ${(P_1,w_1), ..., (P_k,w_k)}$. For a given check, the controls lie on a single ancilla qubit, and the rotations occur on wires of a single target qubit. For Clifford circuits, a check is valid if its backpropagated product is a stabilizer of the state prepared by the ideal circuit: $\prod_{i}B(P_i,w_i) \in S$, where $B(P,w)$ is the backpropagator of $P$ from $w$ to the beginning of the circuit, and $S$ is the set of all stabilizers of the circuit.
A check is low weight if it requires few entangling gates to implement. The check picking algorithm will favor checks that are low weight and provide the most effective error detection.
A check is effective if it captures much more error than it introduces. A Pauli check is comprised
of a number of entangling gates and thus introduces some additional gate noise into the
calculation. It is important to ensure each additional check brings some additional error detection
capability. The effectiveness of a set of checks can be approximated by composing the Pauli errors
that are uncovered by the checks into a postselected noise channel and calculating its impact.
Minimizing the sampling overhead for implementing the uncovered inverse noise channel is a solid
heuristic for selecting good checks, as it gives an indication of how much error the checks can't
detect. A slower but more realistic approach is to perform a Monte Carlo sampling from the noisy
state and empirically compute the logical error rate of the postselected distribution. Both of
these approaches are available as built-in cost functions in the qiskit_paulice.add_pauli_checks
function.
Postselecting samples based on syndrome data
In this package a check is implemented using entangling gates between one ancilla qubit and one target qubit. Each ancilla starts in $|0\rangle$, so $Z_\text{anc}$ stabilizes its input state. Forward propagating $Z_\text{anc}$ from the beginning of the ancilla through the entire checked circuit yields a Pauli operator on the output which may be higher weight and extend into the payload circuit. The qubit indices on which this output operator has non-identity terms are called the check's support, and the check passes if the bits, $b$, in the check's support have even parity: $\bigoplus_{i=1} b_i = 0$. A sample is kept if each check produces $0$ for its parity check.
Software Features
- Automatic noise model creation from backend benchmark data
- Rust accelerated check finding
- 3 built-in algorithms for check finding
- Evaluate efficacy of checks based on sampling overhead of postselected inverse noise channel or logical error rate based on Monte Carlo sampling of noisy state
- Helper functionality for finding ancilla/target qubit pairs for a given backend
Known issues
- Idling noise is not provided via
NoiseModel.get_backendand is ignored during check picking - While many stochastic steps in the algorithm are controllable with a random seed, some features
have randomness not controllable with a seed. Specifically, the following kwargs values for
add_pauli_checkswill cause undeterministic check picking:cost="LER",method="genetic", andmethod="windowed_genetic". For deterministic behavior use:add_pauli_checks(..., cost="gamma", method="windowed"), which are the default values.
Future work
- Support for handling non-Clifford systems
- More support for analyzing postselected noise channel
- Handling idling noise when picking checks
- Controllable randomness for logical error rate cost function and genetic search algorithms
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.
Citing this package
If you use this package in your research, use the CITATION.bib file in this project’s repository to cite the appropriate reference(s).
License
Deprecation Policy
We follow semantic versioning. 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.
References
[1] Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].
Metadata
Release files for qiskit-paulice 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qiskit_paulice-0.2.1.tar.gz | 814.1 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| qiskit_paulice-0.2.1-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| qiskit_paulice-0.2.1-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| qiskit_paulice-0.2.1-cp310-abi3-manylinux_2_28_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| qiskit_paulice-0.2.1-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| qiskit_paulice-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 3.3 MB
Release files / qiskit_paulice-0.2.1.tar.gz
| Download URL | qiskit_paulice-0.2.1.tar.gz |
|---|---|
| Size | 814.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fb4e3b150961d0ffdfada7045eb79a7c10e5fe7f48477b2577c267882da80427
|
|
BLAKE2b-256 checksum How to use checksums |
ca20f51eb346e180a3936664e8fd11f58e2047acf4aced3c7ae9e5092edeb4ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.
Transparency logRelease files / qiskit_paulice-0.2.1-cp310-abi3-win_amd64.whl
| Download URL | qiskit_paulice-0.2.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 381.1 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
22db05d9fee4c0ef56a3ac14b43c3b543e7260006d69cc68bd0452b3c1acd0bd
|
|
BLAKE2b-256 checksum How to use checksums |
7d9529c778989fbdc23b1fb858d4b5882c050a4911bebc6c747797903691a1a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.
Transparency logRelease files / qiskit_paulice-0.2.1-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | qiskit_paulice-0.2.1-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 560.2 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
07d55f5b4971af269fbe22824de6a756d5e2a156b2d78b594c6e7fadf5b2b235
|
|
BLAKE2b-256 checksum How to use checksums |
8f1d79cb1e110d5f0ec920e4765c182eb028b19bb7e04f996d542d62c8d37591
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.
Transparency logRelease files / qiskit_paulice-0.2.1-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | qiskit_paulice-0.2.1-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 540.1 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
110957c77bfb83619b28795a47353ef28e141db6577a745a5eaa53c654b7d8c2
|
|
BLAKE2b-256 checksum How to use checksums |
a7f2700ef52e15b737c49b5df68ca4b1b77fd02ebf3680b6a47c2dde0c902d8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.
Transparency logRelease files / qiskit_paulice-0.2.1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | qiskit_paulice-0.2.1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 485.4 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
33d58f38897b3fea126907e745b3eb75ad12ec1cad6b66e45765f3e2d6dbec62
|
|
BLAKE2b-256 checksum How to use checksums |
184807f66570a4f9e9f7237bc907f76e021fd4dc049c676aadd68e067005c620
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.
Transparency logRelease files / qiskit_paulice-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | qiskit_paulice-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 495.9 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
e49faa8576ed77b6789cce4cdf0b6fd2275a16f6af153053362fdd3491ef075e
|
|
BLAKE2b-256 checksum How to use checksums |
eac430f946808c53b6e0907741a690c754e7eb19e3b81d0bfd4624cfcbfd3bb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.
Transparency log