Skip to content

Add modular, rank-based field display panels - #79

Merged
AdamClemens merged 2 commits into
mainfrom
feat/log-scale-field-panel
Sep 8, 2026
Merged

Add modular, rank-based field display panels#79
AdamClemens merged 2 commits into
mainfrom
feat/log-scale-field-panel

Conversation

@AdamClemens

Copy link
Copy Markdown
Owner

Summary

  • 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), value range and label — so a run can show several different fields side by side instead of one field at most twice.
  • Adds rank-based colouring (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.
  • Migrates all 6 golden demos and 4 experiment configs off the retired fields; a config still setting either is rejected at load with a named error pointing at the new surface.
  • 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 and was confirmed to fail without the fix.

Test plan

  • make ci green (1133 passed, 21 skipped, 99% coverage; all generators/validators clean)
  • uv run mypy --strict src tests clean
  • Rendered the migrated golden demo (smoke_transport.yaml, two panels) and the previously-broken experiment config (smoke_transport_mesh128.yaml, one panel) and visually confirmed no overlap
  • New regression test (test_bootstrap_panel_stats_block_does_not_overlap_the_legend_caption) confirmed to fail without the fix, pass with it

🤖 Generated with Claude Code

AdamClemens and others added 2 commits September 7, 2026 22:10
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>
@AdamClemens
AdamClemens merged commit fe9ea5b into main Sep 8, 2026
2 checks passed
@AdamClemens
AdamClemens deleted the feat/log-scale-field-panel branch September 8, 2026 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant