rugnux: supercell probe only on output passes, whose result is the one read
The doubled-cell probe (eight parity classes over 20-3 A plus the to-the-limit
trend) was armed on every full rotation image pass: the geometry pre-pass, the
beam-centre arm, the metric-symmetry demoted arm, the geometry-walk and
rotation-scale probe passes, the speculative geometry probes and the output
passes. Its only consumer is ProcessResult::supercell of the answer
(DoubledCellHypothesis and the report), and every answer RunAllPasses returns
comes from a write_output, non-pre-pass RunPipeline call (single pass, pass 2,
the walk's rewrite, the quality-guard redo, the lost-arm rerun, the doubled
pass). The indexer is built fresh per pass, so an unarmed pass reads nothing.
Output-identical: ci tier + 7 doubled-cell/supercell sets (35 sets), base
e34a5fb88 vs this: every .hkl byte-identical, 69/69 MTZ files identical in
reflection data/cell/SG (gemmi), p_report.txt identical apart from DATE,
WALL_TIME and RUGNUX_GIT; battery compare: 0 sets changed. The log loses only
the non-output passes' "Supercell probe" lines (e.g. 4 -> 2 on a two-pass set).
Indicative only (shared GPU): summed "image pass" time over the 35 sets
328.4 -> 320.4 s, geometry pre-pass integration 99.5 -> 93.7 s.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EizBKhTqrAYago9KJG3dA3
This commit is contained in:
1 parent
e34a5fb88f
commit
b87a6502a7
1 file changed
+4
-1
+4
-1
@@ -883,7 +883,10 @@ ProcessResult Rugnux::RunPipeline(RugnuxObserver *observer, bool write_output, b
|
||||
// at the half-integer nodes of crystals whose cell is right, so the run carries the doubled cell as a
|
||||
// second hypothesis where the class stands clear out to the limit (DoubledCellHypothesis), and merges
|
||||
// both.
|
||||
if (full && indexer && experiment_.IsRotationIndexing()) {
|
||||
//
|
||||
// Only an output pass probes: the answer the run returns is always one (RunAllPasses), and no other
|
||||
// pass's probe is read - the pre-pass, the beam-centre arm and the probe passes leave theirs unread.
|
||||
if (full && indexer && experiment_.IsRotationIndexing() && write_output && !geometry_prepass) {
|
||||
std::vector<int64_t> frames;
|
||||
for (const int o : select_equally_spaced_image_ordinals(images_to_process, 60))
|
||||
frames.push_back(o);
|
||||
|
||||
Reference in new issue
Block a user