35f42e7334fadc1fdf3112bda87a5100bda244d3
Rotation prediction enumerated the whole (2h+1)(2k+1)(2l+1) box every frame and kept the ~1% whose rotation solution lands near the frame. A solution within phi_limit of the frame needs |f| = ||p0|^2 + 2 S0.p0| <= 2 |S0_perp| |p0| phi_limit, and along an (h, k) column f is a quadratic in l, so the l that can pass are at most two intervals. Those are walked - widened by 1% in f and by a whole index at each end - in the same order and with the same arithmetic; the rest the phi test rejected anyway. Without a phi limit (min_zeta 0) the whole column is walked as before. The GPU kernel is unchanged. A new test predicts 1000 random lattices, geometries, axes and rocking widths both ways and requires the same reflections in the same order, every value bit for bit (30000 cases passed once locally). CPU build, two interleaved warm runs: 8a1a output loop 241.5 -> 216.3 s, pre-pass loop 90.7 -> 73.8 s, whole run 427.0 -> 384.2 s; 8qaw (with the gzip change before this) loops 116.6 / 251.3 -> 94.4 / 206.8 s, user CPU 14700 -> 12718 s. GPU build within noise. p.mtz byte-identical on myob, cytc, thau, kdp, 8a1a and 8qaw, GPU and CPU builds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SVmAWnzCmRKAXVUCdc4iNi
Jungfraujoch
Application to receive and analyse data from the PSI JUNGFRAU and EIGER detectors, together with
rugnux, its program for processing stored diffraction data - rotation and serial, macromolecular
and small-molecule - from images to merged reflections.
All documentation is now placed in docs/ subdirectory and for the current version hosted on Jungfraujoch Read The Docs page.
Languages
C++
77.9%
HTML
6%
C
4.7%
TypeScript
3.4%
Cuda
3%
Other
4.9%