Uh oh!
There was an error while loading. Please reload this page.
feat: plot the pulse with Piccolo plot_pulse (not hand-rolled Makie) - #14
Conversation
12c8587 to
b39dcd4Compare
jack-champagne
left a comment
There was a problem hiding this comment.
Gave it a look — clean one-file swap to Piccolo's plot_pulse(qcp; bounds=true), no new dep (Makie ext), CI green. Correct as-is, nothing blocking.
Taste / non-blocking
…ed Makie Replace the hand-rolled CairoMakie lines! plot of prob.trajectory[:u] with Piccolo's canonical plot_pulse(qcp; bounds=true) — proper stacked per-drive pulse panels with the drive bounds shaded, in math-font labels. Still cheap (no rollout), still per-PLOT_EVERY + final frame. Vetted through amico-run on ~/.amico/julia (Piccolo 1.19): X gate F=0.9997, 60 iters, 7 distinct frames (confirms plot_pulse(qcp) tracks the live iterate), status=completed. CairoMakie stays the savefig backend; no new dependency (plot_pulse ships in Piccolo, rendered via its Makie extension). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fd9bded to
b64dcb8Compareb39dcd4 to
9b287adComparejack-champagne
commented
Jun 26, 2026
LGTM. Clean swap to Piccolo's Two minors, neither blocking: the body calls plot_pulse a "Makie extension" — it's a normal Visualizations submodule (works because |
jack-champagne
left a comment
There was a problem hiding this comment.
Approving — clean swap, and the iter_*.png frame contract is preserved. Two non-blocking minors above.
Swaps the Run Inspector's per-iteration plot from hand-rolled CairoMakie to Piccolo's canonical
plot_pulse. Stacked on #13 (inspector aesthetics); baserchari/inspector-aesthetics.Why
The template's
save_control_plothand-rolled a Makie figure ofprob.trajectory[:u](raw control amplitudes vs timestep index) with onelines!per drive. Piccolo shipsplot_pulsefor exactly this — proper stacked per-drive panels, math-font labels, physical time axis, and optional drive-bound shading.Change
solve_template.jlsave_control_plot(k)becomes:plot_pulse(qcp::QuantumControlProblem)reads the current optimizer iterate (kept in sync bycallback_update_trajectory_factory), so frames stay live.bounds=trueshades the per-drive bounds.PLOT_EVERY) and the live solve speed are unchanged.plot_pulseis in Piccolo, rendered via its Makie extension;CairoMakie(already a dep) stays the savefig backend. Net −5 lines.Verification
Vetted end-to-end through
amico-runon~/.amico/julia(Piccolo 1.19):status=completed, exit 0.plot_pulse(qcp)tracks the live iterate, not a static initial pulse.Pairs with #13: the inspector's branded "converged" panel now shows a canonical Piccolo pulse plot instead of raw line plots.
🤖 Generated with Claude Code