You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
Copy file name to clipboardExpand all lines: benchmark/circuit_data/README.md
+115-4Lines changed: 115 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,9 @@
1
1
# Circuit-Level Syndrome Datasets
2
2
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)
4
7
5
8
## Table of Contents
6
9
@@ -11,6 +14,7 @@ This directory contains circuit-level syndrome datasets for quantum error correc
11
14
5.[File Formats](#file-formats)
12
15
6.[Dataset Structure](#dataset-structure)
13
16
7.[Usage Examples](#usage-examples)
17
+
8.[Atom Loss Datasets](#atom-loss-datasets)
14
18
15
19
---
16
20
@@ -436,12 +440,119 @@ The decoder's job: Given which detectors fired, find the minimum-weight set of e
436
440
437
441
---
438
442
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
+
withopen("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
+
withopen("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
+
withopen("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
+
439
548
## References
440
549
441
550
1.[Stim](https://github.com/quantumlib/Stim) - Fast stabilizer circuit simulator
0 commit comments