Per-stage invocation and the permutation-variant measurement

This commit is contained in:
KiHoLee
2026-08-22 14:54:49 +09:00
parent 58a85c30f6
commit 3229a25bfa
11 changed files with 38 additions and 12 deletions
+21 -12
View File
@@ -18,6 +18,7 @@ Experiment scripts write CSV only, never draw. Fixed seeds.
"""
from __future__ import annotations
import math
import sys
import numpy as np
import torch
@@ -854,19 +855,27 @@ def stage_L_gap(rows):
f"over SER {lo:.3f} to {hi:.3f}")
def main():
CHAIN = ["stage_A", "stage_B", "stage_C", "stage_D", "stage_E", "stage_F",
"stage_I", "stage_J", "stage_L", "stage_M"]
def main(names=None):
"""Run the named stages, or the whole chain when none are named.
The README maps every figure and table to its stage, so a reader
reproducing one figure runs that stage alone:
python code/exp_full.py stage_B
"""
print(f"device={DEVICE}")
stage_A()
stage_B()
stage_C()
stage_D()
stage_E()
stage_F()
stage_I()
stage_J()
stage_L()
print("[done] full-scale security CSVs in", DATA)
todo = names or CHAIN
unknown = [n for n in todo if n not in CHAIN]
if unknown:
raise SystemExit("unknown stage(s): %s\nknown: %s"
% (", ".join(unknown), ", ".join(CHAIN)))
for n in todo:
globals()[n]()
print("[done] security CSVs in", DATA)
if __name__ == "__main__":
main()
main(sys.argv[1:])