CI for csaxs_bec / test (push) Successful in 1m48s
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>
36 lines
1.6 KiB
Markdown
36 lines
1.6 KiB
Markdown
# 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.
|
|
|
|
```sh
|
|
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.
|