v1.0.0-rc.158 #68
Merged
leonarski_f
merged 47 commits from 2026-07-12 19:42:29 +02:00
2607-win-viewer into main
47
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
575d5d09e4 |
docs: drop specific sample names/results from the rc.157 changelog note
Build Packages / build:viewer-tgz:cpu (push) Successful in 7m57s
Build Packages / build:viewer-tgz:cuda (push) Successful in 9m8s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 13m17s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m51s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m13s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m23s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 14m34s
Build Packages / build:windows:nocuda (push) Successful in 16m16s
Build Packages / build:windows:cuda (push) Successful in 17m53s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m47s
Build Packages / build:rpm (rocky8) (push) Successful in 11m45s
Build Packages / XDS test (durin plugin) (push) Successful in 8m19s
Build Packages / Generate python client (push) Successful in 31s
Build Packages / Build documentation (push) Successful in 1m3s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (rocky9) (push) Successful in 13m6s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m16s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 13m42s
Build Packages / DIALS test (push) Successful in 14m41s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m15s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m50s
Build Packages / Unit tests (push) Successful in 1h17m6s
Build Packages / Unit tests (pull_request) Successful in 1h1m47s
Build Packages / build:windows:cuda (pull_request) Successful in 12m16s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m46s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m57s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 11m3s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 11m51s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 11m36s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 10m27s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 11m1s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m34s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 11m42s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 13m4s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 11m55s
Build Packages / DIALS test (pull_request) Successful in 13m41s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m1s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 5m57s
Build Packages / Generate python client (pull_request) Successful in 14s
Build Packages / Build documentation (pull_request) Successful in 45s
Build Packages / Create release (pull_request) Skipped
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 12m15s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 8m54s
Build Packages / build:windows:nocuda (pull_request) Successful in 9m50s
Replace the Benas-crystal example (and the reference-battery validation claim) in the de-novo space-group entry with a generic description; this is general documentation, not a record of which datasets were tested. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
523301bc6b |
docs: note the symmetry/twinning and refined-geometry fixes
CHANGELOG rc.158: add the de-novo symmetry robustness fix (don't over-promote a merohedral twin, robust second moment, holohedral no-twin guard), the writer refined-beam-centre/translation fix, and the viewer HTTP timeout + pixel-mask-on-source-switch fixes. CPU_DATA_ANALYSIS: the space-group self-consistency test keeps a merohedral twin in its true lower symmetry; the twinning second moment is computed per shell with noise-shell/Wilson-outlier rejection, and twinning is only flagged in Laue classes where a twin law can exist. HDF5: state that the detector transformations carry the refined geometry (refined beam centre folds into translation) in a rugnux _process.h5. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
4d20298523 |
scale_merge: hoist the resolution-cutoff apply/trim into one shared helper
The "resolve effective_d_min (manual override, else the auto CC1/2 cutoff unless for_search) then erase merged reflections beyond it" block was copy-pasted in three places - RotationScaleMerge::MergeAndStats, the stills merge in Rugnux.cpp and the offline --scale path in rugnux_cli.cpp - and had already started to diverge (the CLI copy had dropped the for_search guard and the "no cut" log line). Move it into ResolutionCutoff::ApplyResolutionCutoff so there is one implementation. No behaviour change to the cutoff policy: the two full-analysis paths are identical to before, and the CLI path keeps its semantics (for_search is always false when re-scaling a stored _process.h5) - it only gains the same "keeping the full resolution range" info line the other two already logged. RotationScaleMerge still recomputes its own d_min/d_max span after the trim. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
8ecfa780eb |
viewer: drop the cached pixel mask when switching HTTP source
cached_pixel_mask is keyed only on arm_date and was cleared only in Close(); ReadURL() reused it, so switching to a source whose start message has an empty or duplicate arm_date silently kept the previous source's mask (wrong pixels masked in the live preview and fed to spot-finding / azimuthal integration). Clear it in ReadURL() too, as Close() does. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
d90888b5f9 |
viewer: give the libcurl HTTP reader a 5 s connect/transfer timeout
The single reused easy handle set no timeout, so a stalled or black-holed broker blocked curl_easy_perform indefinitely - wedging the reader thread and any Close()/ResetConnection() waiting on curl_mutex (the previous per-call httplib client timed out and recovered). Set CURLOPT_CONNECTTIMEOUT and CURLOPT_TIMEOUT to 5 s; all viewer requests are small and go to a nearby broker. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
1aac0495e1 |
frontend: guard the TIFF value colour span against zero/negative
`span = hi - lo || 1` only replaced an exactly-zero span, so Min>Max (or a
cleared Min/Max field coercing to 0 via Number("")) gave a negative span
and rendered the pedestal image with an inverted/collapsed colour scale.
Use `hi - lo > 0 ? hi - lo : 1` so a non-positive span falls back to 1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
||
|
|
d033b378ae |
broker: make the writer-error status message self-explanatory
When the writer fails mid-run the status carried only the raw writer_err string. Prefix it with "Writer error, written data may be incomplete: " so the operator sees the dataset may be truncated, not just a bare error string. Priority order is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
6c80dbdc32 |
writer: write refined detector geometry once at the end, incl. translation
The refined beam centre / detector rotations were written from the StartMessage at file open and then partially overwritten in Finalize - but the overwrite updated beam_center_x/y and rot1/2/3 and NOT the transformations/translation vector, which is what actually encodes the beam centre in the NXmx geometry chain read by XDS/DIALS/dxtbx. The reprocessed _process.h5 therefore had an internally inconsistent geometry (refined rotations combined with the stale, unrefined beam centre). The master file is never read before Finalize, so write the whole refinable geometry (beam_center_x/y + translation + rot1/2/3) once there, from the refined values when present and the StartMessage otherwise. This drops the open-time write plus in-place overwrite and, unlike the old path, keeps translation consistent with the refined beam centre. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
4aab8078d6 |
rugnux: keep merohedral twins in true symmetry, robustify twinning stats
SearchSpaceGroup: drop the log10(chi2_ref) widening of the point-group chi^2-ratio bound and tighten max_merge_chi2_ratio 2.0 -> 1.85. The variance-floor fix removed the error-model miscalibration the widening compensated for, so the widening now only let a partial merohedral twin through (Ins_H_2 R3->R32 twin 2-fold: ratio 2.01). Every genuine high symmetry across the rotation-test battery stays within ~1.7x (worst real case Thau P41212 at 1.71), so 1.85 keeps R3 in its true lower symmetry. TwinningAnalysis: make the <I^2>/<I>^2 second moment robust - skip noise-only shells (<I/sigma> < 1) and reject Wilson outliers (E^2 > 8) with one shell-mean re-iteration, so a single strong reflection in a collapsed-mean shell no longer dominates the moment. Add MerohedralTwinningPossible: in a holohedral Laue class (4/mmm, 6/mmm, m-3m, rhombohedral -3m) no twin law exists, so a low <|L|> there is a statistical artefact and is no longer flagged as twinning. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
fbebc0d56e |
rugnux: run decay + absorption surfaces on the GPU and enable by default
The decay/absorption correction surfaces previously forced the CPU 3D combine (absorption needs each full's predicted detector position, which the GPU SoA did not carry), so they could not be default-on without losing the fast GPU path. Put them on the GPU: - carry px/py (peak partial) through the GPU combine and download them with the fulls (GetFullsPxPy); - add SetFullsCorr to re-upload the host-corrected corr to the resident fulls before the merge. The surfaces themselves stay as cheap host fits on the downloaded fulls; only px/py download + corr upload are added (~two O(n_fulls) transfers). Measured +2% wall-time on lyso_ref (9.7 -> 9.9 s), and the GPU-combine and CPU-combine (--dump-observations) paths give identical results. Enable by default via a single master toggle ScalingSettings:: CorrectionSurfaces (default true; decoupled from the stills-only -B, which is rejected for rotation again). Both surfaces are cross-validated, so they no-op where their systematic is absent - safe to leave on. Off-switch wired through the rugnux CLI (--no-scaling-corrections; --absorption removed) and the viewer (a "Correction surfaces" checkbox). Documented in docs/RUGNUX.md. Battery (24 rotation crystals), default-on vs --no-scaling-corrections: EcwtCQ066S +2.4 ISa, lyso_ref +0.5 (and R-free 0.194 -> 0.185, better than XDS); every other crystal within run-to-run noise; corrections skip (CV / dB-floor) wherever there is no signal. lyso_ref anomalous S/Cl peaks are already ~45% above XDS's - the ISa gap is metric convention, not data. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
bab52a8077 |
rugnux: optional decay + absorption correction surfaces for rotation scaling
Build Packages / build:viewer-tgz:cpu (push) Successful in 7m49s
Build Packages / build:viewer-tgz:cuda (push) Successful in 8m34s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 13m20s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m25s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m22s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m44s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m10s
Build Packages / build:windows:nocuda (push) Successful in 17m56s
Build Packages / build:windows:cuda (push) Successful in 20m2s
Build Packages / build:rpm (rocky8) (push) Successful in 11m26s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m38s
Build Packages / XDS test (durin plugin) (push) Successful in 7m38s
Build Packages / Generate python client (push) Successful in 33s
Build Packages / Build documentation (push) Successful in 1m5s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m36s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m46s
Build Packages / build:rpm (rocky9) (push) Successful in 13m23s
Build Packages / DIALS test (push) Successful in 14m16s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m42s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m52s
Build Packages / Unit tests (push) Successful in 1h14m38s
Build Packages / Unit tests (pull_request) Successful in 58m48s
Build Packages / build:windows:nocuda (pull_request) Successful in 10m11s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m29s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 7m14s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m56s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 11m7s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 10m51s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m23s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 11m13s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m22s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 11m30s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 12m25s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m51s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 11m33s
Build Packages / DIALS test (pull_request) Successful in 12m9s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m59s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 6m58s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m8s
Build Packages / Generate python client (pull_request) Successful in 17s
Build Packages / Build documentation (pull_request) Successful in 50s
Build Packages / Create release (pull_request) Skipped
Build Packages / build:windows:cuda (pull_request) Successful in 12m40s
After scale-fulls, RotationScaleMerge can now fit two optional multiplicative corrections on the combined fulls (both off by default, rotation only): - -B (decay): a global Debye-Waller relative-B rate for radiation damage, ln(Iref/Iobs) = 2 (dB/dn)(n - nbar) s^2, folded into the per-full scale. Engages only above a physical floor (total relative-B > 2 A^2), so it is a no-op on low-dose data. (-B was previously rejected for rotation.) - --absorption[=iter]: a smooth factor over the diffracted-beam direction in the goniometer frame (predicted detector position de-rotated by the spindle, so a crystal-frame direction is sampled at many angles). Wires the existing ScalingSettings::absorption_iter scaffold. Negligible at hard X-rays; matters at low energy. On lyso_ref it is ISa-neutral (+0.5) but drops R-free 0.219 -> 0.212 against the deposited model: a smooth absorption error cancels among symmetry mates (small ISa effect) yet still biases the intensities (real R-free effect). Both are CROSS-VALIDATED: the surface is fit on even frames and applied only if it improves the held-out odd-frame equivalent agreement by a clear margin (and vice versa), so a fit to noise where the systematic is absent does not generalize and is discarded - the correction never adds scatter. Battery: EcwtCQ066S +2.4 ISa, lyso_ref R-free win, others neutral. Also fixes a latent bug this exposed: the GPU->host corr download before the CPU 3D-combine was gated on --dump-observations only, so any other forced-CPU-combine path (the new -B/--absorption) read a stale host corr and mis-scaled every full. The download condition now matches the CPU-combine condition. Predicted detector position (px, py) is carried on the combined fulls for the absorption surface (CPU combine only; unused by the GPU SoA path). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
dee679380b |
rugnux: exclude merge-rejected outliers from the error-model fit
The rotation error-model (a,b) fit built its sample pool from all usable fulls, while the merge separately dropped symmetry outliers (> Nsigma from the per-reflection median). So the fitted sigmas were calibrated against a dirtier pool than the reflections that actually entered the merge. Refactor the intensity-binned median fit into a `fit_ab` lambda and re-run it once on the misfit-free pool (samples with dev2 <= reject_nsigma^2 * model variance), matching the merge's own rejection. It operates on the shared `samples` array, so the CPU and GPU error-model paths stay bit-identical. Neutral on lyso_ref (the median-binned fit is already robust to the few outliers) - a correctness fix that matters more on dirtier data. Gated on reject_outliers (default 6 sigma for rot3d). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
a854523fee |
rugnux: fix resolution-cutoff over-extension on low-res crystals
The CC1/2-logistic auto resolution cutoff extended the fall-off crossing by "one shell" = s_range/10, where s_range spans to the detector edge. On a low-res crystal read out by a high-res-configured detector (integration runs to the ~1.4 A edge), that range is dominated by high-res noise, so one "shell" is a huge step in s that overshoots the true fall-off by ~1 A: Benas_3's CC1/2=0.30 crossing at 3.77 A was pushed to 2.98 A, Benas_7's 4.04 A to 2.97 A. The logistic fit itself is accurate; only the extension was wrong. Anchor the extension to the range actually kept and reported (low-res plateau -> the crossing), (s_cross - s_lo)/10, instead of the detector-edge range. Benas_3 -> 3.60 A, Benas_7 -> 3.85 A. The change is monotonic in (crossing - edge) and always coarser (never adds noise): zero change for crystals diffracting to the edge, negligible for well-diffracting ones, and only meaningful where the detector over-reaches the diffraction limit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
27802a30a3 |
docs: changelog for rc.158 rugnux/viewer/robustness changes
Build Packages / build:windows:nocuda (pull_request) Successful in 15m31s
Build Packages / build:windows:cuda (pull_request) Successful in 17m54s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m2s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m47s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 8m43s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m51s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m37s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m7s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m32s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m14s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m31s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m41s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m0s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m40s
Build Packages / Generate python client (pull_request) Successful in 35s
Build Packages / Create release (pull_request) Skipped
Build Packages / Build documentation (pull_request) Successful in 1m0s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m24s
Build Packages / DIALS test (pull_request) Successful in 11m25s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m7s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m18s
Build Packages / Unit tests (pull_request) Successful in 1h3m31s
Build Packages / Unit tests (push) Successful in 1h19m12s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m6s
Build Packages / build:viewer-tgz:cuda (push) Successful in 7m1s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m44s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m6s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m50s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m18s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m43s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m47s
Build Packages / build:rpm (rocky8) (push) Successful in 10m13s
Build Packages / build:rpm (rocky9) (push) Successful in 11m20s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m19s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m38s
Build Packages / DIALS test (push) Successful in 11m13s
Build Packages / XDS test (durin plugin) (push) Successful in 7m10s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m23s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m59s
Build Packages / Generate python client (push) Successful in 32s
Build Packages / Build documentation (push) Successful in 1m12s
Build Packages / Create release (push) Skipped
Build Packages / build:windows:nocuda (push) Successful in 15m7s
Build Packages / build:windows:cuda (push) Successful in 18m2s
Faster parallel two-pass rotation indexing, rotation indexing on spot-less DECTRIS datasets, viewer https connection, and hardened TIFF/raw-TCP input handling. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
0dfaf0a58a |
rugnux: don't reuse absent spots on plain DECTRIS datasets
Build Packages / build:windows:nocuda (push) Successful in 15m33s
Build Packages / build:windows:cuda (push) Successful in 17m48s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m23s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m53s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m12s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m35s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m51s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m47s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m30s
Build Packages / build:rpm (rocky8) (push) Successful in 10m18s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m5s
Build Packages / build:rpm (rocky9) (push) Successful in 11m5s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m40s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m14s
Build Packages / Generate python client (push) Successful in 15s
Build Packages / Build documentation (push) Successful in 50s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 7m13s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m27s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m46s
Build Packages / DIALS test (push) Successful in 10m59s
Build Packages / Unit tests (push) Successful in 1h50m3s
Build Packages / Unit tests (pull_request) Successful in 1h31m40s
Build Packages / build:windows:cuda (pull_request) Successful in 12m14s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m16s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m47s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m25s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m13s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m8s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m36s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 10m10s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m54s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m56s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m53s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m46s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 10m21s
Build Packages / DIALS test (pull_request) Successful in 12m15s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m10s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m40s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 7m1s
Build Packages / Generate python client (pull_request) Successful in 25s
Build Packages / Build documentation (pull_request) Successful in 49s
Build Packages / Create release (pull_request) Skipped
Build Packages / build:windows:nocuda (pull_request) Successful in 16m1s
reuse_rotation_spots defaults on, so the two-pass first phase read stored spots
from /entry/MX. A standard DECTRIS dataset has no spot-finding results, so every
frame came back with zero spots and indexing failed ("Two-pass rotation indexing
failed") instead of falling back to finding spots.
Add HasStoredSpots() to the reader (HDF5MetadataSource::HasSpots): spots exist if
/entry/MX/nPeaks is present in the master (integrated _process.h5) or the per-image
data file (VDS/legacy) - the same master-first-then-source path ReadSpots uses.
Rugnux reuses stored spots only when they exist, otherwise it runs spot finding
(and logs it); --redo-rotation-spots already forced finding.
Verified: a true no-/entry/MX rotation dataset fails on the old code and indexes
(P21) on the new; all jungfraujoch files (spots in master or in data files) still
reuse unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
||
|
|
f737424bdf |
rugnux: move rugnux_cli.cpp from tools/ to rugnux/
The offline analysis CLI belongs next to its Rugnux library. Move the source and the ADD_EXECUTABLE(rugnux ...) target (plus the Windows wingetopt link) into rugnux/CMakeLists.txt; the ../reader, ../common, ../image_analysis includes are unchanged (both dirs sit one level under the root) and ../rugnux/Rugnux.h becomes a local Rugnux.h. rugnux/ is added before tools/ in every build config, so viewer-only and Windows packages still get the CLI. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
b1cd49c6b5 |
rugnux: parallelize two-pass rotation first phase
The first pass of two-pass rotation indexing was the slow "getting there" phase. Profiling RunIndexing showed the cost is the serial Ceres candidate refinement (up to 4 FFT candidate cells x 2 XtalOptimizer solves each), not spot finding or the cuFFT kernel. - XtalOptimizer: add a num_threads arg (default 1) so a caller running a few refinements concurrently can give each several cores. - RotationIndexer::RunIndexing: seed the candidates serially, run their up-to-8 XtalOptimizer solves concurrently (4 Ceres threads each), select serially in candidate order (identical result). ~10-13x on the candidate loop. - Rugnux: feed both first-pass schemes (spread + wedge) serially, then run their RunIndexing() passes in parallel - overlapping one scheme's cuFFT with the other's Ceres. Size the FFT indexer pool to 2 for the rotation path (it fires only twice) instead of the default 4, avoiding wasted cuFFT-plan init. First-pass wall 2.1-6.5x faster across a 12-crystal battery; whole lysoC run 17.7->10.5s. All 12 crystals bit-identical (scheme, validation count, space group). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
c37bc2d005 |
viewer/curl: keep <curl/curl.h> out of JFJochHttpReader.h (MSVC build fix)
Build Packages / build:windows:nocuda (pull_request) Successful in 16m7s
Build Packages / build:windows:cuda (pull_request) Successful in 17m46s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m14s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m46s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 8m53s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m59s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m41s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m13s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m52s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m36s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m20s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m5s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m20s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m30s
Build Packages / Generate python client (pull_request) Successful in 20s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m8s
Build Packages / Create release (pull_request) Skipped
Build Packages / Build documentation (pull_request) Successful in 1m13s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m15s
Build Packages / DIALS test (pull_request) Successful in 11m56s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m22s
Build Packages / Unit tests (pull_request) Successful in 1h44m50s
Build Packages / Unit tests (push) Successful in 1h34m50s
Build Packages / build:windows:cuda (push) Successful in 12m26s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m13s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m32s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m20s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 9m25s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m54s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m34s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m42s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m2s
Build Packages / build:rpm (rocky8) (push) Successful in 10m9s
Build Packages / build:rpm (rocky9) (push) Successful in 9m9s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m51s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m12s
Build Packages / DIALS test (push) Successful in 11m47s
Build Packages / XDS test (durin plugin) (push) Successful in 7m34s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m45s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m45s
Build Packages / Generate python client (push) Successful in 18s
Build Packages / Build documentation (push) Successful in 54s
Build Packages / Create release (push) Skipped
Build Packages / build:windows:nocuda (push) Failing after 2m26s
curl.h transitively includes <windows.h>, whose min/max/ERROR/LoadImage macros clobbered every viewer TU that includes this widely-used header (std::min/max in gemmi, the TaskState::ERROR enum, the LoadImage() calls, the Qt/fftw cascade). It even broke JFJochHttpReader.cpp itself, since inside the header curl.h preceded the reader/common includes that pull in gemmi. Forward-declare the opaque easy handle (CURL is `typedef void` in libcurl) so the header no longer needs curl.h, and include curl.h only in the .cpp, last, after all std/project headers. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
b3b4f5824e |
viewer/curl: link vendored libcurl_static directly, not the CURL::libcurl alias
Build Packages / build:windows:cuda (push) Failing after 1m8s
Build Packages / build:windows:nocuda (push) Failing after 6m43s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m15s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m48s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m27s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m15s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m27s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m12s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m52s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m37s
Build Packages / build:rpm (rocky8) (push) Successful in 9m53s
Build Packages / build:rpm (rocky9) (push) Successful in 10m50s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m10s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m54s
Build Packages / Generate python client (push) Successful in 18s
Build Packages / Build documentation (push) Successful in 51s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 7m2s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 6m42s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m36s
Build Packages / DIALS test (push) Successful in 12m37s
Build Packages / Unit tests (push) Successful in 1h42m15s
Build Packages / Unit tests (pull_request) Successful in 1h33m34s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m10s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m54s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m38s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m10s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 9m39s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m1s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 10m17s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m14s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m11s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m14s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m4s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m59s
Build Packages / DIALS test (pull_request) Successful in 11m26s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 6m55s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m16s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m41s
Build Packages / Generate python client (pull_request) Successful in 16s
Build Packages / Build documentation (pull_request) Successful in 48s
Build Packages / Create release (pull_request) Skipped
Build Packages / build:windows:nocuda (pull_request) Failing after 2m25s
Build Packages / build:windows:cuda (pull_request) Failing after 15m27s
The viewer's CURL::libcurl was resolving to a system libcurl on the CI image (curl configured but never compiled; viewer linked the OS curl). The alias is shadowable; the concrete FetchContent target name libcurl_static is not. Link it directly -- this forces the vendored static curl into the build graph and pulls its include dirs + CURL_STATICLIB define via the target's usage requirements. Simplify the top-level guard to just assert libcurl_static exists. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
3b02156fba |
viewer/curl: dump CURL::libcurl type + imported path when it shadows
Build Packages / build:windows:cuda (push) Failing after 6m32s
Build Packages / build:windows:nocuda (push) Failing after 10m15s
Build Packages / build:windows:nocuda (pull_request) Failing after 11m32s
Build Packages / build:windows:cuda (pull_request) Failing after 14m55s
Build Packages / build:viewer-tgz:cpu (push) Successful in 5m52s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m21s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m15s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 9m50s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m53s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m24s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m44s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m3s
Build Packages / build:rpm (rocky8) (push) Successful in 10m16s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m2s
Build Packages / build:rpm (rocky9) (push) Successful in 11m22s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m27s
Build Packages / Generate python client (push) Successful in 21s
Build Packages / XDS test (durin plugin) (push) Successful in 7m13s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m11s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m22s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m0s
Build Packages / DIALS test (push) Successful in 11m39s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m6s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m57s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 10m10s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 9m34s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m38s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m7s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 10m10s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m18s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m55s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m55s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m29s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 10m6s
Build Packages / Generate python client (pull_request) Successful in 19s
Build Packages / Build documentation (pull_request) Successful in 49s
Build Packages / Create release (pull_request) Skipped
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m28s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m42s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m47s
Build Packages / DIALS test (pull_request) Successful in 10m58s
Build Packages / Unit tests (push) Successful in 1h39m30s
Build Packages / Unit tests (pull_request) Successful in 1h41m44s
The CI image has only runtime /usr/lib64/libcurl.so.4 (no libcurl-devel, no .so symlink, no CMake config, no toolchain/dependency provider), so a standard find_package(CURL)/-lcurl shadow is impossible -- whatever provides CURL::libcurl must point at a full path. Expand the guard to print ALIASED_TARGET, TYPE, IMPORTED_LOCATION and INTERFACE_LINK_LIBRARIES so a single configure run reveals exactly what CURL::libcurl resolves to before the fatal error. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
180f93341a |
viewer/curl: assert CURL::libcurl is the vendored libcurl_static, and log it
Build Packages / build:windows:nocuda (push) Failing after 4m53s
Build Packages / build:windows:cuda (push) Failing after 1m19s
Build Packages / build:windows:nocuda (pull_request) Failing after 13m20s
Build Packages / build:windows:cuda (pull_request) Failing after 14m51s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m28s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m48s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m29s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m32s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m20s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m11s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m13s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m17s
Build Packages / build:rpm (rocky8) (push) Successful in 10m19s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m22s
Build Packages / build:rpm (rocky9) (push) Successful in 11m11s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m24s
Build Packages / Generate python client (push) Successful in 31s
Build Packages / Build documentation (push) Successful in 53s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 7m6s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m27s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m58s
Build Packages / DIALS test (push) Successful in 12m55s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m35s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m51s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m13s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m2s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m58s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m55s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m57s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m3s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m57s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m48s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m0s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 10m42s
Build Packages / Generate python client (pull_request) Successful in 26s
Build Packages / Build documentation (pull_request) Successful in 1m0s
Build Packages / Create release (pull_request) Skipped
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m11s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m49s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m24s
Build Packages / DIALS test (pull_request) Successful in 12m57s
Build Packages / Unit tests (push) Successful in 1h37m46s
Build Packages / Unit tests (pull_request) Successful in 1h38m57s
The CI runner uses a fresh per-task workspace volume (not a reused build dir), so the earlier rm -rf build was a no-op and curl still wasn't compiled. The real symptom: on a fresh build the viewer's CURL::libcurl resolves to a system libcurl (libcurl_static exists but is never compiled/linked). The previous guard only checked that libcurl_static exists, which it does. Instead print what CURL::libcurl aliases and hard-fail unless it is the vendored libcurl_static, so a system-curl shadow surfaces in the configure log instead of silently shipping a viewer linked against the OS curl. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
7fd2105f96 |
tools: add rugnux_vs_xds.py — rugnux vs XDS regression table
Build Packages / build:windows:cuda (push) Failing after 6m1s
Build Packages / build:windows:nocuda (push) Failing after 9m36s
Build Packages / build:windows:nocuda (pull_request) Failing after 14m1s
Build Packages / build:windows:cuda (pull_request) Failing after 14m24s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m19s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m53s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m3s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m0s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m23s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m21s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m12s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m54s
Build Packages / build:rpm (rocky8) (push) Successful in 10m3s
Build Packages / build:rpm (rocky9) (push) Successful in 10m23s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m56s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m44s
Build Packages / Generate python client (push) Successful in 23s
Build Packages / Build documentation (push) Successful in 50s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 6m45s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m1s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m33s
Build Packages / DIALS test (push) Successful in 10m50s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m17s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m19s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m22s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m54s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m59s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m6s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m47s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m48s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m0s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m1s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m15s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 10m10s
Build Packages / Generate python client (pull_request) Successful in 17s
Build Packages / Build documentation (pull_request) Successful in 49s
Build Packages / Create release (pull_request) Skipped
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m27s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m21s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m6s
Build Packages / DIALS test (pull_request) Successful in 12m51s
Build Packages / Unit tests (push) Successful in 1h40m58s
Build Packages / Unit tests (pull_request) Successful in 1h46m10s
Self-contained script (self-bootstrapping venv + gemmi) that runs rugnux de-novo over a directory of test crystals and tabulates its merging statistics against the XDS CORRECT.LP reference: number of reflections, observations, space group (H-M + number), R_meas / CC1/2 overall, R_meas low shell, CC1/2 high shell, ISa, and rugnux wall-clock time — with a per-crystal point-group-level space-group match (OK/DIFF). rugnux stats are read from its mmCIF output (the stable interface, not the console log); resolution limit and Friedel/anomalous setting are matched to XDS for a like-for-like comparison. Default output dir rugnux_cmp/ is ignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
53ffb56aae |
viewer/curl: clean stale CI build dir + guard against system libcurl shadowing
Build Packages / build:windows:cuda (push) Failing after 3m45s
Build Packages / build:windows:nocuda (push) Failing after 3m43s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m26s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m52s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m13s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m45s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m38s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m2s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m57s
Build Packages / build:windows:nocuda (pull_request) Failing after 14m18s
Build Packages / build:windows:cuda (pull_request) Failing after 14m49s
Build Packages / build:rpm (rocky8) (push) Successful in 10m27s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m18s
Build Packages / build:rpm (rocky9) (push) Successful in 10m58s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m20s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m57s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / Build documentation (push) Successful in 59s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 7m26s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m20s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m50s
Build Packages / DIALS test (push) Successful in 12m6s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m22s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m58s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m14s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m53s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 8m48s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m25s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m24s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m13s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m24s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 9m54s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m40s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 6m17s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m19s
Build Packages / Generate python client (pull_request) Successful in 16s
Build Packages / Build documentation (pull_request) Successful in 51s
Build Packages / Create release (pull_request) Skipped
Build Packages / DIALS test (pull_request) Successful in 11m28s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 6m55s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m18s
Build Packages / Unit tests (push) Successful in 1h44m10s
Build Packages / Unit tests (pull_request) Successful in 1h42m20s
Self-hosted runners reuse the workspace Docker volume, so a stale build/ dir could leave jfjoch_viewer linking a system libcurl instead of the vendored FetchContent static one (curl configured but never compiled; viewer linked the OS curl). Add a "Clean previous build" step (rm -rf build) to the two Linux viewer jobs (build-viewer-tgz, build-rpm), and assert libcurl_static exists after FetchContent_MakeAvailable(curl) so any future shadowing fails loudly instead of silently linking the OS curl with the wrong TLS/Kerberos backend. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
4fcbb09771 | Dockerfile: For rocky8 one should NOT run dnf update, because it will like to update cuda to 13.3 | ||
|
|
cdcd5d28ca |
viewer: reuse one libcurl handle so the HTTP reader keeps the connection alive
Build Packages / build:viewer-tgz:cpu (push) Successful in 8m7s
Build Packages / build:viewer-tgz:cuda (push) Successful in 9m39s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 13m6s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m34s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m59s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m12s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 14m12s
Build Packages / build:windows:nocuda (push) Failing after 15m5s
Build Packages / build:windows:cuda (push) Failing after 15m22s
Build Packages / build:windows:nocuda (pull_request) Failing after 1m26s
Build Packages / build:windows:cuda (pull_request) Failing after 1m11s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m30s
Build Packages / build:rpm (rocky8) (push) Successful in 11m17s
Build Packages / XDS test (durin plugin) (push) Successful in 7m18s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / Build documentation (push) Successful in 1m9s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m26s
Build Packages / build:rpm (rocky9) (push) Successful in 13m29s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m23s
Build Packages / DIALS test (push) Successful in 14m21s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m48s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m51s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 5m56s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m35s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 10m28s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 9m26s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m24s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m40s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 10m40s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m34s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m31s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m35s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 10m35s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 11m9s
Build Packages / Generate python client (pull_request) Successful in 18s
Build Packages / Create release (pull_request) Skipped
Build Packages / Build documentation (pull_request) Successful in 49s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m50s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m11s
Build Packages / DIALS test (pull_request) Successful in 12m11s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m15s
Build Packages / Unit tests (push) Successful in 2h0m45s
Build Packages / Unit tests (pull_request) Successful in 1h39m47s
JFJochHttpReader::Request previously did curl_easy_init()/curl_easy_cleanup() around every call, which destroys the handle's connection cache -- so each request reconnected from scratch (full TCP + TLS handshake, and a fresh Negotiate/Kerberos round-trip once auth is on). Keep one persistent easy handle instead: create it lazily on the first request (i.e. as soon as an address is selected via ReadURL) and reuse it, calling curl_easy_reset between requests. reset clears the previous request's options but deliberately keeps the live connection and DNS/TLS-session caches, so a same-host request reuses the open socket; if that socket has been closed (idle timeout, server session limit, broker restart) libcurl reconnects and retries on its own -- no manual reconnect logic needed. The handle is torn down on disconnect (Close), when a new address is selected (ReadURL), and in the destructor. Access is serialised by a dedicated leaf mutex, since a single easy handle must not be used from two threads at once. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
007e65cdfe |
viewer: accept https:// endpoints and add an http/https selector to the connect dialog
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m52s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m51s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m50s
Build Packages / build:windows:nocuda (push) Successful in 16m14s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m48s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m5s
Build Packages / build:windows:cuda (push) Successful in 18m27s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m2s
Build Packages / build:windows:cuda (pull_request) Failing after 59s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m36s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m21s
Build Packages / build:rpm (rocky8) (push) Successful in 10m24s
Build Packages / build:windows:nocuda (pull_request) Successful in 11m54s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m27s
Build Packages / build:rpm (rocky9) (push) Successful in 11m45s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m44s
Build Packages / Generate python client (push) Successful in 18s
Build Packages / Build documentation (push) Successful in 47s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 6m58s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m21s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m59s
Build Packages / DIALS test (push) Successful in 12m38s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 5m49s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m19s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 8m52s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m58s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m36s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 9m13s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 10m5s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m56s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m49s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m34s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m42s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m23s
Build Packages / Generate python client (pull_request) Successful in 21s
Build Packages / Build documentation (pull_request) Successful in 54s
Build Packages / Create release (pull_request) Skipped
Build Packages / XDS test (durin plugin) (pull_request) Successful in 6m52s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m8s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m35s
Build Packages / DIALS test (pull_request) Successful in 10m51s
Build Packages / Unit tests (push) Successful in 1h20m30s
Build Packages / Unit tests (pull_request) Successful in 1h2m27s
- Route https:// URLs to the HTTP reader (LoadFile_i scheme check), not only http://. - Replace the fixed "http://" label in the Open HTTP Connection dialog with a small http/https combo box and build the URL from the chosen scheme. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
49d078563c |
viewer: move JFJochHttpReader to the viewer and switch it to libcurl
JFJochHttpReader (the viewer's live-broker HTTP client) is the only HTTP client
in the reader library and the only piece that needs TLS + Kerberos. Moving it out
of the always-built JFJochReader keeps the broker/writer free of a TLS/Kerberos
stack; switching it from cpp-httplib to libcurl gives the viewer HTTPS and, later,
GSSAPI/Bearer auth.
- Move reader/JFJochHttpReader.{cpp,h} -> viewer/, compiled into jfjoch_viewer.
- Rewrite the 10 httplib call sites onto one libcurl easy-handle Request() helper
(GET + PUT, binary/JSON bodies; status/transport handling preserved).
- CMake: FetchContent libcurl, STATIC, HTTP(S)-only, only for viewer builds.
OS-native backends keep Windows self-contained (Schannel+SSPI); Linux uses
system OpenSSL + GSSAPI (krb5). Drop httplib from JFJochReader.
- Block httplib OpenSSL auto-link (HTTPLIB_USE_OPENSSL_IF_AVAILABLE OFF) so the
broker stops pulling in libssl/libcrypto for HTTPS it never serves.
- docker: add krb5 dev headers (libkrb5-dev / krb5-devel) for CURL_USE_GSSAPI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|
|
efd5f3513a |
Remove upload artifact from Gitea for jfjoch_viewer on Windows (upload doesn't work)
Build Packages / build:windows:cuda (push) Failing after 8m5s
Build Packages / build:windows:nocuda (push) Successful in 10m4s
Build Packages / build:windows:nocuda (pull_request) Successful in 15m11s
Build Packages / build:windows:cuda (pull_request) Successful in 17m29s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m0s
Build Packages / build:viewer-tgz:cuda (push) Successful in 7m2s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m0s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 9m9s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m27s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 7m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m37s
Build Packages / build:rpm (rocky8) (push) Successful in 11m2s
Build Packages / build:rpm (rocky9) (push) Successful in 11m28s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m56s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m59s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m35s
Build Packages / Generate python client (push) Successful in 30s
Build Packages / Build documentation (push) Successful in 58s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (neggia plugin) (push) Successful in 6m47s
Build Packages / XDS test (durin plugin) (push) Successful in 7m14s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m22s
Build Packages / DIALS test (push) Successful in 12m28s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m20s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m40s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 8m51s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 9m36s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m9s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 9m11s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m23s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m16s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m11s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m25s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 10m2s
Build Packages / Generate python client (pull_request) Successful in 22s
Build Packages / Create release (pull_request) Skipped
Build Packages / Build documentation (pull_request) Successful in 1m21s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m1s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m14s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 7m10s
Build Packages / DIALS test (pull_request) Successful in 12m50s
Build Packages / Unit tests (push) Successful in 1h42m55s
Build Packages / Unit tests (pull_request) Successful in 1h38m29s
|
||
|
|
6c9a22d7f3 |
docs: tilt-invariant solid-angle correction; brief changelog docs entry
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m23s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m47s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m14s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m8s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m54s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m52s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m24s
Build Packages / build:windows:cuda (push) Failing after 5m50s
Build Packages / build:windows:nocuda (push) Successful in 11m36s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m38s
Build Packages / build:rpm (rocky8) (push) Successful in 12m11s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m38s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m46s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / build:rpm (rocky9) (push) Successful in 12m55s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m20s
Build Packages / build:windows:cuda (pull_request) Failing after 7m39s
Build Packages / DIALS test (push) Successful in 13m56s
Build Packages / XDS test (durin plugin) (push) Successful in 7m19s
Build Packages / build:windows:nocuda (pull_request) Successful in 11m14s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 6m37s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m59s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 6m20s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 6m20s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 9m45s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 9m15s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 10m25s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 8m59s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 9m55s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 10m45s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 9m22s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 10m7s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m43s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 9m47s
Build Packages / Generate python client (pull_request) Successful in 25s
Build Packages / Build documentation (pull_request) Successful in 53s
Build Packages / Create release (pull_request) Skipped
Build Packages / XDS test (durin plugin) (pull_request) Successful in 7m18s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m33s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m48s
Build Packages / DIALS test (pull_request) Successful in 12m53s
Build Packages / Unit tests (push) Successful in 1h52m41s
Build Packages / Unit tests (pull_request) Successful in 1h33m58s
Update CPU_DATA_ANALYSIS.md 2.2 to document the azimuthal-integration
solid-angle correction as cos^3(alpha) with alpha the incidence angle to the
detector normal (cos(alpha) = D / sqrt(u^2+v^2+D^2)), tilt-invariant and
matching PyFAI solidAngleArray / MAX IV azint, reducing to cos^3(2*theta)
only for an untilted detector - matching the code change in
|
||
|
|
05feb74602 |
VERSION: 1.0.0-rc.158
Build Packages / build:windows:nocuda (push) Failing after 4m16s
Build Packages / build:windows:cuda (push) Failing after 4m16s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m19s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m17s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m13s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m7s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m52s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m23s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m41s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m29s
Build Packages / build:rpm (rocky8) (push) Successful in 9m54s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m40s
Build Packages / build:rpm (rocky9) (push) Successful in 10m44s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m26s
Build Packages / Generate python client (push) Successful in 15s
Build Packages / Build documentation (push) Successful in 53s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 7m10s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m34s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m7s
Build Packages / DIALS test (push) Successful in 11m6s
Build Packages / build:viewer-tgz:cpu (pull_request) Successful in 7m14s
Build Packages / build:viewer-tgz:cuda (pull_request) Successful in 8m26s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 10m49s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 10m59s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 11m4s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 9m34s
Build Packages / build:windows:nocuda (pull_request) Successful in 15m20s
Build Packages / build:windows:cuda (pull_request) Failing after 17m21s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 10m25s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 11m31s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 11m11s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 11m5s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m48s
Build Packages / Generate python client (pull_request) Successful in 26s
Build Packages / Build documentation (pull_request) Successful in 59s
Build Packages / Create release (pull_request) Skipped
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 10m51s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 6m55s
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 6m38s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 7m20s
Build Packages / DIALS test (pull_request) Successful in 14m23s
Build Packages / Unit tests (push) Successful in 1h24m59s
Build Packages / Unit tests (pull_request) Successful in 1h39m35s
|
||
|
|
4b72a89249 |
harden untrusted-input size handling in TIFF read and raw-TCP frames
Two memory-safety/robustness fixes for input whose size is attacker- or peer-controlled: - ReadTIFF: a large IMAGELENGTH could overflow scanline_bytes * lines, undersizing the buffer that TIFFReadScanline then writes past. Guard the product against overflow before resize and reuse scanline_bytes in the loop. - Raw-TCP image path: an uncapped header payload_size drove a huge resize() that took down the receive thread (wedging the writer-facing acceptor). Add JFJOCH_TCP_MAX_PAYLOAD_SIZE and reject oversized frames at the single receive-loop choke point on both the pusher and puller sides. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
acd2025676 |
azint: tilt-correct solid-angle correction; honour imported rot3 in refinement
The azimuthal-integration solid-angle correction used cos^3(2*theta), where 2*theta is the true scattering angle (from LabCoord, including detector tilt). The solid angle of a flat pixel actually depends on the incidence angle to the detector normal, cos(alpha) = det_distance / |detector-frame position|, which is invariant under detector tilt (rot1/rot2/rot3). Only for an untilted detector do the two agree. Switch CalcAzIntSolidAngleCorr(x,y) to the tilt-invariant form, matching PyFAI solidAngleArray and MAX IV azint. Drop the q-only overload (it can only ever be the untilted approximation and was used only in tests) and move its test onto the (x,y) form; add a tilt-invariance test. XtalOptimizer's residual reconstructed each spot's lab position from rot1/rot2 only, hardcoding rot3 = 0, while the rest of the pipeline (and its own spot selection) used the full PONI rotation. An imported non-zero rot3 was therefore silently dropped during refinement. Bake rot3 into the residual as a fixed Rz(-rot3) so refinement stays consistent (no-op when rot3 == 0). Polarization and azimuthal binning already honoured rot3 via the full PONI rotation (Phi_rad), validated against PyFAI chi() by the existing rot3 phi tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
e7fbeb527f |
docs: update analysis references to match current code
Reconcile docs/CPU_DATA_ANALYSIS.md and docs/RUGNUX.md with the current image_analysis/ and rugnux CLI (verified section-by-section against the code): unified profile-fit Bragg integration engine, multi-lattice indexing, azimuthal phi binning, radial parallax/bandwidth profile with sub-pixel centring, rot3d capture-fraction handling, automatic CC1/2 resolution cutoff, and the new rugnux options; fix the section numbering and cross-references; remove the never-implemented French-Wilson and still-partiality descriptions. Delete the stale in-source design notes (ICE_RING_DETECTION, BRAGG_INTEGRATION_ENGINE, NEXTGEN_INTEGRATOR) and fix the two code comments that pointed at them; the BraggIntegrationEngine header no longer claims it is 'not yet wired'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
c3468eef6c |
ci: use actions/upload-artifact@v4 for the Windows/CUDA artifact
The internal Gitea action is referenced as actions/upload-artifact@v4 (no gitea- prefix), per its own documentation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
7da60c3385 |
ci: use gitea-upload-artifact@v4 for the Windows/CUDA artifact
Build Packages / build:windows:nocuda (push) Failing after 6m49s
Build Packages / build:windows:cuda (push) Successful in 12m16s
Build Packages / build:viewer-tgz:cpu (push) Successful in 5m55s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m31s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 8m56s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 9m23s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m32s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 7m53s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m3s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m14s
Build Packages / build:rpm (rocky8) (push) Successful in 9m11s
Build Packages / build:rpm (rocky9) (push) Successful in 9m54s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m2s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m27s
Build Packages / Generate python client (push) Successful in 19s
Build Packages / XDS test (durin plugin) (push) Successful in 7m13s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m5s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m14s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m43s
Build Packages / DIALS test (push) Successful in 11m38s
Build Packages / Unit tests (push) Successful in 1h22m48s
Switch to the internal Gitea artifact action (actions/gitea-upload-artifact@v4, hosted at gitea.psi.ch) instead of actions/upload-artifact@v3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
54de990100 |
viewer: show only the high-resolution limit in the stats hero card
Build Packages / Unit tests (push) Successful in 1h40m44s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m53s
Build Packages / build:viewer-tgz:cuda (push) Successful in 7m42s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m42s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m24s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m42s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m50s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m58s
Build Packages / build:rpm (rocky8) (push) Successful in 10m29s
Build Packages / build:rpm (rocky9) (push) Successful in 11m15s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m2s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m45s
Build Packages / DIALS test (push) Successful in 12m4s
Build Packages / XDS test (durin plugin) (push) Successful in 6m46s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m3s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m41s
Build Packages / Generate python client (push) Successful in 20s
Build Packages / Build documentation (push) Successful in 51s
Build Packages / Create release (push) Skipped
Build Packages / build:windows:nocuda (push) Successful in 15m1s
Build Packages / build:windows:cuda (push) Failing after 17m19s
Drop the low-resolution edge from the Resolution card - only the high-res limit (the CC1/2-cutoff value) is of interest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
668855a9e7 |
viewer: show the merge resolution range in the stats hero row
Build Packages / Unit tests (push) Successful in 1h36m40s
Build Packages / build:viewer-tgz:cpu (push) Successful in 6m50s
Build Packages / build:viewer-tgz:cuda (push) Successful in 6m38s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m29s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m50s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m3s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m24s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m39s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m42s
Build Packages / build:rpm (rocky8) (push) Successful in 10m11s
Build Packages / build:rpm (rocky9) (push) Successful in 11m53s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m45s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m34s
Build Packages / DIALS test (push) Successful in 13m28s
Build Packages / XDS test (durin plugin) (push) Successful in 8m14s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m30s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m17s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / Build documentation (push) Successful in 1m15s
Build Packages / Create release (push) Skipped
Build Packages / build:windows:cuda (push) Failing after 3m7s
Build Packages / build:windows:nocuda (push) Successful in 9m37s
The high-resolution limit is now usually set by the automatic CC1/2 logistic cutoff (when no scaling resolution is given), so it varies per run. Add a 'Resolution [Å]' hero card (low-res .. high-res edge from the overall shell) as the first card in the merge-statistics window. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
61eb661eca |
ci: upload the Windows/CUDA viewer installer as a build artifact
Build Packages / build:windows:nocuda (push) Failing after 3m49s
Build Packages / build:viewer-tgz:cpu (push) Successful in 8m55s
Build Packages / build:viewer-tgz:cuda (push) Successful in 9m34s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m16s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m29s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m34s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m32s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m33s
Build Packages / build:windows:cuda (push) Failing after 15m3s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m31s
Build Packages / build:rpm (rocky8) (push) Successful in 11m57s
Build Packages / XDS test (durin plugin) (push) Successful in 9m34s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / Build documentation (push) Successful in 55s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (rocky9) (push) Successful in 12m35s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m57s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m10s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m49s
Build Packages / DIALS test (push) Successful in 15m18s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m34s
Build Packages / Unit tests (push) Successful in 1h50m38s
The Windows installer was only uploaded on tagged releases, so testing an arbitrary branch build meant cutting a tag. Also upload the CUDA installer as a workflow artifact on every run, with a short 3-day retention (it is a throwaway test build). Only the cuda variant, since that is the one we test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
85cf1b04d1 |
docs: changelog for rc.158 viewer/rugnux/packaging changes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
4374babe26 |
viewer: add a Browse button to the processing output prefix
The output prefix was a plain text field; add a 'Browse…' button that opens a file dialog to pick the output location. The chosen name is treated as a prefix (the _process.h5 / .mtz / .cif suffixes are appended), so a trailing extension is dropped, and the result is stored with native separators. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
936d2efd4a |
viewer: bundle cuFFT in the Linux .tar.gz like the Windows build
The Windows package ships cufft64_*.dll next to the viewer so a host with only an NVIDIA driver (no CUDA toolkit) can run it; the Linux .tar.gz shipped nothing equivalent and had no rpath, so a -linux-cuda archive needed cuFFT on the system. Mirror the Windows behaviour ONLY for the self-contained .tar.gz (JFJOCH_VIEWER_ONLY): install libcufft.so (with its SONAME/version symlink chain) into bin next to the binary and set INSTALL_RPATH=$ORIGIN so the loader picks the bundled copy. The .deb/.rpm builds deliberately do NOT bundle it - CUDA there is centrally managed by the distro's packages, and the .tar.gz is the one with no package manager, where we want the dependency set really minimal. cuFFT is the only dynamically-linked CUDA component (cudart and the fast-feedback indexer are static). macOS has no CUDA so it is excluded. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
0ed943dd4d |
viewer: show the space group in the merge-statistics window
The de-novo space-group search (SearchSpaceGroup) already ran inside Rugnux but only its chosen number survived on ProcessResult, and the viewer dropped even that. Carry the structured SearchSpaceGroupResult (point group + ranked candidate scores) on ProcessResult and thread it into JFJochMergeStatsWindow, which now shows a 'Space group' hero card (the final group, searched or fixed) plus a compact table of candidate groups and their absence scores. The library no longer renders the search to text (it used to embed it in merge_statistics_text); rugnux_cli formats it for stdout instead, so the CLI keeps its text table while the viewer draws a proper table and does not spew it to stdout. Also surface a user-fixed space group on the result so the card shows it too. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
228841870d |
rugnux: honour an absolute -o output prefix
configure_offline_output still routed the -o prefix through FilePrefix (the CheckPath guard), so 'rugnux -o /abs/path' threw 'Path cannot start with slash' before processing even though the writer path already supported it. Use the trusted setter here too. Completes the offline absolute-path support (the writer and Rugnux::Run already skip the guard); the .mtz/.cif and _process.h5 now land at an absolute -o. The --scale path shares this function and writes via WriteReflections (no FileWriter), so it is covered as well. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
9b1ab02c41 |
viewer: control _process.h5 and merged .mtz/.cif output independently
The 'Save _process.h5' checkbox drove output_prefix, so unchecking it also suppressed the merged .mtz/.cif, and there was no way to run for the ISa/R-meas numbers only. Split it into two checkboxes wired to independent flags: - Save _process.h5 -> ProcessConfig::write_process_h5 (also drives the viewer snapshot, so unchecking it means the viewer is not updated with spots/results) - Write merged .mtz/.cif -> new ProcessConfig::write_merged output_prefix is set when either is wanted; both off = process for stats only. Scaling/merge statistics (hence the ISa/R-meas window) are independent of file writing, so they show in every case. RugnuxCommandLine now emits --write-process-h5 so a copied command matches the GUI's choice. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
343af8deed |
viewer: write processing output next to the input file
The New-job dialog seeded the output prefix from QFileInfo::completeBaseName(), which drops the directory, so _process.h5/.cif/.mtz landed in the viewer's working directory (wherever it was installed) instead of beside the dataset. Seed it with the input file's absolute directory instead; the field stays editable. Relies on the trusted output-path support so the absolute prefix is accepted by the writer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
8858951419 |
rugnux: allow absolute output paths for offline processing
The FilePrefix/CheckPath guard forbids absolute paths and '..' traversal so a
remote client cannot make the broker/writer write outside their run directory.
Offline processing (rugnux -o, and the viewer writing next to the input file)
supplies its own trusted local path, so that guard should not apply to it.
Add a trusted opt-in that leaves the broker/writer path untouched:
- DatasetSettings/DiffractionExperiment::FilePrefixTrusted() sets the prefix
without CheckPath (FilePrefix() = CheckPath + FilePrefixTrusted).
- FileWriter gains a trusted_path ctor flag that skips its own CheckPath.
- Rugnux uses both. Broker/writer never set them, so their behaviour is
identical; this only widens what the offline CLI/viewer may write.
Previously 'rugnux -o /abs/path' threw ('Path cannot start with slash') while
building the _process.h5; the .mtz/.cif already bypassed the guard.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|
|
4292c990ea |
viewer: open WSL/UNC paths by converting to native separators
Qt's QFileDialog returns '/'-separated paths even on Windows, so a UNC path like \\wsl.localhost\Ubuntu\... arrives as //wsl.localhost/Ubuntu/... and H5Fopen (via the Win32 file layer) does not recognise the forward-slash form as UNC, while C:/... still works - exactly the reported symptom. Normalise the file-dialog result with QDir::toNativeSeparators before opening. No-op on Linux. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |