62ca2b24f6172d5a50ffc6b52035a432d0923596
proteinScore and iceScore are saturating scores in [0,1] that answer presence, not quality: a superb crystal and a barely-diffracting one both read near 1, and neither the spot count nor the resolution enters either of them as a term. iceRingScore already reports a magnitude - a ratio, unbounded - which is not a number that can be thresholded; these are. The protein score counts distinct d SHELLS above 5 A rather than spots, so a parasitic ring in the low-resolution band cannot accumulate evidence, and weights each spot against the frame's own median so a scattering of the weakest detections cannot fill a shell either. The ice score carries two channels and takes the stronger: a radial one over the azimuthal profile, which runs the hexagonal and the CUBIC phase as separate hypotheses and decides between them at the end (flash-cooled loops show cubic or stacking-disordered ice at least as often as hexagonal, the two share only three lines, and dropping the cubic hypothesis costs about 5 pp on iced loops), and a spot one that reads an excess on the ice radii against the same band slid to every ice-free offset, which is what catches ice arriving as discrete crystallites and leaving the radial profile flat. Both read d out of the geometry, so both move with a beam-centre error; the centre is not fitted here, and the one they were computed with is written beside them as scoreBeamCenterX/Y so a later rescoring can tell an algorithm disagreement from a geometry one. Ported from validated prototypes and checked against them frame by frame on stored data: mean absolute difference 2.7e-5 (protein), 1.3e-8 (ice radial) and 3.4e-4 (ice spots). On a 41-loop battery the protein score reaches 98.4% of confirmed-protein frames and 0.00% of water frames, and finds no cluster on any water or ice raster. Cost is 0.01 ms/frame for the protein score and 0.08-0.32 ms/frame for the ice score. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
image analysis: two per-image detection scores say whether there is protein and whether there is ice
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++
77.9%
HTML
6.7%
C
5.2%
TypeScript
3.7%
Cuda
2.2%
Other
4.2%