Repository navigation
Analysis - FEATURE - Redraw every Analysis plot with Makie, loaded as a package extension - #658
Open
matt-pharr wants to merge 35 commits into
Open
matt-pharr wants to merge 35 commits into
matt-pharr wants to merge 35 commits into
Conversation
…n the result summaries
…oundary stability to the summaries
…rminant in both verdicts
…he available plots
…m an output struct
…ture/analysis-result-plots
…es instead of a MethodError
…gure theme and a plots CI group Makie becomes a weak dependency with the GPECMakieExt extension, which holds the figure theme, the label helpers and saving with whichever backend is loaded. Analysis._draw is the entry point ported plots use; it throws an ArgumentError naming `using CairoMakie` or `using GLMakie` when no backend is loaded. The plot tests move to a new `plots` group whose CI job stacks a CairoMakie environment onto LOAD_PATH, so Makie stays out of the package's own dependencies; changes under ext/ now trigger the test workflow.
…e whole Δ′ family
…d add the control-surface, (R, Z) and island views
…nd docs figures with Makie
… plane to the perturbed-equilibrium plots
…poloidal-plane panel
matt-pharr
changed the base branch from
develop
to
feature/analysis-result-plots
November 6, 2026 16:24
…t every Analysis plot
… list summaries only when a panel can be drawn
…ational surfaces on a bare equilibrium
…l surfaces on the equilibrium summary
…ercentile of |value| by default
…lar values and singular vectors
…d poloidal-plane field
matt-pharr
marked this pull request as ready for review
November 9, 2026 09:13
…e in the eigenvector heatmap
…of ten and fix its log scale
… control-surface cross-section
…hi or only plotting of a given mode or set of modes
Collaborator
Author
|
@logan-nc this is PR 3/3 on the analysis/repl interaction overhaul stack. I went through and tried my best to polish all of the plots in the process and make it easier to interact with the Analysis module. In the process, I ported the plots to Makie which is a more polished/julia-idiomatic plotting package and IMO looks much better. I had claude compile all of the plots here, please review and give feedback and/or merge at your leisure. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release note
using CairoMakieto save files,using GLMakiefor interactive windows); without one, a plot call throws and says so. Plots return a MakieFigureinstead of aPlots.Plot, and Plots and PlotlyJS are no longer dependencies.plot_fixed_boundary_stability_criterionis nowplot_critical_determinant, andplot_gse_by_thetaandplot_gse_integratedare oneplot_gse(gse)that takesEquilibrium.equilibrium_gse!'s result.Overhaul and visual polish of the existing plots. Guidance on when to add a standard plot and when not to (mostly to prevent AI agents from running wild adding superfluous junk). Both interactive/zoomable and panable plots and can be saved to pdf or png in a script. Replaced Plotly library with Makie which is generally the more polished and julia-y option.
The goal of this PR is to make sure all the main plots that were widely used from the OMFIT module are included in some easily accessible form, that diagnosing a run is relatively easy from the REPL, and that the plots that we see are roughly of publication quality. That means that we cannot have anything be difficult to read, look like a first-pass plot, or have overlapping text. This must be balanced by making sure the included plots are not too busy and do not look like vibe code output.
We also add guidance on when to add a plot. All plots to be added as standard plots must be viewed as mockups by a human before an AI adds them, to avoid our standard plots becoming polluted by random one-off plots from rogue claude sessions. AI agents should not propose new plots to the standard plots unless making an entirely new module, or unless they are requested to consider new plots. New plots should be added sparingly otherwise the available_plots() function will become crowded and lose its usefulness.
Regression report
feature/analysis-result-plots @ bd8fe977dagainstfeature/analysis-plots-overhaul @ 80862a4d6(fan-out on ITER's SDCC cluster, Julia 1.12.6, pinned manifest): 27 cases, 385 quantities, all unchanged.Per-case report
Plot registry, before and after
34 registered plots before, 42 after, by module
Equilibrium
plot_equilibrium_summaryplot_qprofileplot_pressure_profileplot_f_profileplot_flux_surfacesplot_gse_by_thetaplot_gse(gse)(unregistered)plot_gse_integratedplot_gse(gse)(unregistered)ForceFreeStates
plot_ffs_summaryplot_critical_determinantplot_fixed_boundary_stability_criterionplot_eigenvaluesplot_mode_displacementplot_energy_eigenvectorsplot_edge_stability_scanplot_delta_primeplot_delta_prime_rawplot_delta_coilplot_cond_fbarplot_ballooning_alpha_boundaryPerturbedEquilibrium
plot_perturbed_equilibrium_summaryplot_resonant_area_weighted_fieldplot_resonant_area_weighted_field_amplitudeplot_island_widthsplot_chirikov_parameterplot_driven_delta_primeplot_mode_spectrogramplot_dominant_mode_surfaceplot_singular_mode_rzplot_coupling_matrixplot_perturbed_field_rzplot_effective_islandsplot_islandsCoilForcing
plot_bn_contourplot_coil_geometry_3dplot_coil_geometry_rzplot_mode_spectrumplot_sourcesErrorFields
plot_error_field_summaryplot_coil_sensitivitiesplot_overlap_phasorsplot_linearity_residualsplot_dominant_mode_spectrumplot_tolerance_pdfplot_threshold_scalingplot_locking_riskNotes for reviewers
developonce that merges.Pkg.testresolves the test environment (.github/workflows/julia-test-version.yaml). The cached depot's registry predated the regenerated pins (HDF5_jll2.2.4), so every test job failed to resolve.🤖 Generated with Claude Code