Read-only analysis of BEC master files, to test two user reports from the 15-20 July commissioning beamtime without needing beam. **End-of-line intensity** (Andreas Apseros): reshapes each monitored signal into lines and reports the last point and the first point against the interior mean. It only calls it the reported bug when the *last* point is short and the first is not -- if both ends are low that is a different mechanism, and the script says so rather than confirming what we went looking for. **Dropped line motion** (Kazu Hirosawa's reading, that the stage intermittently stopped scanning in one direction): reshapes the fast-axis readback and reports the travel per line. A collapsed span is motion that did not happen while the scan still reported success -- the same shape as the silent-completion defects already recorded against ccm_energy and the ECMC limit writes. It also reports start/end scatter per line, since scatter at one end only would instead point at the return move racing the next line. Verified against synthetic files with both artefacts injected and a clean control. That test caught a real flaw in the first version: the fast axis was picked by within-line range, and a noisy diode channel out-ranged the axis and was selected instead, breaking both checks. It now scores signals by how monotonically they ramp within a line, which separates an axis from an intensity regardless of scale. Lives on a debug branch, not main: it is a diagnostic for one investigation, not plugin code. bin/debug/README.md says what that means. Caveat carried in both the docstring and the README: the motion check reads the readback, so on an open-loop stepper without an encoder a healthy span proves nothing. That is the same question as Ana Diaz's micro-stepping point and needs settling before the null result means anything. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.6 KiB
Debug scripts
Throwaway diagnostics for investigating beamline problems. Not part of the plugin:
nothing here is imported by csaxs_bec, and none of it needs BEC or a venv beyond the
libraries each script names.
Kept on the debug/scan-artefacts branch rather than main so that a half-finished
diagnostic never reaches a production checkout. Promote anything that turns out to be
generally useful; delete the rest once the question it answered is settled.
scan_artefact_check.py
Desk check for the July 2026 commissioning scan artefacts reported by Andreas Apseros and Kazu Hirosawa. Read-only — opens BEC master files and writes nothing.
python3 scan_artefact_check.py --root /sls/x12sa/data/p23080/raw/data \
--scan 473 --scan 450 --scan 411 --scan 254
Answers two questions without beam:
- end-of-line intensity — is the last point of every line systematically weaker, and is the first point affected too (which would mean a different mechanism)?
- dropped line motion — did the fast axis actually travel on every line? A line whose span collapsed is motion that did not happen while the scan still reported success.
Include a known-clean scan (254) so a null result distinguishes "this scan was fine" from "the analysis is wrong".
Run --list first if anything looks off; it dumps the file structure.
The motion check reads the fast-axis readback. If that axis is an open-loop stepper with no encoder, the readback is the commanded position and lost steps are invisible: a collapsed span still proves failure, but a healthy span proves nothing.