Compare commits

..

36 Commits

Author SHA1 Message Date
695d3f9271 Fixes
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m53s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m24s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 12m43s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m53s
Build Packages / Generate python client (push) Successful in 43s
Build Packages / Build documentation (push) Successful in 22s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 12m17s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m50s
Build Packages / build:rpm (rocky8) (push) Successful in 10m7s
Build Packages / build:rpm (rocky9) (push) Successful in 11m6s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m5s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m57s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m46s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m42s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 10m20s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m8s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m43s
Build Packages / Generate python client (pull_request) Successful in 53s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m49s
Build Packages / Build documentation (pull_request) Successful in 23s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m17s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 8m38s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m33s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m6s
Build Packages / Unit tests (push) Successful in 1h4m46s
Build Packages / Unit tests (pull_request) Successful in 53m28s
2026-03-26 18:26:40 +01:00
6b0fbf11dd Frontend: Remove indexing time plot 2026-03-26 18:25:44 +01:00
5dfaa79ff6 Fix OpenAPIConvert
Some checks failed
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 11m39s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m59s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m23s
Build Packages / Generate python client (push) Successful in 1m0s
Build Packages / Build documentation (push) Successful in 28s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 18m11s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 18m22s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 18m41s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m25s
Build Packages / build:rpm (rocky9) (push) Successful in 19m25s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m27s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m19s
Build Packages / Unit tests (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m28s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 11m27s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 11m36s
Build Packages / Generate python client (pull_request) Successful in 49s
Build Packages / Build documentation (pull_request) Successful in 37s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 12m59s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 13m23s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 11m44s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 12m37s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 12m12s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m39s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 11m26s
Build Packages / Unit tests (pull_request) Successful in 1h14m22s
2026-03-26 18:02:39 +01:00
57d6e8de84 jfjoch_process: Specify indexing algorithm
Some checks failed
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 7m48s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 9m0s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 10m7s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 10m5s
Build Packages / Build documentation (push) Successful in 1m11s
Build Packages / Generate python client (push) Successful in 1m16s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 13m57s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 13m42s
Build Packages / build:rpm (rocky8) (push) Failing after 14m19s
Build Packages / build:rpm (rocky9) (push) Failing after 14m17s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 10m24s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Failing after 6m48s
Build Packages / Unit tests (push) Failing after 7m4s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 11m57s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Failing after 7m37s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Failing after 7m33s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Failing after 8m28s
Build Packages / Generate python client (pull_request) Successful in 1m38s
Build Packages / Build documentation (pull_request) Successful in 45s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (pull_request) Failing after 11m29s
Build Packages / build:rpm (rocky8) (pull_request) Failing after 12m1s
Build Packages / Unit tests (pull_request) Failing after 7m9s
Build Packages / build:rpm (rocky9) (pull_request) Failing after 13m54s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Failing after 14m11s
Build Packages / build:rpm (ubuntu2404) (pull_request) Failing after 10m58s
Build Packages / build:rpm (ubuntu2204) (pull_request) Failing after 12m21s
2026-03-26 16:14:18 +01:00
351b4f0070 jfjoch_process: Add mean time for each image analysis step
Some checks failed
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 8m48s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 8m47s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 10m12s
Build Packages / Generate python client (push) Successful in 34s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 10m53s
Build Packages / Build documentation (push) Successful in 29s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Failing after 14m27s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 14m49s
Build Packages / build:rpm (rocky9) (push) Failing after 14m50s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 14m55s
Build Packages / Unit tests (push) Failing after 7m20s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 9m27s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Failing after 7m32s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 10m54s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Failing after 6m35s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Failing after 8m5s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Failing after 7m54s
Build Packages / Build documentation (pull_request) Successful in 57s
Build Packages / Generate python client (pull_request) Successful in 1m13s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (pull_request) Failing after 10m46s
Build Packages / build:rpm (rocky8) (pull_request) Failing after 10m56s
Build Packages / Unit tests (pull_request) Failing after 7m46s
Build Packages / build:rpm (ubuntu2404) (pull_request) Failing after 10m54s
Build Packages / build:rpm (rocky9) (pull_request) Failing after 13m59s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Failing after 14m46s
Build Packages / build:rpm (ubuntu2204) (pull_request) Failing after 13m33s
2026-03-26 15:43:04 +01:00
0eacee0801 Improve recording of timing for different data analysis steps 2026-03-26 15:20:58 +01:00
2d3c87e41e Update CHANGELOG
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m28s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m1s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m19s
Build Packages / Generate python client (push) Successful in 56s
Build Packages / Build documentation (push) Successful in 23s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 15m35s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 17m36s
Build Packages / build:rpm (rocky8) (push) Successful in 17m41s
Build Packages / build:rpm (rocky9) (push) Successful in 18m37s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 18m47s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m38s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m25s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m48s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 10m16s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 11m28s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 11m20s
Build Packages / Generate python client (pull_request) Successful in 57s
Build Packages / Build documentation (pull_request) Successful in 16s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 11m35s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m19s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m38s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m28s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m13s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m52s
Build Packages / Unit tests (push) Successful in 58m47s
Build Packages / Unit tests (pull_request) Successful in 53m23s
2026-03-24 21:20:00 +01:00
e4ab54a94c CMake: minor updates 2026-03-24 21:16:26 +01:00
1cf59950eb OpenAPI: Remove SSL from settings 2026-03-24 21:13:53 +01:00
ba27a8771f Frontend: Fixes
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m17s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 16m1s
Build Packages / build:rpm (rocky8) (push) Successful in 17m2s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 17m49s
Build Packages / Build documentation (push) Successful in 18s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 18m1s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 18m13s
Build Packages / build:rpm (rocky9) (push) Successful in 19m23s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m31s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m53s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m20s
Build Packages / Unit tests (push) Successful in 56m10s
2026-03-24 15:19:44 +01:00
c03978c603 VERSION: 1.0.0-rc.133
Some checks failed
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 7m42s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 7m36s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 8m56s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 9m21s
Build Packages / Generate python client (push) Successful in 56s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 9m49s
Build Packages / Create release (push) Has been skipped
Build Packages / Build documentation (push) Successful in 38s
Build Packages / build:rpm (rocky8) (push) Failing after 10m39s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 10m46s
Build Packages / build:rpm (rocky9) (push) Failing after 12m9s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 5m33s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 6m16s
Build Packages / Unit tests (push) Successful in 56m52s
2026-03-24 14:25:27 +01:00
57f0a1f5dd Minor fixes to httplib/OpenAPI
Some checks failed
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 7m17s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 8m28s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 8m27s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 8m30s
Build Packages / Build documentation (push) Successful in 35s
Build Packages / Generate python client (push) Successful in 43s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 9m30s
Build Packages / build:rpm (rocky8) (push) Failing after 10m12s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 10m17s
Build Packages / build:rpm (rocky9) (push) Failing after 10m14s
Build Packages / build:rpm (ubuntu2404) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2204) (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
2026-03-24 14:11:40 +01:00
e433b6aa5c Minor fixes to OpenAPI 2026-03-24 13:47:58 +01:00
4233d164c6 CI: Try again (cmake 3.26)
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m59s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 17m50s
Build Packages / build:rpm (rocky8) (push) Successful in 18m53s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 19m19s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 19m5s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 19m17s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9) (push) Successful in 19m13s
Build Packages / Build documentation (push) Successful in 24s
Build Packages / Generate python client (push) Successful in 33s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m38s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m1s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 7m26s
Build Packages / Unit tests (push) Successful in 55m31s
2026-03-24 11:41:38 +01:00
435ed3f661 CI: Try again (cmake-data)
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 6m50s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 4m28s
Build Packages / Generate python client (push) Has been cancelled
Build Packages / build:rpm (rocky8) (push) Has been cancelled
Build Packages / Build documentation (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
Build Packages / Create release (push) Has been cancelled
Build Packages / build:rpm (rocky9) (push) Has been cancelled
Build Packages / build:rpm (rocky8_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky9_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky9_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky8_nocuda) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404) (push) Has been cancelled
2026-03-24 11:29:32 +01:00
3ec662e87a CI: Try again (no sudo)
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 1m0s
Build Packages / build:rpm (ubuntu2204) (push) Has started running
Build Packages / build:rpm (ubuntu2404) (push) Has been cancelled
Build Packages / Generate python client (push) Has been cancelled
Build Packages / Build documentation (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
Build Packages / Create release (push) Has been cancelled
Build Packages / build:rpm (rocky9_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky9) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky8_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky8_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky9_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky8) (push) Has been cancelled
2026-03-24 11:27:03 +01:00
14fa3c5578 CI: Try to install newer CMake on Ubuntu 22.04
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 39s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 1m24s
Build Packages / Generate python client (push) Has been cancelled
Build Packages / Build documentation (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
Build Packages / Create release (push) Has been cancelled
Build Packages / build:rpm (rocky9_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky9) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky8) (push) Has been cancelled
Build Packages / build:rpm (rocky9_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky8_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky8_sls9) (push) Has been cancelled
2026-03-24 11:24:22 +01:00
4bd7cd57bb jfjoch_broker: Seem to work, but plots make still trouble
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 6m8s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3m32s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m48s
Build Packages / Generate python client (push) Successful in 40s
Build Packages / Build documentation (push) Successful in 26s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m33s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m8s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 16m18s
Build Packages / build:rpm (rocky8) (push) Successful in 16m33s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 17m20s
Build Packages / build:rpm (rocky9) (push) Successful in 17m43s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m46s
Build Packages / Unit tests (push) Successful in 56m20s
2026-03-23 22:36:55 +01:00
2d191b08d5 Clean-up (but fully AI generated, so need to carefully check)
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 6m42s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3m11s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 10m13s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 10m12s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 10m9s
Build Packages / Build documentation (push) Successful in 27s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9) (push) Failing after 13m14s
Build Packages / build:rpm (rocky8) (push) Failing after 14m7s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 14m34s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 14m38s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 7m28s
Build Packages / Unit tests (push) Has been cancelled
2026-03-23 22:15:02 +01:00
75ed1f954e Work in progress
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 5m1s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 9m2s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 5m52s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 11m0s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 11m26s
Build Packages / Build documentation (push) Successful in 1m12s
Build Packages / Create release (push) Has been skipped
Build Packages / Generate python client (push) Successful in 1m20s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 12m17s
Build Packages / build:rpm (rocky8) (push) Failing after 14m22s
Build Packages / build:rpm (rocky9) (push) Failing after 14m50s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 14m59s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 9m7s
Build Packages / Unit tests (push) Has been cancelled
2026-03-23 21:41:09 +01:00
f06f146f6a jfjoch_broker: Add static file function to header
Some checks failed
Build Packages / build:rpm (ubuntu2204) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404) (push) Has been cancelled
Build Packages / Generate python client (push) Has been cancelled
Build Packages / Build documentation (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
Build Packages / Create release (push) Has been cancelled
Build Packages / build:rpm (rocky9_nocuda) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky8_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky8) (push) Has been cancelled
Build Packages / build:rpm (rocky9_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky9) (push) Has been cancelled
Build Packages / build:rpm (rocky8_sls9) (push) Has been cancelled
2026-03-23 21:35:45 +01:00
294a934727 jfjoch_broker: Remove OpenSSL (for now) 2026-03-23 21:33:53 +01:00
a19443a026 jfjoch_broker: Move to cpp-httplib work in progress (not working)
Some checks failed
Build Packages / build:rpm (ubuntu2204) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404) (push) Has been cancelled
Build Packages / Generate python client (push) Has been cancelled
Build Packages / Build documentation (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
Build Packages / Create release (push) Has been cancelled
Build Packages / build:rpm (rocky9_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky9_sls9) (push) Has been cancelled
Build Packages / build:rpm (rocky8) (push) Has been cancelled
Build Packages / build:rpm (rocky8_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky9) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Has been cancelled
Build Packages / build:rpm (rocky8_sls9) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Has been cancelled
2026-03-23 21:31:20 +01:00
6655284284 jfjoch_tests: Zero initialize StartMessage in ZMQMetadataSocket test for more reproducible result
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 7m44s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3m17s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m46s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 11m53s
Build Packages / Build documentation (push) Successful in 39s
Build Packages / Generate python client (push) Successful in 55s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m12s
Build Packages / build:rpm (rocky8) (push) Successful in 16m28s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 16m38s
Build Packages / build:rpm (rocky9) (push) Successful in 18m4s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 18m13s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m13s
Build Packages / Unit tests (push) Successful in 54m25s
2026-03-23 14:41:43 +01:00
b23ef2b881 Add CMAKE_DL_LIBS to httplib
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 7m7s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3m32s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m59s
Build Packages / Generate python client (push) Successful in 53s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m14s
Build Packages / Build documentation (push) Successful in 29s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m17s
Build Packages / build:rpm (rocky8) (push) Successful in 17m12s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 17m22s
Build Packages / build:rpm (rocky9) (push) Successful in 17m47s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 17m56s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m33s
Build Packages / Unit tests (push) Failing after 59m10s
2026-03-23 11:46:35 +01:00
d3ede34d6e HDF5: Update to 2.1.0
Some checks failed
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 6m59s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 10m31s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3m38s
Build Packages / Generate python client (push) Successful in 32s
Build Packages / Build documentation (push) Successful in 44s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m3s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m8s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 17m8s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 17m33s
Build Packages / build:rpm (rocky8) (push) Successful in 17m42s
Build Packages / build:rpm (rocky9) (push) Successful in 18m19s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m41s
Build Packages / Unit tests (push) Failing after 58m43s
2026-03-23 09:54:05 +01:00
c10c7c24b2 httplib: Implement via FetchContent for tighter integration and easier updates 2026-03-23 09:44:20 +01:00
500eb15848 JFJochImageReadingWorker: Add missing header
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m21s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 16m1s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 16m15s
Build Packages / Generate python client (push) Successful in 48s
Build Packages / Build documentation (push) Successful in 42s
Build Packages / build:rpm (rocky8) (push) Successful in 17m47s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 18m1s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 18m11s
Build Packages / build:rpm (rocky9) (push) Successful in 19m3s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m11s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m5s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m31s
Build Packages / Unit tests (push) Successful in 55m56s
2026-03-18 21:21:53 +01:00
2199cc3bc2 Increase Catch2 version to recent one 2026-03-18 21:21:28 +01:00
cd70fa0eca Move spdlog to downloaded dependency
Some checks failed
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 10m33s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 13m28s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 14m11s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 15m22s
Build Packages / Generate python client (push) Successful in 1m12s
Build Packages / Build documentation (push) Successful in 24s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9) (push) Failing after 16m31s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 17m13s
Build Packages / build:rpm (rocky8) (push) Failing after 17m15s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 17m27s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 10m15s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 8m40s
Build Packages / Unit tests (push) Has been cancelled
2026-03-18 20:30:48 +01:00
7f6caab3cf jfjoch_tests: Add test for HDF5 pusher republish functionality
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m27s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 16m21s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 16m49s
Build Packages / Generate python client (push) Successful in 37s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 17m44s
Build Packages / Build documentation (push) Successful in 32s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 18m46s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 20m1s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 20m37s
Build Packages / build:rpm (rocky9) (push) Successful in 20m39s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m32s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m44s
Build Packages / Unit tests (push) Successful in 56m37s
2026-03-13 19:18:46 +01:00
e6b905a832 PostIndexingRefinement: Fix a bug in spot indexing cutoffs 2026-03-13 19:18:19 +01:00
4f79e12b92 HDF5FilePusher: Add republish socket
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m14s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m28s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m55s
Build Packages / Generate python client (push) Successful in 1m1s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 15m11s
Build Packages / Build documentation (push) Successful in 29s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 19m52s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 20m4s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 20m36s
Build Packages / build:rpm (rocky9) (push) Successful in 20m39s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m37s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m29s
Build Packages / Unit tests (push) Successful in 56m44s
2026-03-13 16:59:21 +01:00
44988afe5a PostIndexingRefinement: Fixes
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m1s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m46s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m7s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m11s
Build Packages / Generate python client (push) Successful in 1m0s
Build Packages / Build documentation (push) Successful in 33s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 19m55s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 20m23s
Build Packages / build:rpm (rocky9) (push) Successful in 20m33s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 21m1s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m29s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m5s
Build Packages / Unit tests (push) Successful in 58m8s
2026-03-12 14:33:34 +01:00
a27f5dc482 PostIndexingRefinement: Update name
Some checks failed
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m23s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m58s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m8s
Build Packages / Generate python client (push) Successful in 38s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 15m49s
Build Packages / Build documentation (push) Successful in 57s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2404) (push) Has started running
Build Packages / build:rpm (rocky9) (push) Has been cancelled
Build Packages / build:rpm (ubuntu2204) (push) Has been cancelled
Build Packages / build:rpm (rocky9_sls9) (push) Has been cancelled
Build Packages / Unit tests (push) Has been cancelled
Build Packages / build:rpm (rocky8) (push) Has been cancelled
Build Packages / build:rpm (rocky8_sls9) (push) Has been cancelled
2026-03-12 14:16:19 +01:00
8fce82d9d8 EigenRefine: Allow for multi-lattice selection after indexing 2026-03-12 14:00:10 +01:00
3 changed files with 59 additions and 268 deletions

