_image.dat carried the per-image scaling table before _plot.txt existed, and the
two were written from the same ScalingResult with six columns between them. Drop
it: the writer, its call site and its documentation entries go, and _plot.txt
gains the one column of the old file that was not already there and is not dead -
cc_n, the number of observations cc_to_merge was taken over, without which that
correlation cannot be read at the sparse end of a sweep. The old file's wedge_deg
is NOT carried over: image_scale_wedge_deg is only ever reset, never assigned, so
that column was nan on every run that ever wrote it.
_plot.txt is now written on a stills run too - it is the only per-image scaling
table there is, and the columns a sweep would fill come out nan - while the
picture stays rotation-only, as only the rotation pre-scan builds the projection
it draws. "merged" reads nan rather than 0 where no merge stands behind the run,
so --no-merge no longer looks like a sweep every frame of which was thrown out.
The picture's contrast now comes from the background instead of the peaks: the
ramp saturates at eight times the median measured pixel, where it used to
saturate at the brightest 0.1 % as the preview and the viewer do. That percentile
belongs to the Bragg spots, so the background - which is what a shadow is read
off, being a place where it is MISSING - sat in the first few per cent of the
scale and rendered as a flat white. The median is pure background whatever the
crystal, and eight times it falls between the 94th and the 99th percentile of the
projection on every set measured. Two times the median, the first value tried,
falls at the 73rd to 90th instead and floods the inner half of the detector to a
flat indigo, hiding the deficit at the other end of the scale. The colours are
untouched - they are the viewer's, from common/ColorScale.h - and only the
intensity mapping moves.
Processing is unchanged: p.hkl and p.mtz are byte-identical before and after on a
rotation sweep, and the wall clock does not move.
rugnux_stills_ab.py reads scale_G from _plot.txt instead of the retired file.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nW6FNRP1bBJJ8pfHiByAT