From b9e1a2e51fbcc401d6c2e813e6546d8d1e0b14d2 Mon Sep 17 00:00:00 2001 From: chance Date: Sat, 17 Jan 2026 13:51:48 +0000 Subject: [PATCH 1/7] Add noisy circuit dataset for BP decoding demonstration - Add Stim circuits for rotated surface code (d=3) memory experiments with circuit-level depolarizing noise (p=0.01) at 3, 5, 7 rounds - Add generation script (scripts/generate_noisy_circuits.py) - Add comprehensive README with BP decoding tutorial and examples - Add visualization images (qubit layout, parity check matrix, syndrome stats) - Update .gitignore to exclude .venv/ --- .gitignore | 1 + datasets/noisy_circuits/README.md | 234 ++++++++++++++++++ .../noisy_circuits/parity_check_matrix.png | Bin 0 -> 43698 bytes datasets/noisy_circuits/sc_d3_layout.png | Bin 0 -> 69534 bytes datasets/noisy_circuits/sc_d3_r3_p0010_z.stim | 89 +++++++ datasets/noisy_circuits/sc_d3_r5_p0010_z.stim | 89 +++++++ datasets/noisy_circuits/sc_d3_r7_p0010_z.stim | 89 +++++++ datasets/noisy_circuits/single_syndrome.png | Bin 0 -> 21881 bytes datasets/noisy_circuits/syndrome_stats.png | Bin 0 -> 73135 bytes scripts/generate_noisy_circuits.py | 129 ++++++++++ 10 files changed, 631 insertions(+) create mode 100644 datasets/noisy_circuits/README.md create mode 100644 datasets/noisy_circuits/parity_check_matrix.png create mode 100644 datasets/noisy_circuits/sc_d3_layout.png create mode 100644 datasets/noisy_circuits/sc_d3_r3_p0010_z.stim create mode 100644 datasets/noisy_circuits/sc_d3_r5_p0010_z.stim create mode 100644 datasets/noisy_circuits/sc_d3_r7_p0010_z.stim create mode 100644 datasets/noisy_circuits/single_syndrome.png create mode 100644 datasets/noisy_circuits/syndrome_stats.png create mode 100644 scripts/generate_noisy_circuits.py diff --git a/.gitignore b/.gitignore index d33eb84..0bf57d0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .ipynb_checkpoints/ Manifest.toml .vscode/ +.venv/ *.aux *.fls *.log diff --git a/datasets/noisy_circuits/README.md b/datasets/noisy_circuits/README.md new file mode 100644 index 0000000..cdf3a74 --- /dev/null +++ b/datasets/noisy_circuits/README.md @@ -0,0 +1,234 @@ +# Noisy Circuit Dataset (Surface Code, d=3) + +Circuit-level surface-code memory experiments generated with Stim for **Belief Propagation (BP) decoding** demonstrations. + +## Overview + +| Parameter | Value | +|-----------|-------| +| Code | Rotated surface code | +| Distance | d = 3 | +| Noise model | i.i.d. depolarizing | +| Error rate | p = 0.01 | +| Task | Z-memory experiment | +| Rounds | 3, 5, 7 | + +### Noise Application Points +- Clifford gates (`after_clifford_depolarization`) +- Data qubits between rounds (`before_round_data_depolarization`) +- Resets (`after_reset_flip_probability`) +- Measurements (`before_measure_flip_probability`) + +## Files + +| File | Description | +|------|-------------| +| `sc_d3_r3_p0010_z.stim` | 3 rounds, p=0.01, Z-memory | +| `sc_d3_r5_p0010_z.stim` | 5 rounds, p=0.01, Z-memory | +| `sc_d3_r7_p0010_z.stim` | 7 rounds, p=0.01, Z-memory | +| `sc_d3_layout.png` | Qubit layout visualization | +| `parity_check_matrix.png` | BP parity check matrix H | +| `syndrome_stats.png` | Detection event statistics | +| `single_syndrome.png` | Example syndrome pattern | + +## Qubit Layout + +The surface code layout showing qubit positions (data + ancilla): + +![Qubit Layout](sc_d3_layout.png) + +## Using This Dataset for BP Decoding + +### Step 1: Load Circuit and Extract Detector Error Model (DEM) + +The Detector Error Model is the key input for BP decoding. It describes which errors trigger which detectors. + +```python +import stim +import numpy as np + +# Load circuit +circuit = stim.Circuit.from_file("datasets/noisy_circuits/sc_d3_r3_p0010_z.stim") + +# Extract DEM - this is what BP needs +dem = circuit.detector_error_model(decompose_errors=True) +print(f"Detectors: {dem.num_detectors}") # 24 +print(f"Error mechanisms: {dem.num_errors}") # 286 +print(f"Observables: {dem.num_observables}") # 1 +``` + +### Step 2: Build Parity Check Matrix H + +BP operates on the parity check matrix where `H[i,j] = 1` means error `j` triggers detector `i`. + +```python +def build_parity_check_matrix(dem): + """Convert DEM to parity check matrix H and prior probabilities.""" + errors = [] + for inst in dem.flattened(): + if inst.type == 'error': + prob = inst.args_copy()[0] + dets = [t.val for t in inst.targets_copy() if t.is_relative_detector_id()] + obs = [t.val for t in inst.targets_copy() if t.is_logical_observable_id()] + errors.append({'prob': prob, 'detectors': dets, 'observables': obs}) + + n_detectors = dem.num_detectors + n_errors = len(errors) + + # Parity check matrix + H = np.zeros((n_detectors, n_errors), dtype=np.uint8) + # Prior error probabilities (for BP initialization) + priors = np.zeros(n_errors) + # Which errors flip the logical observable + obs_flip = np.zeros(n_errors, dtype=np.uint8) + + for j, e in enumerate(errors): + priors[j] = e['prob'] + for d in e['detectors']: + H[d, j] = 1 + if e['observables']: + obs_flip[j] = 1 + + return H, priors, obs_flip + +H, priors, obs_flip = build_parity_check_matrix(dem) +print(f"H shape: {H.shape}") # (24, 286) +``` + +The parity check matrix structure: + +![Parity Check Matrix](parity_check_matrix.png) + +### Step 3: Sample Syndromes (Detection Events) + +```python +# Compile sampler +sampler = circuit.compile_detector_sampler() + +# Sample detection events + observable flip +n_shots = 1000 +samples = sampler.sample(n_shots, append_observables=True) + +# Split into syndrome and observable +syndromes = samples[:, :-1] # shape: (n_shots, n_detectors) +actual_obs_flips = samples[:, -1] # shape: (n_shots,) + +print(f"Syndrome shape: {syndromes.shape}") +print(f"Example syndrome: {syndromes[0]}") +``` + +### Step 4: BP Decoding (Pseudocode) + +```python +def bp_decode(H, syndrome, priors, max_iter=50, damping=0.5): + """ + Belief Propagation decoder (min-sum variant). + + Args: + H: Parity check matrix (n_detectors, n_errors) + syndrome: Detection events (n_detectors,) + priors: Prior error probabilities (n_errors,) + max_iter: Maximum BP iterations + damping: Message damping factor + + Returns: + estimated_errors: Most likely error pattern (n_errors,) + soft_output: Log-likelihood ratios (n_errors,) + """ + n_checks, n_vars = H.shape + + # Initialize LLRs from priors: LLR = log((1-p)/p) + llr_prior = np.log((1 - priors) / priors) + + # Messages: check-to-variable and variable-to-check + # ... BP message passing iterations ... + + # Hard decision + estimated_errors = (soft_output < 0).astype(int) + + return estimated_errors, soft_output + +# Decode each syndrome +for i in range(n_shots): + syndrome = syndromes[i] + estimated_errors, _ = bp_decode(H, syndrome, priors) + + # Predict observable flip + predicted_obs_flip = np.dot(estimated_errors, obs_flip) % 2 + + # Check if decoding succeeded + success = (predicted_obs_flip == actual_obs_flips[i]) +``` + +### Step 5: Evaluate Decoder Performance + +After decoding, compare predicted vs actual observable flips to measure logical error rate. + +```python +def evaluate_decoder(decoder_fn, circuit, n_shots=10000): + """Evaluate decoder logical error rate.""" + dem = circuit.detector_error_model(decompose_errors=True) + H, priors, obs_flip = build_parity_check_matrix(dem) + + sampler = circuit.compile_detector_sampler() + samples = sampler.sample(n_shots, append_observables=True) + syndromes = samples[:, :-1] + actual_obs = samples[:, -1] + + errors = 0 + for i in range(n_shots): + est_errors, _ = decoder_fn(H, syndromes[i], priors) + pred_obs = np.dot(est_errors, obs_flip) % 2 + if pred_obs != actual_obs[i]: + errors += 1 + + return errors / n_shots + +# logical_error_rate = evaluate_decoder(bp_decode, circuit) +``` + +## Syndrome Statistics + +Detection event frequencies across 1000 shots (left) and baseline observable flip rate without decoding (right): + +![Syndrome Statistics](syndrome_stats.png) + +## Example Syndrome + +A single syndrome sample showing which detectors fired (red = triggered): + +![Single Syndrome](single_syndrome.png) + +## Regenerating the Dataset + +```bash +# Activate virtual environment +source .venv/bin/activate + +# Generate circuits +python scripts/generate_noisy_circuits.py \ + --distance 3 \ + --p 0.01 \ + --rounds 3 5 7 \ + --task z \ + --output datasets/noisy_circuits +``` + +## Extending the Dataset + +```bash +# Different error rates +python scripts/generate_noisy_circuits.py --p 0.005 --rounds 3 5 7 + +# Different distances +python scripts/generate_noisy_circuits.py --distance 5 --rounds 5 7 9 + +# X-memory experiment +python scripts/generate_noisy_circuits.py --task x --rounds 3 5 7 +``` + +## References + +- [Stim Documentation](https://github.com/quantumlib/Stim) +- [BP+OSD Decoder Paper](https://arxiv.org/abs/2005.07016) +- [Surface Code Decoding Review](https://quantum-journal.org/papers/q-2024-10-10-1498/) diff --git a/datasets/noisy_circuits/parity_check_matrix.png b/datasets/noisy_circuits/parity_check_matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6e5f6e1a6f10fe706f7a5ab0c6d6098f4ed688 GIT binary patch literal 43698 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 literal 0 HcmV?d00001 diff --git a/datasets/noisy_circuits/sc_d3_layout.png b/datasets/noisy_circuits/sc_d3_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..0c39f39ab2a3fddd7c2df25edc1862fb169d412c GIT binary patch literal 69534 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