%22%22%22Parameter%20sweep%20visualizer.%0A%0APick%20a%20factory%20and%20a%20variant%20range.%20Generate%20that%20range%2C%20score%20them%2C%20and%0Adisplay%20as%20a%20heatmap%20of%20(variant_id)%20%E2%86%92%20composite%20score.%20Click%20any%20cell%20to%0Asee%20the%20actual%20piece.%0A%0AUseful%20for%20finding%20%22good%20neighborhoods%22%20in%20the%20variant%20space%20and%20identifying%0Aclusters%20of%20high-quality%20variants%20worth%20tuning%20around.%0A%22%22%22%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.22.5%22%0Aapp%20%3D%20marimo.App(width%3D%22full%22%2C%20app_title%3D%22Parameter%20Sweep%20Visualizer%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20sys%0A%20%20%20%20from%20pathlib%20import%20Path%0A%20%20%20%20sys.path.insert(0%2C%20str(Path(__file__).parent))%0A%20%20%20%20import%20_lib%20as%20lib%0A%0A%20%20%20%20return%20lib%2C%20mo%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%20Parameter%20Sweep%0A%0A%20%20%20%20Visualize%20the%20variant%20landscape%20for%20a%20factory.%20Each%20cell%20%3D%20one%20variant.%20Color%20%3D%20composite%20score.%20Click%20to%20inspect.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(lib%2C%20mo)%3A%0A%20%20%20%20factory%20%3D%20mo.ui.dropdown(%0A%20%20%20%20%20%20%20%20options%3Dlib.FACTORIES%2C%0A%20%20%20%20%20%20%20%20value%3D%22moire%22%2C%0A%20%20%20%20%20%20%20%20label%3D%22Factory%22%2C%0A%20%20%20%20)%0A%20%20%20%20grid_w%20%3D%20mo.ui.slider(8%2C%2040%2C%20value%3D20%2C%20label%3D%22Grid%20width%22%2C%20show_value%3DTrue)%0A%20%20%20%20grid_h%20%3D%20mo.ui.slider(8%2C%2040%2C%20value%3D20%2C%20label%3D%22Grid%20height%22%2C%20show_value%3DTrue)%0A%20%20%20%20sort_mode%20%3D%20mo.ui.dropdown(%0A%20%20%20%20%20%20%20%20options%3D%5B%22variant_order%22%2C%20%22score_descending%22%2C%20%22score_ascending%22%5D%2C%0A%20%20%20%20%20%20%20%20value%3D%22variant_order%22%2C%0A%20%20%20%20%20%20%20%20label%3D%22Sort%22%2C%0A%20%20%20%20)%0A%20%20%20%20mo.hstack(%5Bfactory%2C%20grid_w%2C%20grid_h%2C%20sort_mode%5D%2C%20gap%3D2%2C%20justify%3D%22start%22)%0A%20%20%20%20return%20factory%2C%20grid_h%2C%20grid_w%2C%20sort_mode%0A%0A%0A%40app.cell%0Adef%20_(factory%2C%20grid_h%2C%20grid_w%2C%20lib%2C%20sort_mode)%3A%0A%20%20%20%20n_cells%20%3D%20grid_w.value%20*%20grid_h.value%0A%20%20%20%20rows%20%3D%20lib.load_experiments(factory.value)%0A%20%20%20%20rows%20%3D%20%5Br%20for%20r%20in%20rows%20if%20r%5B%22kept%22%5D%20%3D%3D%20%22yes%22%5D%0A%0A%20%20%20%20if%20sort_mode.value%20%3D%3D%20%22score_descending%22%3A%0A%20%20%20%20%20%20%20%20rows.sort(key%3Dlambda%20r%3A%20-float(r%5B%22composite_score%22%5D))%0A%20%20%20%20elif%20sort_mode.value%20%3D%3D%20%22score_ascending%22%3A%0A%20%20%20%20%20%20%20%20rows.sort(key%3Dlambda%20r%3A%20float(r%5B%22composite_score%22%5D))%0A%20%20%20%20%23%20else%3A%20variant%20order%20(already%20sorted%20by%20id)%0A%0A%20%20%20%20cells%20%3D%20rows%5B%3An_cells%5D%0A%20%20%20%20return%20(cells%2C)%0A%0A%0A%40app.cell%0Adef%20_(cells%2C%20factory%2C%20grid_h%2C%20grid_w%2C%20mo)%3A%0A%20%20%20%20if%20not%20cells%3A%0A%20%20%20%20%20%20%20%20heatmap_view%20%3D%20mo.md(%22_No%20data._%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%23%20Color%20helper%3A%200-100%20composite%20%E2%86%92%20red%E2%86%92yellow%E2%86%92green%0A%20%20%20%20%20%20%20%20def%20color_for(score)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20score%20%3E%3D%2080%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%2322c55e%22%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20score%20%3E%3D%2075%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%234ade80%22%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20score%20%3E%3D%2070%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%2384cc16%22%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20score%20%3E%3D%2065%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%23eab308%22%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20score%20%3E%3D%2060%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%23f59e0b%22%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20score%20%3E%3D%2055%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%23f97316%22%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%23dc2626%22%0A%0A%20%20%20%20%20%20%20%20cell_size%20%3D%2028%0A%20%20%20%20%20%20%20%20svg_w_local%20%3D%20grid_w.value%20*%20cell_size%0A%20%20%20%20%20%20%20%20svg_h_local%20%3D%20grid_h.value%20*%20cell_size%0A%20%20%20%20%20%20%20%20svg_parts%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20f'%3Csvg%20viewBox%3D%220%200%20%7Bsvg_w_local%7D%20%7Bsvg_h_local%7D%22%20'%0A%20%20%20%20%20%20%20%20%20%20%20%20f'style%3D%22width%3A100%25%3B%20max-width%3A1000px%3B%20max-height%3A600px%3B%22%3E'%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20for%20sweep_i%2C%20sweep_cell%20in%20enumerate(cells)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20col%20%3D%20sweep_i%20%25%20grid_w.value%0A%20%20%20%20%20%20%20%20%20%20%20%20row%20%3D%20sweep_i%20%2F%2F%20grid_w.value%0A%20%20%20%20%20%20%20%20%20%20%20%20x%20%3D%20col%20*%20cell_size%0A%20%20%20%20%20%20%20%20%20%20%20%20y%20%3D%20row%20*%20cell_size%0A%20%20%20%20%20%20%20%20%20%20%20%20score%20%3D%20float(sweep_cell%5B%22composite_score%22%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20color%20%3D%20color_for(score)%0A%20%20%20%20%20%20%20%20%20%20%20%20piece_id%20%3D%20sweep_cell%5B%22id%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20svg_parts.append(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f'%3Crect%20x%3D%22%7Bx%7D%22%20y%3D%22%7By%7D%22%20width%3D%22%7Bcell_size%20-%201%7D%22%20height%3D%22%7Bcell_size%20-%201%7D%22%20'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f'fill%3D%22%7Bcolor%7D%22%20rx%3D%222%22%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f'%3Ctitle%3E%7Bpiece_id%7D%3A%20%7Bscore%3A.1f%7D%3C%2Ftitle%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f'%3C%2Frect%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20svg_parts.append('%3C%2Fsvg%3E')%0A%0A%20%20%20%20%20%20%20%20heatmap_view%20%3D%20mo.Html(%0A%20%20%20%20%20%20%20%20%20%20%20%20f'%3Cdiv%20style%3D%22background%3A%230f0f0f%3B%20padding%3A24px%3B%20border-radius%3A8px%3B%20border%3A1px%20solid%20%23333%3B%22%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20f'%3Ch3%20style%3D%22margin%3A0%200%2012px%3B%20color%3A%23fff%3B%22%3E%7Bfactory.value%7D%20variant%20landscape%3C%2Fh3%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20f'%3Cp%20style%3D%22margin%3A0%200%2016px%3B%20color%3A%23888%3B%20font-size%3A13px%3B%22%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20f'%7Blen(cells)%7D%20variants.%20Hover%20for%20piece%20ID%20and%20score.'%0A%20%20%20%20%20%20%20%20%20%20%20%20f'%3C%2Fp%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20%2B%20''.join(svg_parts)%0A%20%20%20%20%20%20%20%20%20%20%20%20%2B%20'%3C%2Fdiv%3E'%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20heatmap_view%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cells%2C%20mo)%3A%0A%20%20%20%20if%20not%20cells%3A%0A%20%20%20%20%20%20%20%20picker%20%3D%20None%0A%20%20%20%20%20%20%20%20picker_view%20%3D%20mo.md(%22%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20picker%20%3D%20mo.ui.dropdown(%0A%20%20%20%20%20%20%20%20%20%20%20%20options%3D%5Bc%5B%22id%22%5D%20for%20c%20in%20cells%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3Dcells%5B0%5D%5B%22id%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Inspect%20variant%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20picker_view%20%3D%20picker%0A%20%20%20%20picker_view%0A%20%20%20%20return%20(picker%2C)%0A%0A%0A%40app.cell%0Adef%20_(lib%2C%20mo%2C%20picker)%3A%0A%20%20%20%20inspect_id_val%20%3D%20picker.value%20if%20picker%20is%20not%20None%20else%20None%0A%20%20%20%20if%20not%20inspect_id_val%3A%0A%20%20%20%20%20%20%20%20inspect_view%20%3D%20mo.md(%22%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20png%20%3D%20lib.piece_path(inspect_id_val%2C%20%22png%22)%0A%20%20%20%20%20%20%20%20if%20not%20png.exists()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20inspect_view%20%3D%20mo.md(f%22_%7Binspect_id_val%7D%20not%20found._%22)%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20scores%20%3D%20lib.score_piece(inspect_id_val%2C%20no_llm%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20score_table%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20scores%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20sk%20in%20%5B%22composite%22%2C%20%22ink_coverage%22%2C%20%22line_complexity%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22composition%22%2C%20%22entropy%22%2C%20%22uniqueness%22%2C%20%22feasibility%22%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sv%20%3D%20scores.get(sk%2C%20%22%E2%80%94%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20isinstance(sv%2C%20float)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sv%20%3D%20f%22%7Bsv%3A.3f%7D%22%20if%20sk%20!%3D%20%22composite%22%20else%20f%22%7Bsv%3A.1f%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20score_table.append(%7B%22signal%22%3A%20sk%2C%20%22value%22%3A%20sv%7D)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20inspect_view%20%3D%20mo.hstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.Html(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f'%3Cimg%20src%3D%22%7Blib.png_data_uri(png)%7D%22%20'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f'style%3D%22max-width%3A100%25%3B%20max-height%3A500px%3B%20border%3A1px%20solid%20%23444%3B%22%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(f%22%23%23%23%20%7Binspect_id_val%7D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.ui.table(score_table%2C%20selection%3DNone)%20if%20score_table%20else%20mo.md(%22(no%20scores)%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20widths%3D%5B2%2C%201%5D%2C%20gap%3D2)%0A%20%20%20%20inspect_view%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cells%2C%20mo)%3A%0A%20%20%20%20if%20not%20cells%3A%0A%20%20%20%20%20%20%20%20stats_view%20%3D%20mo.md(%22%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20scores_list%20%3D%20%5Bfloat(c%5B%22composite_score%22%5D)%20for%20c%20in%20cells%5D%0A%20%20%20%20%20%20%20%20stats_view%20%3D%20mo.hstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(label%3D%22Mean%22%2C%20value%3Df%22%7Bsum(scores_list)%20%2F%20len(scores_list)%3A.1f%7D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(label%3D%22Best%22%2C%20value%3Df%22%7Bmax(scores_list)%3A.1f%7D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(label%3D%22Worst%22%2C%20value%3Df%22%7Bmin(scores_list)%3A.1f%7D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(label%3D%22%E2%89%A575%22%2C%20value%3Dstr(sum(1%20for%20s%20in%20scores_list%20if%20s%20%3E%3D%2075)))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(label%3D%22%E2%89%A580%22%2C%20value%3Dstr(sum(1%20for%20s%20in%20scores_list%20if%20s%20%3E%3D%2080)))%2C%0A%20%20%20%20%20%20%20%20%5D%2C%20gap%3D2%2C%20justify%3D%22space-around%22)%0A%20%20%20%20stats_view%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
81414af855fdfba1c5f878aa94621f3a