plots: dejargon, drop redundant titles, emit png+svg+pdf, CSV re-render
Audit of all 4 plot scripts (plot_dynamics/substrate/emergence/deploy_overlay): - One save_fig(fig, path) helper in figs.py writes png+svg+pdf (vector for the paper, png for the blog). All scripts call it. - arm_label() map: reader-facing names only -- route2->route, drop 'knob'/'the cheat' from titles and the train-vs-deploy story (adapter on/off, reward hack). - Titles off by default (the paper/blog caption carries it); --title re-enables for standalone research use. - dump_data CSV now carries every plotted series; plot_dynamics --from-csv re-renders the three figures from the committed CSV with no logs (logs/ and out/runs/ are gitignored; out/figs/*.csv is tracked). Round-trip verified. - Commit the regenerated dyn_sub4 figures in all 3 formats + the CSV. Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
@@ -0,0 +1,521 @@
|
|||||||
|
arm,seed,step,hack_s,gt_s,hack_train,solve_train,hk_dep,slv_dep
|
||||||
|
static erasure,41,0,0.0,0.14285714285714285,0.0,0.14285714285714285,nan,nan
|
||||||
|
static erasure,41,1,0.0,0.25,0.0,0.25,nan,nan
|
||||||
|
static erasure,41,2,0.0,0.03571428571428571,0.0,0.03571428571428571,nan,nan
|
||||||
|
static erasure,41,3,0.0,0.17857142857142858,0.0,0.17857142857142858,nan,nan
|
||||||
|
static erasure,41,4,0.0,0.0,0.0,0.0,nan,nan
|
||||||
|
static erasure,41,5,0.0,0.4642857142857143,0.0,0.4642857142857143,nan,nan
|
||||||
|
static erasure,41,6,0.0,0.32142857142857145,0.0,0.32142857142857145,nan,nan
|
||||||
|
static erasure,41,7,0.0,0.39285714285714285,0.0,0.39285714285714285,nan,nan
|
||||||
|
static erasure,41,8,0.0,0.17857142857142858,0.0,0.17857142857142858,nan,nan
|
||||||
|
static erasure,41,9,0.0,0.5,0.0,0.5,nan,nan
|
||||||
|
static erasure,41,10,0.0,0.21428571428571427,0.0,0.21428571428571427,nan,nan
|
||||||
|
static erasure,41,11,0.0,0.42857142857142855,0.0,0.42857142857142855,nan,nan
|
||||||
|
static erasure,41,12,0.0,0.2857142857142857,0.0,0.2857142857142857,nan,nan
|
||||||
|
static erasure,41,13,0.0,0.4642857142857143,0.0,0.4642857142857143,nan,nan
|
||||||
|
static erasure,41,14,0.03571428571428571,0.42857142857142855,0.03571428571428571,0.42857142857142855,nan,nan
|
||||||
|
static erasure,41,15,0.07142857142857142,0.6785714285714286,0.07142857142857142,0.6785714285714286,nan,nan
|
||||||
|
static erasure,41,16,0.21428571428571427,0.25,0.21428571428571427,0.25,nan,nan
|
||||||
|
static erasure,41,17,0.25,0.10714285714285714,0.25,0.10714285714285714,nan,nan
|
||||||
|
static erasure,41,18,0.0,0.6428571428571429,0.0,0.6428571428571429,nan,nan
|
||||||
|
static erasure,41,19,0.25,0.10714285714285714,0.25,0.10714285714285714,nan,nan
|
||||||
|
static erasure,41,20,0.07142857142857142,0.5,0.07142857142857142,0.5,nan,nan
|
||||||
|
static erasure,41,21,0.0,0.6071428571428571,0.0,0.6071428571428571,nan,nan
|
||||||
|
static erasure,41,22,0.4642857142857143,0.25,0.4642857142857143,0.25,nan,nan
|
||||||
|
static erasure,41,23,0.2857142857142857,0.5,0.2857142857142857,0.5,nan,nan
|
||||||
|
static erasure,41,24,0.39285714285714285,0.21428571428571427,0.39285714285714285,0.21428571428571427,nan,nan
|
||||||
|
static erasure,41,25,0.5,0.21428571428571427,0.5,0.21428571428571427,nan,nan
|
||||||
|
static erasure,41,26,0.5,0.03571428571428571,0.5,0.03571428571428571,nan,nan
|
||||||
|
static erasure,41,27,0.07142857142857142,0.6428571428571429,0.07142857142857142,0.6428571428571429,nan,nan
|
||||||
|
static erasure,41,28,0.03571428571428571,0.21428571428571427,0.03571428571428571,0.21428571428571427,nan,nan
|
||||||
|
static erasure,41,29,0.39285714285714285,0.5357142857142857,0.39285714285714285,0.5357142857142857,nan,nan
|
||||||
|
static erasure,41,30,0.7857142857142857,0.0,0.7857142857142857,0.0,nan,nan
|
||||||
|
static erasure,41,31,0.6785714285714286,0.03571428571428571,0.6785714285714286,0.03571428571428571,nan,nan
|
||||||
|
static erasure,41,32,0.03571428571428571,0.6785714285714286,0.03571428571428571,0.6785714285714286,nan,nan
|
||||||
|
static erasure,41,33,0.6428571428571429,0.2857142857142857,0.6428571428571429,0.2857142857142857,nan,nan
|
||||||
|
static erasure,41,34,0.21428571428571427,0.5,0.21428571428571427,0.5,nan,nan
|
||||||
|
static erasure,41,35,0.10714285714285714,0.4642857142857143,0.10714285714285714,0.4642857142857143,nan,nan
|
||||||
|
static erasure,41,36,0.6071428571428571,0.17857142857142858,0.6071428571428571,0.17857142857142858,nan,nan
|
||||||
|
static erasure,41,37,0.32142857142857145,0.25,0.32142857142857145,0.25,nan,nan
|
||||||
|
static erasure,41,38,0.21428571428571427,0.5714285714285714,0.21428571428571427,0.5714285714285714,nan,nan
|
||||||
|
static erasure,41,39,0.5714285714285714,0.35714285714285715,0.5714285714285714,0.35714285714285715,nan,nan
|
||||||
|
static erasure,41,40,0.14285714285714285,0.35714285714285715,0.14285714285714285,0.35714285714285715,nan,nan
|
||||||
|
static erasure,41,41,0.4642857142857143,0.21428571428571427,0.4642857142857143,0.21428571428571427,nan,nan
|
||||||
|
static erasure,41,42,0.6785714285714286,0.0,0.6785714285714286,0.0,nan,nan
|
||||||
|
static erasure,41,43,0.5,0.03571428571428571,0.5,0.03571428571428571,nan,nan
|
||||||
|
static erasure,41,44,0.14285714285714285,0.21428571428571427,0.14285714285714285,0.21428571428571427,nan,nan
|
||||||
|
static erasure,41,45,0.32142857142857145,0.6428571428571429,0.32142857142857145,0.6428571428571429,nan,nan
|
||||||
|
static erasure,41,46,0.14285714285714285,0.5357142857142857,0.14285714285714285,0.5357142857142857,nan,nan
|
||||||
|
static erasure,41,47,0.35714285714285715,0.42857142857142855,0.35714285714285715,0.42857142857142855,nan,nan
|
||||||
|
static erasure,41,48,0.42857142857142855,0.03571428571428571,0.42857142857142855,0.03571428571428571,nan,nan
|
||||||
|
static erasure,41,49,0.2857142857142857,0.4642857142857143,0.2857142857142857,0.4642857142857143,nan,nan
|
||||||
|
static erasure,41,50,0.32142857142857145,0.39285714285714285,0.32142857142857145,0.39285714285714285,nan,nan
|
||||||
|
static erasure,41,51,0.25,0.6428571428571429,0.25,0.6428571428571429,nan,nan
|
||||||
|
static erasure,41,52,0.17857142857142858,0.25,0.17857142857142858,0.25,nan,nan
|
||||||
|
static erasure,41,53,0.6071428571428571,0.10714285714285714,0.6071428571428571,0.10714285714285714,nan,nan
|
||||||
|
static erasure,41,54,0.03571428571428571,0.5357142857142857,0.03571428571428571,0.5357142857142857,nan,nan
|
||||||
|
static erasure,41,55,0.14285714285714285,0.4642857142857143,0.14285714285714285,0.4642857142857143,nan,nan
|
||||||
|
static erasure,41,56,0.4642857142857143,0.35714285714285715,0.4642857142857143,0.35714285714285715,nan,nan
|
||||||
|
static erasure,41,57,0.39285714285714285,0.39285714285714285,0.39285714285714285,0.39285714285714285,nan,nan
|
||||||
|
static erasure,41,58,0.5,0.35714285714285715,0.5,0.35714285714285715,nan,nan
|
||||||
|
static erasure,41,59,0.5,0.42857142857142855,0.5,0.42857142857142855,nan,nan
|
||||||
|
online erasure,41,0,0.0,0.14285714285714285,0.0,0.14285714285714285,nan,nan
|
||||||
|
online erasure,41,1,0.0,0.25,0.0,0.25,nan,nan
|
||||||
|
online erasure,41,2,0.0,0.0,0.0,0.0,nan,nan
|
||||||
|
online erasure,41,3,0.0,0.10714285714285714,0.0,0.10714285714285714,nan,nan
|
||||||
|
online erasure,41,4,0.0,0.0,0.0,0.0,nan,nan
|
||||||
|
online erasure,41,5,0.0,0.4642857142857143,0.0,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,6,0.0,0.2857142857142857,0.0,0.2857142857142857,nan,nan
|
||||||
|
online erasure,41,7,0.0,0.25,0.0,0.25,nan,nan
|
||||||
|
online erasure,41,8,0.0,0.14285714285714285,0.0,0.14285714285714285,nan,nan
|
||||||
|
online erasure,41,9,0.0,0.35714285714285715,0.0,0.35714285714285715,nan,nan
|
||||||
|
online erasure,41,10,0.0,0.2857142857142857,0.0,0.2857142857142857,nan,nan
|
||||||
|
online erasure,41,11,0.0,0.39285714285714285,0.0,0.39285714285714285,nan,nan
|
||||||
|
online erasure,41,12,0.0,0.25,0.0,0.25,nan,nan
|
||||||
|
online erasure,41,13,0.0,0.42857142857142855,0.0,0.42857142857142855,nan,nan
|
||||||
|
online erasure,41,14,0.14285714285714285,0.39285714285714285,0.14285714285714285,0.39285714285714285,nan,nan
|
||||||
|
online erasure,41,15,0.07142857142857142,0.6428571428571429,0.07142857142857142,0.6428571428571429,nan,nan
|
||||||
|
online erasure,41,16,0.21428571428571427,0.35714285714285715,0.21428571428571427,0.35714285714285715,nan,nan
|
||||||
|
online erasure,41,17,0.2857142857142857,0.17857142857142858,0.2857142857142857,0.17857142857142858,nan,nan
|
||||||
|
online erasure,41,18,0.0,0.6071428571428571,0.0,0.6071428571428571,nan,nan
|
||||||
|
online erasure,41,19,0.35714285714285715,0.14285714285714285,0.35714285714285715,0.14285714285714285,nan,nan
|
||||||
|
online erasure,41,20,0.0,0.5,0.0,0.5,nan,nan
|
||||||
|
online erasure,41,21,0.07142857142857142,0.5714285714285714,0.07142857142857142,0.5714285714285714,nan,nan
|
||||||
|
online erasure,41,22,0.4642857142857143,0.21428571428571427,0.4642857142857143,0.21428571428571427,nan,nan
|
||||||
|
online erasure,41,23,0.35714285714285715,0.4642857142857143,0.35714285714285715,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,24,0.4642857142857143,0.14285714285714285,0.4642857142857143,0.14285714285714285,nan,nan
|
||||||
|
online erasure,41,25,0.39285714285714285,0.2857142857142857,0.39285714285714285,0.2857142857142857,nan,nan
|
||||||
|
online erasure,41,26,0.5,0.03571428571428571,0.5,0.03571428571428571,nan,nan
|
||||||
|
online erasure,41,27,0.03571428571428571,0.6071428571428571,0.03571428571428571,0.6071428571428571,nan,nan
|
||||||
|
online erasure,41,28,0.03571428571428571,0.17857142857142858,0.03571428571428571,0.17857142857142858,nan,nan
|
||||||
|
online erasure,41,29,0.42857142857142855,0.4642857142857143,0.42857142857142855,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,30,0.8214285714285714,0.0,0.8214285714285714,0.0,nan,nan
|
||||||
|
online erasure,41,31,0.5357142857142857,0.07142857142857142,0.5357142857142857,0.07142857142857142,nan,nan
|
||||||
|
online erasure,41,32,0.14285714285714285,0.6785714285714286,0.14285714285714285,0.6785714285714286,nan,nan
|
||||||
|
online erasure,41,33,0.6071428571428571,0.17857142857142858,0.6071428571428571,0.17857142857142858,nan,nan
|
||||||
|
online erasure,41,34,0.2857142857142857,0.32142857142857145,0.2857142857142857,0.32142857142857145,nan,nan
|
||||||
|
online erasure,41,35,0.0,0.4642857142857143,0.0,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,36,0.5357142857142857,0.2857142857142857,0.5357142857142857,0.2857142857142857,nan,nan
|
||||||
|
online erasure,41,37,0.32142857142857145,0.21428571428571427,0.32142857142857145,0.21428571428571427,nan,nan
|
||||||
|
online erasure,41,38,0.39285714285714285,0.5,0.39285714285714285,0.5,nan,nan
|
||||||
|
online erasure,41,39,0.6071428571428571,0.32142857142857145,0.6071428571428571,0.32142857142857145,nan,nan
|
||||||
|
online erasure,41,40,0.32142857142857145,0.39285714285714285,0.32142857142857145,0.39285714285714285,nan,nan
|
||||||
|
online erasure,41,41,0.6071428571428571,0.32142857142857145,0.6071428571428571,0.32142857142857145,nan,nan
|
||||||
|
online erasure,41,42,0.7857142857142857,0.03571428571428571,0.7857142857142857,0.03571428571428571,nan,nan
|
||||||
|
online erasure,41,43,0.6785714285714286,0.17857142857142858,0.6785714285714286,0.17857142857142858,nan,nan
|
||||||
|
online erasure,41,44,0.39285714285714285,0.17857142857142858,0.39285714285714285,0.17857142857142858,nan,nan
|
||||||
|
online erasure,41,45,0.32142857142857145,0.4642857142857143,0.32142857142857145,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,46,0.17857142857142858,0.4642857142857143,0.17857142857142858,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,47,0.5357142857142857,0.4642857142857143,0.5357142857142857,0.4642857142857143,nan,nan
|
||||||
|
online erasure,41,48,0.6071428571428571,0.0,0.6071428571428571,0.0,nan,nan
|
||||||
|
online erasure,41,49,0.14285714285714285,0.6428571428571429,0.14285714285714285,0.6428571428571429,nan,nan
|
||||||
|
online erasure,41,50,0.35714285714285715,0.42857142857142855,0.35714285714285715,0.42857142857142855,nan,nan
|
||||||
|
online erasure,41,51,0.25,0.5357142857142857,0.25,0.5357142857142857,nan,nan
|
||||||
|
online erasure,41,52,0.32142857142857145,0.2857142857142857,0.32142857142857145,0.2857142857142857,nan,nan
|
||||||
|
online erasure,41,53,0.5,0.21428571428571427,0.5,0.21428571428571427,nan,nan
|
||||||
|
online erasure,41,54,0.07142857142857142,0.75,0.07142857142857142,0.75,nan,nan
|
||||||
|
online erasure,41,55,0.39285714285714285,0.5357142857142857,0.39285714285714285,0.5357142857142857,nan,nan
|
||||||
|
online erasure,41,56,0.6071428571428571,0.32142857142857145,0.6071428571428571,0.32142857142857145,nan,nan
|
||||||
|
online erasure,41,57,0.2857142857142857,0.5,0.2857142857142857,0.5,nan,nan
|
||||||
|
online erasure,41,58,0.5714285714285714,0.25,0.5714285714285714,0.25,nan,nan
|
||||||
|
online erasure,41,59,0.4642857142857143,0.35714285714285715,0.4642857142857143,0.35714285714285715,nan,nan
|
||||||
|
vanilla,41,0,0.0,0.38,0.0,0.14285714285714285,0.0,0.38
|
||||||
|
vanilla,41,1,nan,nan,0.0,0.25,nan,nan
|
||||||
|
vanilla,41,2,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,3,nan,nan,0.0,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,4,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,5,nan,nan,0.0,0.42857142857142855,nan,nan
|
||||||
|
vanilla,41,6,nan,nan,0.0,0.25,nan,nan
|
||||||
|
vanilla,41,7,nan,nan,0.0,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,8,nan,nan,0.0,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,9,nan,nan,0.0,0.4642857142857143,nan,nan
|
||||||
|
vanilla,41,10,0.0,0.5,0.0,0.17857142857142858,0.0,0.5
|
||||||
|
vanilla,41,11,nan,nan,0.0,0.4642857142857143,nan,nan
|
||||||
|
vanilla,41,12,nan,nan,0.0,0.25,nan,nan
|
||||||
|
vanilla,41,13,nan,nan,0.0,0.4642857142857143,nan,nan
|
||||||
|
vanilla,41,14,nan,nan,0.0,0.5,nan,nan
|
||||||
|
vanilla,41,15,nan,nan,0.0,0.6785714285714286,nan,nan
|
||||||
|
vanilla,41,16,nan,nan,0.0,0.39285714285714285,nan,nan
|
||||||
|
vanilla,41,17,nan,nan,0.0,0.21428571428571427,nan,nan
|
||||||
|
vanilla,41,18,nan,nan,0.03571428571428571,0.6071428571428571,nan,nan
|
||||||
|
vanilla,41,19,nan,nan,0.10714285714285714,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,20,0.16,0.5,0.03571428571428571,0.6071428571428571,0.16,0.5
|
||||||
|
vanilla,41,21,nan,nan,0.0,0.5714285714285714,nan,nan
|
||||||
|
vanilla,41,22,nan,nan,0.5,0.25,nan,nan
|
||||||
|
vanilla,41,23,nan,nan,0.21428571428571427,0.5714285714285714,nan,nan
|
||||||
|
vanilla,41,24,nan,nan,0.32142857142857145,0.25,nan,nan
|
||||||
|
vanilla,41,25,nan,nan,0.39285714285714285,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,26,nan,nan,0.5714285714285714,0.0,nan,nan
|
||||||
|
vanilla,41,27,nan,nan,0.07142857142857142,0.6428571428571429,nan,nan
|
||||||
|
vanilla,41,28,nan,nan,0.03571428571428571,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,29,nan,nan,0.35714285714285715,0.5357142857142857,nan,nan
|
||||||
|
vanilla,41,30,0.31,0.45,0.8214285714285714,0.0,0.31,0.45
|
||||||
|
vanilla,41,31,nan,nan,0.5,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,32,nan,nan,0.21428571428571427,0.5357142857142857,nan,nan
|
||||||
|
vanilla,41,33,nan,nan,0.75,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,34,nan,nan,0.4642857142857143,0.39285714285714285,nan,nan
|
||||||
|
vanilla,41,35,nan,nan,0.07142857142857142,0.42857142857142855,nan,nan
|
||||||
|
vanilla,41,36,nan,nan,0.7857142857142857,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,37,nan,nan,0.32142857142857145,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,38,nan,nan,0.5357142857142857,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,39,nan,nan,0.6071428571428571,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,40,0.36,0.45,0.39285714285714285,0.25,0.36,0.45
|
||||||
|
vanilla,41,41,nan,nan,0.5357142857142857,0.32142857142857145,nan,nan
|
||||||
|
vanilla,41,42,nan,nan,0.8214285714285714,0.0,nan,nan
|
||||||
|
vanilla,41,43,nan,nan,0.75,0.07142857142857142,nan,nan
|
||||||
|
vanilla,41,44,nan,nan,0.4642857142857143,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,45,nan,nan,0.35714285714285715,0.5,nan,nan
|
||||||
|
vanilla,41,46,nan,nan,0.5714285714285714,0.32142857142857145,nan,nan
|
||||||
|
vanilla,41,47,nan,nan,0.6428571428571429,0.17857142857142858,nan,nan
|
||||||
|
vanilla,41,48,nan,nan,0.7142857142857143,0.03571428571428571,nan,nan
|
||||||
|
vanilla,41,49,nan,nan,0.5357142857142857,0.39285714285714285,nan,nan
|
||||||
|
vanilla,41,50,0.56,0.31,0.75,0.21428571428571427,0.56,0.31
|
||||||
|
vanilla,41,51,nan,nan,0.5,0.35714285714285715,nan,nan
|
||||||
|
vanilla,41,52,nan,nan,0.5714285714285714,0.17857142857142858,nan,nan
|
||||||
|
vanilla,41,53,nan,nan,0.8928571428571429,0.07142857142857142,nan,nan
|
||||||
|
vanilla,41,54,nan,nan,0.6071428571428571,0.32142857142857145,nan,nan
|
||||||
|
vanilla,41,55,nan,nan,0.5357142857142857,0.32142857142857145,nan,nan
|
||||||
|
vanilla,41,56,nan,nan,0.75,0.25,nan,nan
|
||||||
|
vanilla,41,57,nan,nan,0.6785714285714286,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,58,nan,nan,0.7857142857142857,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,59,nan,nan,0.6428571428571429,0.2857142857142857,nan,nan
|
||||||
|
vanilla,41,60,0.47,0.53,0.8928571428571429,0.03571428571428571,0.47,0.53
|
||||||
|
vanilla,41,61,nan,nan,0.8928571428571429,0.03571428571428571,nan,nan
|
||||||
|
vanilla,41,62,nan,nan,0.6785714285714286,0.21428571428571427,nan,nan
|
||||||
|
vanilla,41,63,nan,nan,0.4642857142857143,0.42857142857142855,nan,nan
|
||||||
|
vanilla,41,64,nan,nan,0.8571428571428571,0.07142857142857142,nan,nan
|
||||||
|
vanilla,41,65,nan,nan,0.5714285714285714,0.35714285714285715,nan,nan
|
||||||
|
vanilla,41,66,nan,nan,0.7857142857142857,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,67,nan,nan,0.75,0.25,nan,nan
|
||||||
|
vanilla,41,68,nan,nan,0.75,0.25,nan,nan
|
||||||
|
vanilla,41,69,nan,nan,0.75,0.21428571428571427,nan,nan
|
||||||
|
vanilla,41,70,0.56,0.42,0.6785714285714286,0.21428571428571427,0.56,0.42
|
||||||
|
vanilla,41,71,nan,nan,0.5357142857142857,0.4642857142857143,nan,nan
|
||||||
|
vanilla,41,72,nan,nan,0.7857142857142857,0.17857142857142858,nan,nan
|
||||||
|
vanilla,41,73,nan,nan,0.75,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,74,nan,nan,0.8571428571428571,0.07142857142857142,nan,nan
|
||||||
|
vanilla,41,75,nan,nan,0.5714285714285714,0.35714285714285715,nan,nan
|
||||||
|
vanilla,41,76,nan,nan,0.6071428571428571,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,77,nan,nan,0.5357142857142857,0.32142857142857145,nan,nan
|
||||||
|
vanilla,41,78,nan,nan,0.9285714285714286,0.0,nan,nan
|
||||||
|
vanilla,41,79,nan,nan,0.8571428571428571,0.0,nan,nan
|
||||||
|
vanilla,41,80,0.67,0.22,0.9642857142857143,0.0,0.67,0.22
|
||||||
|
vanilla,41,81,nan,nan,0.7142857142857143,0.14285714285714285,nan,nan
|
||||||
|
vanilla,41,82,nan,nan,0.8928571428571429,0.0,nan,nan
|
||||||
|
vanilla,41,83,nan,nan,0.7857142857142857,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,84,nan,nan,0.5,0.35714285714285715,nan,nan
|
||||||
|
vanilla,41,85,nan,nan,0.8571428571428571,0.03571428571428571,nan,nan
|
||||||
|
vanilla,41,86,nan,nan,0.9285714285714286,0.03571428571428571,nan,nan
|
||||||
|
vanilla,41,87,nan,nan,0.75,0.17857142857142858,nan,nan
|
||||||
|
vanilla,41,88,nan,nan,0.5357142857142857,0.10714285714285714,nan,nan
|
||||||
|
vanilla,41,89,nan,nan,0.42857142857142855,0.03571428571428571,nan,nan
|
||||||
|
vanilla,41,90,0.06,0.0,0.4642857142857143,0.0,0.06,0.0
|
||||||
|
vanilla,41,91,nan,nan,0.10714285714285714,0.0,nan,nan
|
||||||
|
vanilla,41,92,nan,nan,0.07142857142857142,0.0,nan,nan
|
||||||
|
vanilla,41,93,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,94,nan,nan,0.03571428571428571,0.0,nan,nan
|
||||||
|
vanilla,41,95,nan,nan,0.5357142857142857,0.0,nan,nan
|
||||||
|
vanilla,41,96,nan,nan,0.07142857142857142,0.0,nan,nan
|
||||||
|
vanilla,41,97,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,98,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,99,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,100,0.0,0.0,0.0,0.0,0.0,0.0
|
||||||
|
vanilla,41,101,nan,nan,0.10714285714285714,0.0,nan,nan
|
||||||
|
vanilla,41,102,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,103,nan,nan,0.25,0.0,nan,nan
|
||||||
|
vanilla,41,104,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,105,nan,nan,0.14285714285714285,0.03571428571428571,nan,nan
|
||||||
|
vanilla,41,106,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,107,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,108,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,109,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,110,0.0,0.0,0.03571428571428571,0.0,0.0,0.0
|
||||||
|
vanilla,41,111,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,112,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,113,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,114,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,115,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,116,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,117,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,118,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,119,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,120,0.0,0.0,0.0,0.0,0.0,0.0
|
||||||
|
vanilla,41,121,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,122,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,123,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,124,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,125,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,126,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,127,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,128,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,129,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,130,0.03,0.0,0.0,0.0,0.03,0.0
|
||||||
|
vanilla,41,131,nan,nan,0.03571428571428571,0.0,nan,nan
|
||||||
|
vanilla,41,132,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,133,nan,nan,0.21428571428571427,0.0,nan,nan
|
||||||
|
vanilla,41,134,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,135,nan,nan,0.03571428571428571,0.0,nan,nan
|
||||||
|
vanilla,41,136,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,137,nan,nan,0.0,0.0,nan,nan
|
||||||
|
vanilla,41,138,nan,nan,0.10714285714285714,0.0,nan,nan
|
||||||
|
vanilla,41,139,nan,nan,0.07142857142857142,0.0,nan,nan
|
||||||
|
routing,41,0,0.0,0.14285714285714285,0.0,0.14285714285714285,nan,nan
|
||||||
|
routing,41,1,0.0,0.25,0.0,0.25,nan,nan
|
||||||
|
routing,41,2,0.0,0.0,0.0,0.0,nan,nan
|
||||||
|
routing,41,3,0.0,0.17857142857142858,0.0,0.17857142857142858,nan,nan
|
||||||
|
routing,41,4,0.0,0.0,0.0,0.0,nan,nan
|
||||||
|
routing,41,5,0.0,0.39285714285714285,0.0,0.39285714285714285,nan,nan
|
||||||
|
routing,41,6,0.0,0.39285714285714285,0.0,0.39285714285714285,nan,nan
|
||||||
|
routing,41,7,0.14285714285714285,0.14285714285714285,0.14285714285714285,0.14285714285714285,nan,nan
|
||||||
|
routing,41,8,0.25,0.21428571428571427,0.25,0.21428571428571427,nan,nan
|
||||||
|
routing,41,9,0.0,0.39285714285714285,0.0,0.39285714285714285,nan,nan
|
||||||
|
routing,41,10,0.10714285714285714,0.21428571428571427,0.10714285714285714,0.21428571428571427,nan,nan
|
||||||
|
routing,41,11,0.2857142857142857,0.4642857142857143,0.2857142857142857,0.4642857142857143,nan,nan
|
||||||
|
routing,41,12,0.17857142857142858,0.25,0.17857142857142858,0.25,nan,nan
|
||||||
|
routing,41,13,0.21428571428571427,0.35714285714285715,0.21428571428571427,0.35714285714285715,nan,nan
|
||||||
|
routing,41,14,0.35714285714285715,0.42857142857142855,0.35714285714285715,0.42857142857142855,nan,nan
|
||||||
|
routing,41,15,0.10714285714285714,0.6071428571428571,0.10714285714285714,0.6071428571428571,nan,nan
|
||||||
|
routing,41,16,0.5,0.17857142857142858,0.5,0.17857142857142858,nan,nan
|
||||||
|
routing,41,17,0.39285714285714285,0.14285714285714285,0.39285714285714285,0.14285714285714285,nan,nan
|
||||||
|
routing,41,18,0.0,0.6071428571428571,0.0,0.6071428571428571,nan,nan
|
||||||
|
routing,41,19,0.32142857142857145,0.14285714285714285,0.32142857142857145,0.14285714285714285,nan,nan
|
||||||
|
routing,41,20,0.03571428571428571,0.5357142857142857,0.03571428571428571,0.5357142857142857,nan,nan
|
||||||
|
routing,41,21,0.14285714285714285,0.5,0.14285714285714285,0.5,nan,nan
|
||||||
|
routing,41,22,0.6071428571428571,0.25,0.6071428571428571,0.25,nan,nan
|
||||||
|
routing,41,23,0.39285714285714285,0.4642857142857143,0.39285714285714285,0.4642857142857143,nan,nan
|
||||||
|
routing,41,24,0.39285714285714285,0.17857142857142858,0.39285714285714285,0.17857142857142858,nan,nan
|
||||||
|
routing,41,25,0.42857142857142855,0.25,0.42857142857142855,0.25,nan,nan
|
||||||
|
routing,41,26,0.5,0.0,0.5,0.0,nan,nan
|
||||||
|
routing,41,27,0.25,0.42857142857142855,0.25,0.42857142857142855,nan,nan
|
||||||
|
routing,41,28,0.03571428571428571,0.21428571428571427,0.03571428571428571,0.21428571428571427,nan,nan
|
||||||
|
routing,41,29,0.35714285714285715,0.5357142857142857,0.35714285714285715,0.5357142857142857,nan,nan
|
||||||
|
routing,41,30,0.75,0.0,0.75,0.0,nan,nan
|
||||||
|
routing,41,31,0.5714285714285714,0.0,0.5714285714285714,0.0,nan,nan
|
||||||
|
routing,41,32,0.14285714285714285,0.35714285714285715,0.14285714285714285,0.35714285714285715,nan,nan
|
||||||
|
routing,41,33,0.6071428571428571,0.07142857142857142,0.6071428571428571,0.07142857142857142,nan,nan
|
||||||
|
routing,41,34,0.32142857142857145,0.2857142857142857,0.32142857142857145,0.2857142857142857,nan,nan
|
||||||
|
routing,41,35,0.17857142857142858,0.39285714285714285,0.17857142857142858,0.39285714285714285,nan,nan
|
||||||
|
routing,41,36,0.6428571428571429,0.10714285714285714,0.6428571428571429,0.10714285714285714,nan,nan
|
||||||
|
routing,41,37,0.17857142857142858,0.14285714285714285,0.17857142857142858,0.14285714285714285,nan,nan
|
||||||
|
routing,41,38,0.42857142857142855,0.21428571428571427,0.42857142857142855,0.21428571428571427,nan,nan
|
||||||
|
routing,41,39,0.6071428571428571,0.25,0.6071428571428571,0.25,nan,nan
|
||||||
|
routing,41,40,0.4642857142857143,0.25,0.4642857142857143,0.25,nan,nan
|
||||||
|
routing,41,41,0.5714285714285714,0.14285714285714285,0.5714285714285714,0.14285714285714285,nan,nan
|
||||||
|
routing,41,42,0.8214285714285714,0.0,0.8214285714285714,0.0,nan,nan
|
||||||
|
routing,41,43,0.5,0.0,0.5,0.0,nan,nan
|
||||||
|
routing,41,44,0.6071428571428571,0.03571428571428571,0.6071428571428571,0.03571428571428571,nan,nan
|
||||||
|
routing,41,45,0.5,0.14285714285714285,0.5,0.14285714285714285,nan,nan
|
||||||
|
routing,41,46,0.5,0.32142857142857145,0.5,0.32142857142857145,nan,nan
|
||||||
|
routing,41,47,0.5357142857142857,0.2857142857142857,0.5357142857142857,0.2857142857142857,nan,nan
|
||||||
|
routing,41,48,0.7142857142857143,0.0,0.7142857142857143,0.0,nan,nan
|
||||||
|
routing,41,49,0.35714285714285715,0.32142857142857145,0.35714285714285715,0.32142857142857145,nan,nan
|
||||||
|
routing,41,50,0.5357142857142857,0.14285714285714285,0.5357142857142857,0.14285714285714285,nan,nan
|
||||||
|
routing,41,51,0.35714285714285715,0.39285714285714285,0.35714285714285715,0.39285714285714285,nan,nan
|
||||||
|
routing,41,52,0.42857142857142855,0.14285714285714285,0.42857142857142855,0.14285714285714285,nan,nan
|
||||||
|
routing,41,53,0.4642857142857143,0.14285714285714285,0.4642857142857143,0.14285714285714285,nan,nan
|
||||||
|
routing,41,54,0.21428571428571427,0.42857142857142855,0.21428571428571427,0.42857142857142855,nan,nan
|
||||||
|
routing,41,55,0.42857142857142855,0.21428571428571427,0.42857142857142855,0.21428571428571427,nan,nan
|
||||||
|
routing,41,56,0.5714285714285714,0.21428571428571427,0.5714285714285714,0.21428571428571427,nan,nan
|
||||||
|
routing,41,57,0.5357142857142857,0.2857142857142857,0.5357142857142857,0.2857142857142857,nan,nan
|
||||||
|
routing,41,58,0.42857142857142855,0.14285714285714285,0.42857142857142855,0.14285714285714285,nan,nan
|
||||||
|
routing,41,59,0.5357142857142857,0.21428571428571427,0.5357142857142857,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,0,0.0,0.38,0.0,0.14285714285714285,0.0,0.38
|
||||||
|
routing2,41,1,nan,nan,0.0,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,2,nan,nan,0.0,0.0,nan,nan
|
||||||
|
routing2,41,3,nan,nan,0.0,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,4,nan,nan,0.0,0.0,nan,nan
|
||||||
|
routing2,41,5,nan,nan,0.0,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,6,nan,nan,0.0,0.25,nan,nan
|
||||||
|
routing2,41,7,nan,nan,0.0,0.07142857142857142,nan,nan
|
||||||
|
routing2,41,8,nan,nan,0.0,0.25,nan,nan
|
||||||
|
routing2,41,9,nan,nan,0.0,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,10,0.0,0.45,0.0,0.32142857142857145,0.0,0.45
|
||||||
|
routing2,41,11,nan,nan,0.0,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,12,nan,nan,0.0,0.25,nan,nan
|
||||||
|
routing2,41,13,nan,nan,0.0,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,14,nan,nan,0.0,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,15,nan,nan,0.07142857142857142,0.75,nan,nan
|
||||||
|
routing2,41,16,nan,nan,0.2857142857142857,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,17,nan,nan,0.21428571428571427,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,18,nan,nan,0.0,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,19,nan,nan,0.32142857142857145,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,20,0.0,0.62,0.0,0.5357142857142857,0.0,0.62
|
||||||
|
routing2,41,21,nan,nan,0.0,0.6428571428571429,nan,nan
|
||||||
|
routing2,41,22,nan,nan,0.5,0.25,nan,nan
|
||||||
|
routing2,41,23,nan,nan,0.32142857142857145,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,24,nan,nan,0.21428571428571427,0.2857142857142857,nan,nan
|
||||||
|
routing2,41,25,nan,nan,0.42857142857142855,0.25,nan,nan
|
||||||
|
routing2,41,26,nan,nan,0.5,0.03571428571428571,nan,nan
|
||||||
|
routing2,41,27,nan,nan,0.17857142857142858,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,28,nan,nan,0.10714285714285714,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,29,nan,nan,0.35714285714285715,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,30,0.0,0.62,0.75,0.0,0.0,0.62
|
||||||
|
routing2,41,31,nan,nan,0.75,0.10714285714285714,nan,nan
|
||||||
|
routing2,41,32,nan,nan,0.21428571428571427,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,33,nan,nan,0.75,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,34,nan,nan,0.4642857142857143,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,35,nan,nan,0.17857142857142858,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,36,nan,nan,0.6428571428571429,0.10714285714285714,nan,nan
|
||||||
|
routing2,41,37,nan,nan,0.35714285714285715,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,38,nan,nan,0.32142857142857145,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,39,nan,nan,0.6071428571428571,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,40,0.0,0.61,0.6785714285714286,0.32142857142857145,0.0,0.61
|
||||||
|
routing2,41,41,nan,nan,0.6428571428571429,0.25,nan,nan
|
||||||
|
routing2,41,42,nan,nan,0.75,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,43,nan,nan,0.7857142857142857,0.10714285714285714,nan,nan
|
||||||
|
routing2,41,44,nan,nan,0.6785714285714286,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,45,nan,nan,0.39285714285714285,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,46,nan,nan,0.5357142857142857,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,47,nan,nan,0.4642857142857143,0.5,nan,nan
|
||||||
|
routing2,41,48,nan,nan,0.8571428571428571,0.07142857142857142,nan,nan
|
||||||
|
routing2,41,49,nan,nan,0.2857142857142857,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,50,0.0,0.62,0.5,0.42857142857142855,0.0,0.62
|
||||||
|
routing2,41,51,nan,nan,0.4642857142857143,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,52,nan,nan,0.6428571428571429,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,53,nan,nan,0.8571428571428571,0.07142857142857142,nan,nan
|
||||||
|
routing2,41,54,nan,nan,0.39285714285714285,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,55,nan,nan,0.5,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,56,nan,nan,0.7142857142857143,0.2857142857142857,nan,nan
|
||||||
|
routing2,41,57,nan,nan,0.39285714285714285,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,58,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,59,nan,nan,0.5714285714285714,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,60,0.0,0.62,0.75,0.14285714285714285,0.0,0.62
|
||||||
|
routing2,41,61,nan,nan,0.7857142857142857,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,62,nan,nan,0.32142857142857145,0.6428571428571429,nan,nan
|
||||||
|
routing2,41,63,nan,nan,0.2857142857142857,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,64,nan,nan,0.7857142857142857,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,65,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,66,nan,nan,0.75,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,67,nan,nan,0.6428571428571429,0.2857142857142857,nan,nan
|
||||||
|
routing2,41,68,nan,nan,0.7857142857142857,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,69,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,70,0.0,0.62,0.6071428571428571,0.35714285714285715,0.0,0.62
|
||||||
|
routing2,41,71,nan,nan,0.6428571428571429,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,72,nan,nan,0.7142857142857143,0.25,nan,nan
|
||||||
|
routing2,41,73,nan,nan,0.7857142857142857,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,74,nan,nan,0.9285714285714286,0.03571428571428571,nan,nan
|
||||||
|
routing2,41,75,nan,nan,0.21428571428571427,0.75,nan,nan
|
||||||
|
routing2,41,76,nan,nan,0.8214285714285714,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,77,nan,nan,0.5357142857142857,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,78,nan,nan,0.75,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,79,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,80,0.0,0.59,0.8214285714285714,0.14285714285714285,0.0,0.59
|
||||||
|
routing2,41,81,nan,nan,0.35714285714285715,0.6071428571428571,nan,nan
|
||||||
|
routing2,41,82,nan,nan,1.0,0.0,nan,nan
|
||||||
|
routing2,41,83,nan,nan,0.6071428571428571,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,84,nan,nan,0.10714285714285714,0.8928571428571429,nan,nan
|
||||||
|
routing2,41,85,nan,nan,0.7857142857142857,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,86,nan,nan,0.8214285714285714,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,87,nan,nan,0.14285714285714285,0.8571428571428571,nan,nan
|
||||||
|
routing2,41,88,nan,nan,0.32142857142857145,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,89,nan,nan,0.6071428571428571,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,90,0.0,0.62,0.5357142857142857,0.4642857142857143,0.0,0.62
|
||||||
|
routing2,41,91,nan,nan,0.42857142857142855,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,92,nan,nan,0.35714285714285715,0.6428571428571429,nan,nan
|
||||||
|
routing2,41,93,nan,nan,0.5357142857142857,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,94,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,95,nan,nan,0.5714285714285714,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,96,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,97,nan,nan,0.5,0.5,nan,nan
|
||||||
|
routing2,41,98,nan,nan,0.8214285714285714,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,99,nan,nan,0.42857142857142855,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,100,0.0,0.62,0.6071428571428571,0.39285714285714285,0.0,0.62
|
||||||
|
routing2,41,101,nan,nan,0.21428571428571427,0.7142857142857143,nan,nan
|
||||||
|
routing2,41,102,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,103,nan,nan,1.0,0.0,nan,nan
|
||||||
|
routing2,41,104,nan,nan,0.39285714285714285,0.5714285714285714,nan,nan
|
||||||
|
routing2,41,105,nan,nan,0.6428571428571429,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,106,nan,nan,0.8214285714285714,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,107,nan,nan,0.6071428571428571,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,108,nan,nan,0.7142857142857143,0.2857142857142857,nan,nan
|
||||||
|
routing2,41,109,nan,nan,0.8571428571428571,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,110,0.0,0.62,0.4642857142857143,0.5357142857142857,0.0,0.62
|
||||||
|
routing2,41,111,nan,nan,0.4642857142857143,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,112,nan,nan,0.2857142857142857,0.7142857142857143,nan,nan
|
||||||
|
routing2,41,113,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,114,nan,nan,0.4642857142857143,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,115,nan,nan,0.7857142857142857,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,116,nan,nan,0.6428571428571429,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,117,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,118,nan,nan,0.2857142857142857,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,119,nan,nan,0.5,0.5,nan,nan
|
||||||
|
routing2,41,120,0.0,0.62,0.8214285714285714,0.17857142857142858,0.0,0.62
|
||||||
|
routing2,41,121,nan,nan,0.75,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,122,nan,nan,0.39285714285714285,0.6071428571428571,nan,nan
|
||||||
|
routing2,41,123,nan,nan,0.75,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,124,nan,nan,0.32142857142857145,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,125,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,126,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,127,nan,nan,0.4642857142857143,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,128,nan,nan,0.6428571428571429,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,129,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,130,0.0,0.62,0.7142857142857143,0.2857142857142857,0.0,0.62
|
||||||
|
routing2,41,131,nan,nan,0.32142857142857145,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,132,nan,nan,0.25,0.7142857142857143,nan,nan
|
||||||
|
routing2,41,133,nan,nan,0.5357142857142857,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,134,nan,nan,0.2857142857142857,0.7142857142857143,nan,nan
|
||||||
|
routing2,41,135,nan,nan,0.5357142857142857,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,136,nan,nan,0.5357142857142857,0.4642857142857143,nan,nan
|
||||||
|
routing2,41,137,nan,nan,0.4642857142857143,0.5,nan,nan
|
||||||
|
routing2,41,138,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,139,nan,nan,0.39285714285714285,0.6071428571428571,nan,nan
|
||||||
|
routing2,41,140,0.0,0.62,0.75,0.25,0.0,0.62
|
||||||
|
routing2,41,141,nan,nan,0.75,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,142,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,143,nan,nan,0.5714285714285714,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,144,nan,nan,0.6428571428571429,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,145,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,146,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,147,nan,nan,0.6071428571428571,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,148,nan,nan,0.5714285714285714,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,149,nan,nan,0.5,0.5,nan,nan
|
||||||
|
routing2,41,150,0.0,0.62,0.75,0.25,0.0,0.62
|
||||||
|
routing2,41,151,nan,nan,0.39285714285714285,0.6071428571428571,nan,nan
|
||||||
|
routing2,41,152,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,153,nan,nan,0.39285714285714285,0.6071428571428571,nan,nan
|
||||||
|
routing2,41,154,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,155,nan,nan,0.9285714285714286,0.07142857142857142,nan,nan
|
||||||
|
routing2,41,156,nan,nan,0.2857142857142857,0.7142857142857143,nan,nan
|
||||||
|
routing2,41,157,nan,nan,0.8214285714285714,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,158,nan,nan,0.4642857142857143,0.5,nan,nan
|
||||||
|
routing2,41,159,nan,nan,0.32142857142857145,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,160,0.0,0.62,0.21428571428571427,0.75,0.0,0.62
|
||||||
|
routing2,41,161,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,162,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,163,nan,nan,0.9285714285714286,0.03571428571428571,nan,nan
|
||||||
|
routing2,41,164,nan,nan,0.4642857142857143,0.5357142857142857,nan,nan
|
||||||
|
routing2,41,165,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,166,nan,nan,0.7142857142857143,0.25,nan,nan
|
||||||
|
routing2,41,167,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,168,nan,nan,0.6071428571428571,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,169,nan,nan,0.5714285714285714,0.42857142857142855,nan,nan
|
||||||
|
routing2,41,170,0.0,0.62,0.7142857142857143,0.25,0.0,0.62
|
||||||
|
routing2,41,171,nan,nan,0.8571428571428571,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,172,nan,nan,0.6785714285714286,0.2857142857142857,nan,nan
|
||||||
|
routing2,41,173,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,174,nan,nan,0.8928571428571429,0.10714285714285714,nan,nan
|
||||||
|
routing2,41,175,nan,nan,0.6428571428571429,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,176,nan,nan,0.6071428571428571,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,177,nan,nan,0.6428571428571429,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,178,nan,nan,0.6785714285714286,0.32142857142857145,nan,nan
|
||||||
|
routing2,41,179,nan,nan,0.7142857142857143,0.25,nan,nan
|
||||||
|
routing2,41,180,0.0,0.62,0.42857142857142855,0.5714285714285714,0.0,0.62
|
||||||
|
routing2,41,181,nan,nan,0.8571428571428571,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,182,nan,nan,0.32142857142857145,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,183,nan,nan,0.35714285714285715,0.6071428571428571,nan,nan
|
||||||
|
routing2,41,184,nan,nan,0.6071428571428571,0.39285714285714285,nan,nan
|
||||||
|
routing2,41,185,nan,nan,0.7857142857142857,0.21428571428571427,nan,nan
|
||||||
|
routing2,41,186,nan,nan,0.8214285714285714,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,187,nan,nan,0.9642857142857143,0.0,nan,nan
|
||||||
|
routing2,41,188,nan,nan,0.8928571428571429,0.10714285714285714,nan,nan
|
||||||
|
routing2,41,189,nan,nan,0.35714285714285715,0.6428571428571429,nan,nan
|
||||||
|
routing2,41,190,0.0,0.62,0.6428571428571429,0.35714285714285715,0.0,0.62
|
||||||
|
routing2,41,191,nan,nan,0.75,0.25,nan,nan
|
||||||
|
routing2,41,192,nan,nan,0.6428571428571429,0.35714285714285715,nan,nan
|
||||||
|
routing2,41,193,nan,nan,0.8571428571428571,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,194,nan,nan,0.8571428571428571,0.14285714285714285,nan,nan
|
||||||
|
routing2,41,195,nan,nan,0.9285714285714286,0.07142857142857142,nan,nan
|
||||||
|
routing2,41,196,nan,nan,0.8214285714285714,0.17857142857142858,nan,nan
|
||||||
|
routing2,41,197,nan,nan,0.5,0.5,nan,nan
|
||||||
|
routing2,41,198,nan,nan,0.32142857142857145,0.6785714285714286,nan,nan
|
||||||
|
routing2,41,199,0.0,0.61,0.32142857142857145,0.6428571428571429,0.0,0.61
|
||||||
|
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 107 KiB |
@@ -27,13 +27,18 @@ import matplotlib.pyplot as plt
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
|
from projected_grpo.figs import save_fig
|
||||||
|
|
||||||
# arm -> (display label, colour). Order = legend/bar order (baseline first).
|
# arm -> (display label, colour). Order = legend/bar order (baseline first).
|
||||||
|
# Reader-facing names only -- "route2"/"grad" are internal tags. The grad-mask
|
||||||
|
# routing arm is the one we report, so it is plain "route"; the failed
|
||||||
|
# activation-mask variant is disambiguated, not version-numbered.
|
||||||
ARM = {
|
ARM = {
|
||||||
"vanilla": ("vanilla", "#444444"),
|
"vanilla": ("vanilla", "#444444"),
|
||||||
"projected": ("erase", "#c1432b"),
|
"projected": ("erase", "#c1432b"),
|
||||||
"routing": ("route", "#33508c"),
|
"routing": ("route (v1)", "#33508c"),
|
||||||
"routing2_act": ("route2 act", "#2f7d4f"),
|
"routing2_act": ("route (act-mask)", "#2f7d4f"),
|
||||||
"routing2_grad":("route2 grad", "#b8860b"),
|
"routing2_grad":("route", "#b8860b"),
|
||||||
}
|
}
|
||||||
# mode display order: in-dist first, then held-out.
|
# mode display order: in-dist first, then held-out.
|
||||||
MODE_ORDER = ["run_tests", "file_marker", "stdout_marker", "sentinel", "eq_override"]
|
MODE_ORDER = ["run_tests", "file_marker", "stdout_marker", "sentinel", "eq_override"]
|
||||||
@@ -79,6 +84,8 @@ def main() -> None:
|
|||||||
ap.add_argument("jsons", nargs="*", type=Path,
|
ap.add_argument("jsons", nargs="*", type=Path,
|
||||||
help="per_mode_deploy.json paths; default globs out/runs/*sub4*/")
|
help="per_mode_deploy.json paths; default globs out/runs/*sub4*/")
|
||||||
ap.add_argument("--out", type=Path, default=Path("out/figs/deploy_overlay.png"))
|
ap.add_argument("--out", type=Path, default=Path("out/figs/deploy_overlay.png"))
|
||||||
|
ap.add_argument("--title", action="store_true",
|
||||||
|
help="draw the suptitle (off by default: the caption carries it)")
|
||||||
args = ap.parse_args()
|
args = ap.parse_args()
|
||||||
|
|
||||||
paths = args.jsons or sorted(Path("out/runs").glob("*sub4*/per_mode_deploy.json"))
|
paths = args.jsons or sorted(Path("out/runs").glob("*sub4*/per_mode_deploy.json"))
|
||||||
@@ -97,12 +104,12 @@ def main() -> None:
|
|||||||
_panel(a2, records, modes, arms, "deploy_solve",
|
_panel(a2, records, modes, arms, "deploy_solve",
|
||||||
"DEPLOY solve rate by mode (higher = better)", "deploy solve rate")
|
"DEPLOY solve rate by mode (higher = better)", "deploy solve rate")
|
||||||
a1.legend(fontsize=8, frameon=False, loc="upper right")
|
a1.legend(fontsize=8, frameon=False, loc="upper right")
|
||||||
n_seed = {r.get("seed") for r in records}
|
if args.title:
|
||||||
fig.suptitle(f"Per-mode deploy overlay ({len(arms)} arms, seed {sorted(n_seed)}) -- "
|
n_seed = {r.get("seed") for r in records}
|
||||||
f"quarantine deleted = shipped model", fontsize=11)
|
fig.suptitle(f"Per-mode deploy overlay ({len(arms)} arms, seed {sorted(n_seed)}) -- "
|
||||||
args.out.parent.mkdir(parents=True, exist_ok=True)
|
f"quarantine deleted = shipped model", fontsize=11)
|
||||||
fig.tight_layout()
|
fig.tight_layout()
|
||||||
fig.savefig(args.out, dpi=140, bbox_inches="tight")
|
save_fig(fig, args.out)
|
||||||
logger.info(f"wrote {args.out} ({len(arms)} arms x {len(modes)} modes)")
|
logger.info(f"wrote {args.out} ({len(arms)} arms x {len(modes)} modes)")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,11 @@ import matplotlib.pyplot as plt
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from projected_grpo.figs import link_latest
|
from projected_grpo.figs import link_latest, save_fig, arm_label
|
||||||
|
|
||||||
|
# Figures are captioned in the paper/blog, so the suptitle just restates the
|
||||||
|
# caption. Off by default; --title re-enables it for standalone research use.
|
||||||
|
SHOW_TITLE = False
|
||||||
|
|
||||||
# --- parse -----------------------------------------------------------------
|
# --- parse -----------------------------------------------------------------
|
||||||
|
|
||||||
@@ -148,6 +152,8 @@ def parse_log(path: Path) -> dict | None:
|
|||||||
|
|
||||||
|
|
||||||
def classify(run: dict) -> str:
|
def classify(run: dict) -> str:
|
||||||
|
if "arm_csv" in run: # reconstructed from a CSV: name is already classified
|
||||||
|
return run["arm_csv"]
|
||||||
if run["arm"] == "vanilla":
|
if run["arm"] == "vanilla":
|
||||||
return "vanilla"
|
return "vanilla"
|
||||||
if run["arm"] == "routing":
|
if run["arm"] == "routing":
|
||||||
@@ -236,24 +242,51 @@ def _series_panel(ax, runs, cols, colors, ylim, label_series=False):
|
|||||||
ax.set_ylim(*ylim)
|
ax.set_ylim(*ylim)
|
||||||
|
|
||||||
|
|
||||||
|
# Every series any of the three figures plots. Carried in the CSV so the figure
|
||||||
|
# regenerates from the committed CSV alone (logs/ and out/runs/ are gitignored,
|
||||||
|
# out/figs/*.csv is tracked). `arm` is the CLASSIFIED display name -- load_csv
|
||||||
|
# short-circuits classify() on it so the round-trip is exact.
|
||||||
|
CSV_SERIES = ["hack_s", "gt_s", "hack_train", "solve_train", "hk_dep", "slv_dep"]
|
||||||
|
|
||||||
|
|
||||||
def dump_data(runs: list[dict], out: Path) -> Path:
|
def dump_data(runs: list[dict], out: Path) -> Path:
|
||||||
"""Write the plotted series to a tidy CSV next to the figure so the figure is
|
|
||||||
reproducible from a committed artifact -- logs/ and out/runs/ are gitignored,
|
|
||||||
this CSV is not (it lands in out/figs/, which is tracked)."""
|
|
||||||
csv = out.with_suffix(".csv")
|
csv = out.with_suffix(".csv")
|
||||||
lines = ["arm,seed,step,hack,solve"]
|
lines = ["arm,seed,step," + ",".join(CSV_SERIES)]
|
||||||
for r in runs:
|
for r in runs:
|
||||||
arm = classify(r)
|
arm = classify(r)
|
||||||
hk = r.get("hack_s"); sv = r.get("gt_s")
|
|
||||||
for i, step in enumerate(r["steps"]):
|
for i, step in enumerate(r["steps"]):
|
||||||
h = hk[i] if hk is not None and i < len(hk) else float("nan")
|
cells = [r[k][i] if (k in r and r[k] is not None and i < len(r[k])) else float("nan")
|
||||||
s = sv[i] if sv is not None and i < len(sv) else float("nan")
|
for k in CSV_SERIES]
|
||||||
lines.append(f"{arm},{r['seed']},{int(step)},{h},{s}")
|
lines.append(f"{arm},{r['seed']},{int(step)}," + ",".join(str(c) for c in cells))
|
||||||
csv.write_text("\n".join(lines) + "\n")
|
csv.write_text("\n".join(lines) + "\n")
|
||||||
logger.info(f"wrote {csv} ({len(runs)} runs, reproducibility source)")
|
logger.info(f"wrote {csv} ({len(runs)} runs, reproducibility source)")
|
||||||
return csv
|
return csv
|
||||||
|
|
||||||
|
|
||||||
|
def load_csv(path: Path) -> list[dict]:
|
||||||
|
"""Reconstruct the runs list from a dump_data CSV so figures regenerate
|
||||||
|
without the raw logs. Groups rows by (arm, seed); `arm_csv` makes classify()
|
||||||
|
return the stored display name verbatim."""
|
||||||
|
rows = [l.split(",") for l in path.read_text().splitlines() if l.strip()]
|
||||||
|
hdr, body = rows[0], rows[1:]
|
||||||
|
ci = {n: i for i, n in enumerate(hdr)}
|
||||||
|
by_key: dict[tuple, dict] = {}
|
||||||
|
for row in body:
|
||||||
|
key = (row[ci["arm"]], row[ci["seed"]])
|
||||||
|
run = by_key.setdefault(key, {"arm_csv": row[ci["arm"]], "seed": row[ci["seed"]],
|
||||||
|
"refr": 0, "vhack": "-", "teacher_off": None,
|
||||||
|
"steps": [], **{k: [] for k in CSV_SERIES}})
|
||||||
|
run["steps"].append(int(row[ci["step"]]))
|
||||||
|
for k in CSV_SERIES:
|
||||||
|
run[k].append(float(row[ci[k]]))
|
||||||
|
runs = list(by_key.values())
|
||||||
|
for run in runs: # match parse_log: numeric series are ndarrays, not lists
|
||||||
|
run["steps"] = np.array(run["steps"])
|
||||||
|
for k in CSV_SERIES:
|
||||||
|
run[k] = np.array(run[k], dtype=float)
|
||||||
|
return runs
|
||||||
|
|
||||||
|
|
||||||
def plot(runs: list[dict], out: Path) -> None:
|
def plot(runs: list[dict], out: Path) -> None:
|
||||||
by_arm: dict[str, list[dict]] = defaultdict(list)
|
by_arm: dict[str, list[dict]] = defaultdict(list)
|
||||||
for r in runs:
|
for r in runs:
|
||||||
@@ -269,7 +302,7 @@ def plot(runs: list[dict], out: Path) -> None:
|
|||||||
ax = axes[0][col]
|
ax = axes[0][col]
|
||||||
rs = by_arm[arm]
|
rs = by_arm[arm]
|
||||||
n_seed = len({r["seed"] for r in rs})
|
n_seed = len({r["seed"] for r in rs})
|
||||||
ax.set_title(f"{arm}\n(n={n_seed} seed{'s' if n_seed > 1 else ''})", fontsize=9)
|
ax.set_title(f"{arm_label(arm)}\n(n={n_seed} seed{'s' if n_seed > 1 else ''})", fontsize=9)
|
||||||
# ylim floor slightly below 0 so a pinned-at-zero series (route2 hack) draws
|
# ylim floor slightly below 0 so a pinned-at-zero series (route2 hack) draws
|
||||||
# ABOVE the axis line instead of hiding under it -- the whole result is that
|
# ABOVE the axis line instead of hiding under it -- the whole result is that
|
||||||
# red sits on zero, so it must be visible, not absent.
|
# red sits on zero, so it must be visible, not absent.
|
||||||
@@ -296,12 +329,14 @@ def plot(runs: list[dict], out: Path) -> None:
|
|||||||
ax.spines["right"].set_visible(False)
|
ax.spines["right"].set_visible(False)
|
||||||
ax.tick_params(labelsize=8)
|
ax.tick_params(labelsize=8)
|
||||||
|
|
||||||
fig.suptitle("Training dynamics: deployed hack vs solve by arm "
|
if SHOW_TITLE:
|
||||||
"(deploy-eval n=64 T=0.7; EMA-5; dashed = mean hack onset)", fontsize=10)
|
fig.suptitle("Training dynamics: deployed hack vs solve by arm "
|
||||||
fig.tight_layout(rect=(0, 0, 1, 0.96))
|
"(deploy-eval n=64 T=0.7; EMA-5; dashed = mean hack onset)", fontsize=10)
|
||||||
out.parent.mkdir(parents=True, exist_ok=True)
|
fig.tight_layout(rect=(0, 0, 1, 0.96))
|
||||||
fig.savefig(out, dpi=150, bbox_inches="tight")
|
else:
|
||||||
logger.info(f"wrote {out} ({len(runs)} runs, arms={arms})")
|
fig.tight_layout()
|
||||||
|
save_fig(fig, out)
|
||||||
|
logger.info(f"wrote {out} ({len(runs)} runs, arms={[arm_label(a) for a in arms]})")
|
||||||
|
|
||||||
|
|
||||||
def _overlay_panel(ax, by_arm, arms, key, *, label, with_onset):
|
def _overlay_panel(ax, by_arm, arms, key, *, label, with_onset):
|
||||||
@@ -344,7 +379,7 @@ def _overlay_panel(ax, by_arm, arms, key, *, label, with_onset):
|
|||||||
y_lab = y if not placed else max(y, placed[-1] + gap)
|
y_lab = y if not placed else max(y, placed[-1] + gap)
|
||||||
placed.append(y_lab)
|
placed.append(y_lab)
|
||||||
arrow = dict(arrowstyle="-", color=color, lw=0.5, shrinkA=0, shrinkB=0)
|
arrow = dict(arrowstyle="-", color=color, lw=0.5, shrinkA=0, shrinkB=0)
|
||||||
ax.annotate(arm, xy=(x, y), xytext=(x + 1.0, y_lab), textcoords="data",
|
ax.annotate(arm_label(arm), xy=(x, y), xytext=(x + 1.0, y_lab), textcoords="data",
|
||||||
color=color, fontsize=8, va="center",
|
color=color, fontsize=8, va="center",
|
||||||
arrowprops=arrow if abs(y_lab - y) > 1e-3 else None)
|
arrowprops=arrow if abs(y_lab - y) > 1e-3 else None)
|
||||||
|
|
||||||
@@ -362,33 +397,34 @@ def plot_hack_overlay(runs: list[dict], out: Path) -> None:
|
|||||||
_overlay_panel(ax_h, by_arm, arms, "hack_s", label="hack rate", with_onset=True)
|
_overlay_panel(ax_h, by_arm, arms, "hack_s", label="hack rate", with_onset=True)
|
||||||
_overlay_panel(ax_s, by_arm, arms, "gt_s", label="solve rate", with_onset=False)
|
_overlay_panel(ax_s, by_arm, arms, "gt_s", label="solve rate", with_onset=False)
|
||||||
ax_s.set_xlabel("optimizer step")
|
ax_s.set_xlabel("optimizer step")
|
||||||
ax_h.set_title("Hack vs solve rate by arm (EMA-5; dot = mean hack onset)", fontsize=10)
|
if SHOW_TITLE:
|
||||||
|
ax_h.set_title("Hack vs solve rate by arm (EMA-5; dot = mean hack onset)", fontsize=10)
|
||||||
fig.tight_layout()
|
fig.tight_layout()
|
||||||
out.parent.mkdir(parents=True, exist_ok=True)
|
save_fig(fig, out)
|
||||||
fig.savefig(out, dpi=150, bbox_inches="tight")
|
|
||||||
logger.info(f"wrote {out}")
|
logger.info(f"wrote {out}")
|
||||||
|
|
||||||
|
|
||||||
def plot_train_vs_deploy(runs: list[dict], out: Path) -> None:
|
def plot_train_vs_deploy(runs: list[dict], out: Path) -> None:
|
||||||
"""2x2 small multiple: rows = train (knob ON) / deploy (knob OFF), cols = arm.
|
"""2x2 small multiple: rows = train (adapter ON) / deploy (adapter OFF), cols = arm.
|
||||||
The story in one figure: vanilla train == deploy (no quarantine, the cheat is
|
The story in one figure: vanilla train == deploy (no quarantine, the reward
|
||||||
in the deployed weights); route2 train HACKS while deploy is clean -- the cheat
|
hack is in the deployed weights); route trains while hacking but deploys clean,
|
||||||
is held in the deletable knob. Same red=hack/green=solve as the other figures."""
|
the hack is held in the deletable quarantine adapter. Same red=hack/green=solve
|
||||||
|
as the other figures."""
|
||||||
by_arm: dict[str, list[dict]] = defaultdict(list)
|
by_arm: dict[str, list[dict]] = defaultdict(list)
|
||||||
for r in runs:
|
for r in runs:
|
||||||
by_arm[classify(r)].append(r)
|
by_arm[classify(r)].append(r)
|
||||||
arms = [a for a in ARM_ORDER if a in by_arm]
|
arms = [a for a in ARM_ORDER if a in by_arm]
|
||||||
red, green = RATE_COLORS["hack_s"], RATE_COLORS["gt_s"]
|
red, green = RATE_COLORS["hack_s"], RATE_COLORS["gt_s"]
|
||||||
rows = [
|
rows = [
|
||||||
("train (knob on)", {"hack_train": "hack", "solve_train": "solve"},
|
("train (adapter on)", {"hack_train": "hack", "solve_train": "solve"},
|
||||||
{"hack_train": red, "solve_train": green}),
|
{"hack_train": red, "solve_train": green}),
|
||||||
("deploy (knob off)", {"hk_dep": "hack", "slv_dep": "solve"},
|
("deploy (adapter off)", {"hk_dep": "hack", "slv_dep": "solve"},
|
||||||
{"hk_dep": red, "slv_dep": green}),
|
{"hk_dep": red, "slv_dep": green}),
|
||||||
]
|
]
|
||||||
fig, axes = plt.subplots(2, len(arms), figsize=(3.0 * len(arms), 4.8),
|
fig, axes = plt.subplots(2, len(arms), figsize=(3.0 * len(arms), 4.8),
|
||||||
sharex=True, sharey=True, squeeze=False)
|
sharex=True, sharey=True, squeeze=False)
|
||||||
for ci, arm in enumerate(arms):
|
for ci, arm in enumerate(arms):
|
||||||
axes[0][ci].set_title(arm, fontsize=10)
|
axes[0][ci].set_title(arm_label(arm), fontsize=10)
|
||||||
for ri, (rlabel, cols, colors) in enumerate(rows):
|
for ri, (rlabel, cols, colors) in enumerate(rows):
|
||||||
ax = axes[ri][ci]
|
ax = axes[ri][ci]
|
||||||
_series_panel(ax, by_arm[arm], cols, colors, ylim=(-0.035, 1.0),
|
_series_panel(ax, by_arm[arm], cols, colors, ylim=(-0.035, 1.0),
|
||||||
@@ -415,11 +451,14 @@ def plot_train_vs_deploy(runs: list[dict], out: Path) -> None:
|
|||||||
ax.tick_params(labelsize=8)
|
ax.tick_params(labelsize=8)
|
||||||
for ax in axes[-1]:
|
for ax in axes[-1]:
|
||||||
ax.set_xlabel("optimizer step")
|
ax.set_xlabel("optimizer step")
|
||||||
fig.suptitle("Train (knob on) vs deploy (knob off): vanilla puts the cheat in "
|
if SHOW_TITLE:
|
||||||
"the weights, route2 in the deletable knob (EMA-5)", fontsize=10)
|
fig.suptitle("Train (adapter on) vs deploy (adapter off): vanilla puts the "
|
||||||
fig.tight_layout(rect=(0, 0, 1, 0.95))
|
"reward hack in the weights, route in the deletable adapter (EMA-5)",
|
||||||
out.parent.mkdir(parents=True, exist_ok=True)
|
fontsize=10)
|
||||||
fig.savefig(out, dpi=150, bbox_inches="tight")
|
fig.tight_layout(rect=(0, 0, 1, 0.95))
|
||||||
|
else:
|
||||||
|
fig.tight_layout()
|
||||||
|
save_fig(fig, out)
|
||||||
logger.info(f"wrote {out}")
|
logger.info(f"wrote {out}")
|
||||||
|
|
||||||
|
|
||||||
@@ -454,13 +493,24 @@ def _latest_per_arm(files: list[Path], min_steps: int) -> list[Path]:
|
|||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
ap = argparse.ArgumentParser(description=__doc__)
|
ap = argparse.ArgumentParser(description=__doc__)
|
||||||
ap.add_argument("logs", nargs="+", help="log files, globs, or dirs")
|
ap.add_argument("logs", nargs="*", help="log files, globs, or dirs (omit with --from-csv)")
|
||||||
ap.add_argument("--out", type=Path, default=Path("out/figs/dynamics.png"))
|
ap.add_argument("--out", type=Path, default=Path("out/figs/dynamics.png"))
|
||||||
ap.add_argument("--latest-per-arm", action="store_true",
|
ap.add_argument("--latest-per-arm", action="store_true",
|
||||||
help="keep only the newest log per arm (with >= --min-steps rows)")
|
help="keep only the newest log per arm (with >= --min-steps rows)")
|
||||||
ap.add_argument("--min-steps", type=int, default=0,
|
ap.add_argument("--min-steps", type=int, default=0,
|
||||||
help="drop runs shorter than this many logged steps")
|
help="drop runs shorter than this many logged steps")
|
||||||
|
ap.add_argument("--title", action="store_true",
|
||||||
|
help="draw the suptitle (off by default: the paper/blog caption carries it)")
|
||||||
|
ap.add_argument("--from-csv", type=Path, default=None,
|
||||||
|
help="re-render from a committed dump_data CSV instead of parsing logs")
|
||||||
args = ap.parse_args()
|
args = ap.parse_args()
|
||||||
|
global SHOW_TITLE
|
||||||
|
SHOW_TITLE = args.title
|
||||||
|
if args.from_csv:
|
||||||
|
runs = load_csv(args.from_csv)
|
||||||
|
logger.info(f"loaded {len(runs)} runs from {args.from_csv} (CSV re-render, no logs)")
|
||||||
|
_render_all(runs, args.out)
|
||||||
|
return
|
||||||
files = _gather(args.logs)
|
files = _gather(args.logs)
|
||||||
if args.latest_per_arm:
|
if args.latest_per_arm:
|
||||||
files = _latest_per_arm(files, args.min_steps)
|
files = _latest_per_arm(files, args.min_steps)
|
||||||
@@ -470,14 +520,18 @@ def main() -> None:
|
|||||||
for r in runs:
|
for r in runs:
|
||||||
logger.info(f"{classify(r):16s} seed={r['seed']} steps={len(r['steps'])} {r['vhack']}")
|
logger.info(f"{classify(r):16s} seed={r['seed']} steps={len(r['steps'])} {r['vhack']}")
|
||||||
args.out.parent.mkdir(parents=True, exist_ok=True)
|
args.out.parent.mkdir(parents=True, exist_ok=True)
|
||||||
plot(runs, args.out)
|
_render_all(runs, args.out)
|
||||||
# second figure: single-panel arm-vs-arm overlay of the headline metric
|
|
||||||
overlay = args.out.with_name(args.out.stem + "_hack_overlay.png")
|
|
||||||
plot_hack_overlay(runs, overlay)
|
def _render_all(runs: list[dict], out: Path) -> None:
|
||||||
# third figure: 2x2 train(knob-on) vs deploy(knob-off) x arm
|
"""The three dynamics figures, shared by the log-parse and --from-csv paths."""
|
||||||
tvd = args.out.with_name(args.out.stem + "_train_deploy.png")
|
out.parent.mkdir(parents=True, exist_ok=True)
|
||||||
plot_train_vs_deploy(runs, tvd)
|
plot(runs, out) # small-multiples + CSV dump
|
||||||
for p in (args.out, overlay, tvd):
|
overlay = out.with_name(out.stem + "_hack_overlay.png")
|
||||||
|
plot_hack_overlay(runs, overlay) # arm-vs-arm headline overlay
|
||||||
|
tvd = out.with_name(out.stem + "_train_deploy.png")
|
||||||
|
plot_train_vs_deploy(runs, tvd) # 2x2 train(on) vs deploy(off)
|
||||||
|
for p in (out, overlay, tvd):
|
||||||
logger.info(f"docs/figs latest -> {link_latest(p)}")
|
logger.info(f"docs/figs latest -> {link_latest(p)}")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,9 +21,12 @@ import matplotlib.pyplot as plt
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from projected_grpo.figs import link_latest
|
from projected_grpo.figs import link_latest, save_fig
|
||||||
from plot_dynamics import _ema, _gather, _onset, parse_log
|
from plot_dynamics import _ema, _gather, _onset, parse_log
|
||||||
|
|
||||||
|
# Captioned downstream, so the title just restates the caption. --title re-enables.
|
||||||
|
SHOW_TITLE = False
|
||||||
|
|
||||||
# Distinct hue per mode (qualitative). solve drawn dashed in the same hue so each
|
# Distinct hue per mode (qualitative). solve drawn dashed in the same hue so each
|
||||||
# mode's hack/solve pair reads together.
|
# mode's hack/solve pair reads together.
|
||||||
MODE_COLORS = {
|
MODE_COLORS = {
|
||||||
@@ -71,11 +74,11 @@ def plot(runs_by_mode: dict[str, list[dict]], out: Path) -> None:
|
|||||||
ax.spines["top"].set_visible(False)
|
ax.spines["top"].set_visible(False)
|
||||||
ax.spines["right"].set_visible(False)
|
ax.spines["right"].set_visible(False)
|
||||||
ax.tick_params(labelsize=8)
|
ax.tick_params(labelsize=8)
|
||||||
ax.set_title("Loophole emergence under vanilla GRPO "
|
if SHOW_TITLE:
|
||||||
"(solid=hack/exploited, dashed=solve/gt_correct; EMA-5)", fontsize=9)
|
ax.set_title("Loophole emergence under vanilla GRPO "
|
||||||
|
"(solid=hack/exploited, dashed=solve/gt_correct; EMA-5)", fontsize=9)
|
||||||
fig.tight_layout()
|
fig.tight_layout()
|
||||||
out.parent.mkdir(parents=True, exist_ok=True)
|
save_fig(fig, out)
|
||||||
fig.savefig(out, dpi=150, bbox_inches="tight")
|
|
||||||
logger.info(f"wrote {out} (modes={modes})")
|
logger.info(f"wrote {out} (modes={modes})")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ import matplotlib.pyplot as plt
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
|
from projected_grpo.figs import save_fig
|
||||||
|
|
||||||
# hk_ column header -> (display mode, colour). Order = panel/legend order.
|
# hk_ column header -> (display mode, colour). Order = panel/legend order.
|
||||||
# Colourblind-safe-ish qualitative set; one hue per loophole, reused across panels.
|
# Colourblind-safe-ish qualitative set; one hue per loophole, reused across panels.
|
||||||
HK = {
|
HK = {
|
||||||
@@ -172,9 +174,8 @@ def plot_by_method(runs, ylabel, cumulative, span, out: Path):
|
|||||||
fontsize=6.5, va="top", color="#888")
|
fontsize=6.5, va="top", color="#888")
|
||||||
axes[0].set_ylabel(ylabel)
|
axes[0].set_ylabel(ylabel)
|
||||||
axes[0].set_ylim(-0.02, None)
|
axes[0].set_ylim(-0.02, None)
|
||||||
out.parent.mkdir(parents=True, exist_ok=True)
|
|
||||||
fig.tight_layout()
|
fig.tight_layout()
|
||||||
fig.savefig(out, dpi=140, bbox_inches="tight")
|
save_fig(fig, out)
|
||||||
logger.info(f"wrote {out} (by-method, {len(methods)} methods)")
|
logger.info(f"wrote {out} (by-method, {len(methods)} methods)")
|
||||||
|
|
||||||
|
|
||||||
@@ -205,9 +206,8 @@ def plot_by_hack(runs, ylabel, cumulative, span, out: Path):
|
|||||||
_despine(ax)
|
_despine(ax)
|
||||||
axes[0].set_ylabel(ylabel)
|
axes[0].set_ylabel(ylabel)
|
||||||
axes[0].set_ylim(-0.02, None)
|
axes[0].set_ylim(-0.02, None)
|
||||||
out.parent.mkdir(parents=True, exist_ok=True)
|
|
||||||
fig.tight_layout()
|
fig.tight_layout()
|
||||||
fig.savefig(out, dpi=140, bbox_inches="tight")
|
save_fig(fig, out)
|
||||||
logger.info(f"wrote {out} (by-hack, {len(modes)} modes)")
|
logger.info(f"wrote {out} (by-hack, {len(modes)} modes)")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,33 @@ from pathlib import Path
|
|||||||
|
|
||||||
FIGS_DIR = Path("docs/figs")
|
FIGS_DIR = Path("docs/figs")
|
||||||
|
|
||||||
|
# Reader-facing arm names. Code/log tags carry our internal vocabulary
|
||||||
|
# (route2 = the current routing arm; "knob" = the delta_S adapter); plots must
|
||||||
|
# not. Map every internal tag to the word a paper reader sees. Anything missing
|
||||||
|
# falls through to its raw tag, so a new arm shows up loud rather than silently
|
||||||
|
# mislabelled.
|
||||||
|
ARM_DISPLAY = {
|
||||||
|
"routing2": "route", "route2": "route",
|
||||||
|
"routing2_grad": "route", "routing2_act": "route (act)",
|
||||||
|
"projected": "erase", "route": "route", "erase": "erase", "vanilla": "vanilla",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def arm_label(tag: str) -> str:
|
||||||
|
return ARM_DISPLAY.get(tag, tag)
|
||||||
|
|
||||||
|
|
||||||
|
def save_fig(fig, png_path: Path, formats=("png", "svg", "pdf")) -> Path:
|
||||||
|
"""Save one figure to every format (vector .svg/.pdf for the paper, .png for
|
||||||
|
the blog/preview) and return the .png path. matplotlib picks the writer from
|
||||||
|
the suffix, so we just swap it. bbox_inches='tight' so titleless figures
|
||||||
|
don't leave a margin where the suptitle used to be."""
|
||||||
|
png_path = Path(png_path)
|
||||||
|
png_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
for ext in formats:
|
||||||
|
fig.savefig(png_path.with_suffix(f".{ext}"), dpi=150, bbox_inches="tight")
|
||||||
|
return png_path
|
||||||
|
|
||||||
|
|
||||||
def link_latest(out_path: Path) -> Path:
|
def link_latest(out_path: Path) -> Path:
|
||||||
"""Point docs/figs/<out_path.name> at out_path (relative symlink). Returns the link."""
|
"""Point docs/figs/<out_path.name> at out_path (relative symlink). Returns the link."""
|
||||||
|
|||||||