Files
Jungfraujoch/common
leonarski_fandClaude Opus 4.8 fbebc0d56e rugnux: run decay + absorption surfaces on the GPU and enable by default
The decay/absorption correction surfaces previously forced the CPU 3D
combine (absorption needs each full's predicted detector position, which
the GPU SoA did not carry), so they could not be default-on without losing
the fast GPU path. Put them on the GPU:

- carry px/py (peak partial) through the GPU combine and download them with
  the fulls (GetFullsPxPy);
- add SetFullsCorr to re-upload the host-corrected corr to the resident
  fulls before the merge.

The surfaces themselves stay as cheap host fits on the downloaded fulls;
only px/py download + corr upload are added (~two O(n_fulls) transfers).
Measured +2% wall-time on lyso_ref (9.7 -> 9.9 s), and the GPU-combine and
CPU-combine (--dump-observations) paths give identical results.

Enable by default via a single master toggle ScalingSettings::
CorrectionSurfaces (default true; decoupled from the stills-only -B, which
is rejected for rotation again). Both surfaces are cross-validated, so they
no-op where their systematic is absent - safe to leave on. Off-switch wired
through the rugnux CLI (--no-scaling-corrections; --absorption removed) and
the viewer (a "Correction surfaces" checkbox). Documented in docs/RUGNUX.md.

Battery (24 rotation crystals), default-on vs --no-scaling-corrections:
EcwtCQ066S +2.4 ISa, lyso_ref +0.5 (and R-free 0.194 -> 0.185, better than
XDS); every other crystal within run-to-run noise; corrections skip (CV /
dB-floor) wherever there is no signal. lyso_ref anomalous S/Cl peaks are
already ~45% above XDS's - the ISa gap is metric convention, not data.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 10:56:39 +02:00
..
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-04-29 09:50:50 +02:00
2026-03-05 22:13:12 +01:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-02-01 13:29:33 +01:00
2026-06-08 08:30:35 +02:00
2025-05-28 18:49:27 +02:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2026-05-28 18:48:35 +02:00
2026-05-28 18:48:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-04-29 09:50:50 +02:00
2026-06-08 08:30:35 +02:00
2026-07-03 19:18:56 +02:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00
2026-06-08 08:30:35 +02:00
2025-11-19 09:40:50 +01:00
2026-06-08 08:30:35 +02:00
2026-04-29 09:50:50 +02:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00
2024-11-22 21:25:20 +01:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2025-11-19 17:28:10 +01:00
2026-06-08 08:30:35 +02:00
2026-06-08 08:30:35 +02:00
2026-02-01 13:29:33 +01:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2026-04-29 09:50:50 +02:00
2026-06-08 08:30:35 +02:00
2026-06-08 08:30:35 +02:00
2026-06-25 22:01:48 +02:00
2024-12-02 21:17:14 +01:00
2026-06-08 08:30:35 +02:00
2026-07-11 07:19:11 +02:00
2026-06-23 20:29:49 +02:00
2026-07-11 07:19:11 +02:00
2026-07-03 19:18:56 +02:00
2026-07-03 19:18:56 +02:00
2025-09-22 19:49:39 +02:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00
2025-05-28 18:49:27 +02:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-07-03 19:18:56 +02:00
2026-06-08 08:30:35 +02:00
2026-06-08 08:30:35 +02:00
2026-07-03 19:18:56 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2024-12-08 13:26:13 +01:00
2026-06-08 08:30:35 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-08 08:30:35 +02:00
2025-06-15 17:46:46 +02:00
2026-07-03 19:18:56 +02:00
2026-07-11 07:19:11 +02:00
2026-06-08 08:30:35 +02:00
2025-09-08 20:28:59 +02:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-23 20:29:49 +02:00
2025-12-12 21:24:20 +01:00
2026-06-08 08:30:35 +02:00
2026-05-28 18:48:35 +02:00
2026-05-28 18:48:35 +02:00
2025-09-21 19:27:51 +02:00
2026-06-08 08:30:35 +02:00
2026-03-03 22:24:44 +01:00
2026-06-08 08:30:35 +02:00
2026-04-16 11:59:59 +02:00
2026-06-08 08:30:35 +02:00