e7edee6b2ed5bc6a384eea421ced4dc28e911087
196 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
5f3126e19e |
CMake: Update FFBIDX to support MSVC
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m24s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m3s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 15m9s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m11s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 15m11s
Build Packages / build:rpm (rocky8) (push) Successful in 15m12s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m33s
Build Packages / XDS test (neggia plugin) (push) Successful in 9m6s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / XDS test (durin plugin) (push) Successful in 10m0s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (JFJoch plugin) (push) Successful in 9m58s
Build Packages / Build documentation (push) Successful in 54s
Build Packages / build:rpm (rocky9) (push) Successful in 12m47s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m36s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m25s
Build Packages / DIALS test (push) Successful in 13m44s
Build Packages / Unit tests (push) Successful in 59m41s
|
||
|
|
c86beeb393 |
rotation indexer: fix sub-range crash, explicit angle, settings + guards
Running rotation indexing on a sub-range (e.g. images 60-120) segfaulted: the first pass passed the *global* image number to RotationIndexer::ProcessImage, which indexes v_ (sized to the run's image count) -> out-of-bounds write. - ProcessImage now takes an explicit mid-exposure angle (optional; falls back to the goniometer at the image index), so the indexer no longer assumes its slot index equals the goniometer image index. IndexAndRefine supplies it via RotationAngle(), matching the angle used for prediction. Added a bounds guard in ProcessImage so a bad index can never corrupt memory. - JFJochProcess feeds the rotation indexer the local ordinal (not the global index), and shifts the goniometer (start += start_image*incr, incr *= stride, per-image wedge preserved) so local index i maps to the angle of original image start+i*stride - fixing rotation angles for the whole sub-range pipeline (prediction, refinement, output), not just the indexer. - Expose "Rotation images" (number used for the first pass) in the job dialog, enabled when rotation indexing is on. (Count > available is already clamped by select_equally_spaced_image_ordinals.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
0c1babd0ca |
CMake: provide Eigen externally again; fix cpack NSIS icon escape
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m24s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m39s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m54s
Build Packages / build:rpm (rocky8) (push) Successful in 14m47s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 14m57s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m27s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m38s
Build Packages / XDS test (durin plugin) (push) Successful in 8m7s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m44s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m22s
Build Packages / Build documentation (push) Successful in 1m0s
Build Packages / build:rpm (rocky9) (push) Successful in 12m15s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m52s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m25s
Build Packages / DIALS test (push) Successful in 12m49s
Build Packages / Unit tests (push) Successful in 58m37s
Revert Eigen from the FetchContent OVERRIDE_FIND_PACKAGE vendoring ( |
||
|
|
5064b5ba47 |
image_analysis: force Ceres to build without CUDA
USE_CUDA is a Ceres cache STRING (default "default" = auto-detect), not an option(), so a plain SET was shadowed by the cache default and CUDA got enabled on MSVC. Force it OFF in the cache instead. Also drop two dead settings: MINIGLOG (Ceres uses abseil logging now, no longer referenced) and EIGENSPARSE ON (already Ceres' default). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
cd394c5249 |
CMake: vendor Eigen (5.0.1) and libjpeg-turbo so the build is self-contained
Build Packages / Unit tests (push) Failing after 2m41s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 2m34s
Build Packages / build:rpm (rocky8) (push) Failing after 2m29s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 2m38s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 2m34s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 2m43s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 2m49s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 2m56s
Build Packages / Generate python client (push) Successful in 21s
Build Packages / Build documentation (push) Successful in 1m9s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404) (push) Failing after 2m15s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 2m17s
Build Packages / XDS test (JFJoch plugin) (push) Failing after 2m24s
Build Packages / build:rpm (rocky9) (push) Failing after 2m34s
Build Packages / XDS test (neggia plugin) (push) Failing after 2m23s
Build Packages / DIALS test (push) Failing after 2m29s
Build Packages / XDS test (durin plugin) (push) Failing after 2m41s
Two deps the Linux build picked up from the system were absent on Windows. Bundle both, unconditionally (matching how libtiff/FFTW are vendored), so the tree builds without system Eigen/JPEG: - Eigen 5.0.1 via FetchContent with OVERRIDE_FIND_PACKAGE, so every find_package(Eigen3) -- ours, Ceres', and ffbidx' -- resolves to this copy and the requested 3.4 version is satisfied by the newer major. ffbidx's bundled eigen submodule is disabled (GIT_SUBMODULES "" on fast-indexer) so it no longer creates a duplicate Eigen3::Eigen target. Verified on a CUDA build: Ceres 2.3.0, the analysis libs, and ffbidx's CUDA code all compile against 5.0.1. - libjpeg-turbo 3.0.4 via ExternalProject (upstream discourages add_subdirectory); built+installed static and imported as JPEG::JPEG, replacing find_package(JPEG) in preview/. SIMD is lazy: WITH_SIMD=ON + REQUIRE_SIMD=OFF means NASM-accelerated when nasm is present, otherwise a warning and a scalar build (no hard failure). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
ebc28744e2 |
viewer: fix MSVC compatibility in viewer-reachable code
Address portability issues found building jfjoch_viewer with MSVC:
- common/{ADUHistogram,AzimuthalIntegrationProfile}.h and
image_analysis/spot_finding/StrongPixelSet.h only need DeviceOutput,
so include fpga/pcie_driver/jfjoch_fpga.h (plain-C, self-contained)
directly instead of acquisition_device/AcquisitionDevice.h, which
dragged <unistd.h> into the viewer tree.
- common/time_utc.h: guard gmtime_r/timegm/localtime_r with the MSVC
equivalents (gmtime_s/_mkgmtime/localtime_s) under _WIN32; drop the
duplicated includes and add the headers used directly.
- gemmi_gph/gemmi/utf.hpp: vendor the upstream gemmi header; fileutil.hpp
includes it on Windows for UTF8_to_wchar but it was never vendored.
- writer/HDF5Objects.cpp: ExtractFilename returns path.filename().string()
(std::filesystem::path has no implicit conversion to std::string on
Windows, where it is wchar_t-based).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|
|
0220c6376d |
cmake: fetch libtiff and FFTW instead of relying on system libs
Both are leaf deps (JFJochPreview / JFJochIndexing) that only our own code looks for, so building them ourselves removes the system-package lottery and gives a reproducible, statically-linked build on every platform. - libtiff: FetchContent, library only (jbig/zstd/lzma/jpeg/old-jpeg/tools/ tests off). The C++ binding (TIFF::CXX / libtiffxx) is packaged inconsistently across distros -- missing on Rocky 9 -- and absent on Windows, so find_package(TIFF COMPONENTS CXX) was unreliable; that call is removed and JFJochPreview links the tiff/tiffxx targets directly. GitHub mirror because upstream (gitlab) is unreachable from some restricted hosts. - FFTW: FetchContent single precision (ENABLE_FLOAT) from the release tarball -- the git repo ships no pre-generated codelets (needs OCaml genfft). It's now always available, so the CPU FFT indexer is always built and JFJOCH_USE_FFTW always defined; the "FFTW disabled" path is gone. Static (libfftw3f.a) via the global BUILD_SHARED_LIBS OFF. Verified on Linux: jfjoch_viewer builds and links libfftw3f.a + libtiff*.a, all static. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
a433399106 |
image_analysis: surgical ROI-only entry points in MXAnalysisWithoutFPGA
Add three entry points so ROI statistics can be (re)computed without a full re-analysis, in support of interactive ROI editing in the viewer: - RebuildROI(): recreate the ROI engine after the ROI set changes (the CudaStream is now kept as a member so the GPU engine can be rebuilt). - AnalyzeROIOnly(): decompress + preprocess + ROI, skipping azimuthal integration, spot finding and indexing (a new image when re-analysis is off). - RunROIOnly(): rerun only the ROI integration on the already-preprocessed image (an interactive ROI move). A full Analyze() still computes ROIs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
d14b8e9e18 | Merge upstream | ||
|
|
5d9e1be814 |
portability: replace M_PI / std::numbers::pi with a host+device-safe PI
M_PI is a POSIX <math.h> extension that MSVC does not define without _USE_MATH_DEFINES. std::numbers::pi (introduced in the viewer guard commit) is C++20, but CUDA here is compiled as C++17 (CMAKE_CUDA_STANDARD 17) and several common/ headers are pulled into .cu device translation units, so std::numbers is not available there. Add common/JFJochMath.h with a dependency-free `constexpr double PI` that works in host code (including MSVC), in CUDA device code, and under C++17/20, and use it everywhere: - common/ and image_analysis/ (incl. CUDA .cu): 78 M_PI occurrences, 22 files - broker/OpenAPIConvert.cpp - viewer/: the 5 files that used std::numbers::pi now use PI, for one consistent convention across the codebase Verified to build: JFJochImageAnalysis (incl. CUDA), jfjoch_viewer, JFJochBroker. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
1558dddbb8 |
indexing: make the resolved-algorithm invariant explicit in the pool
IndexerThreadPool dispatches on DiffractionExperiment::GetIndexingAlgorithm(), which already resolves Auto to a concrete algorithm (FFTW/FFT/FFBIDX) or None; the pool has no policy to resolve Auto itself. The worker handled a stray Auto with a dead branch and silently produced no result when the resolved algorithm had no matching indexer built. - Document on GetIndexingAlgorithm() that it never returns Auto. - Throw a clear internal error at the pool boundary if Auto ever arrives. - In the worker, replace the dead Auto branch with a loud failure for any resolved algorithm that has no matching indexer (e.g. a GPU algorithm on a host without a GPU), instead of returning no result silently. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
58910274bf |
image_analysis: compute ROI statistics in the non-FPGA path
MXAnalysisWithoutFPGA never filled DataMessage.roi, so ROI integrals were only available on the FPGA path. Add a software ROI engine that mirrors the FPGA roi_calc kernel: per-ROI sum, sum of squares, good-pixel count, max and intensity-weighted centre of mass, with each pixel carrying a 16-bit mask so it can contribute to any subset of up to 16 ROIs. New image_analysis/roi/ library (JFJochROIIntegration), structured like azint: a base that precomputes the per-pixel mask and names, a templated CPU engine (generic over pixel type for a future 16-bit path), and a GPU kernel using per-block shared-memory atomics for the STXM case (half-detector ROIs). Masked pixels are excluded entirely; saturated pixels are excluded from the sums but still count towards the max, matching roi_calc exactly. The engine is only constructed when at least one ROI is defined. Downstream CBOR/HDF5 already consume message.roi, so no further changes are needed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
cc925b2668 |
Remove NUMAHWPolicy and the libnuma dependency
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m30s
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 11m13s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m51s
Build Packages / build:rpm (rocky8) (push) Successful in 8m29s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 9m31s
Build Packages / build:rpm (rocky9) (push) Successful in 9m42s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 8m47s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m23s
Build Packages / Generate python client (push) Successful in 19s
Build Packages / Build documentation (push) Successful in 38s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (durin plugin) (push) Successful in 6m18s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m4s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 6m35s
Build Packages / DIALS test (push) Successful in 10m39s
Build Packages / Unit tests (push) Successful in 1h24m58s
NUMA CPU/memory pinning is no longer worthwhile: the FPGA DMA buffers are placed device-local by the kernel (dma_alloc_coherent), the big RAM ring buffer is random-access (first-touch handles placement), and GPU work is already spread across all visible devices. So drop the pinning entirely and with it libnuma. - Delete NUMAHWPolicy; the only concern worth keeping - GPU selection - is done directly via pin_gpu() (round-robin over visible GPUs) in the indexer pool and the Lite analysis threads. CPU-only threads (FPGA acquire/pedestal/summation/frame-transform) no longer bind anything. - Drop get_gpu_numa_node() (sysfs lookup) - only SelectGPUAndItsNUMA used it. - numa_policy broker setting is deprecated and ignored (kept in the API for backward compatibility; warns once on startup). - Remove NUMA_LIBRARY / numa.h / numaif.h detection from CMake. - Docs: drop the NUMA dependency, remove the numa_policy config example, and document running multiple brokers on disjoint GPUs via CUDA_VISIBLE_DEVICES. - Remove NUMA_GPU_REVIEW.md (the planning note; this work is now done). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
2ba28aea0e |
LoadFCalcFromMtz: fall back to an intensity column when F-model is absent
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m3s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m33s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m47s
Build Packages / build:rpm (rocky8) (push) Successful in 12m50s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m10s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m48s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 14m29s
Build Packages / XDS test (durin plugin) (push) Successful in 7m50s
Build Packages / Generate python client (push) Successful in 30s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m25s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 38s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m44s
Build Packages / build:rpm (rocky9) (push) Successful in 12m15s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 9m4s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m20s
Build Packages / DIALS test (push) Successful in 11m48s
Build Packages / Unit tests (push) Successful in 56m41s
PixelRefine's reference can now be a merged/observed-intensity MTZ, not only a calculated F-model. If F-model is missing, read a mean-intensity column (IMEAN, which a jfjoch merge writes; also I/IOBS/Iobs/I-obs, or any 'J'-type column) and use it directly as I_ref (F-model is squared, intensities are not). This enables a SELF-SEEDED / EM-style workflow: run a first pass (traditional integration, or PixelRefine against an external reference) to produce a merge, then re-run PixelRefine with `-z <that merge>.mtz` so it scales against the data's own intensities - free of the reference structure's non-isomorphism bias - and iterate. Verified: a jfjoch IMEAN merge loads as the reference and PixelRefine runs against it (crystal 2, 55279 reflections, CC1/2 94.3). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
545ebdf868 |
Merge: per-crystal CC1/2-delta rejection (--reject-delta-cchalf)
CrystFEL deltaCChalf-style per-crystal quality filter for heterogeneous serial data. Each image is assigned to one CC1/2 half, so removing it perturbs only that half's per-reflection means; deltaCChalf_i = CC1/2(all) - CC1/2(without image i). A negative value means dropping the image RAISES CC1/2 (it disagrees with the consensus). Images whose deltaCChalf is a low-side statistical outlier (< mean - N*stddev) are skipped when merging. Reference-free. Two passes over the retained integration outcomes; per-image contributions are re-derived rather than stored, so memory stays O(unique reflections + images) for full 200k-frame runs. New CLI flag --reject-delta-cchalf <N> (default: off). Validation (jet FFBIDX +C+S, sigma4): removing 17/4000 (3 sigma) raises CC1/2 95.1->96.1%, CCref 54.9->55.2; 2 sigma -> 96.1/55.3. Dataset-appropriate: it HELPS heterogeneous serial data (some crystals genuinely bad) but slightly trims a homogeneous single rotation crystal (c2 94.6->93.8 - no bad crystals, the relative cut still removes the tail), so it is opt-in. R-free is the real test (user's full 200k). Note: the reported overall N_obs still counts all observations; the exported merge (and CC1/2) correctly exclude the rejected images. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
f878fb9d5d |
SpotFindingSettings: Default signal to noise ratio is 4
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 18m31s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 19m45s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 17m10s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 16m15s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 19m49s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 22m56s
Build Packages / build:rpm (rocky8) (push) Successful in 21m26s
Build Packages / build:rpm (rocky9) (push) Successful in 24m57s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 21m35s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 18m27s
Build Packages / DIALS test (push) Successful in 25m48s
Build Packages / XDS test (durin plugin) (push) Successful in 15m16s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 16m12s
Build Packages / XDS test (neggia plugin) (push) Successful in 14m35s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / Build documentation (push) Successful in 1m25s
Build Packages / Create release (push) Skipped
Build Packages / Unit tests (push) Successful in 42m19s
|
||
|
|
929e6e1fa0 |
FFTIndexer: pick peaks by prominence above a local background, not raw magnitude
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 26m41s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 29m5s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 25m41s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 24m59s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 29m21s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 30m14s
Build Packages / build:rpm (rocky8) (push) Successful in 24m32s
Build Packages / build:rpm (rocky9) (push) Successful in 28m25s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m5s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 23m57s
Build Packages / DIALS test (push) Successful in 33m44s
Build Packages / XDS test (durin plugin) (push) Successful in 20m34s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 16m31s
Build Packages / XDS test (neggia plugin) (push) Successful in 15m11s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / Build documentation (push) Successful in 1m24s
Build Packages / Create release (push) Skipped
Build Packages / Unit tests (push) Successful in 41m41s
The per-direction peak search took argmax|spec|. The projected-spot histogram has a broad low-frequency ENVELOPE (spots cluster near the origin) whose magnitude can exceed the true lattice peaks, so on weak / pink-beam frames every direction reported a short envelope vector (~10 A) and the real 38-79 A axes never surfaced -> 0 candidate cells -> 0% indexing. (Diagnosed on the lyso jet: the FFT returned only 10-15 A vectors, the true axes entirely absent.) Subtract a running-mean background of half-width ~15 A and pick the peak by its PROMINENCE (mag - background) instead. The smooth envelope cancels to ~0 while sharp lattice peaks - fundamentals and harmonics alike - keep their height, so the real axes win. The prominence is also reported as the magnitude, so FilterFFTResults ranks directions by real-peak strength rather than envelope. Ported identically to CPU (prefix-sum window) and GPU (sliding-window in the kernel). Validation (lyso, de-novo): jet FFT 0% -> 20.5% (CPU and GPU identical; vs FFBIDX 27%); crystal 2 95.3% -> 95.5% (no regression, CC1/2 95.8 / CCref 92.7 unchanged). The ~15 A window is the validated optimum (wider over-smooths, narrower under-removes the envelope). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
f2f95c44f6 |
FFTIndexer: name the histogram axis one_over_d (1/d), not q/Q
The FFT histogram extent was written as maxQ = 2*pi/HighRes (the powder Q = 2*pi/d convention) while the bin width and spot coordinates use the internal 1/d convention - a unit conflation. It is benign: len_coeff = 2*max_length/histogram_size carries the same factor, so recovered cell lengths are correct; the 2*pi only acts as a ~6.28x zero-padding of the histogram. Rewrite it transparently: one_over_d_max = 1/HighRes (1/d), with the 2*pi kept as an explicitly-named oversampling factor. In this codebase Q always denotes 2*pi/d, so 1/d is named one_over_d (never q). histogram_size is numerically identical to before, so behaviour is unchanged (FFT de-novo crystal 2 95.44%, bit-identical merge). Documented that the exact padding amount is load-bearing at the marginal-frame level (rounding 2*pi to a nearby integer shifts indexing ~0.5-1%). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
e1e2ca8e49 |
IndexAndRefine: unify cell setting across indexers, keep FFBIDX neutral
Follow-up to
|
||
|
|
40da1aab13 |
IndexAndRefine: conventionalise de-novo lattice when cell+SG are given
Providing both a unit cell (-C) and space group (-S) silently broke the de-novo indexers (FFT/FFTW) -> 0% indexing, while each flag alone worked. Root cause: the `sg && GetUnitCell()` branch fed the indexer's raw lattice straight into symmetry-constrained refinement. FFBIDX returns the lattice already in the reference setting, but FFT/FFTW return an arbitrarily-oriented Niggli-primitive cell; enforcing the crystal system on its mis-assigned axes rejects every frame. Fix: for de-novo indexers only, reduce the lattice to the conventional setting (LatticeSearch) before refinement. FFBIDX keeps using its raw lattice as-is, so it is byte-identical to before (no regression). niggli_class stays unassigned (0) in this branch - it is a property of the primitive cell incl. centering, which LatticeSearch cannot recover from a user-supplied (possibly centered, e.g. C2) cell. A proper primitive-cell indexing path (CrystFEL-style) is deferred. Validation (lyso, -C79,79,38 -S96): crystal 2 FFT : 0% -> 94.9% (CC1/2 95.8, CCref 92.7) = de-novo quality crystal 2 FFBIDX: 71.4% (CC1/2 94.6) - byte-identical jet FFBIDX: 27.2% (CC1/2 91.9) - byte-identical (Jet FFT stays 0% - that is a separate, still-open issue: de-novo finds no consensus on the weak serial-still frames, 0% even without -S; to investigate.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
90e804acd7 |
v1.0.0-rc.150 (#60)
Build Packages / Unit tests (push) Successful in 42m49s
Build Packages / DIALS test (push) Successful in 29m45s
Build Packages / XDS test (durin plugin) (push) Successful in 19m27s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 18m52s
Build Packages / XDS test (neggia plugin) (push) Successful in 13m0s
Build Packages / Generate python client (push) Successful in 28s
Build Packages / Build documentation (push) Successful in 1m25s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m53s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m49s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m7s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m9s
Build Packages / build:rpm (rocky8) (push) Successful in 13m24s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m11s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 14m15s
Build Packages / build:rpm (rocky9) (push) Successful in 14m30s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 8m14s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m5s
* jfjoch_broker: When in FPGA workflow (with PSI detectors) azimuthal integration might be forced to CPU - this will require more computational power, but it enables more integration bins and reports standard deviation of each bin. * jfjoch_broker: Raise error if one is in FPGA flow and there are too many azimuthal integration bins. Reviewed-on: #60 |
||
|
|
ecdb7048a0 |
PixelRefine: drop crystal-system idealisation, use the indexed cell as-is
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 22m4s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 24m6s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 26m1s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 25m21s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 25m21s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 25m16s
Build Packages / build:rpm (rocky8) (push) Successful in 24m23s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 22m48s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m18s
Build Packages / build:rpm (rocky9) (push) Successful in 27m54s
Build Packages / Generate python client (push) Successful in 32s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m22s
Build Packages / XDS test (durin plugin) (push) Successful in 19m3s
Build Packages / DIALS test (push) Successful in 30m12s
Build Packages / XDS test (neggia plugin) (push) Successful in 13m46s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 15m34s
Build Packages / Unit tests (push) Successful in 2h33m4s
PixelRefine no longer refines the cell, so the symmetry-constrained cell parameterisation inherited from XtalOptimizer has no manifold to constrain. The decompose->rebuild round-trip (Gram-Schmidt orientation + symmetry B matrix) merely reconstructed the lattice columns it started from, and for non-triclinic systems it re-idealised the indexed cell (averaging a,b for tetragonal; a,b,c for cubic; forcing alpha=gamma=90). Replace both six-way switches (PredictedNode and BuildParameterBlocks) with a single path: take the three real-space lattice columns (latt.Vec0/1/2()) directly and form the reciprocal node via the general cross-product inverse. This reproduces every crystal system exactly from the actual cell, is more faithful (no re-idealisation), and removes the crystal_system field plus two now-unused includes. PredictedNode de-templated (only ever called with double). Crystal symmetry still lives where it belongs: indexing (upstream) and merging (downstream via the space-group HKL key). A/B (both lyso P4_3 2_1 2 crystals, refined under tetragonal constraint, so the old idealisation was already a no-op): stat tables bit-identical across all shells -- crystal 2 CC1/2 94.6% / CCref 92.5%, jet CC1/2 91.9% / CCref 55.8% -- the only delta is 4th-digit float-ordering noise in the error-model b coefficient (0.8143->0.8141, same ISa). Same merged intensities => R-free unchanged. Net -81 lines. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
8a9d80eb71 |
PixelRefine: profile multiplier as --profile-multiplier flag; outlier rejection default off
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 29m33s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 29m48s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 29m54s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 31m23s
Build Packages / build:rpm (rocky8) (push) Successful in 31m27s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 33m18s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 33m33s
Build Packages / XDS test (durin plugin) (push) Successful in 19m8s
Build Packages / Generate python client (push) Successful in 44s
Build Packages / Build documentation (push) Successful in 1m42s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (neggia plugin) (push) Successful in 20m33s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 24m26s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 22m0s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 26m3s
Build Packages / build:rpm (rocky9) (push) Successful in 29m41s
Build Packages / DIALS test (push) Successful in 33m17s
Build Packages / Unit tests (push) Successful in 2h52m56s
(1) Promote the Term-2 profile-width multiplier from the PR_RMULT env knob to a real BraggIntegrationSettings::profile_multiplier (default 6) + jfjoch_process --profile-multiplier flag. Removes the last PR_* env knob; IndexAndRefine reads the setting. (2) Flip the merge outlier rejection default to OFF (ScalingSettings outlier_reject_nsigma 6 -> 0); it stays available via --reject-outliers <nsigma>, since it helps the jet R-free but is dataset-dependent (drops crystal-2 CCref). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
102a2a7c81 |
PixelRefine: strip experimental env knobs (orientation, sweep, Lorentz, ML census)
Remove the env-gated experiments that A/B'd to dead-ends or are no longer needed, returning PixelRefine to the clean factored Terms 1+2 plus the one validated keeper (r1_multiplier, default 6): - PR_ORIENT (per-image orientation refinement): R-free no-op (0.2618 vs 0.2625) - XtalOptimizer's orientation is already optimal. Removes ShoeboxResidual, OrientationRegularizer, PixelObs::weight, the refinement block and its fields. - PR_SWEEP (orientation + cell-scale sweep): R-free no-op, degraded high-res CC1/2 (per-image overfit). Removes SweepOrientationCell and its fields. - PR_LORENTZ (rotation Lorentz/zeta): hurt both directions (the factored partiality already subsumes it); was already reverted. - PR_MLCENSUS (multi-lattice census in AnalyzeIndexing): served its purpose (~3-5% of jet frames are multi-lattice; shelved). PR_RMULT (the validated Term-2 multiplier knob) is kept. Defaults unchanged: crystal 2 / jet / hybrid -R -r pixelrefine all reproduce. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
6f733d74c2 |
Merge: make outlier rejection a ScalingSettings parameter + CLI flag, default 6
Promote the per-observation merge outlier rejection from the temporary PR_REJECT env knob to a real setting: ScalingSettings::OutlierRejectNsigma (default 6, <=0 disables), driven into MergeOnTheFly via the constructor, with a --reject-outliers CLI flag in jfjoch_process. Default-on at 6 sigma matches XDS (MISFITS/REJECT) and DIALS (normalised-deviation test); it validated on the full-jet R-free (0.2625 -> 0.2585). Applies to both the PixelRefine and classical merge paths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
a47b376dc3 |
Merge: per-observation outlier rejection (env-gated PR_REJECT)
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 24m50s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 26m45s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 26m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 28m30s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 29m47s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 30m59s
Build Packages / build:rpm (rocky8) (push) Successful in 25m11s
Build Packages / XDS test (durin plugin) (push) Successful in 20m7s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 24m53s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 23m52s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m28s
Build Packages / build:rpm (rocky9) (push) Successful in 27m58s
Build Packages / DIALS test (push) Successful in 32m4s
Build Packages / XDS test (neggia plugin) (push) Successful in 13m6s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 14m59s
Build Packages / Unit tests (push) Successful in 2h15m31s
At the jet's ~1000x multiplicity R-free is bias-limited, and the merge had NO outlier rejection - serial data zingers/overlaps/mis-indexed frames bias every merged mean. Add a robust per-observation cut: drop observations whose corrected intensity lies > reject_nsigma error-model sigmas from the reflection's MEDIAN. The error-model sigma already captures the genuine (partiality) scatter, and the median is a robust centre, so only the tail beyond the real spread is removed - not good partials. The median is computed in RefineErrorModel (which already pools the observations per reflection); AddImage applies the cut. Env-gated via PR_REJECT=<nsigma> (off by default); logs the count removed. On the jet (CC proxy) it lifts CCref +8 (nsigma 6, 0.6% cut) to +11 (nsigma 3, 7.4% cut) - the cut is vs the data's own median, not the reference, so the gain is real cleaner means. R-free validation + the nsigma sweet spot (over-rejection risk at low nsigma) are for Filip's full-jet R-free. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
45ee8c2b40 |
PixelRefine: env-gated orientation + cell-scale sweep (PR_SWEEP) for R-free A/B
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 26m30s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 29m15s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 29m56s
Build Packages / build:rpm (rocky8) (push) Successful in 31m20s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 31m34s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 32m53s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 33m10s
Build Packages / XDS test (durin plugin) (push) Successful in 20m49s
Build Packages / Generate python client (push) Successful in 33s
Build Packages / XDS test (neggia plugin) (push) Successful in 20m2s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 24m10s
Build Packages / Build documentation (push) Successful in 1m20s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m24s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 22m27s
Build Packages / build:rpm (rocky9) (push) Successful in 29m39s
Build Packages / DIALS test (push) Successful in 29m47s
Build Packages / Unit tests (push) Successful in 2h48m9s
R-free validation (full jet, 1.5 A) confirmed the r1_multiplier fix: PR x6 beats traditional (R-free 0.2625 vs 0.2802), the multiplier optimum is ~6 (x6==x9 on R-free; x9 only buys CC1/2 internal consistency), and per-image orientation *refinement* is a no-op (0.2618 vs 0.2625). Re-adds the reference-driven orientation + uniform cell-scale SWEEP behind PR_SWEEP (off by default) to test whether the cell-scale degree of freedom - which the gradient orientation refinement lacks, and which moves the high-res shells radially - helps R-free at 1.5 A on serial data. CCref is a near-no-op on the jet (as for the gradient path), but that does not certify R-free, so it is left for validation. NOTE: PR_RMULT / PR_ORIENT / PR_SWEEP remain temporary diagnostic env knobs; once the sweep R-free is in, bake r1_multiplier=6, drop the no-op paths, strip the knobs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
cfcd4c9e56 |
PixelRefine: R1 multiplier (fix tight-Term2 regression) + env-gated orientation refine
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 23m2s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 30m11s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 31m15s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 31m37s
Build Packages / build:rpm (rocky8) (push) Successful in 31m43s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 32m28s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 34m23s
Build Packages / Unit tests (push) Failing after 40m38s
Build Packages / Generate python client (push) Successful in 46s
Build Packages / Build documentation (push) Successful in 1m46s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (rocky9) (push) Successful in 29m1s
Build Packages / XDS test (durin plugin) (push) Successful in 20m29s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 20m17s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 22m18s
Build Packages / XDS test (neggia plugin) (push) Successful in 19m12s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 24m23s
Build Packages / DIALS test (push) Successful in 28m49s
Full-jet R-free showed the factored model regressed vs the traditional pipeline (R-free 0.34 vs 0.26, CCref 58 vs 76), traced to Term 2 using the raw measured profile width: it is too tight (~0.002 A^-1), so the template sits off the ~0.4 px centroid-floor scatter and underestimates the intensity (box-sum is immune). Fix, XDS-style (integrate over ~6 sigma): multiply the measured R1 by r1_multiplier (default 6) before use. On the jet at 1.3 A this recovers CCref 55.2 -> 59.3 (~ traditional's 60.5); crystal 2 -0.7. Tunable via env PR_RMULT for R-free. Also reinstates the pre-factored per-image orientation refinement (per-pixel ShoeboxResidual against the shoebox, regularised to the spot-centroid orientation, re-predict), behind env PR_ORIENT (off by default), to A/B its effect on serial-data R-free. On the jet CCref it is a no-op (XtalOptimizer orientation already at the optimum), but CCref is a weak R-free proxy here, so it is left for R-free validation. NOTE: PR_RMULT / PR_ORIENT are temporary diagnostic env knobs; the final multiplier value and the orientation-refine decision are to be fixed against R-free, then baked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
bf6efc7fe9 |
Integration radius: default r1=4, CLI flag, PixelRefine shares the knob
Bumped the default signal-box radius to r1=4 (r2=6, r3=8): on the lysozyme jet (1% DMM) it lifts CCref 50.1->52.2% and CC1/2 90.8->92.5% (its broadened spots spill past a radius-3 box), is neutral on the mono crystal and on the classical integrator. Added 'jfjoch_process --integration-radius <r1|r1,r2,r3>' (a single value derives r2=r1+2, r3=r1+4) and wired PixelRefine's shoebox radius to BraggIntegrationSettings::GetR1() so it shares the classical integrator's knob. (Explored but rejected: an elliptical/anisotropic Term-2 profile. The jet's tangential spots are mildly anisotropic - axis ratio 1.15->1.44 low->high res, azimuthal mosaic, separate from the radial DMM bandwidth - but using the measured 2x2 covariance as the profile DEGRADED the jet, CC1/2 92.5->83.5: the tight measured width loses to a generous aperture, same lesson as the radius bump.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
100fe7b7e7 |
PixelRefine: make factored Terms 1+2 the model, remove old wiring
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 25m0s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 26m42s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 27m7s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 28m25s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 29m44s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 32m14s
Build Packages / build:rpm (rocky8) (push) Successful in 24m39s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 23m52s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m19s
Build Packages / Generate python client (push) Successful in 23s
Build Packages / XDS test (durin plugin) (push) Successful in 20m42s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (rocky9) (push) Successful in 27m2s
Build Packages / Build documentation (push) Successful in 1m23s
Build Packages / DIALS test (push) Successful in 31m5s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 14m55s
Build Packages / XDS test (neggia plugin) (push) Successful in 13m7s
Build Packages / Unit tests (push) Successful in 2h14m40s
PixelRefine is now an intensity-only operation: geometry is fixed (refined upstream by XtalOptimizer) and the only objective is the factored per-reflection likelihood (FACTORED_MODEL.md Terms 1+2) - measured per-resolution profile width R1 plus one Fisher-weighted intensity/scaling residual per reflection, fitting the per-image scale G and B. Validated on crystal 2 (fixed_master.h5 as stills, 1.7 A): CC1/2 84-92%, CCref 77-92%, flat - reproduces the env-flag prototype and matches the rotation path from the stills path. Removed: - the per-pixel ShoeboxResidual loss and PixelResidual cost functor; - all in-PixelRefine geometry refinement (orientation/cell/beam/distance/R), the regularised-orientation LSQ, signal-weighting, and the global sweep; - Term 3 (per-spot recentring) - a confirmed no-op on both crystals; - the diagnostic scaffolding (covariance, centroid, adaptive_R1) and the PR_* env knobs + stderr dumps in IndexAndRefine; - the PredictImage/ChiSquaredImage renderers and the entire viewer PixelRefine window/table/params + worker bindings + shoebox overlay. The sweep box-integrator background median became mean (consistency) by virtue of removing the sweep. METHODS.md rewritten for the current model; findings recorded in FINDINGS-2026-06.md. Net -2200 lines. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
6f2033db00 |
PixelRefine: checkpoint before cleanup (factored model + all diagnostic levers)
Snapshot of the messy state: factored likelihood Terms 1+2+3 behind PR_* env flags (PR_INTENSITY/PR_SHAPE/PR_RECENTER) alongside the old per-pixel ShoeboxResidual, plus diagnostic scaffolding (PR_R0/R1/COV/FIX_R0/FIX_R/ ADAPT_R1/CENTROID/RECENTER) and the FACTORED_MODEL.md spec. Next commit makes Terms 1+2 the model and strips all of this. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
c93d381dc8 |
Error model: harden the fit against pathological inputs (code review)
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 25m44s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 29m14s
Build Packages / build:rpm (rocky8) (push) Successful in 30m58s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 31m34s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 31m40s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 32m5s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 33m52s
Build Packages / XDS test (durin plugin) (push) Successful in 19m26s
Build Packages / Generate python client (push) Successful in 38s
Build Packages / Build documentation (push) Successful in 1m30s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (neggia plugin) (push) Successful in 20m15s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 22m14s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 23m41s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m45s
Build Packages / build:rpm (rocky9) (push) Successful in 29m38s
Build Packages / DIALS test (push) Successful in 34m2s
Build Packages / Unit tests (push) Successful in 2h19m4s
Addresses code-review findings on RefineErrorModel: - Floor the 1/dev^2 bin weight relative to the data scale (1e-3 of the median bin dev^2), not an absolute 1e-30: a near-zero-scatter bin could otherwise acquire a runaway weight and hijack the global (a,b) fit. - Reject a near-collinear normal-equation system relatively (det > 1e-10*Ass*AII) instead of with an absolute threshold that an ill-conditioned fit can pass. - Reset the model to identity at entry so any early return leaves it inactive rather than keeping a stale a/b alongside a freshly-cleared mean map (which would make CorrectedSigma fall back to the per-observation I). - PixelRefine: correct the orient_prior comment - with the sweep on, the LSQ anchor is the swept orientation (intended), not the spot-centroid one. Verified unchanged on the lyso test set (ISa 1.1, CC1/2 90.3%). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
e6a50b45c7 |
Integration: mean background + global error model (trustworthy sigmas)
Background estimate: use the mean of the local ring, not the median. For a right-skewed (Poisson) background the median sits below the mean, so subtracting it under-subtracts and biases every weak intensity positive; over multiplicity this becomes fake <I/sig> of a few in no-signal high-resolution shells. Fixed in both PixelRefine and BraggIntegrate2D (the classical route had the same bug). <I/sig> now tracks CC honestly and the true resolution limit is visible. Error model: fit a global a, b (XDS form sigma'^2 = a*sigma^2 + (b*I)^2) from the scatter of symmetry equivalents at the merge level (so both integrators benefit), and print it with ISa = 1/b in jfjoch_process. The (b*I)^2 term uses the reflection mean (not the per-observation I_i, which biases the weights and collapses CC); a,b come from a relative-weighted bin regression. Replaces the earlier per-resolution-shell variant, which was partly masking the background bias. METHODS.md: document both (Sections 6-7), integrator-agnostic. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|
|
3cdf26232c | PixelRefine: Document on local changes | ||
|
|
db68c8dc38 |
PixelRefine: Results seem to be much better
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 25m3s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 29m53s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 30m11s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 31m27s
Build Packages / build:rpm (rocky8) (push) Successful in 31m39s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 32m50s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 34m20s
Build Packages / XDS test (durin plugin) (push) Successful in 20m11s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 23m17s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m25s
Build Packages / XDS test (neggia plugin) (push) Successful in 19m31s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 21m58s
Build Packages / build:rpm (rocky9) (push) Successful in 30m10s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m52s
Build Packages / DIALS test (push) Successful in 29m34s
Build Packages / Unit tests (push) Successful in 2h12m57s
|
||
|
|
47dc19dd03 |
PixelRefine: Improvements to accept more reasonable count of reflections
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 21m4s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 17m57s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 20m42s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 17m29s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 19m56s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 23m29s
Build Packages / build:rpm (rocky8) (push) Successful in 20m41s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 20m30s
Build Packages / build:rpm (rocky9) (push) Successful in 24m48s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / Build documentation (push) Successful in 1m27s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 20m52s
Build Packages / XDS test (durin plugin) (push) Successful in 17m17s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 16m57s
Build Packages / XDS test (neggia plugin) (push) Successful in 14m40s
Build Packages / DIALS test (push) Successful in 27m3s
Build Packages / Unit tests (push) Successful in 2h20m37s
|
||
|
|
d31063ca3f |
PixelRefine: Some improvements
Build Packages / Generate python client (push) Successful in 23s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (rocky9) (push) Failing after 4m58s
Build Packages / Build documentation (push) Successful in 1m25s
Build Packages / XDS test (neggia plugin) (push) Successful in 13m57s
Build Packages / XDS test (durin plugin) (push) Successful in 15m44s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 16m9s
Build Packages / DIALS test (push) Successful in 22m45s
Build Packages / Unit tests (push) Successful in 1h44m30s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 3m0s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 3m4s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 3m12s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 3m58s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 4m20s
Build Packages / build:rpm (rocky8) (push) Failing after 4m18s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 4m55s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 4m20s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 4m17s
|
||
|
|
bd5fef7f61 |
PixelRefine: Simplify (remove Lorentz correction, remove background from azimuthal integration)
Build Packages / Unit tests (push) Successful in 1h38m51s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 31m32s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 34m58s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 30m13s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 26m45s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 34m5s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 35m14s
Build Packages / build:rpm (rocky8) (push) Successful in 31m32s
Build Packages / build:rpm (rocky9) (push) Successful in 34m58s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 24m12s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 20m34s
Build Packages / DIALS test (push) Successful in 25m49s
Build Packages / XDS test (durin plugin) (push) Successful in 16m48s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 18m47s
Build Packages / Generate python client (push) Successful in 48s
Build Packages / XDS test (neggia plugin) (push) Successful in 17m11s
Build Packages / Build documentation (push) Successful in 1m39s
Build Packages / Create release (push) Skipped
|
||
|
|
59281f6330 |
Revert "Bragg integration: option to use azimuthal integration profile"
This reverts commit
|
||
|
|
e4230bc14e | Bragg integration: option to use azimuthal integration profile | ||
|
|
e051eed033 |
jfjoch_process: Remove postrefinement
Build Packages / Unit tests (push) Failing after 2s
Build Packages / build:rpm (rocky8_sls9) (push) Failing after 2m55s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Failing after 27m24s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 27m47s
Build Packages / build:rpm (rocky8_nocuda) (push) Failing after 28m4s
Build Packages / build:rpm (rocky9) (push) Failing after 29m15s
Build Packages / build:rpm (rocky8) (push) Failing after 29m26s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 29m57s
Build Packages / Generate python client (push) Successful in 27s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 31m0s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m32s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 29m16s
Build Packages / XDS test (neggia plugin) (push) Successful in 14m37s
Build Packages / XDS test (durin plugin) (push) Successful in 16m33s
Build Packages / build:rpm (ubuntu2404) (push) Failing after 17m51s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 16m31s
Build Packages / DIALS test (push) Successful in 23m52s
|
||
|
|
efe882f4b6 |
jfjoch_viewer: Better display (to be tested) of pixel refine
Build Packages / Unit tests (push) Failing after 1s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 25m52s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 29m5s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 29m54s
Build Packages / build:rpm (rocky8) (push) Successful in 31m55s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 32m12s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 32m48s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 35m27s
Build Packages / Generate python client (push) Successful in 25s
Build Packages / build:rpm (rocky9) (push) Successful in 31m59s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m36s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 24m8s
Build Packages / XDS test (neggia plugin) (push) Successful in 17m46s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 21m36s
Build Packages / XDS test (durin plugin) (push) Successful in 19m40s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 19m38s
Build Packages / DIALS test (push) Successful in 26m30s
|
||
|
|
6c85aaba2b |
BraggPrediction: Include X-ray bandwidth
Build Packages / Unit tests (push) Failing after 2s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 23m22s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 25m29s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 25m52s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 27m20s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 28m48s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 30m13s
Build Packages / build:rpm (rocky8) (push) Successful in 24m50s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 24m52s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 24m21s
Build Packages / XDS test (durin plugin) (push) Successful in 21m50s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (rocky9) (push) Successful in 27m59s
Build Packages / Build documentation (push) Successful in 1m18s
Build Packages / DIALS test (push) Successful in 31m37s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 15m24s
Build Packages / XDS test (neggia plugin) (push) Successful in 13m11s
|
||
|
|
5735302691 |
Merge: CC1/2 limit adjustment
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m57s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m51s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m47s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m10s
Build Packages / build:rpm (rocky8) (push) Successful in 13m10s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m27s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 14m16s
Build Packages / XDS test (durin plugin) (push) Successful in 8m36s
Build Packages / Generate python client (push) Successful in 22s
Build Packages / build:rpm (rocky9) (push) Successful in 12m22s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m58s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m18s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m52s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m5s
Build Packages / Build documentation (push) Successful in 38s
Build Packages / DIALS test (push) Successful in 12m2s
Build Packages / Unit tests (push) Successful in 56m39s
|
||
|
|
e4b66f9cd9 |
PIxelRefine: Another iteration
Build Packages / Unit tests (push) Failing after 7m38s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m33s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m11s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m15s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m52s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m12s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m51s
Build Packages / build:rpm (rocky8) (push) Successful in 10m16s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m28s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m50s
Build Packages / Generate python client (push) Successful in 13s
Build Packages / build:rpm (rocky9) (push) Successful in 11m39s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 35s
Build Packages / DIALS test (push) Successful in 13m26s
Build Packages / XDS test (durin plugin) (push) Successful in 6m28s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 6m40s
Build Packages / XDS test (neggia plugin) (push) Successful in 5m35s
|
||
|
|
e8a9b1840d |
PixelRefine: Make it faster by doing one cell calculation per shoe-box
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m30s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m56s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m10s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m24s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m6s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 14m4s
Build Packages / build:rpm (rocky8) (push) Successful in 13m6s
Build Packages / build:rpm (rocky9) (push) Successful in 11m44s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m59s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m9s
Build Packages / DIALS test (push) Successful in 12m4s
Build Packages / XDS test (durin plugin) (push) Successful in 8m50s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m34s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m28s
Build Packages / Generate python client (push) Successful in 17s
Build Packages / Build documentation (push) Successful in 36s
Build Packages / Create release (push) Skipped
Build Packages / Unit tests (push) Failing after 57m12s
|
||
|
|
05711a1077 |
jfjoch_viewer: Add pixel refinw and magnifier windows (to be tested)
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m34s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m54s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m17s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m4s
Build Packages / build:rpm (rocky8) (push) Successful in 13m8s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m31s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 14m6s
Build Packages / build:rpm (rocky9) (push) Successful in 12m39s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m7s
Build Packages / XDS test (durin plugin) (push) Successful in 9m11s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m37s
Build Packages / Generate python client (push) Successful in 17s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m24s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 9m16s
Build Packages / Build documentation (push) Successful in 36s
Build Packages / DIALS test (push) Successful in 11m54s
Build Packages / Unit tests (push) Successful in 57m16s
|
||
|
|
698a98be35 |
PixelRefine: Claude fixed my bugs
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 11m3s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m15s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m13s
Build Packages / build:rpm (rocky8) (push) Successful in 13m9s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m13s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m3s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 14m5s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m2s
Build Packages / XDS test (durin plugin) (push) Successful in 8m48s
Build Packages / Generate python client (push) Successful in 18s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m13s
Build Packages / Build documentation (push) Successful in 42s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m40s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m11s
Build Packages / build:rpm (rocky9) (push) Successful in 12m42s
Build Packages / DIALS test (push) Successful in 12m21s
Build Packages / Unit tests (push) Successful in 58m57s
|
||
|
|
32e91f7287 |
Minor fixes
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m46s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m52s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m54s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 11m35s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m49s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m9s
Build Packages / build:rpm (rocky8) (push) Successful in 9m57s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m53s
Build Packages / build:rpm (rocky9) (push) Successful in 11m18s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m3s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 34s
Build Packages / XDS test (durin plugin) (push) Successful in 8m20s
Build Packages / DIALS test (push) Successful in 12m28s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 6m23s
Build Packages / XDS test (neggia plugin) (push) Successful in 5m23s
Build Packages / Unit tests (push) Successful in 54m9s
|
||
|
|
155c53acd8 | jfjoch_process: First pixel refine integration |