Spaces:
Sleeping
Sleeping
| # Prompt β Live view fixes (fitness curve explainers, legend, axis, generation navigation) | |
| Fix the Live view: clearer "?" explainers on the fitness curve, a centered y-axis label, a legend you can actually read, no overlapping labels, and fast generation navigation. Presentation-only β no logic/science changes. Reuse the existing InfoTip and calm theme. READ the chart + generation-stepper code first (Recharts or custom SVG) β don't assume names. | |
| ## 1. Y-axis "?" (negative association) | |
| Add/clarify the "?" for the y-axis with this text (verbatim): "This shows how strongly the program's score moves OPPOSITE to mutation burden β low score where mutations are high (the broken-spell-checker pattern). 0 = no relationship; higher = a stronger opposite-direction link; the top = score and mutation count move almost perfectly oppositely. The underlying correlation is negative (e.g. β0.49); we plot its strength (0.49) so up = better, like every fitness curve. (For the MSI objective this axis instead shows separation / AUROC.)" | |
| ## 2. "best vs median" "?" | |
| Set its text to (verbatim): "Each generation has a whole population of programs, each with a fitness. 'best' is the single highest-scoring program that generation (the champion); 'generation median' is the middle one (half score higher, half lower). Best shows the ceiling and whether it's still climbing; median shows whether the WHOLE population is improving. When median rises toward best (as here), good structure is spreading β the population is converging. A persistent gap means a few standouts still lead a varied crowd." | |
| ## 3. Center the y-axis title | |
| Center the rotated y-axis title vertically along the axis (it currently sits at the top). Recharts: YAxis label position "insideLeft", angle -90, style { textAnchor: "middle" }, dy centered. Custom SVG: rotated <text> at the plot's vertical midpoint, text-anchor middle. Keep the label objective-dependent ("negative association" for TMB / "separation (AUROC)" for MSI). | |
| ## 4. Make the two lines distinguishable β on the chart AND in the legend | |
| - best = SOLID line, accent #3A6B7E, slightly thicker. | |
| - generation median = DASHED line, muted #6E7F8C. | |
| - The legend swatches must show the SAME solid-vs-dashed styles (not two identical dots), each beside its label. | |
| ## 5. Fix the label collision | |
| The x-axis title "generation" currently overlaps the "median" legend entry. Increase the chart's bottom margin and lay them out on SEPARATE rows with clear spacing β e.g. tick numbers, then the "generation" axis title, then the legend below it (or legend above the title) with a gap. Nothing should overlap. | |
| ## 6. Easier generation navigation | |
| Replace the click-only "βΉ Generation N / total βΊ" stepper with a fast navigator (so you can jump from 1 to 60 in one move, not 60 clicks): | |
| - A draggable SLIDER (range input) spanning all available generations β drag to jump anywhere instantly; show the current generation number live while dragging. | |
| - Keep the βΉ βΊ arrows for Β±1 fine steps, and add jump-to-first (|βΉ) and jump-to-latest (βΊ|) buttons. | |
| - A small numeric input to type a generation and go there directly. | |
| - Bind the max to generations available so far (it grows during a live run; "latest" tracks the newest). | |
| - PERFORMANCE: while dragging, do NOT fetch on every intermediate value β update the displayed number live but fetch the population only on release (or throttle to ~1 fetch / 150ms). Otherwise it hammers /runs/{id}/population. | |
| - Accessible: slider has an aria-label and value text; when focused, β β move Β±1 and Home/End jump to first/latest. | |
| Reuse the calm theme; keep it compact above the population grid. | |
| ## Confirm | |
| Both "?" open with the new text; the y-axis title is vertically centered (and objective-dependent); best (solid) and median (dashed) are clearly tellable apart in chart and legend; "generation" and the legend no longer overlap; and you can jump to any generation via the slider/input without clicking through each one, with no fetch storm while dragging. These are Client Components. | |