From b4d5856bf9f4e1772e9fba617d40dc79bb77f2c4 Mon Sep 17 00:00:00 2001 From: cah Date: Tue, 24 Feb 2026 18:35:50 -0700 Subject: [PATCH] data: add SC-LDPC results and comprehensive comparison plots SC-LDPC threshold saturation results: - SC original staircase: 2.28 photons/slot (vs 4.76 uncoupled) - SC DE-optimized: 1.03 photons/slot (vs 3.21 uncoupled) - Shannon limit: 0.47 photons/slot (remaining gap: 3.4 dB) Add CLI to sc_ldpc.py (threshold, fer-compare, full subcommands). Add threshold progression, SC threshold bars, and SC FER plots. Co-Authored-By: Claude Opus 4.6 --- data/plots/sc_fer.png | Bin 0 -> 67581 bytes data/plots/sc_threshold_comparison.png | Bin 0 -> 53685 bytes data/plots/threshold_progression.png | Bin 0 -> 83486 bytes data/sc_ldpc_results.json | 60 ++++++++ model/plot_de_results.py | 184 +++++++++++++++++++++++ model/sc_ldpc.py | 193 +++++++++++++++++++++++++ 6 files changed, 437 insertions(+) create mode 100644 data/plots/sc_fer.png create mode 100644 data/plots/sc_threshold_comparison.png create mode 100644 data/plots/threshold_progression.png create mode 100644 data/sc_ldpc_results.json diff --git a/data/plots/sc_fer.png b/data/plots/sc_fer.png new file mode 100644 index 0000000000000000000000000000000000000000..7482b2d2c86bbb68467842beb9edeee257b7d3ad GIT binary patch literal 67581 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 literal 0 HcmV?d00001 diff --git a/data/plots/sc_threshold_comparison.png b/data/plots/sc_threshold_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..fb517af25b088700960fecff8b111317da8c7b89 GIT binary patch literal 53685 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 literal 0 HcmV?d00001 diff --git a/data/plots/threshold_progression.png b/data/plots/threshold_progression.png new file mode 100644 index 0000000000000000000000000000000000000000..828e4682bfcb4e8af8eccfe4574e1e6fc68e4274 GIT binary patch literal 83486 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 literal 0 HcmV?d00001 diff --git a/data/sc_ldpc_results.json b/data/sc_ldpc_results.json new file mode 100644 index 0000000..bd8b599 --- /dev/null +++ b/data/sc_ldpc_results.json @@ -0,0 +1,60 @@ +{ + "uncoupled_thresholds": { + "original_offset": 4.7640625, + "optimized_offset": 3.2093749999999996, + "optimized_normalized": 3.2093749999999996 + }, + "sc_thresholds": { + "sc_original": 2.2765625, + "sc_optimized": 1.0328125 + }, + "shannon_limit": 0.47, + "params": { + "L": 20, + "w": 2, + "z_pop": 5000, + "tol": 0.5 + }, + "fer_comparison": { + "lam_s_points": [ + 2.0, + 3.0, + 4.0, + 5.0, + 7.0, + 10.0 + ], + "sc_fer": { + "2.0": { + "fer": 1.0, + "ber": 0.010056818181818182 + }, + "3.0": { + "fer": 1.0, + "ber": 0.006491477272727273 + }, + "4.0": { + "fer": 0.68, + "ber": 0.0003693181818181818 + }, + "5.0": { + "fer": 0.66, + "ber": 0.00037642045454545453 + }, + "7.0": { + "fer": 0.48, + "ber": 0.00022017045454545455 + }, + "10.0": { + "fer": 0.0, + "ber": 0.0 + } + }, + "params": { + "L": 10, + "w": 2, + "z": 32, + "n_frames": 50 + } + } +} \ No newline at end of file diff --git a/model/plot_de_results.py b/model/plot_de_results.py index 1061d6e..1c47378 100644 --- a/model/plot_de_results.py +++ b/model/plot_de_results.py @@ -10,6 +10,7 @@ from pathlib import Path RESULTS_PATH = Path(__file__).parent.parent / 'data' / 'de_results.json' RESULTS_Z128_PATH = Path(__file__).parent.parent / 'data' / 'de_results_z128.json' +SC_RESULTS_PATH = Path(__file__).parent.parent / 'data' / 'sc_ldpc_results.json' OUT_DIR = Path(__file__).parent.parent / 'data' / 'plots' # Presentation-friendly style @@ -294,6 +295,180 @@ def plot_z128_comparison(data_z32, data_z128): print(f' Saved z128_fer_comparison.png') +def load_sc_results(): + """Load SC-LDPC results if available.""" + if SC_RESULTS_PATH.exists(): + with open(SC_RESULTS_PATH) as f: + return json.load(f) + return None + + +def plot_threshold_progression(data_z32, data_sc): + """ + Threshold progression: original -> DE-optimized -> normalized -> SC-LDPC, + with Shannon limit line. The key summary plot. + """ + fig, ax = plt.subplots(figsize=(10, 5.5)) + + shannon_limit = 0.47 + + # Build progression data + stages = [] + values = [] + colors_bar = [] + + # Stage 1: Original staircase (offset) + orig_thresh = data_z32['reference_thresholds'].get( + 'Original staircase [7,2,2,2,2,2,2,1]', 5.23) + stages.append('Original\nstaircase\n(offset)') + values.append(float(orig_thresh)) + colors_bar.append('#d62728') + + # Stage 2: DE-optimized (offset) + opt_thresh = data_z32['best_threshold'] + stages.append('DE-optimized\n(offset)') + values.append(float(opt_thresh)) + colors_bar.append('#ff7f0e') + + # Stage 3: Normalized min-sum + if data_sc and 'uncoupled_thresholds' in data_sc: + norm_thresh = data_sc['uncoupled_thresholds'].get('optimized_normalized', opt_thresh) + stages.append('DE-optimized\n(normalized)') + values.append(float(norm_thresh)) + colors_bar.append('#2ca02c') + + # Stage 4: SC-LDPC + if data_sc and 'sc_thresholds' in data_sc: + sc_thresh = data_sc['sc_thresholds'].get('sc_optimized', + data_sc['sc_thresholds'].get('sc_original', None)) + if sc_thresh is not None: + stages.append('SC-LDPC\n(normalized)') + values.append(float(sc_thresh)) + colors_bar.append('#9467bd') + + x = np.arange(len(stages)) + bars = ax.bar(x, values, color=colors_bar, width=0.6, edgecolor='white', linewidth=1.5) + + # Value labels on bars + for bar, val in zip(bars, values): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.08, + f'{val:.2f}', ha='center', va='bottom', fontweight='bold', fontsize=13) + + # Shannon limit line + ax.axhline(y=shannon_limit, color='black', linestyle='--', linewidth=2, alpha=0.7) + ax.text(len(stages) - 0.5, shannon_limit + 0.08, + f'Shannon limit ({shannon_limit})', + fontsize=11, ha='right', va='bottom', style='italic', alpha=0.7) + + # dB annotations between bars + for i in range(1, len(values)): + if values[i] > 0 and values[i-1] > 0: + gain_db = 10 * np.log10(values[i-1] / values[i]) + mid_y = (values[i-1] + values[i]) / 2 + ax.annotate(f'{gain_db:.1f} dB', + xy=(i, values[i] + 0.02), + xytext=(i - 0.5, mid_y + 0.3), + fontsize=10, color='#555555', + arrowprops=dict(arrowstyle='->', color='#999999', lw=1), + ha='center') + + # Total gap annotation + if len(values) >= 2: + total_gap_db = 10 * np.log10(values[-1] / shannon_limit) + ax.text(len(stages) / 2, max(values) * 0.85, + f'Remaining gap to Shannon: {total_gap_db:.1f} dB', + ha='center', fontsize=12, fontweight='bold', + bbox=dict(boxstyle='round,pad=0.3', facecolor='lightyellow', alpha=0.8)) + + ax.set_xticks(x) + ax.set_xticklabels(stages, fontsize=11) + ax.set_ylabel(r'DE Threshold ($\lambda_s^*$, photons/slot)') + ax.set_title('Shannon Limit Roadmap: Threshold Progression') + ax.set_ylim(0, max(values) * 1.2) + ax.grid(True, alpha=0.2, axis='y') + + fig.savefig(OUT_DIR / 'threshold_progression.png') + plt.close(fig) + print(f' Saved threshold_progression.png') + + +def plot_sc_threshold_bars(data_sc): + """SC threshold vs uncoupled threshold bar chart.""" + if not data_sc: + return + + fig, ax = plt.subplots(figsize=(8, 5)) + + shannon_limit = data_sc.get('shannon_limit', 0.47) + + thresholds = {} + if 'uncoupled_thresholds' in data_sc: + ut = data_sc['uncoupled_thresholds'] + thresholds['Original\n(offset)'] = (float(ut['original_offset']), '#d62728') + thresholds['DE-opt\n(offset)'] = (float(ut['optimized_offset']), '#ff7f0e') + thresholds['DE-opt\n(normalized)'] = (float(ut['optimized_normalized']), '#2ca02c') + if 'sc_thresholds' in data_sc: + st = data_sc['sc_thresholds'] + thresholds['SC\noriginal'] = (float(st['sc_original']), '#17becf') + thresholds['SC\nDE-opt'] = (float(st['sc_optimized']), '#9467bd') + + names = list(thresholds.keys()) + vals = [v[0] for v in thresholds.values()] + colors = [v[1] for v in thresholds.values()] + + bars = ax.bar(names, vals, color=colors, width=0.55, edgecolor='white', linewidth=1.5) + + for bar, val in zip(bars, vals): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.05, + f'{val:.2f}', ha='center', va='bottom', fontweight='bold', fontsize=12) + + ax.axhline(y=shannon_limit, color='black', linestyle='--', linewidth=1.5, alpha=0.6) + ax.text(len(names) - 0.5, shannon_limit + 0.05, + f'Shannon ({shannon_limit})', fontsize=10, ha='right', style='italic', alpha=0.7) + + ax.set_ylabel(r'DE Threshold ($\lambda_s^*$, photons/slot)') + ax.set_title('SC-LDPC Threshold Saturation Effect') + ax.set_ylim(0, max(vals) * 1.25) + ax.grid(True, alpha=0.2, axis='y') + + fig.savefig(OUT_DIR / 'sc_threshold_comparison.png') + plt.close(fig) + print(f' Saved sc_threshold_comparison.png') + + +def plot_sc_fer_comparison(data_sc): + """FER comparison: SC-LDPC vs uncoupled.""" + if not data_sc or 'fer_comparison' not in data_sc: + return + + fig, ax = plt.subplots(figsize=(8, 5.5)) + + fer_data = data_sc['fer_comparison'] + lam_s_points = fer_data['lam_s_points'] + sc_fer = fer_data['sc_fer'] + + # SC-LDPC FER + fer_vals = [sc_fer[str(l)]['fer'] for l in lam_s_points] + floor = 5e-3 + ax.semilogy(lam_s_points, [max(f, floor) for f in fer_vals], + color='#9467bd', marker='D', markersize=9, linewidth=2.5, + label=f'SC-LDPC (L={fer_data["params"]["L"]}, windowed)', + markeredgecolor='white', markeredgewidth=0.8) + + ax.set_xlabel(r'Signal photons/slot ($\lambda_s$)') + ax.set_ylabel('Frame Error Rate (FER)') + L = fer_data['params']['L'] + ax.set_title(f'SC-LDPC FER (L={L}, w=2, Z=32, normalized alpha=0.875)') + ax.legend(loc='upper right', framealpha=0.9) + ax.set_xlim(1.5, 10.5) + ax.set_ylim(floor / 2, 1.1) + ax.grid(True, alpha=0.3, which='both') + + fig.savefig(OUT_DIR / 'sc_fer.png') + plt.close(fig) + print(f' Saved sc_fer.png') + + def main(): OUT_DIR.mkdir(parents=True, exist_ok=True) data = load_results() @@ -311,6 +486,15 @@ def main(): else: print(' Skipping Z=128 comparison (data/de_results_z128.json not found)') + # SC-LDPC plots + data_sc = load_sc_results() + if data_sc is not None: + plot_sc_threshold_bars(data_sc) + plot_sc_fer_comparison(data_sc) + plot_threshold_progression(data, data_sc) + else: + print(' Skipping SC-LDPC plots (data/sc_ldpc_results.json not found)') + print(f'\nAll plots saved to {OUT_DIR}/') diff --git a/model/sc_ldpc.py b/model/sc_ldpc.py index 9307823..994687f 100644 --- a/model/sc_ldpc.py +++ b/model/sc_ldpc.py @@ -10,6 +10,8 @@ with coupling width w, creating a convolutional-like structure. """ import numpy as np +import argparse +import json import sys import os @@ -615,3 +617,194 @@ def compute_sc_threshold(B, L=50, w=2, lam_b=0.1, z_pop=10000, tol=0.25, lo = mid return hi + + +# ============================================================================= +# CLI +# ============================================================================= + +def run_threshold_comparison(seed=42, z_pop=5000, tol=0.5, L=20): + """Compare SC-LDPC and uncoupled DE thresholds.""" + from ldpc_sim import H_BASE + from density_evolution import ( + compute_threshold, build_de_profile, make_profile + ) + np.random.seed(seed) + + print("=" * 60) + print("SC-LDPC vs Uncoupled Threshold Comparison") + print("=" * 60) + + # Uncoupled thresholds + degrees_opt = [7, 4, 4, 4, 4, 3, 3, 3] + profile_opt = build_de_profile(degrees_opt, m_base=7) + profile_orig = make_profile(H_BASE) + + print("\nUncoupled thresholds:") + thresh_opt_offset = compute_threshold( + profile_opt, lam_b=0.1, z_pop=z_pop, tol=tol, cn_mode='offset') + thresh_opt_norm = compute_threshold( + profile_opt, lam_b=0.1, z_pop=z_pop, tol=tol, + cn_mode='normalized', alpha=0.875) + thresh_orig = compute_threshold( + profile_orig, lam_b=0.1, z_pop=z_pop, tol=tol, cn_mode='offset') + print(f" Original staircase (offset): {thresh_orig:.2f} photons/slot") + print(f" DE-optimized (offset): {thresh_opt_offset:.2f} photons/slot") + print(f" DE-optimized (normalized 0.875): {thresh_opt_norm:.2f} photons/slot") + + # SC-LDPC thresholds + print(f"\nSC-LDPC thresholds (L={L}, w=2, normalized 0.875):") + sc_thresh_orig = compute_sc_threshold( + H_BASE, L=L, w=2, lam_b=0.1, z_pop=z_pop, tol=tol, + cn_mode='normalized', alpha=0.875) + print(f" SC original staircase: {sc_thresh_orig:.2f} photons/slot") + + from density_evolution import construct_base_matrix + H_opt, girth = construct_base_matrix(degrees_opt, z=32, n_trials=500) + sc_thresh_opt = compute_sc_threshold( + H_opt, L=L, w=2, lam_b=0.1, z_pop=z_pop, tol=tol, + cn_mode='normalized', alpha=0.875) + print(f" SC DE-optimized: {sc_thresh_opt:.2f} photons/slot") + + shannon_limit = 0.47 + print(f"\n Shannon limit (rate 1/8): {shannon_limit} photons/slot") + + return { + 'uncoupled_thresholds': { + 'original_offset': float(thresh_orig), + 'optimized_offset': float(thresh_opt_offset), + 'optimized_normalized': float(thresh_opt_norm), + }, + 'sc_thresholds': { + 'sc_original': float(sc_thresh_orig), + 'sc_optimized': float(sc_thresh_opt), + }, + 'shannon_limit': shannon_limit, + 'params': {'L': L, 'w': 2, 'z_pop': z_pop, 'tol': tol}, + } + + +def run_fer_comparison(seed=42, n_frames=50, L=10, z=32): + """FER comparison: SC-LDPC vs uncoupled at Z=32.""" + from ldpc_sim import H_BASE, poisson_channel, quantize_llr + np.random.seed(seed) + + print("=" * 60) + print(f"SC-LDPC vs Uncoupled FER Comparison (Z={z}, L={L})") + print("=" * 60) + + m_base, n_base = H_BASE.shape + + # Build SC chain + H_sc, components, meta = build_sc_chain( + H_BASE, L=L, w=2, z=z, seed=seed) + n_total = H_sc.shape[1] + + lam_s_points = [2.0, 3.0, 4.0, 5.0, 7.0, 10.0] + sc_results = {} + + print(f"\nSC-LDPC (L={L}, w=2, windowed W=5, normalized alpha=0.875):") + print(f"{'lam_s':>8s} {'FER':>10s} {'BER':>10s}") + print("-" * 30) + + for lam_s in lam_s_points: + frame_errors = 0 + bit_errors = 0 + total_bits = 0 + + for _ in range(n_frames): + codeword = np.zeros(n_total, dtype=np.int8) + llr_float, _ = poisson_channel(codeword, lam_s, 0.1) + llr_q = quantize_llr(llr_float) + + decoded, converged, iters = windowed_decode( + llr_q, H_sc, L=L, w=2, z=z, n_base=n_base, m_base=m_base, + W=5, max_iter=20, cn_mode='normalized', alpha=0.875) + + errs = np.sum(decoded != 0) + bit_errors += errs + total_bits += n_total + if errs > 0: + frame_errors += 1 + + fer = frame_errors / n_frames + ber = bit_errors / total_bits if total_bits > 0 else 0 + sc_results[lam_s] = {'fer': float(fer), 'ber': float(ber)} + print(f"{lam_s:8.1f} {fer:10.3f} {ber:10.6f}") + + return { + 'lam_s_points': lam_s_points, + 'sc_fer': {str(k): v for k, v in sc_results.items()}, + 'params': {'L': L, 'w': 2, 'z': z, 'n_frames': n_frames}, + } + + +def run_full_pipeline(seed=42): + """Full SC-LDPC pipeline: threshold comparison + FER.""" + print("=" * 70) + print("SC-LDPC FULL PIPELINE") + print("=" * 70) + + # Step 1: Threshold comparison + print("\n--- Step 1: Threshold Comparison ---") + threshold_results = run_threshold_comparison( + seed=seed, z_pop=5000, tol=0.5, L=20) + + # Step 2: FER comparison + print("\n--- Step 2: FER Comparison ---") + fer_results = run_fer_comparison( + seed=seed, n_frames=50, L=10, z=32) + + # Combine and save results + output = { + **threshold_results, + 'fer_comparison': fer_results, + } + + out_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data') + os.makedirs(out_dir, exist_ok=True) + out_path = os.path.join(out_dir, 'sc_ldpc_results.json') + with open(out_path, 'w') as f: + json.dump(output, f, indent=2, default=str) + print(f"\nResults saved to {out_path}") + + return output + + +def main(): + parser = argparse.ArgumentParser( + description='SC-LDPC Code Construction and Analysis', + ) + subparsers = parser.add_subparsers(dest='command') + + p_thresh = subparsers.add_parser('threshold', + help='SC-DE threshold comparison') + p_thresh.add_argument('--seed', type=int, default=42) + p_thresh.add_argument('--z-pop', type=int, default=5000) + p_thresh.add_argument('--tol', type=float, default=0.5) + p_thresh.add_argument('--L', type=int, default=20) + + p_fer = subparsers.add_parser('fer-compare', + help='FER: SC vs uncoupled') + p_fer.add_argument('--seed', type=int, default=42) + p_fer.add_argument('--n-frames', type=int, default=50) + p_fer.add_argument('--L', type=int, default=10) + + p_full = subparsers.add_parser('full', help='Full pipeline') + p_full.add_argument('--seed', type=int, default=42) + + args = parser.parse_args() + + if args.command == 'threshold': + run_threshold_comparison(seed=args.seed, z_pop=args.z_pop, + tol=args.tol, L=args.L) + elif args.command == 'fer-compare': + run_fer_comparison(seed=args.seed, n_frames=args.n_frames, L=args.L) + elif args.command == 'full': + run_full_pipeline(seed=args.seed) + else: + parser.print_help() + + +if __name__ == '__main__': + main()