Add modular, rank-based field display panels - #79
Merged
Conversation
Replaces the single render_field/show_equalized_panel pair with field_display.panels: a list of independently configured panels, each naming its own field, colour mode (linear or equalized/rank-based histogram equalization), value range and label -- so a run can show several different fields side by side instead of one field at most twice. Rank-based coloring (rank_scalar_field_colors) replaces the earlier log10-based designs: it colours each cell by its rank among the field's current values, which keeps full contrast between peaks and valleys regardless of how close together they are in magnitude, with no range/percentile parameter to tune. Migrates all 6 golden demos and 4 experiment configs off the retired render_field/show_equalized_panel fields (rejected at load with a named error). Also fixes a real layout bug found while testing the 128x128 mesh-scaling experiment config: a panel's own legend/caption could be drawn over by the stats block below it, since the panel-list refactor widened the camera frame rightward for extra panels but not downward for a panel's own legend -- fixed, with a regression test that reproduces the exact reported symptom. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds --config/config_path as a mutually exclusive alternative to
--checkpoint/checkpoint_path on `pyflow resume`, at a user's direct
request ("do pyflow resume from a config file and have it start from
the first frame"). Given a config instead of a checkpoint, resume is a
pure delegation to record (there's nothing yet to resume from, so it
starts at frame 0) -- letting a caller use resume as the one command
for a recording's whole lifecycle instead of branching on whether a
checkpoint exists yet.
This doesn't reopen the original "no --config at all" design: that
reasoning was specifically about combining a checkpoint and a config
in one call, which the new mutually exclusive, required argparse group
still makes impossible.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Summary
render_field/show_equalized_panelpair withfield_display.panels: a list of independently configured panels, each naming its own field, colour mode (linearorequalized), value range and label — so a run can show several different fields side by side instead of one field at most twice.rank_scalar_field_colors, histogram equalization) as a new panel mode, replacing two earlier log10-based designs. It colours each cell by its rank among the field's current values, which keeps full contrast between peaks and valleys regardless of how close together they are in magnitude, with no range/percentile parameter to tune.Test plan
make cigreen (1133 passed, 21 skipped, 99% coverage; all generators/validators clean)uv run mypy --strict src testscleansmoke_transport.yaml, two panels) and the previously-broken experiment config (smoke_transport_mesh128.yaml, one panel) and visually confirmed no overlaptest_bootstrap_panel_stats_block_does_not_overlap_the_legend_caption) confirmed to fail without the fix, pass with it🤖 Generated with Claude Code