Repository navigation
[essreduce] Ignore out-of-sync choppers when guessing the pulse stride - #782
Merged
Merged
Conversation
A chopper whose rotation period is not a whole number of pulse periods is closed by close_non_synced_disk_choppers. Letting it set the stride made healthy choppers incompatible with the frame period, so they were closed as well: with choppers at 7 and 5 Hz the guess was 3 and both were closed, instead of a stride of 2 with only the 5 Hz chopper closed. Closes #781 Co-Authored-By: Claude Opus 5.5 <[email protected]>
nvaytet
approved these changes
Oct 6, 2026
SimonHeybrock
added a commit
to scipp/esslivedata
that referenced
this pull request
Oct 6, 2026
essreduce closes a chopper that is not in sync with the frame and drops a stopped one (scipp/ess#751, scipp/ess#782). A chopper out of sync transmits a different band on every pulse, and scippneutron used to refuse such a cascade, so the lookup-table job raised on every batch and consumers kept converting with the table from before the choppers moved. With the chopper closed, the job publishes a table that lets nothing through past it, and consumers publish empty results instead. The table alone looks like a quiet beam, so the workflow wraps close_non_synced_disk_choppers and logs which choppers were closed (choppers_out_of_phase_with_source) or found stopped (choppers_stopped). The choppers are found by comparing essreduce's inputs and outputs, so its conditions are not repeated here. End-to-end tests cover a lone 5 Hz overlap chopper on DREAM and DREAM's setpoints observed in production on 2026-09-10 (#1309). Co-Authored-By: Claude Opus 5.5 <[email protected]>
This was referenced Oct 6, 2026
SimonHeybrock
added a commit
to scipp/esslivedata
that referenced
this pull request
Oct 8, 2026
essreduce 26.10.0 replaces a chopper that is out of sync with the source by one with no slits instead of letting scippneutron raise, and guesses the pulse stride only from choppers that are in sync (scipp/ess#751, scipp/ess#782). The blocking lookup table and its logging depend on this. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #781.
guess_pulse_stride_from_choppersnow only uses choppers whose rotation period is a whole number of pulse periods. A chopper at any other frequency is closed byclose_non_synced_disk_choppersanyway, but it still set the stride, so the inflated stride could close healthy choppers too. With DREAM's setpoints from scipp/esslivedata#1309 (7 / 7 / 14 / 5 Hz) the guess was 3, which closed the two 7 Hz pulse-shaping choppers along with the 5 Hz overlap chopper. The guess is now 2 and only the overlap chopper is closed.Choppers faster than the source already contributed nothing (
round(14 / 28) = 0), so the change only affects slow choppers whose frequency does not divide the source frequency. BEER's mode choppers (all multiples of 7 Hz; 63 Hz never contributed) give the same stride as before.Test plan
pytest packages/essreduce/tests/unwrap: 395 passed🤖 Generated with Claude Code