Skip to content

Commit 003e408

Browse files
GiggleLiuclaude
andcommitted
Update circuit data README with atom loss documentation
Add comprehensive documentation for atom loss datasets: - Atom loss model explanation with Mermaid diagram - Loss mask file format (*_loss.01) - Metadata fields for atom loss parameters - Python code example for loading loss data - Loss-aware decoding strategies overview - Reference to arXiv:2412.07841 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 266f7f4 commit 003e408

1 file changed

Lines changed: 115 additions & 4 deletions

File tree

benchmark/circuit_data/README.md

Lines changed: 115 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Circuit-Level Syndrome Datasets
22

3-
This directory contains circuit-level syndrome datasets for quantum error correction decoder benchmarking. The data is generated using [Stim](https://github.com/quantumlib/Stim), Google's fast stabilizer circuit simulator.
3+
This directory contains circuit-level syndrome datasets for quantum error correction decoder benchmarking:
4+
5+
1. **Standard datasets** (`surface_*`): Generated using [Stim](https://github.com/quantumlib/Stim)
6+
2. **Atom loss datasets** (`atomloss_*`): Generated using [TensorQEC.jl](https://github.com/nzy1997/TensorQEC.jl)
47

58
## Table of Contents
69

@@ -11,6 +14,7 @@ This directory contains circuit-level syndrome datasets for quantum error correc
1114
5. [File Formats](#file-formats)
1215
6. [Dataset Structure](#dataset-structure)
1316
7. [Usage Examples](#usage-examples)
17+
8. [Atom Loss Datasets](#atom-loss-datasets)
1418

1519
---
1620

@@ -436,12 +440,119 @@ The decoder's job: Given which detectors fired, find the minimum-weight set of e
436440

437441
---
438442

443+
---
444+
445+
## Atom Loss Datasets
446+
447+
The `atomloss_*` datasets model **atom loss errors** relevant to neutral atom quantum computers. These are generated using TensorQEC.jl.
448+
449+
### Atom Loss Model
450+
451+
```mermaid
452+
flowchart LR
453+
A["Qubit"] -->|"p_loss"| B{"Lost?"}
454+
B -->|No| C["Normal Operation"]
455+
B -->|Yes| D["Random Pauli Error"]
456+
D --> E["Qubit Marked as Lost"]
457+
```
458+
459+
In neutral atom systems:
460+
- Atoms can be **physically lost** from optical traps during gate operations
461+
- Lost qubits contribute **random errors** (erasure → depolarizing)
462+
- Loss can be **detected** via fluorescence imaging
463+
- Loss-aware decoders can use this information
464+
465+
### Atom Loss File Formats
466+
467+
Each atom loss dataset includes:
468+
469+
| File | Description |
470+
|------|-------------|
471+
| `*_events.01` | Detection events (same as Stim format) |
472+
| `*_obs.01` | Observable flips (labels) |
473+
| `*_loss.01` | **Loss mask** - which qubits were lost |
474+
| `*_metadata.json` | Parameters and statistics |
475+
476+
### Loss Mask Format (`*_loss.01`)
477+
478+
```
479+
000000000 # No qubits lost (d=3, 9 qubits)
480+
001000100 # Qubits 2 and 6 were lost
481+
111000000 # Qubits 0, 1, 2 were lost
482+
```
483+
484+
- One line per shot
485+
- One character per data qubit
486+
- `0` = qubit survived, `1` = qubit was lost
487+
488+
### Atom Loss Metadata Example
489+
490+
```json
491+
{
492+
"code": "surface_code:rotated_memory_z",
493+
"distance": 5,
494+
"rounds": 5,
495+
"p_error": 0.001,
496+
"p_loss_1q": 0.01,
497+
"p_loss_2q": 0.02,
498+
"num_shots": 10000,
499+
"logical_error_rate": 0.6851,
500+
"avg_loss_rate": 0.3331,
501+
"generator": "TensorQEC (atom loss)"
502+
}
503+
```
504+
505+
### Using Atom Loss Data
506+
507+
```python
508+
import numpy as np
509+
510+
# Load detection events
511+
with open("atomloss_d5_r5_p0.0010_loss0.0100_events.01") as f:
512+
events = np.array([[int(c) for c in line.strip()] for line in f])
513+
514+
# Load loss mask
515+
with open("atomloss_d5_r5_p0.0010_loss0.0100_loss.01") as f:
516+
loss_mask = np.array([[int(c) for c in line.strip()] for line in f])
517+
518+
# Load labels
519+
with open("atomloss_d5_r5_p0.0010_loss0.0100_obs.01") as f:
520+
labels = np.array([int(line.strip()) for line in f])
521+
522+
# For loss-aware decoding:
523+
# - Use loss_mask to identify which qubits have erasure errors
524+
# - Modify DEM weights or use erasure-aware decoder
525+
```
526+
527+
### Loss-Aware Decoding Strategies
528+
529+
1. **Naive decoding**: Ignore loss information (baseline)
530+
2. **Erasure decoding**: Treat lost qubits as known erasures
531+
3. **Supercheck construction**: Combine stabilizers that share lost qubits
532+
4. **Adaptive decoding**: Modify decoder graph based on loss pattern
533+
534+
Reference: [arXiv:2412.07841](https://arxiv.org/abs/2412.07841) - Quantum Error Correction resilient against Atom Loss
535+
536+
### Generating Atom Loss Data
537+
538+
```bash
539+
# Quick mode (10k shots, d=3,5)
540+
make atomloss-data-quick
541+
542+
# Full mode (50k shots, d=3,5,7)
543+
make atomloss-data
544+
```
545+
546+
---
547+
439548
## References
440549

441550
1. [Stim](https://github.com/quantumlib/Stim) - Fast stabilizer circuit simulator
442-
2. [Tesseract](https://github.com/quantumlib/tesseract-decoder) - Search-based QEC decoder
443-
3. [PyMatching](https://github.com/oscarhiggott/PyMatching) - MWPM decoder
444-
4. [DEM Format](https://github.com/quantumlib/Stim/blob/main/doc/file_format_dem_detector_error_model.md)
551+
2. [TensorQEC.jl](https://github.com/nzy1997/TensorQEC.jl) - Tensor network QEC library
552+
3. [Tesseract](https://github.com/quantumlib/tesseract-decoder) - Search-based QEC decoder
553+
4. [PyMatching](https://github.com/oscarhiggott/PyMatching) - MWPM decoder
554+
5. [DEM Format](https://github.com/quantumlib/Stim/blob/main/doc/file_format_dem_detector_error_model.md)
555+
6. [Atom Loss QEC](https://arxiv.org/abs/2412.07841) - Atom loss error correction
445556

446557
---
447558

0 commit comments

Comments
 (0)