63fde9246af8acecb38e5cc285a1586cd898651b
The equivalent of PutMaskOnGrid() / gemmi SolventMasker(Refmac).put_mask_on_grid() for the GPU rigid body. Every symmetry image of every atom is masked directly (one block per image, gemmi's box and !(d2 > r2) rule), which equals gemmi's mask-then-symmetrize-with-min because the operators are isometries. Islands are removed by a 26-connected periodic union-find (atomicCAS, larger root under smaller, so each component is rooted at its lowest index), a read-only root pass, a size count capped at the island limit and a removal pass - no float atomics, bit-identical repeats. The shrink is not implemented: SetGrid() throws when gemmi's 0.8 A stencil would be non-empty, which it is not on any rigid-body grid (spacing d/3 >= 1.17 A). Atoms come in as double fractional coordinates (ModelMaskAtom): with float input, 9fhc at 3.5 A differed from gemmi at one 24-fold orbit of radius points (|d - r| ~ 2e-6 A); with double input the mask equals gemmi's on all 8 prototype sets at 3.5 and 6 A, including 6oel, 8t7r, 9hnc, 9fhc. Time per mask (RTX 5080, Compute incl. islands): 6oel 288^3 4.2 ms, 8t7r 18.4M 2.8 ms, 9fhc 8.0M 1.5 ms, 9hnc 1.9M 0.45 ms. Union-find credited to Playne & Hawick (2018) at the kernel and in ACKNOWLEDGEMENT.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D1G8gJVAy6gp1K5Dz3NE5C
Jungfraujoch
Application to receive data from the PSI JUNGFRAU and EIGER detectors.
All documentation is now placed in docs/ subdirectory and for the current version hosted on Jungfraujoch Read The Docs page.
Languages
C++
78.1%
HTML
6%
C
4.8%
TypeScript
3.5%
Cuda
2.7%
Other
4.8%