Skip to content

Dev evaluation - #7

Merged
brentmantooth merged 9 commits into
mainfrom
dev_Evaluation
Jul 20, 2026
Merged

Dev evaluation#7
brentmantooth merged 9 commits into
mainfrom
dev_Evaluation

Conversation

@brentmantooth

Copy link
Copy Markdown
Owner

multiple enhancements to report output and bug fixes.

brentmantooth and others added 9 commits July 19, 2026 11:26
…warning

actions/checkout@v4, actions/setup-python@v5, and codecov/codecov-action@v4
all still declare a node20 runtime, which GitHub now force-runs on node24
with a deprecation warning on every job. Bumped each to the first major that
targets node24 (checkout v5, setup-python v6, codecov-action v5 switched to
a composite action with no node runtime declared at all), plus
upload-artifact v4->v5 in the build job for the same reason even though it
wasn't in this particular log. Checked each release's notes for breaking
changes against our actual usage (no deprecated inputs, no relevant behavior
changes) before bumping.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Copilot <copilot@github.com>
Docs had drifted badly behind the app: Ghost detection and PDF export
were both removed months ago but still documented as live features,
the report's actual 9-section structure (esp. Section 8's log-ratio/
local-maxima rework) was described as an old 10-section layout, and
three Tools-menu utilities (Synthetic Data Generator, Spatial Target
Generator, Halo Analyzer) were never documented at all.

Adds tools/generate_screenshots.py, a committed dev script (mirrors
tools/generate_icon.py) that drives the app headlessly via
QWidget.grab() against synthetic data to regenerate every doc
screenshot, so this doesn't go stale silently again. Also documents
the headless-capture techniques and the doc-staleness pitfall in
CLAUDE.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… default parallel on

_compute_std_map still used generic_filter(np.std) long after entropy was
migrated off the same ~10-50x-slower pattern; it ran 6x sequentially inside
one of SpatialDetailAnalyzer's 5 concurrent families and was the likely cause
of a "Spatial Detail only" run taking 10+ minutes instead of the usual ~2.
Replaced with a uniform_filter-based box variance, matching the entropy map's
existing precedent.

Also extend core/fig_utils.py's mathtext thread-safety lock (locked_draw_call)
to cover fig.colorbar()/ax.legend() calls in image_filters.py, which ran
unlocked inside the same always-on thread pool despite the lock's own comment
noting savefig() wasn't the only trigger. Added as_completed()-based timing
prints for the 5 families so a future stall/hang shows which one is stuck.
Default "Run metrics in parallel" to checked in the GUI.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…oloring

_compute_mtf compressed its frequency axis by EPSF_OVERSAMPLING^2 (divided
instead of multiplied), so the Section 4 MTF plot stalled at 0.25 cyc/px
instead of 0.5 and mtf50/mtf_nyquist were under-reported ~4x. Confirmed with
a known-frequency synthetic test signal and fixed.

Also: Section 4's MTF plot is now log-scale on the y-axis, with a new
MTF-ratio-in-dB figure (20*log10, modeled on Section 7's power-ratio figure
but resampled onto a shared frequency grid since each image's MTF bin count
depends on its own star FWHM). Section 6's Edge contrast ratio and Gradient
magnitude cells now get green/red A-vs-B coloring, and Gradient magnitude
switched to scientific notation instead of rounding to 0.00.

Documented the axis-calibration pitfall, the resampling-vs-strict-alignment
distinction for ratio figures, and the _better_worse_class utility in
CLAUDE.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Wraps tools/extract_images.py as a reusable function and wires it into
the GUI so users can pull embedded base64 images out of any HTML report
without a terminal: prompts for an input file, writes <stem>_Extracted.html
alongside a <stem>_images/ folder.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kern_ref was sized to match the oversampled ePSF array but built from
ref_fwhm in native-pixel units, rendering the reference PSF artificially
narrow next to the measured (oversampled) ePSF images in the Report
Inspector. Scale ref_fwhm by epsf_oversampling before building the kernel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@brentmantooth
brentmantooth merged commit 34ad78d into main Jul 20, 2026
6 checks passed
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