View File

@@ -7,7 +7,6 @@
#include <thread>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <limits>
@@ -18,7 +17,6 @@
#include <vector>
#include "../../common/ResolutionShells.h"
#include "../../common/Logger.h"
namespace {
struct HKLKey {
@@ -237,7 +235,6 @@ namespace {
int img_id = 0;
int hkl_slot = -1;
double sigma = 0.0;
mutable bool selected = true;
};
struct CorrectedObs {
@@ -246,103 +243,6 @@ namespace {
double sigma_corr;
};
void select_reflections_by_quasi_random(const std::vector<ObsRef> &obs,
const ScaleMergeOptions &opt,
std::vector<bool> &hkl_selected,
Logger &logger) {
float stat_d_min = std::numeric_limits<float>::max();
float stat_d_max = 0.0f;
const gemmi::SpaceGroup &sg = *opt.space_group;
const gemmi::GroupOps gops = sg.operations();
int n_operator = gops.order();
struct HKLStats {
int n = 0;
float d = std::numeric_limits<float>::max();
int shell_id = 0;
};
const int nhkl = static_cast<int>(hkl_selected.size());
std::vector<HKLStats> per_hkl(nhkl);
int reflection_above_cutoff = 0;
for (const auto &o: obs) {
if (o.r->I / o.r->sigma < opt.filter_sigma_cutoff) {
o.selected = false;
continue;
}
const auto d = o.r->d;
reflection_above_cutoff += 1;
if (std::isfinite(d) && d > 0.0f) {
if (opt.d_min_limit_A > 0.0 && d < static_cast<float>(opt.d_min_limit_A))
continue;
stat_d_min = std::min(stat_d_min, d);
stat_d_max = std::max(stat_d_max, d);
auto &hs = per_hkl[o.hkl_slot];
hs.n += 1;
hs.d = d;
}
}
logger.Info("Reflections of I/sigma > {} : {}", opt.filter_sigma_cutoff, reflection_above_cutoff);
if (reflection_above_cutoff < opt.filter_min_per_bin * opt.filter_n_resolution_bins) {
logger.Info("No additional selection applied before scaling");
return;
}
if (stat_d_min < stat_d_max && stat_d_min > 0.0f) {
const float d_min_pad = stat_d_min * 0.999f;
const float d_max_pad = stat_d_max * 1.001f;
ResolutionShells scaling_shells(d_min_pad, d_max_pad, opt.filter_n_resolution_bins);
for (int h = 0; h < nhkl; ++h) {
const auto d = per_hkl[h].d;
if (std::isfinite(d) && d > 0.0f) {
if (opt.d_min_limit_A > 0.0 && d < static_cast<float>(opt.d_min_limit_A))
continue;
auto s = scaling_shells.GetShell(d);
if (s.has_value())
per_hkl[h].shell_id = s.value();
}
}
// Accumulators per shell
struct ShellAccum {
int obs_unique = 0;
int obs_total = 0;
bool selected = true;
};
std::vector<ShellAccum> shell_acc(opt.filter_n_resolution_bins);
for (int h = 0; h < nhkl; ++h) {
auto &sa = shell_acc[per_hkl[h].shell_id];
if (sa.obs_unique * n_operator > opt.filter_min_per_bin * 1.2 || sa.obs_total > opt.filter_max_per_bin)
hkl_selected[h] = false;
else
sa.obs_unique += 1;
sa.obs_total += per_hkl[h].n;
}
const auto shell_min_res = scaling_shells.GetShellMinRes();
logger.Info("| d-mean | n_refl_uni | n_refl_tot | selection |");
for (int n=0; n < opt.filter_n_resolution_bins; ++n) {
if (shell_acc[n].obs_unique * n_operator < opt.filter_min_per_bin)
shell_acc[n].selected = false;
if (shell_min_res[n] <= 0.0f) continue;
logger.Info("| {:6.3f} | {:10d} | {:10d} | {:9d} |",
shell_min_res[n], shell_acc[n].obs_unique, shell_acc[n].obs_total, shell_acc[n].selected);
}
for (int h = 0; h < nhkl; ++h) {
auto &sa = shell_acc[per_hkl[h].shell_id];
if (!sa.selected)
hkl_selected[h] = false;
}
}
}
void scale(const ScaleMergeOptions &opt,
std::vector<double> &g,
std::vector<double> &mosaicity,
@@ -350,13 +250,10 @@ namespace {
const std::vector<uint8_t> &image_slot_used,
bool rotation_crystallography,
size_t nhkl,
const std::vector<ObsRef> &obs,
bool selection,
Logger &logger) {
const std::vector<ObsRef> &obs) {
ceres::Problem problem;
std::vector<double> Itrue(nhkl, 0.0);
std::vector<bool> hkl_selected(nhkl, true);
// Initialize Itrue from per-HKL median of observed intensities
{
@@ -380,12 +277,8 @@ namespace {
double wedge = opt.wedge_deg.value_or(0.0);
if (selection) select_reflections_by_quasi_random(obs, opt, hkl_selected, logger);
std::vector<bool> is_valid_hkl_slot(nhkl, false);
for (const auto &o: obs) {
if (!o.selected) continue;
if (!hkl_selected[o.hkl_slot]) continue;
switch (opt.partiality_model) {
case ScaleMergeOptions::PartialityModel::Rotation: {
auto *cost = new ceres::AutoDiffCostFunction<IntensityRotResidual, 1, 1, 1, 1, 1>(
@@ -505,9 +398,8 @@ namespace {
options.function_tolerance = 1e-4;
ceres::Solver::Summary summary;
logger.Info("Now start the ceres-solver with residual blocks: {}", problem.NumResidualBlocks());
ceres::Solve(options, &problem, &summary);
logger.Info(summary.FullReport());
std::cout << summary.FullReport() << std::endl;
}
void merge(size_t nhkl, ScaleMergeResult &out, const std::vector<CorrectedObs> &corr_obs) {
@@ -802,7 +694,6 @@ namespace {
o.img_id = img_id;
o.hkl_slot = hkl_slot;
o.sigma = sigma;
o.selected = true;
obs.push_back(o);
}
}
@@ -812,14 +703,10 @@ namespace {
ScaleMergeResult ScaleAndMergeReflectionsCeres(const std::vector<std::vector<Reflection> > &observations,
const ScaleMergeOptions &opt) {
Logger logger("ScaleAndMergeReflections");
if (opt.image_cluster <= 0)
throw std::invalid_argument("image_cluster must be positive");
const bool rotation_crystallography = opt.wedge_deg.has_value();
const bool selection = opt.selection;
size_t nrefl = 0;
for (const auto &i: observations)
@@ -857,8 +744,7 @@ ScaleMergeResult ScaleAndMergeReflectionsCeres(const std::vector<std::vector<Ref
}
}
logger.Info("Now scale the reflections: {}", nrefl);
scale(opt, g, mosaicity, R_sq, image_slot_used, rotation_crystallography, nhkl, obs, selection, logger);
scale(opt, g, mosaicity, R_sq, image_slot_used, rotation_crystallography, nhkl, obs);
ScaleMergeResult out;

View File

@@ -50,12 +50,6 @@ struct ScaleMergeOptions {
bool refine_wedge = false;
bool selection = true;
double filter_sigma_cutoff = 1.0;
int filter_min_per_bin = 10000; // needs optimization
int filter_max_per_bin = 80000;
int filter_n_resolution_bins = 20;
enum class PartialityModel {Fixed, Rotation, Unity, Still} partiality_model = PartialityModel::Fixed;
};

View File

@@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-3.0-only
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <unistd.h>
@@ -45,15 +44,12 @@ void print_usage(Logger &logger) {
logger.Info(" -d<num> High resolution limit for spot finding (default: 1.5)");
logger.Info(" -D<num> High resolution limit for scaling/merging (default: 0.0; no limit)");
logger.Info(" -S<num> Space group number");
logger.Info(" -M[num] Scale and merge (refine mosaicity) and write scaled.hkl + image.dat, unless indexing rate is below threshold (default: 0.5)");
logger.Info(" -M Scale and merge (refine mosaicity) and write scaled.hkl + image.dat");
logger.Info(" -P<txt> Partiality refinement fixed|rot|unity (default: fixed)");
logger.Info(" -A Anomalous mode (don't merge Friedel pairs)");
logger.Info(" -C<cell> Fix reference unit cell: -C\"a,b,c,alpha,beta,gamma\" (comma-separated, no spaces; quotes optional)");
logger.Info(" -c<num> Max spot count (default: 250)");
logger.Info(" -W<txt> HDF5 file with analysis results is written. 'l' or 'light' deactivates image-output");
logger.Info(" -T<num> Noise sigma level for spot finding (default: 3.0)");
logger.Info(" -m<num> Min unique reflections per bin used for scaling. Use all when no value is specified (default: 10000)");
logger.Info(" -w Refine wedge in scaling (default: false)");
logger.Info(" -W HDF5 file with analysis results is written");
}
void trim_in_place(std::string& t) {
@@ -64,36 +60,6 @@ void trim_in_place(std::string& t) {
t = t.substr(b, e - b);
};
void print_statistics(Logger &logger, const MergeStatistics &stats) {
logger.Info("");
logger.Info(" {:>8s} {:>8s} {:>8s} {:>8s} {:>8s} {:>10s}",
"d_min", "N_obs", "N_uniq", "Rmeas", "<I/sig>", "Complete");
logger.Info(" {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->10s}",
"", "", "", "", "", "");
for (const auto &sh: stats.shells) {
if (sh.unique_reflections == 0)
continue;
std::string compl_str = (sh.completeness > 0.0)
? fmt::format("{:8.1f}%", sh.completeness * 100.0)
: " N/A";
logger.Info(" {:8.2f} {:8d} {:8d} {:8.3f}% {:8.1f} {:>10s}",
sh.d_min, sh.total_observations, sh.unique_reflections,
sh.rmeas * 100, sh.mean_i_over_sigma, compl_str);
}
{
const auto &ov = stats.overall;
logger.Info(" {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->10s}",
"", "", "", "", "", "");
std::string compl_str = (ov.completeness > 0.0)
? fmt::format("{:8.1f}%", ov.completeness * 100.0)
: " N/A";
logger.Info(" {:>8s} {:8d} {:8d} {:8.3f}% {:8.1f} {:>10s}",
"Overall", ov.total_observations, ov.unique_reflections,
ov.rmeas * 100, ov.mean_i_over_sigma, compl_str);
}
logger.Info("");
}
std::optional<UnitCell> parse_unit_cell_arg(const char* arg) {
if (!arg)
return std::nullopt;
@@ -166,14 +132,8 @@ int main(int argc, char **argv) {
std::optional<int> space_group_number;
std::optional<UnitCell> fixed_reference_unit_cell;
bool write_output = false;
bool write_output_noimage = false;
bool filtering = true;
std::optional<int16_t> filter_min_per_bin;
std::optional<int64_t> max_spot_count_override;
float sigma_spot_finding = 3.0;
std::optional<float> merging_threshold;
IndexingAlgorithmEnum indexing_algorithm = IndexingAlgorithmEnum::Auto;
bool refine_wedge = false;
ScaleMergeOptions::PartialityModel partiality_model = ScaleMergeOptions::PartialityModel::Fixed;
@@ -186,7 +146,7 @@ int main(int argc, char **argv) {
}
int opt;
while ((opt = getopt(argc, argv, "o:N:s:e:vc:R::FX:xd:S:M::P:AD:C:T:W:m::w")) != -1) {
while ((opt = getopt(argc, argv, "o:N:s:e:vc:R::FX:xd:S:MP:AD:C:W")) != -1) {
switch (opt) {
case 'o':
output_prefix = optarg;
@@ -202,10 +162,6 @@ int main(int argc, char **argv) {
break;
case 'W':
write_output = true;
if (strcmp(optarg, "light") == 0 || strcmp(optarg, "l") == 0) {
write_output_noimage = true;
logger.Warning("Image data will not be saved.");
}
break;
case 'v':
verbose = true;
@@ -248,14 +204,6 @@ int main(int argc, char **argv) {
case 'x':
refine_beam_center = false;
break;
case 'm':
filtering = false;
if (optarg)
filter_min_per_bin = atoi(optarg);
break;
case 'w':
refine_wedge = true;
break;
case 'D':
d_min_scale_merge = atof(optarg);
logger.Info("High resolution limit for scaling/merging set to {:.2f} A", d_min_spot_finding);
@@ -265,15 +213,10 @@ int main(int argc, char **argv) {
break;
case 'M':
run_scaling = true;
if (optarg) merging_threshold = atof(optarg);
break;
case 'A':
anomalous_mode = true;
break;
case 'T':
sigma_spot_finding = atof(optarg);
logger.Info("Noise threshold level for spot finding set to {:.2f} sigma", sigma_spot_finding);
break;
case 'C': {
auto uc = parse_unit_cell_arg(optarg);
if (!uc.has_value()) {
@@ -353,11 +296,8 @@ int main(int argc, char **argv) {
experiment.OverwriteExistingFiles(true);
experiment.PolarizationFactor(0.99);
if (fixed_reference_unit_cell.has_value()) {
if (fixed_reference_unit_cell.has_value())
experiment.SetUnitCell(*fixed_reference_unit_cell);
} else {
experiment.SetUnitCell({});
}
if (max_spot_count_override.has_value()) {
experiment.MaxSpotCount(max_spot_count_override.value());
@@ -368,8 +308,6 @@ int main(int argc, char **argv) {
IndexingSettings indexing_settings;
indexing_settings.Algorithm(indexing_algorithm);
indexing_settings.RotationIndexing(rotation_indexing);
if (rotation_indexing)
logger.Info("Rotation indexing is activated.");
if (rotation_indexing_range.has_value())
indexing_settings.RotationIndexingMinAngularRange_deg(rotation_indexing_range.value());
@@ -379,27 +317,10 @@ int main(int argc, char **argv) {
indexing_settings.GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum::None);
experiment.ImportIndexingSettings(indexing_settings);
switch (experiment.GetIndexingAlgorithm()) {
case IndexingAlgorithmEnum::FFBIDX:
logger.Info("Indexer used: FFBIDX");
break;
case IndexingAlgorithmEnum::FFTW:
logger.Info("Indexer used: FFTW");
break;
case IndexingAlgorithmEnum::FFT:
logger.Info("Indexer used: FFT (CUDA)");
break;
case IndexingAlgorithmEnum::None:
logger.Warning("Indexer not defined!");
return 0;
default: ;
}
SpotFindingSettings spot_settings;
spot_settings.enable = true;
spot_settings.indexing = true;
spot_settings.high_resolution_limit = d_min_spot_finding;
spot_settings.signal_to_noise_threshold = sigma_spot_finding;
if (d_min_scale_merge > 0)
spot_settings.high_resolution_limit = d_min_spot_finding;
@@ -475,10 +396,6 @@ int main(int argc, char **argv) {
compressed_buffer.resize(MaxCompressedSize(experiment.GetCompressionAlgorithm(),
experiment.GetPixelsNum(),
experiment.GetByteDepthImage()));
auto size = compressor.Compress(compressed_buffer.data(),
compressed_buffer.data(),
experiment.GetPixelsNum(),
sizeof(uint8_t));
// Thread-local analysis resources
MXAnalysisWithoutFPGA analysis(experiment, mapping, pixel_mask, indexer);
@@ -529,11 +446,10 @@ int main(int argc, char **argv) {
auto image_end_time = std::chrono::high_resolution_clock::now();
std::chrono::duration<float> image_duration = image_end_time - image_start_time;
if (!write_output_noimage)
size = compressor.Compress(compressed_buffer.data(),
img->Image().data(),
experiment.GetPixelsNum(),
sizeof(int32_t));
auto size = compressor.Compress(compressed_buffer.data(),
img->Image().data(),
experiment.GetPixelsNum(),
sizeof(int32_t));
msg.image = CompressedImage(compressed_buffer.data(),
size, experiment.GetXPixelsNum(),
@@ -566,7 +482,7 @@ int main(int argc, char **argv) {
}
// Progress log
if ((current_idx_offset > 0 && (current_idx_offset+1) % 100 == 0) || image_idx == end_image - 1) {
if (current_idx_offset > 0 && current_idx_offset % 100 == 0) {
std::optional<float> indexing_rate;
{
std::lock_guard<std::mutex> lock(plots_mutex);
@@ -575,21 +491,11 @@ int main(int argc, char **argv) {
if (indexing_rate.has_value()) {
logger.Info("Processed {} / {} images (indexing rate {:.1f}%)",
current_idx_offset+1, images_to_process,
current_idx_offset, images_to_process,
indexing_rate.value() * 100.0f);
} else {
logger.Info("Processed {} / {} images (indexing rate N/A)",
current_idx_offset+1, images_to_process);
}
if (image_idx == end_image - 1) {
if (!merging_threshold.has_value()) merging_threshold = 0.5f;
if (!indexing_rate.has_value()) {
run_scaling = false;
} else if (indexing_rate.value() < merging_threshold) {
run_scaling = false;
logger.Warning("Not proceed to scale and merge with lower indexing rate: {:.1f}%",
indexing_rate.value()*100.0f);
}
current_idx_offset, images_to_process);
}
}
}
@@ -641,6 +547,7 @@ int main(int argc, char **argv) {
logger.Info("Rotation Indexing found lattice");
}
// --- Optional: run scaling (mosaicity refinement) on accumulated reflections ---
// --- Optional: run scaling (mosaicity refinement) on accumulated reflections ---
if (run_scaling) {
logger.Info("Running scaling (mosaicity refinement) ...");
@@ -651,15 +558,6 @@ int main(int argc, char **argv) {
scale_opts.max_solver_time_s = 240.0; // generous cutoff for now
scale_opts.merge_friedel = !anomalous_mode;
scale_opts.d_min_limit_A = d_min_scale_merge.value_or(0.0);
scale_opts.refine_wedge = refine_wedge;
if (filter_min_per_bin.has_value()) {
scale_opts.selection = true;
scale_opts.filter_min_per_bin = filter_min_per_bin.value();
} else {
scale_opts.selection = filtering;
}
if (rotation_indexing)
scale_opts.filter_min_per_bin = scale_opts.filter_min_per_bin * 0.25;
const bool fixed_space_group = space_group || experiment.GetGemmiSpaceGroup().has_value();
@@ -667,17 +565,12 @@ int main(int argc, char **argv) {
scale_opts.space_group = *space_group;
else
scale_opts.space_group = experiment.GetGemmiSpaceGroup();
if (scale_opts.space_group->number == 0) scale_opts.space_group = *gemmi::find_spacegroup_by_number(1);
logger.Info("Starting SG-no.: {}", scale_opts.space_group->number);
auto scale_start = std::chrono::steady_clock::now();
auto scale_result = indexer.ScaleRotationData(scale_opts);
auto scale_end = std::chrono::steady_clock::now();
double scale_time = std::chrono::duration<double>(scale_end - scale_start).count();
if (scale_result) print_statistics(logger, scale_result->statistics);
// if (scale_opts.wedge_deg.has_value()) logger.Info("Refined wedge: {:.3f}", scale_opts.wedge_deg.value());
if (scale_result && !fixed_space_group) {
logger.Info("Searching for space group from P1-merged reflections ...");
@@ -686,16 +579,13 @@ int main(int argc, char **argv) {
sg_opts.centering = '\0';
sg_opts.merge_friedel = !anomalous_mode;
sg_opts.d_min_limit_A = d_min_scale_merge.value_or(0.0);
sg_opts.min_i_over_sigma = 4.0; // 0.0; follows the DIALS's default
sg_opts.min_i_over_sigma = 0.0;
sg_opts.min_operator_cc = 0.80;
sg_opts.min_pairs_per_operator = 20;
sg_opts.min_total_compared = 100;
sg_opts.test_systematic_absences = true;
auto sg_search_start = std::chrono::steady_clock::now();
const auto sg_search = SearchSpaceGroup(scale_result->merged, sg_opts);
auto sg_search_end = std::chrono::steady_clock::now();
double sg_search_time = std::chrono::duration<double>(sg_search_end - sg_search_start).count();
logger.Info("");
{
@@ -709,24 +599,17 @@ int main(int argc, char **argv) {
logger.Info("");
if (sg_search.best_space_group.has_value()) {
logger.Info("SG-search wall-clock time: {:.2f} s", sg_search_time);
if (sg_search.best_space_group->number != 0) {
if (sg_search.best_space_group->number != scale_opts.space_group->number) {
logger.Info("Re-running scaling in detected space group {}", sg_search.best_space_group->short_name());
logger.Info("Re-running scaling in detected space group {}", sg_search.best_space_group->short_name());
scale_opts.space_group = *sg_search.best_space_group;
scale_opts.space_group = *sg_search.best_space_group;
auto rescale_start = std::chrono::steady_clock::now();
auto refined_scale_result = indexer.ScaleRotationData(scale_opts);
auto rescale_end = std::chrono::steady_clock::now();
auto rescale_start = std::chrono::steady_clock::now();
auto refined_scale_result = indexer.ScaleRotationData(scale_opts);
auto rescale_end = std::chrono::steady_clock::now();
if (refined_scale_result) {
scale_result = std::move(refined_scale_result);
scale_time += std::chrono::duration<double>(rescale_end - rescale_start).count();
}
} else {
logger.Info("No space group update indicated.");
}
if (refined_scale_result) {
scale_result = std::move(refined_scale_result);
scale_time += std::chrono::duration<double>(rescale_end - rescale_start).count();
}
} else {
logger.Warning("No space group accepted; keeping P1-merged result");
@@ -740,7 +623,36 @@ int main(int argc, char **argv) {
scale_time, scale_result->merged.size());
// Print resolution-shell statistics table
print_statistics(logger, scale_result->statistics);
{
const auto &stats = scale_result->statistics;
logger.Info("");
logger.Info(" {:>8s} {:>8s} {:>8s} {:>8s} {:>8s} {:>10s}",
"d_min", "N_obs", "N_uniq", "Rmeas", "<I/sig>", "Complete");
logger.Info(" {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->10s}",
"", "", "", "", "", "");
for (const auto &sh: stats.shells) {
if (sh.unique_reflections == 0)
continue;
std::string compl_str = (sh.completeness > 0.0)
? fmt::format("{:8.1f}%", sh.completeness * 100.0)
: " N/A";
logger.Info(" {:8.2f} {:8d} {:8d} {:8.3f}% {:8.1f} {:>10s}",
sh.d_min, sh.total_observations, sh.unique_reflections,
sh.rmeas * 100, sh.mean_i_over_sigma, compl_str);
}
{
const auto &ov = stats.overall;
logger.Info(" {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->10s}",
"", "", "", "", "", "");
std::string compl_str = (ov.completeness > 0.0)
? fmt::format("{:8.1f}%", ov.completeness * 100.0)
: " N/A";
logger.Info(" {:>8s} {:8d} {:8d} {:8.3f}% {:8.1f} {:>10s}",
"Overall", ov.total_observations, ov.unique_reflections,
ov.rmeas * 100, ov.mean_i_over_sigma, compl_str);
}
logger.Info("");
}
{
const std::string img_path = output_prefix + "_image.dat";
@@ -786,8 +698,6 @@ int main(int argc, char **argv) {
cif_meta.unit_cell = rotation_indexer_ret->lattice.GetUnitCell();
} else if (experiment.GetUnitCell().has_value()) {
cif_meta.unit_cell = experiment.GetUnitCell().value();
} else {
logger.Warning("No UnitCell output");
}
if (scale_opts.space_group.has_value()) {
@@ -835,11 +745,12 @@ int main(int argc, char **argv) {
double frame_rate = static_cast<double>(images_to_process) / processing_time;
logger.Info("");
logger.Info("Processing time (excl. scaling): {:8.2f} s", processing_time);
logger.Info("Frame rate: {:8.2f} Hz", frame_rate);
logger.Info("Total throughput: {:8.2f} MB/s", throughput_MBs);
logger.Info("Processing time: {:.2f} s", processing_time);
logger.Info("Frame rate: {:.2f} Hz", frame_rate);
logger.Info("Total throughput:{:.2f} MB/s", throughput_MBs);
// Print extended stats similar to Receiver
if (end_msg.indexing_rate.has_value()) {
if (!end_msg.indexing_rate.has_value()) {
logger.Info("Indexing rate: {:.2f}%", end_msg.indexing_rate.value() * 100.0);
}