tau-chrono
Bayesian noise tracking for quantum circuits via Petz recovery maps. 46% more accurate than independent gate models on real hardware.
Author: Sheng-Kai Huang (akai@fawstudio.com) Website: tau-chrono.pages.dev
Quickstart
pip install tau-chrono
import numpy as np
from tau_chrono import depolarizing, bayesian_compose
# Build a 20-gate circuit with 5% depolarizing noise per gate
gates = [depolarizing(0.05) for _ in range(20)]
rho = np.array([[1, 0], [0, 0]], dtype=complex) # |0>
sigma = np.eye(2, dtype=complex) / 2 # maximally mixed
# Compare naive vs Bayesian noise prediction
result = bayesian_compose(gates, sigma_0=sigma, rho=rho)
print(f"Naive: tau = {result.tau_multiplicative_total:.3f}")
print(f"Bayesian: tau = {result.tau_bayesian_total:.3f}")
print(f"Improvement: {result.improvement_percent:.1f}%")
Key Results (QuTech Tuna-9 Hardware)
All results from real NISQ hardware experiments on the QuTech Tuna-9 superconducting processor (9 transmon qubits, 4096 shots).
| Experiment | Result |
|---|---|
| Depth scaling (depth 50) | 46% more accurate than independent model |
| Bernstein-Vazirani (4 qubits) | 60.4% improvement, 4 false failures avoided |
| H2 VQE | Bayesian keeps depth 4 viable (tau=0.49); naive says stop (tau=0.60) |
| Composition inequality | Verified across all 65 circuit configurations |
Depth Scaling
Improvement grows monotonically with depth: 2.3% at depth 2, 46% at depth 50.
Bernstein-Vazirani
The naive model falsely predicts failure at 3+ oracle repetitions. All circuits actually succeed with >83% probability.
H2 VQE
Bayesian tracking doubles usable ansatz depth (2 to 4). At depth 4: naive tau=0.60 (STOP), Bayesian tau=0.49 (GO).
Why It Works
Independent gate noise models assume each gate fails independently. In reality, noise saturates: a qubit that's already noisy can't get much noisier. The Petz recovery map (Petz, 1986) tracks this saturation through the circuit by propagating a Bayesian reference state alongside the signal state.
Interactive Demo
pip install tau-chrono[demo]
streamlit run demo.py
Adjust noise type, error rate, and circuit depth interactively.
Honest Limitations
- Small hardware only. All results from QuTech Tuna-9 (5-9 qubits). Not tested on larger devices.
- Improvement is noise-dependent. Large on noisy hardware, diminishes on low-noise hardware.
- Depolarizing approximation. Structured noise (coherent errors, leakage) is not captured.
- Not tested on IBM or Google hardware. Portability is plausible but unverified.
Theoretical Foundation
All theoretical tools are due to their original authors:
- D. Petz, Commun. Math. Phys. 105, 123 (1986) -- Petz recovery map
- A. J. Parzygnat and F. Buscemi, Quantum 7, 1013 (2023) -- Unique retrodiction functor
- M. Junge et al., Ann. Henri Poincare 19, 2955 (2018) -- Strengthened data processing inequality
Development
git clone https://github.com/akaiHuang/tau-chrono.git
cd tau-chrono
pip install -e ".[dev]"
pytest tests/
Citation
@software{Huang2026BayesianPetz,
author = {Huang, Sheng-Kai},
title = {Bayesian Noise Tracking via Petz Recovery Maps},
year = {2026},
url = {https://github.com/akaiHuang/tau-chrono}
}
License
MIT License. See LICENSE.
Metadata
Release files for tau-chrono 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tau_chrono-0.1.0.tar.gz | 13.0 kB | Without provenance | Details for tau_chrono-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tau_chrono-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for tau_chrono-0.1.0-py3-none-any.whl |
Total release size: 21.7 kB
Release files / tau_chrono-0.1.0.tar.gz
| Download URL | tau_chrono-0.1.0.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
faff035064e62bc1cbe4c696346373e846c433af467001ddec63e64924b43008
|
|
BLAKE2b-256 checksum How to use checksums |
a6119370fd2b52eb95ed87cee60f9197c4679d77bdc7ddb911697d8ed6d806c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.12
|
Release files / tau_chrono-0.1.0-py3-none-any.whl
| Download URL | tau_chrono-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5844f4ba0c1d04dc88fd64bad97f0aac32fe8780018eaa7d2f7f34f88ffaaba0
|
|
BLAKE2b-256 checksum How to use checksums |
c40701e003dac80eb1d699d012c21b879c50a12961c0bd7f44fa6c9f7677eab0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.12
|
Security for tau-chrono 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.