Data to reproduce results and figures in
@misc{ginsberg2025quantumerrordetectionearly,
title={Quantum Error Detection For Early Term Fault-Tolerant Quantum Algorithms},
author={Tom Ginsberg and Vyom Patel},
year={2025},
eprint={2503.10790},
archivePrefix={arXiv},
primaryClass={quant-ph},
url={https://arxiv.org/abs/2503.10790},
}# prob - probability of success for this instance of grovers algorithm
# k_grover - number of logical qubits in the grover operator
# rounds - number of rounds of grovers algorithm (marker diffusion iterations)
# syndrome_op_count - number of syndrome operations in the circuit
# p - depolarizing noise used in the simulation
# shots - number of shots used in the simulation
# syndrome_op_count - about of logical operations between syndrome rounds (if the circuit is compiled with the [[n, n-2, 2]] code)
# ops - total number of operations in the circuit (after compilation)
# depth - total depth of the circuit
# logical_op_count - number of logical operations in the original circuit
# syndrome_count - number of syndrome operations inserted by the compiler
# syndrome_policy - policy used by the compiler to insert syndrome operations
# simulator - simulator used to run the circuit {encoded (uses QED compiler), unencoded (baseline logical circuit)}
- Download the data
wget https://github.com/beitom/experimental-data/raw/refs/heads/main/qed-data.json- Load Data
import pandas as pd
import seaborn as sns
df = pd.read_json('qed-data.json')
encoded = df[df.simulator == 'encoded'] # select data from error detection experiments- Examples
-
Plot sucess probability vs syndrome count see https://arxiv.org/pdf/2503.10790 fig 4
sns.lineplot( encoded.query('k_grover == 4 and rounds == 2'), x='syndrome_op_count', y='prob' )
-
Compare compiled vs uncompiled simulations to see break even noise level
sns.lineplot( encoded.query('k_grover == 4 and rounds == 2'), x='p', y='prob', label='compiled' ) sns.lineplot( df[df.simulator == 'unencoded'].query('k_grover == 4 and rounds == 2'), x='p', y='prob', label='bare' )
-
Select only runs compiled using the optimal syndrome count
opt = encoded.query('k_grover == 4 and rounds == 2').groupby('syndrome_op_count').agg({'prob': 'mean'}).idxmax().item() sns.lineplot( encoded.query(f'k_grover == 4 and rounds == 2 and syndrome_op_count == {opt}'), x='p', y='prob', label='compiled' ) sns.lineplot( df[df.simulator == 'unencoded'].query('k_grover == 4 and rounds == 2'), x='p', y='prob', label='bare' )