From 83d41933b218d38ef1da9623b7aa126ac04b3386 Mon Sep 17 00:00:00 2001 From: wassname Date: Mon, 1 Jun 2026 23:36:26 +0000 Subject: [PATCH] fix(plot): no-floor route2 deploy panel was blank -- hk_abl column present but all-nan The plotter picked hk_abl (dense proxy) whenever the COLUMN existed, but no-floor runs (rollout_ablate_frac=0) emit hk_abl as 0/0 -> all-nan, so the deploy panel came up empty. Test for finite data (_has_data) not column presence; fall back to the sparse-but-real hk_dep (every eval_ablate_every steps). _ema carries values across the nan gaps -> a held step-line. Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com> --- docs/figs/dyn_sub4.png | 1 + docs/figs/dyn_sub4_hack_overlay.png | 1 + scripts/plot_dynamics.py | 10 +++++++--- 3 files changed, 9 insertions(+), 3 deletions(-) create mode 120000 docs/figs/dyn_sub4.png create mode 120000 docs/figs/dyn_sub4_hack_overlay.png diff --git a/docs/figs/dyn_sub4.png b/docs/figs/dyn_sub4.png new file mode 120000 index 0000000..6d64c4d --- /dev/null +++ b/docs/figs/dyn_sub4.png @@ -0,0 +1 @@ +../../out/figs/dyn_sub4.png \ No newline at end of file diff --git a/docs/figs/dyn_sub4_hack_overlay.png b/docs/figs/dyn_sub4_hack_overlay.png new file mode 120000 index 0000000..beb4b08 --- /dev/null +++ b/docs/figs/dyn_sub4_hack_overlay.png @@ -0,0 +1 @@ +../../out/figs/dyn_sub4_hack_overlay.png \ No newline at end of file diff --git a/scripts/plot_dynamics.py b/scripts/plot_dynamics.py index 673b3d5..1dbab9e 100644 --- a/scripts/plot_dynamics.py +++ b/scripts/plot_dynamics.py @@ -128,12 +128,16 @@ def parse_log(path: Path) -> dict | None: # under the hack_s/gt_s keys -> all downstream (panels, onset, overlay) reads # it. Prefer the DENSE per-step proxy (hk_abl, every step) over the sparse # held-out eval (hk_dep, every eval_ablate_every steps); fall back to hk_dep - # for older runs that predate the proxy. + # when hk_abl carries no data. No-floor runs (rollout_ablate_frac=0) have the + # hk_abl COLUMN present but every cell is "0/0" -> all-nan, so test for finite + # values, not mere column presence, else the deploy panel comes up blank. + def _has_data(key): + return key in run and np.isfinite(run[key]).any() if arm in ("routing", "routing2"): - if "hk_abl" in run: + if _has_data("hk_abl"): run["hack_s"] = run["hk_abl"] run["gt_s"] = run["slv_abl"] - elif "hk_dep" in run: + elif _has_data("hk_dep"): run["hack_s"] = run["hk_dep"] run["gt_s"] = run["slv_dep"] return run