Skip to content

Commit bc5d57f

Browse files
ChanceSiyuanclaude
andcommitted
Organize UAI files into separate datasets/uais/ directory
This commit reorganizes the dataset structure to keep UAI files separate from DEM files for better organization. Changes: - Move .uai files from datasets/dems/ to datasets/uais/ - Update generate_uai_from_circuit() to save in datasets/uais/ - Update documentation to reflect new folder structure - Update datasets/README.md with dataset organization section - Update examples/GETTING_STARTED.md with correct paths Dataset structure: - datasets/circuits/ - Circuit files (.stim) - datasets/dems/ - Detector error models (.dem) - datasets/uais/ - UAI format files (.uai) - datasets/syndromes/ - Syndrome databases (.npz) All tests passing (62/62) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 9dbf70f commit bc5d57f

File tree

6 files changed

+29
-14
lines changed

6 files changed

+29
-14
lines changed

datasets/README.md

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
Circuit-level surface-code memory experiments generated with Stim for **Belief Propagation (BP) decoding** demonstrations.
44

5+
## Dataset Organization
6+
7+
The dataset is organized into subdirectories by file type:
8+
9+
```
10+
datasets/
11+
├── circuits/ # Noisy quantum circuits (.stim)
12+
├── dems/ # Detector error models (.dem)
13+
├── uais/ # UAI format for probabilistic inference (.uai)
14+
└── syndromes/ # Syndrome databases (.npz)
15+
```
16+
517
## Overview
618

719
| Parameter | Value |
@@ -38,7 +50,7 @@ import stim
3850
import numpy as np
3951

4052
# Load circuit
41-
circuit = stim.Circuit.from_file("datasets/noisy_circuits/sc_d3_r3_p0010_z.stim")
53+
circuit = stim.Circuit.from_file("datasets/circuits/sc_d3_r3_p0010_z.stim")
4254

4355
# Extract DEM - this is what BP needs
4456
dem = circuit.detector_error_model(decompose_errors=True)
@@ -180,25 +192,27 @@ def evaluate_decoder(decoder_fn, circuit, n_shots=10000):
180192
uv sync
181193

182194
# Generate circuits using the CLI
183-
uv run generate-noisy-circuits \
195+
python -m bpdecoderplus.cli \
184196
--distance 3 \
185197
--p 0.01 \
186198
--rounds 3 5 7 \
187199
--task z \
188-
--output datasets/noisy_circuits
200+
--generate-dem \
201+
--generate-uai \
202+
--generate-syndromes 10000
189203
```
190204

191205
## Extending the Dataset
192206

193207
```bash
194208
# Different error rates
195-
uv run generate-noisy-circuits --p 0.005 --rounds 3 5 7
209+
python -m bpdecoderplus.cli --p 0.005 --rounds 3 5 7 --generate-dem --generate-uai
196210

197211
# Different distances
198-
uv run generate-noisy-circuits --distance 5 --rounds 5 7 9
212+
python -m bpdecoderplus.cli --distance 5 --rounds 5 7 9 --generate-dem --generate-uai
199213

200214
# X-memory experiment
201-
uv run generate-noisy-circuits --task x --rounds 3 5 7
215+
python -m bpdecoderplus.cli --task x --rounds 3 5 7 --generate-dem --generate-uai
202216
```
203217

204218
## References

examples/GETTING_STARTED.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ This creates files in organized subdirectories:
2424
datasets/
2525
├── circuits/sc_d3_r3_p0010_z.stim # Noisy quantum circuit
2626
├── dems/sc_d3_r3_p0010_z.dem # Detector error model
27-
├── dems/sc_d3_r3_p0010_z.uai # UAI format for inference
27+
├── uais/sc_d3_r3_p0010_z.uai # UAI format for inference
2828
└── syndromes/sc_d3_r3_p0010_z.npz # 1000 syndrome samples
2929
```
3030

@@ -119,7 +119,7 @@ UAI (Uncertainty in Artificial Intelligence) is a standard format for representi
119119
python -m bpdecoderplus.cli --distance 3 --p 0.01 --rounds 3 --task z --generate-uai
120120
```
121121

122-
**Output:** `datasets/dems/sc_d3_r3_p0010_z.uai`
122+
**Output:** `datasets/uais/sc_d3_r3_p0010_z.uai`
123123

124124
The `.uai` file structure:
125125
```
@@ -234,10 +234,11 @@ datasets/
234234
│ └── sc_d3_r7_p0010_z.stim
235235
├── dems/
236236
│ ├── sc_d3_r3_p0010_z.dem
237-
│ ├── sc_d3_r3_p0010_z.uai
238237
│ ├── sc_d3_r5_p0010_z.dem
238+
│ └── sc_d3_r7_p0010_z.dem
239+
├── uais/
240+
│ ├── sc_d3_r3_p0010_z.uai
239241
│ ├── sc_d3_r5_p0010_z.uai
240-
│ ├── sc_d3_r7_p0010_z.dem
241242
│ └── sc_d3_r7_p0010_z.uai
242243
└── syndromes/
243244
├── sc_d3_r3_p0010_z.npz

src/bpdecoderplus/dem.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ def generate_uai_from_circuit(
249249
250250
Args:
251251
circuit_path: Path to the circuit file (.stim).
252-
output_path: Optional output path. If None, uses datasets/dems/ directory.
252+
output_path: Optional output path. If None, uses datasets/uais/ directory.
253253
decompose_errors: Whether to decompose errors into components.
254254
255255
Returns:
@@ -258,9 +258,9 @@ def generate_uai_from_circuit(
258258
circuit = stim.Circuit.from_file(str(circuit_path))
259259

260260
if output_path is None:
261-
dems_dir = pathlib.Path("datasets/dems")
262-
dems_dir.mkdir(parents=True, exist_ok=True)
263-
output_path = dems_dir / circuit_path.with_suffix(".uai").name
261+
uais_dir = pathlib.Path("datasets/uais")
262+
uais_dir.mkdir(parents=True, exist_ok=True)
263+
output_path = uais_dir / circuit_path.with_suffix(".uai").name
264264

265265
dem = extract_dem(circuit, decompose_errors=decompose_errors)
266266
save_uai(dem, output_path)

0 commit comments

Comments
 (0)