Question
The synthetic CSI is clean by construction — no noise floor, no CFO, full precision. Once a commodity-NIC measurement model (AWGN, CFO, SFO/STO, IQ imbalance, phase noise, quantization) is applied, does the amplitude blockage signature still carry occupancy, and at what SNR / CFO does it break?
IP-101 Phase 1 adds the impairment stage to sionna-csi-runner (off by default;
impairment_profile: null is byte-identical to today). This campaign sweeps the
two dominant impairment axes — thermal-noise floor (snr_db) and carrier offset
(cfo_hz) — against the already-characterised clean occupancy signatures, on equal
footing (the clean csi.hdf5 oracle is retained per run).
What we already know
- The clean ray-traced CSI shows a monotonic
mean_atten_db_per_person(L4.6 blockage) and a Rician-K variance signature (L4.5). Both are noise-free in silico. - A real Atheros/Intel-class NIC delivers CSI at limited bit-depth with a finite SNR and residual CFO/SFO; raw cross-subcarrier phase is unusable without compensation, which is why the thesis pipeline is amplitude-first.
- The impairment parameters here are a prior from the commodity-NIC literature, not a fit — they bound the design; they are not evidence of real fidelity.
What I want the supervisor to do
- Fan out
exp-csi-staticover the 4 SNR × 3 CFO impairment grid at fixed mid occupancy (n_agents=6,n_placements=48), local CPU first (where=local). Reuses thecsi-synth-corridor-linkscene from c-csi-crowd-occlusion so the clean baseline is known. - Run a clean control (
impairment_profile: null) and confirm byte-identical output. - Run the notebook-backed reduction (
csi_impairment_sim_to_real.py, runnerpython): aggregate the per-celldomain_metrics.impairmentinto a survival map (impaired ÷ clean blockage slope) over (SNR, CFO); emitcsi_impairment_sim_to_real.metrics.json. - Synthesise the capture budget: the minimum SNR / maximum CFO that keeps occupancy
recoverable, framed as the spec
exp-csi-calibration(IP-094 Phase 4) must capture against.
Analysis-writer responsibilities
- Confirm per cell: scalar floor +
csi_impaired.hdf5+impairmentblock viasim_read_run;effective_snr_dbwithin tolerance of target. - Report (a) the survival map, (b) the SNR/CFO breakpoint where occupancy is lost,
(c) the capture-budget recommendation. Cite per-run artefacts by
sim://URI. - State plainly that this is a design input (impairment prior unvalidated) — it makes the transfer hypothesis testable, it does not measure the domain gap.
Figure render request
csi_impairment_survival — an SNR×CFO heatmap of the occupancy-signature survival ratio,
with the survival-floor contour marked.
Out of scope
- Real CSI / sim-to-real calibration (
exp-csi-calibration, IP-094 Phase 4) — this designs the capture; it does not fit the impairment model against real data. - A full synchronisation/equalisation receiver — the stage models impairments as statistical perturbations, not an RX chain (IP-101 §Trade-offs).
- Layout drift — that is c-csi-layout-drift.
Expected interpretation
- All criteria met → "Occupancy survives down to SNR≈X dB / CFO≤Y Hz; below that the
amplitude signature is swamped. The real capture must hold that regime — here is the
packet/SNR budget."
synthetic-csi-sim-to-real-transfer: speculative → testable. - Signal lost even at high SNR → a fidelity finding: the clean signature is more fragile than assumed; names the impairment that dominates (likely CFO on any residual phase feature) and what the pipeline must avoid.
- Criterion 1/2 fails (non-identity control, NaN) → platform finding on the stage.
Operator notes
- 12 impaired cells + 1 clean control at fixed
n_agents=6— minutes on the M1 CPU. The static scene is built once and cached; impairment is a cheap post-RT ndarray pass, so the marginal cost over a clean run is negligible. - The clean
csi.hdf5oracle is retained per run — later notebooks can re-impair it offline (new realizations, new profiles) without re-tracing (IP-101 Q1/A).