Changelog¶
1.0.0¶
1.0.0-rc.160¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
rugnux: Rotation geometry post-refinement is now on by default (
--rotation-no-postrefineto disable; also a viewer checkbox). A first pass integrates at the header geometry, then the shared detector distance + beam centre and the crystal cell/goniometer-axis are post-refined over all frames (cross-validated, committed only for a small < 1 % move, with the gauge-weak beam centre restrained toward the header); a second pass re-indexes de novo and re-integrates at the refined geometry. The refined pass is the canonical<prefix>_*output; the header-geometry pass is kept as<prefix>_01_*.rugnux: Optional per-batch relative-B correction for rotation (
--relative-b[=deg], default 10°-of-rotation batches when bare, off otherwise) - a cross-validated, curvature-smoothed resolution×dose correction beyond the single global decay slope.rugnux: Always-on radiation-damage report for rotation - the per-image scale correlation-to-merge and mosaicity versus dose, plus the relative B-factor change over the run (first→last) as a scalar and a per-batch relative-B curve, printed to the log and written to the merged mmCIF. Report-only; it never alters the merge.
rugnux: De-novo space-group search ranks candidate lattice centerings by net absences (systematically-absent minus violating), not the gross absent count, fixing an over-centering of a genuinely C-centred lattice to F.
rugnux: Record the producing software (name and version) and the refined detector distance and beam centre in the merged mmCIF (and the software in the MTZ history).
Bragg integration: Carry the box-sum observed centroid through the profile-fit path, so the observed spot centroid is emitted in every integrator mode.
rugnux: Report ISa as the counting-subtracted strong-reflection asymptote, not
1/bof the whole-range fit; it also sets the merged-sigma floor. CC1/2, R-meas and per-obs sigmas unchanged.Frontend: Azimuthal-integration Q fields (Q spacing / Low Q / High Q) accept 5 decimals (was 3), matching the 1e-5
q_spacingminimum; number-field precision is now configurable.rugnux: Add a dataset-wide Wilson B-factor estimate to the merged output (mmCIF, stats table, log); the per-image viewer Wilson B emits NaN for implausible fits.
rugnux: De-novo space-group search vetoes a merohedral-twin over-promotion whose systematic error-model
bballoons past a calibrated bound (keeps R3 as R3, not R32).rugnux: De-novo space-group search decides lattice centering from the strength (mean I/sigma) of the systematically-absent class, not a per-reflection violation count.
rugnux: Recover lattice centering on weak / low-energy data via a floor-independent test (rate of significant absent vs present reflections), fixing a missed I-centring at 5/13 keV.
rugnux: Report anomalous signal-to-noise SigAno = <|I(+)-I(-)|>/
per shell and overall (mmCIF PDBx items + stats-table column); anomalous merges only. rugnux: De-novo space-group search recovers a genuine high-symmetry group on weak data with a broken sigma model by confirming on the systematic-
btest alone (restores an F432 case).rugnux: Print the adopted space group and unit cell as a one-line summary at the end of the run (de-novo or user-fixed
-S).rugnux: Score the radiation-damage decay cross-validation on a sigma-independent (R-meas-like) metric, so a spurious slope can’t pass by reshaping sigmas.
rugnux: Fix de-novo rotation indexing committing a spurious axis-multiple supercell (collapsing to P1) via a cross-scheme smaller-cell tie-break on near-integer volume ratios.
rugnux: Widen refined-cell angle bounds to [30, 150] deg (rotation candidate and per-frame stills refinement); check refined angles against the reference cell.
rugnux:
-S/--space-groupnow accepts a Hermann-Mauguin symbol (e.g.P43212) as well as a space-group number.rugnux: Warn when the chosen cell/space group carries an indexing (merohedral) ambiguity needing a reference to resolve.
Indexing: Requesting the FFTW (CPU) indexer on a GPU node now fails with a clear, actionable message (rotation always uses the GPU FFT indexer there).
rugnux: Stills
--refine-geometry[=N|off]- first-pass bundle-adjust of beam/distance/cell then re-index (default ON with a reference cell); accepts referenceF/FPcolumns.rugnux: Per-image geometry refinement
-r flextries all three algorithms per image and keeps the best (old namemultikept as an alias).rugnux: Experimental stills partiality
--still-partiality(Gaussian excitation-error) and--partiality-uncertainty <num>down-weighting the least-complete partials.rugnux: Default the stills Bragg-integration box to r=6 (integration radii 6, 8, 12).
rugnux: Self-referenced stills scale in a single pass (fixing a weak-data collapse); a reference MTZ (
-z) fixes SG/cell/ambiguity but never anchors the scale (stills and rotation).rugnux: Cap normalised intensity (E^2) on second-lattice overlaps in the de-novo space-group search, so strong overlaps don’t skew the symmetry decision.
rugnux: Fix
--scaleon a self-contained_process.h5(stored reflections and error model reload correctly).rugnux: Add
--spot-low-resolution <num>(default 50 A) and--min-pix-per-spot <num>(default 2) to tune spot finding on weak serial data.jfjoch_viewer: Expose stills processing settings in the settings dock, rename geometry-refinement
multitoflex, and refit the initial image on resize.jfjoch_writer: Remove the CBF and TIFF image writers - only NXmx HDF5 is written (all three layouts remain).
Reader: Treat a negative
total_fluxin a stored dataset as unknown/absent rather than a valid flux.Packaging: Build the self-contained Linux viewer against a static libdbus with glib disabled; add parallel image-build and in-container viewer-verification scripts.
rugnux: Write anomalous data as a standard CCP4 anomalous MTZ (one row per reflection:
IMEAN,I(+)/I(-),F/F(+)/F(-)), readable by aimless/mtz2sca/ANODE.rugnux: Always write merged reflections as both
<prefix>.mtzand<prefix>.cif; the--scaling-outputselector and text.hkloutput are removed.rugnux: Add a detector-plane modulation (flat-field) correction surface to rotation scaling (cross-validated, on by default;
--no-scaling-correctionsdisables all), dropping R-meas.rugnux: Add optional stills detector-plane modulation (
--stills-modulation, default off) - the same cross-validated surface for the on-the-fly stills path.Bragg integration: Local background is now a symmetric trimmed mean of the ring (
--background-trim <f>, default 0.10; monochromatic), improving <I/sigma> and resolution-edge CC1/2.
1.0.0-rc.159¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
rugnux: Add
--model model.pdb- score the merged data against an atomic model and compute initial maps. It reports R-work/R-free (scaling the model to the observed amplitudes with an overall scale, an anisotropic B and a flat bulk solvent - the standard few-parameter model, so a batch of maps stays directly comparable) and writes 2Fo-Fc / Fo-Fc electron-density maps (CCP4) plus a map-coefficient MTZ. The structure itself is not refined; the model is only re-fractionalised into the data cell.rugnux: The merged reflection output now carries French-Wilson amplitudes (|F| and its sigma) next to the intensities - MTZ
F/SIGF, mmCIF_refln.F_meas_au, and the text HKL - computed with the correct centric/acentric Wilson prior and epsilon multiplicity, so a downstream program (e.g. phenix.refine) can refine against amplitudes. The intensity columns are unchanged.rugnux: R-free test-set flags are now assigned deterministically and consistently across symmetry - a Bijvoet pair I(+)/I(-) is never split between the work and free sets, and the assignment is a reproducible per-hkl hash that depends only on the reflection index, so every dataset of one crystal form gets the same ~5% free set (what a multi-dataset campaign such as PanDDA needs). On small data the fraction is floored so the test set stays large enough for a stable R-free (~500 reflections, capped at 10%); it stays flat at 5% on ordinary data. When a reference MTZ carries a
FreeR_flagcolumn its test set is imported instead, letting a whole campaign inherit one shared free set.rugnux: A reference MTZ (
--reference-mtz) can now fix the space group and cell for rotation data too (previously rejected), without being used to scale - the rotation merge stays self-consistent. When the crystal has an indexing (merohedral) ambiguity - a lattice symmetry higher than its Laue symmetry, e.g. P3/P4/P6/C2 - the reference also resolves it: each candidate reindexing (identity plus the twin-law cosets of the metric symmetry) is scored by its intensity correlation against the reference and the data are re-merged in the best-correlating one. This is a metric-preserving relabelling of hkl (the cell is unchanged) and a no-op for a holohedral crystal (which has no twin laws).rugnux:
--modelvalidation now aligns the data to the model before scoring - the observed reflections are reindexed into the model’s enantiomorph when the two differ only by hand (indistinguishable from merged intensities). A merohedral indexing ambiguity is resolved against the reference MTZ when one is given (so a whole campaign shares one indexing convention); only with a model and no reference does validation fall back to fitting each candidate reindexing and keeping the lowest R-free.rugnux: De-novo symmetry - recover a genuine high-symmetry group whose data are imperfectly scaled. Such a merge’s within-orbit chi² lands just past the self-consistency bound (each real symmetry step adds a little systematic scatter), right where a merohedral twin also lands, so the chi² ratio alone cannot separate them. The candidate is now rescued when the extra intensity-proportional systematic error it invokes stays small relative to the confirmed subgroup - a genuine symmetry step gains multiplicity without inflating the merge error model’s b, whereas a twin forces non-equivalent reflections together and b balloons. Fixes a cubic case (I23 instead of I222) with no change to any other crystal in the test battery, including the twins that must stay in their lower symmetry.
Docs: Document the French-Wilson amplitude estimation, R-free flagging, reference-based space-group/ambiguity resolution, and model-based validation/maps in CPU_DATA_ANALYSIS.md.
Frontend: The status-bar pill now shows a progress bar during detector calibration (previously only during measurement), and the calibration state and its button are labelled “Calibration”/“CALIBRATE” (the internal
Pedestalstate name is unchanged for back-compatibility).
1.0.0-rc.158¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
Analysis: The azimuthal-integration solid-angle correction now follows the incidence angle to the detector normal (
cos^3of that angle) instead ofcos^3(2*theta), so it is correct for a tilted detector and matches PyFAIsolidAngleArrayand MAX IV azint (unchanged for an untilted detector). Crystal geometry refinement (XtalOptimizer) no longer silently ignores an imported PONIrot3(rotation about the beam): it is applied as a fixed rotation in the residual so refinement stays consistent with the rest of the pipeline. Polarization and azimuthal binning already honouredrot3through the full PONI rotation.jfjoch_viewer: Open datasets on the WSL2/UNC filesystem (paths starting
\\); write processing outputs next to the input file, with a Browse button and independent_process.h5/ merged.mtz/.ciftoggles; and show the determined space group in the merge-statistics window.jfjoch_viewer: Connect to a broker over
https(an http/https selector in the connect dialog), and keep the HTTP connection alive across reads for faster live-follow.jfjoch_viewer: Time out stalled HTTP requests (5 s) so an unreachable broker cannot hang the reader thread, and drop the cached pixel mask when switching data source.
rugnux: Accept an absolute
-ooutput prefix in offline processing.rugnux: Faster two-pass rotation indexing - the first pass now runs its FFT indexing and geometry refinement in parallel (results unchanged).
rugnux: Rotation indexing now works on standard DECTRIS datasets that store no spots - the first pass finds spots itself instead of failing.
rugnux: De-novo symmetry robustness - don’t over-promote a merohedral twin to the holohedral group (keep e.g. R3, not R32), make the intensity second-moment twinning statistic robust on weak/mis-integrated data, and don’t flag twinning in holohedral Laue classes where no twin law can exist.
jfjoch_writer: Fold the refined beam centre into the NXmx detector
translationvector too (not only the informationalbeam_centerfields), so a reprocessed_process.h5has a self-consistent refined geometry.Robustness: Harden size handling of untrusted input in TIFF reading and raw-TCP frames.
Packaging: The self-contained Linux viewer
.tgznow bundles cuFFT, so it runs without a system CUDA toolkit (.deb/.rpmare unchanged, distro-managed).Docs: Documentation updated to match the current analysis code and CLI.
1.0.0-rc.157¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
rugnux: Rebrand the offline data-processing subsystem as
rugnuxand consolidate all offline analysis into the singlerugnuxbinary -jfjoch_processis nowrugnux, the formerjfjoch_azintis nowrugnux --azint-only, andjfjoch_scaleis nowrugnux --scale(see the new docs/NAMING.md and docs/RUGNUX.md). Scaling and merging are on by default for rotation and stills (--no-mergedisables them), replacing the previous opt-in-M, --scale-merge.rugnux: CLI fixes - default
-Nto all hardware threads, parse numeric option arguments strictly (reject non-numeric or trailing input instead of silently yielding 0), require--wavelength > 0, and correct the reproduced command line and--scalereference-cell handling.rugnux: De-novo space-group improvements - recover genuine high symmetry and centred Bravais lattices from intensities, add an automatic CC1/2 high-resolution cutoff, and report L-test twinning statistics.
rugnux: Index weakly-diffracting low-resolution rotation data that previously failed (e.g. F-cubic crystals that diffract only to ~4 A on a detector reaching ~1.5 A). The per-frame indexing gate now measures the indexed fraction only within the resolution range the lattice actually diffracts to, so the many sub-diffraction ice/noise spots no longer make the fraction floor unreachable; the two-pass first pass tries several image-sampling schemes (spread across the whole rotation vs a consecutive wedge whose native stride keeps a reflection’s rocking curve continuous, letting the FFT resolve a long axis) and keeps the one that indexes the most frames; and the de-novo space-group search no longer discards all reflections (and crashes) when every resolution shell falls below <I/sigma> = 1.
rugnux: Lower the low-resolution R-meas for strongly-diffracting rotation data - drop edge-of-sweep truncated fulls whose rocking curve was captured below
--min-captured-fraction(default 0.7 for rotation), and report R-meas only over the observations kept by outlier rejection (matching XDS). The 0.7 default also strips the partiality-extrapolated fulls that dominate the intensity second moment on weakly-diffracting crystals, so the de-novo space-group search is no longer starved by the error-model I/sigma floor and recovers the correct symmetry (e.g. for F-centred cubic lattices that would otherwise be under-assigned).rugnux: Write the refined geometry (beam, tilt, axis) to _process.h5 and place non-standard mmCIF items under a reserved
jfjochprefix.jfjoch_broker: Ordinary acquisition failures (receiver/writer/analysis problems, missed packets, writer disconnect) now return to the Idle state with an Error-severity message, so a run can be retried without an expensive re-initialisation; only failures that leave the detector in an undefined state (new JFJochCriticalException, e.g. PCIe/FPGA faults) go to the Error state and force re-initialisation.
jfjoch_broker: A synchronous /start now reports its failure to the HTTP caller instead of returning HTTP 200, and an incomplete or truncated dataset (missing packets, writer disconnect) is reported as an error rather than a “reduce frame rate” warning.
jfjoch_broker: Drop uncollected placeholder rows (number = -1) from the scan_result REST endpoint.
jfjoch_broker: Fix the inverted per-image compression ratio reported by the Lite receiver (was compressed/uncompressed instead of uncompressed/compressed).
jfjoch_broker: Bragg integration adds a quantization-noise variance floor with a box-sum fallback, and treats the type-maximum marker as an invalid pixel for unsigned image types.
jfjoch_writer: Detect file-overwrite conflicts at start for back-channel transports, and reset the writer when end-of-collection finalisation fails.
jfjoch_viewer: Preview overlays follow the geometry (resolution/ROI arcs, true beam centre, predictions, coral secondary-lattice spots, legend), add save-as-JPEG, and fix an HTTP live-follow memory leak.
Frontend: Improved aesthetics and usability, and added in-browser pixel-mask and JUNGFRAU-pedestal visualisation.
CI: Name the Windows installer jfjoch-viewer-* instead of jfjoch-*.
1.0.0-rc.156¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
jfjoch_process: Major rotation (rot3d) data processing overhaul - robust profile-fit integration, Cauchy-loss scaling with optional absorption surface, de-novo indexing and space-group/centering determination fixes, and merging statistics + ISa in the mmCIF output.
jfjoch_process: Bragg integration now runs on the GPU in the offline/non-FPGA workflow (one box-sum + profile-fit engine, GPU when available, CPU otherwise); the FPGA workflow integrates on the CPU directly from the assembled image. The previous standalone integrators are removed.
jfjoch_process: Deterministic Bragg prediction - when more reflections are predicted than fit the output, they are ranked by distance to the Ewald sphere before truncation, so repeated runs produce identical reflections.
jfjoch_process: Judge systematic absences by resolution-normalised intensity instead of I/sigma alone, so screw axes are no longer missed when the error model under-estimates sigma on weak axial reflections (e.g. the monoclinic 2_1 screw).
jfjoch_process: GPU-accelerated rotation scaling and merging (RotationScaleMerge), substantially faster than the previous CPU path.
jfjoch_process: Unify still and rotation processing on a single –force-still flag (replaces the -P partiality-model option); rotation is auto-detected from the goniometer and processed as rot3d two-pass by default, the default reflection output is mmCIF, and the experimental –reciprocal-profile option is removed.
jfjoch_process: Add EXPERIMENTAL ice-ring detection (–detect-ice-rings) that excludes ice reflections from scaling.
jfjoch_broker: The Bragg integration model (profile-fit Gaussian, empirical, or box-sum) is now selectable via the REST API (/config/bragg_integration) and the web frontend.
jfjoch_broker: Write smargon chi/phi goniometer positions to NXmx; read sensor thickness/material from HDF5 metadata.
jfjoch_writer: Don’t write empty grid-scan position arrays when the dataset has no images.
Compression: Add BSHUF_ZSTD_RLE_HUFF, make compression size-aware (drop frames that don’t fit rather than aborting), and add the jfjoch_recompress tool.
jfjoch_viewer: Report “Multiple lattices detected” and grey out “Analyze dataset” on a live connection.
jfjoch_viewer: Frontend fixes - detector settings widget, panel/preview overflow, and navigation icons.
CI: Build Windows (CUDA and non-CUDA) installers.
CI: Ship jfjoch_viewer to the release as a Linux-agnostic .tgz.
1.0.0-rc.155¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
jfjoch_process: Remove pixelrefine option (replaced with ProfileIntegrate2D)
jfjoch_viewer: Some graphical improvements.
jfjoch_viewer: Simplify und unify data analysis settings.
jfjoch_writer: Add TCP keepalive to increase robustness if jfjoch_broker “dies” in the middle of data acquisition.
1.0.0-rc.154¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
jfjoch_broker: Fix to TCP file pusher (remove kernel zero copy to improve reliability)
1.0.0-rc.153¶
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.
jfjoch_broker: Add EXPERIMENTAL pixelrefine mode for image processing
jfjoch_broker: Allow to load user mask from 8-bit and 16-bit TIFF files
jfjoch_broker: Add ROI calculation in non-FPGA workflow
jfjoch_broker: Fixes to TCP image pusher
jfjoch_broker: Remove NUMA bindings
jfjoch_broker: Improvements to indexing
jfjoch_broker: For PSI EIGER, trimming energies are taken from the detector configuration (now compulsory) instead of hardcoded values
jfjoch_writer: Save ROI definitions and the per-pixel ROI bitmap in the master file; azimuthal ROIs support phi (angular) sectors
jfjoch_viewer: Major redesign with dockable panels and saved layouts, plus on-canvas creation/move/resize of box, circle and azimuthal ROIs
jfjoch_viewer: Run jfjoch_process reprocessing jobs from inside the GUI and overlay per-run results
1.0.0-rc.152¶
jfjoch_broker: Fix bounds for azimuthal integration for Q spacing (allow Q of 1e-5)
jfjoch_viewer: Adjust Q bounds for azimuthal integration
jfjoch_azint: Add tool to do quick azimuthal integration
1.0.0-rc.151¶
jfjoch_broker: For PSI EIGER detector allow to disable individual half-modules by putting empty hostname
1.0.0-rc.150¶
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.
1.0.0-rc.149¶
XDS plugin: Fix HDF5 mutex to run on multiple processors
1.0.0-rc.148¶
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144.
jfjoch_broker: Improve azimuthal integration (add <I^2> calculation)
jfjoch_broker: Fixes around indexing, aiming to handle multi-lattice crystals (work in progress, it is not fully integrated)
jfjoch_writer: Save mean(I), stddev(I), and count(I) for each azimuthal bin
1.0.0-rc.147¶
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144.
CI pipeline builds software with x86_64-v3 architecture, it should be compatible with practically all x86 hardware manufactured after 2015.
jfjoch_viewer: Add reciprocal space viewer
jfjoch_process: Two pass algorithm that does spot finding/indexing + integration of full dataset
jfjoch_process: Improve logic for rotation indexer, to make execution more deterministic (still work in progress)
1.0.0-rc.146¶
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144.
jfjoch_broker: Add a lattice-orientation-only refinement option, in addition to full refinement (beam center, lattice orientation, lattice dimension)
jfjoch_process: Generate a dedicated file (_process.h5), which can be used as a replacement for the _master.h5 file for a reanalyzed dataset.
jfjoch_process: Improve the performance of scaling and merging, implement on the fly scaling.
jfjoch_writer: All final data analysis results are repopulated in the _master.h5 file.
jfjoch_scale: Dedicated tool for rescaling/merging existing data.
jfjoch_viewer: Fix bugs where pixel labels where displayed on a wrong pixel.
WARNING! Scaling and merging are experimental at the moment, and may not provide reasonable results for the time being.
1.0.0-rc.145¶
This is an UNSTABLE release. The release has significant modifications for HDF5 writing logic - in case of troubles go back to 1.0.0-rc.144.
Default HDF5 writing mode is with VDS, not soft-links - this improves DIALS compatibility and makes format more future-proof, NXmx legacy format might be phased-out in the future.
XDS plugin: Improve performance of VDS reading.
jfjoch_writer: Significant improvement on how file systems I/O are handled through a dedicated pass-through VFD.
jfjoch_writer: Clean-up of HDF5 routines to better handle issues.
1.0.0-rc.144¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Improve performance of preview JPEG image generator at receiver startup (saving about 150 ms on measurement start for 16M)
1.0.0-rc.143¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Avoid copying gain calibration together with DiffractionExperiment
1.0.0-rc.142¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
Support for newer CUDA architectures (notably Blackwell); minimum CUDA version 12.8
Minor changes to jfjoch_process, jfjoch_fpga_test and jfjoch_lite_perf_test to make them more consistent
1.0.0-rc.141¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Azimuthal integration mapping is generated with parallel computations, significantly reducing setup times
frontend: Fix selection of FFTW in indexing settings
1.0.0-rc.140¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: For DECTRIS detectors, ZeroMQ link is persistent, to save time for establishing new connection
jfjoch_broker: Minor bug fixes for rare conditions
jfjoch_process: Significantly improve performance
1.0.0-rc.139¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Further reduce startup time for DECTRIS detectors by selectively modifying SIMPLON parameters on
/startjfjoch_broker: Further reduce startup time for DECTRIS detectors by not setting beam center and detector distance via SIMPLON API on ‘/start’
jfjoch_broker: Add an extra message to ZeroMQ puller ready to monitor Lite worklow preparation time
jfjoch_broker: Image buffer configuration is postponed for Lite receiver flow till start message is received
jfjoch_broker: Use nanoseconds internally for frame/image/readout time
jfjoch_broker: Extra messages added for receiver operation (to be removed after debugging finished)
jfojch_broker: Improve profiling of different data analysis steps
jfjoch_broker: Record integration reflection count
jfjoch_broker: Fix bug where ZeroMQ preview frequency was confusing time units (micro vs. milliseconds)
jfjoch_broker: Fix bug where ‘/wait_till_done’ got deadlocked
jfjoch_writer: Fix confusion between NaN and zero in floating-point datasets
Breaking changes: detector definition is now using nanoseconds to define minimum frame time, minimum count time and readout time.
1.0.0-rc.138¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Cleanup DECTRIS start-up code to enable a shorter start time
jfjoch_broker: Allow for asynchronous start to allow overlapping detector configuration with other beamline preparations
jfjoch_broker: Goniometer axis name is converted to lowercase
jfjoch_broker: Fix bug, where wrong HTTP error codes were returned
jfjoch_process: Improve sigma estimation during merging (K. Takaba)
jfjoch_process: Modify spot finding thresholds
1.0.0-rc.137¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Better track time for each operation in the processing stack
jfjoch_broker: Rewrite preprocessing of diffraction images in the non-FPGA workflow to better use GPUs (work in progress)
jfjoch_broker: Remove ROI calculation in the non-FPGA workflow (work in progress)
jfjoch_viewer: Toolbar displays image number starting from 1 (instead of 0)
1.0.0-rc.136¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Improve logic regarding indexing architecture and thread pools (work in progress).
1.0.0-rc.135¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
Multiple small bug fixes scattered across the whole code base. (detected with GPT-5.4)
jfjoch_viewer: Improve image render performance
1.0.0-rc.134¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Add better locking for detector object - should help, when detector initialization takes too long
jfjoch_writer: Enable writing single, integrated HDF5 file with both data and metadata
XDS plugin: Add generation of Jungfraujoch plugin for XDS
CI: Add tests with XDS and DIALS (
xia2.ssx)
1.0.0-rc.133¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.
jfjoch_broker: Use httplib for HTTP server instead of Pistache
jfjoch_broker: Drop OpenSSL support
jfjoch_broker: Base work for multi-lattice support in the future
jfjoch_broker: Improve recording time of data analysis steps
jfjoch_writer: Save per-image information about data analysis timing
Update dependencies to more recent versions (spdlog, HDF5, Catch2, httplib)
1.0.0-rc.132¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.
Documentation: Fix equation rendering
1.0.0-rc.131¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Fix bug in saving JUNGFRAU calibration (pedestal/pedestalRMS)
jfjoch_viewer: Fix calibration (pedestal) images being open flipped
jfjoch_process: Add space group detection (EXPERIMENTAL)
1.0.0-rc.130¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Rotation indexer has two retries if failes
jfjoch_broker: Rotation indexer handles small number of rotation images (like test shot)
jfjoch_broker: Integration calculates background mask based on R2 radius
jfjoch_process: HDF5 files are not saved by default
1.0.0-rc.129¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Significant improvements in TCP image socket, as a viable alternative for ZeroMQ sockets (only a single port on broker side, dynamically change number of writers, acknowledgments for written files)
jfjoch_broker: Delta phi is calculated also for still data in Bragg prediction
jfjoch_broker: Image pusher statistics are accessible via the REST interface
jfjoch_writer: Supports TCP image socket and for these auto-forking option
1.0.0-rc.128¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Handle properly reuse of image buffer locations
jfjoch_broker: Fix bug in counting idle slots
jfjoch_broker: Force obtuse angle for monoclinic cells
jfjoch_process: Change scaling refinement tolerance
1.0.0-rc.127¶
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Default EIGER readout time is 20 microseconds
jfjoch_broker: Multiple improvements regarding performance
jfjoch_broker: Image buffer allows to track frames in preparation and sending
jfjoch_broker: Dedicated thread for ZeroMQ transmission to better utilize the image buffer
jfjoch_broker: Experimental implementation of transmission with raw TCP/IP sockets
jfjoch_writer: Fixes regarding properly closing files in long data collections
jfjoch_process: Scale & merge has been significantly improved, but it is not yet integrated into mainstream code
1.0.0-rc.126¶
This is an UNSTABLE release. If things go wrong with analysis, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Fix bug for monoclinic space groups being wrongly refined when beta is much different from 90 deg.
1.0.0-rc.125¶
This is an UNSTABLE release. This version adds scalign and merging. These are experimental at the moment, and should not be used for production analysis. If things go wrong with analysis, it is better to revert to 1.0.0-rc.124.
jfjoch_broker: Improve logic on switching on/off spot finding
jfjoch_broker: Increase maximum spot count for FFBIDX to 65536
jfjoch_broker: Increase default maximum unit cell for FFT to 500 A (could have performance impact, TBD)
jfjoch_process: Add scalign and merging functionality - program is experimental at the moment and should not be used for production analysis
jfjoch_viewer: Display partiality and reciprocal Lorentz-polarization correction for each reflection
jfjoch_writer: Save more information about each reflection
1.0.0-rc.124¶
This is an UNSTABLE release. This version significantly rewrites code to predict reflection position and integrate them, especially in case of rotation crystallography. If things go wrong with analysis, it is better to revert to 1.0.0-rc.123.
jfjoch_broker: Improve refection position prediction and Bragg integration code.
jfjoch_broker: Align with XDS way of calculating Lorentz correction and general notation.
jfjoch_writer: Fix saving mosaicity properly in HDF5 file.
jfjoch_viewer: Introduce high-dynamic range mode for images
jfjoch_viewer: Ctrl+mouse wheel has exponential change in foreground (+/-15%)
jfjoch_viewer: Zoom-in numbers have better readability
1.0.0-rc.123¶
This is an UNSTABLE release.
jfjoch_broker: Use newer version of Google Ceres for (potential) CUDA 13 compatibility
jfjoch_broker: Improve performance of generating preview images, especially for large detectors (9M-16M)
jfjoch_viewer: Improve performance of displaying images, especially for large detectors (9M-16M)
jfjoch_viewer: Add more color schemes for better image readability
HDF5: Common mutex for reading and writing HDF5 if both operations were to happen in the same executable
HDF5: suppress warning if path (upstream group) doesn’t exists when checking if leaf exists
1.0.0-rc.122¶
This is an UNSTABLE release.
jfjoch_broker: Add thresholding to prefer shorter vectors after FFT
jfjoch_broker: Add experimental mosaicity estimation for rotation experiments (this is work in progress)
jfjoch_broker: Update nlohmann::json to 3.12.0
jfjoch_viewer: Display file opening errors
jfjoch_viewer: When loading files over DBus add retry/back-off till the file is available
1.0.0-rc.121¶
This is an UNSTABLE release.
jfjoch_broker: Report changes in the image buffer, so viewer doesn’t reload constantly
jfjoch_viewer: Improve performance of loading images
jfjoch_viewer: Auto-throttle image loading in HTTP-sync / movie modes
jfjoch_viewer: Auto-foreground calculated with histogram
jfjoch_viewer: Fix rare segmentation fault
1.0.0-rc.120¶
This is an UNSTABLE release.
jfjoch_broker: Improve performance of binary plot export
1.0.0-rc.119¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_broker: Add binary export of data analysis plots over OpenAPI
jfjoch_broker: Minor fixes to HTTP error handling
jfjoch_viewer: Prefer binary plots over JSON plots
jfjoch_viewer: Change foreground with F button + wheel
jfjoch_viewer: Change way how angles are displayed
jfjoch_viewer: Display resolution of the mouse cursor in top left corner
1.0.0-rc.118¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_viewer: Fix issue when HTTP sync silently disconnected when it was enabled when the broker was starting measurement.
jfjoch_broker: Add protections on time of geometry optimization and reduce rotation recalculations
1.0.0-rc.117¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_viewer: Add ROI results to the dataset info plots
jfjoch_writer: Remove HTTP interface, as it is not needed/used at the moment
1.0.0-rc.116¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_viewer: Add binning options in the context menu
1.0.0-rc.115¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_broker: Default spot finding settings can be configured via config JSON
jfjoch_viewer: FFT analysis of data in the dataset plot
1.0.0-rc.114¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_broker: Fix generating JPEG images with resolution estimation
1.0.0-rc.113¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_broker: Improve handling of rotation indexing
jfjoch_broker: More information saved in CBOR end message (WIP)
jfjoch_writer: Save rotation indexing lattice parameters and Niggli class
jfjoch_viewer: Remove (for now) primitive cell information
jfjoch_viewer: Use angle for dataset info plot for rotation scans
1.0.0-rc.112¶
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead).
jfjoch_broker: Experimental rotation (3D) indexing
jfjoch_broker: Minor fix to error in optimizer potentially returning NaN values
1.0.0-rc.111¶
This is an UNSTABLE release.
jfjoch_viewer: Remove 3D lattice viewer (not really useful at this moment)
jfjoch_viewer: Fix auto contrast not refreshing image
1.0.0-rc.110¶
This is an UNSTABLE release.
jfjoch_broker: Add auto-contrast option for preview images
Frontend: Add logo image
jfjoch_viewer: Add logo image
jfjoch_viewer: For image chart allow to set min value to zero
jfjoch_viewer: For resolution estimation plots, visualization uses 1/d^2 as measure
jfjoch_viewer: Add 3D unit cell visualization (experimental/WIP/not really there)
Documentation: Add logo image
1.0.0-rc.109¶
This is an UNSTABLE release.
jfjoch_viewer: Add keyboard shortcuts and option to copy image to clipboard
jfjoch_broker: Fix bit-width and exposure time for PSI EIGER detectors
1.0.0-rc.108¶
This is an UNSTABLE release.
jfjoch_viewer: Fix bug when resolution estimation/B-Factor/Profile radius were not set (NaN)
jfjoch_viewer: Show spots is off by default, resolution ring mode is enabled by default
jfjoch_viewer: Fit to window of image is now default when size of the grid changes
1.0.0-rc.107¶
This is an UNSTABLE release.
jfjoch_viewer: Minor polishing of new functionality
jfjoch_broker: User NaN for empty azimuthal bins
1.0.0-rc.106¶
This is an UNSTABLE release.
jfjoch_viewer: Allow for multiple dataset info plots
jfjoch_viewer: Highlight current element in grid
1.0.0-rc.105¶
This is an UNSTABLE release.
jfjoch_viewer: Clean-up widgets slightly
jfjoch_viewer: Limit right panel to 600 pixels
jfjoch_viewer: Parse crystal symmetry type
jfjoch_viewer: Grid scan view takes color map and can be fit to zoom
1.0.0-rc.104¶
This is an UNSTABLE release.
jfjoch_writer: Fix and improve the way grid scan geometry is saved (non-NXmx extension makes it way easier)
jfjoch_viewer: Display grid scan results in 2D (work in progress)
jfjoch_viewer: Improve auto-scaling on start of images (work in progress)
jfjoch_viewer: Add B-factor and resolution estimate to the dataset info plots
1.0.0-rc.103¶
This is an UNSTABLE release.
jfjoch_viewer: Minor improvements to the viewer
jfjoch_broker: Change behavior for modular detectors: coordinates of 0-th pixel can be now arbitrary and detector will be cropped to the smallest rectangle limited by module coordinates
1.0.0-rc.102¶
This is an UNSTABLE release.
jfjoch_viewer: Minor improvements to the viewer
1.0.0-rc.101¶
This is an UNSTABLE release.
jfjoch_viewer: Auto load is better handling change of states
jfjoch_viewer: Fix DBus registration
jfjoch_viewer: Handle charts better with vertical lines on hover and status bar update
jfjoch_viewer: Calculate ROI in a more efficient way
1.0.0-rc.100¶
This is an UNSTABLE release.
jfjoch_viewer: Fix dbus registration
jfjoch_viewer: Remove background slider for diffraction image
jfjoch_viewer: Adjustments for 2D azimuthal image viewer
1.0.0-rc.99¶
This is an UNSTABLE release.
jfjoch_broker: Fix output during mask data collection
1.0.0-rc.98¶
This is an UNSTABLE release and not recommended for production use (please use rc.96 instead).
jfjoch_broker: For DECTRIS detectors fix dark data collection during initialization
1.0.0-rc.97¶
This is an UNSTABLE release and not recommended for production use (please use rc.96 instead).
jfjoch_broker: For DECTRIS detectors add dark data collection during initialization for bad pixel mask
jfjoch_broker: Refactor of calibration logic for more clear code (likely to introduce problems)
jfjoch_viewer: Add option to handle user pixel mask (experimental)
jfjoch_viewer: More options for ROI
jfjoch_viewer: Add window to display calibration
1.0.0-rc.96¶
This is an UNSTABLE release.
Fixes in CI pipeline
jfjoch_broker: Remove PNG preview, no dependency on libpng
jfjoch_writer: Fix UTC timestamp being generated wrong (mix between milli- and microseconds)
jfjoch_viewer: Show data collection time in dataset tooltip
jfjoch_viewer: Allow to choose the calibrant (presets for LaB6 and silver behenate)
jfjoch_viewer: Auto foreground value
Use external libjpeg-turbo and libtiff: simpler build stack, these are built and linked statically in automated Docker builds
Remove OpenBLAS dependency
1.0.0-rc.95¶
This is an UNSTABLE release.
Fixes in CI pipeline
Add git-lfs to Rocky8 docker image
Previous releases (91-94) had a wrong FPGA image upload to Gitlab release. This is now solved.
1.0.0-rc.94¶
This is an UNSTABLE release.
FFTIndexer: Add limit on angles to avoid colinear vectors
Docker images: Add 3D Qt
Gitea: Fixes to the pipeline
1.0.0-rc.93¶
This is an UNSTABLE release.
CI: Fixes to Gitlab based pipeline
PCIe driver: Fix PCIe revision being hex number
1.0.0-rc.92¶
This is an UNSTABLE release.
jfjoch_broker: Fix code that predicted Bragg reflections scattering back from the sample.
1.0.0-rc.91¶
This is an UNSTABLE release. This release introduces new features, which usually means these need more field testing before enough maturity. For production use we recommend waiting for a future bug-fix release.
FPGA: Implement high pixel value threshold - pixels above the given value will be considered saturated
jfjoch_broker: Spot finding and integration predictions are ported to a GPU
jfjoch_broker: Estimate resolution
jfjoch_broker: Lattice search
jfjoch_broker: Many more improvements in image analysis
1.0.0-rc.90¶
This is an UNSTABLE release.
jfjoch_broker: for indexing min index spots for a viable cells can be changed via OpenAPI
jfjoch_viewer: Optional auto-reanalyze images
jfjoch_writer: Add option where no files at all are saved
Documentation: improvements
1.0.0-rc.89¶
This is an UNSTABLE release.
jfjoch_broker: Fix resolution estimation code
jfjoch_broker: Fix Wilson B-factor calculation code
jfjoch_viewer: Improve display of plots
jfjoch_viewer: Fix segmentation fault
jfjoch_viewer: Display missing metadata when using HTTP
jfjoch_viewer: Fix bug when opening the same file twice
1.0.0-rc.88¶
This is an UNSTABLE release.
jfjoch_viewer: Add resolution estimation to the image information
jfjoch_broker: Minor changes to resolution estimate routine
1.0.0-rc.87¶
This is an UNSTABLE release.
jfjoch_viewer: Display more image metadata (angle / exposure time)
jfjoch_viewer: Improve I/sigma and B-factor plots
jfjoch_broker: Estimate resolution based on visible spots
1.0.0-rc.86¶
This is an UNSTABLE release.
jfjoch_broker: Update logic when initializing detector to make it a bit more resilient
Gitea pipelines have nocuda option for all architectures
1.0.0-rc.85¶
This is an UNSTABLE release.
jfjoch_viewer: When using online view, dataset info plots are not switched back to the first category for each image
jfjoch_viewer: Handle spot count better in dataset info plots
jfjoch_viewer: Highlight spots in ice ring resolutions in cyan, when detection is enabled
1.0.0-rc.84¶
This is an UNSTABLE release.
jfjoch_broker: Write in log which detector is being initialized
Changes to automated build system
1.0.0-rc.83¶
This is an UNSTABLE release.
jfjoch_viewer: Fix in generating preview image for signed data (wrong bit-width was assumed before)
CI: Fix script to generate python client
1.0.0-rc.82¶
This is an UNSTABLE release.
jfjoch_viewer: Enable FFTW based indexing in viewer (very slow at the moment)
Frontend: Minor fixes
Build scripts: Minor fixes to FFTW
1.0.0-rc.81¶
This is an UNSTABLE release. This release introduces new features, which usually means these need more field testing before enough maturity. For production use we recommend waiting for a future bug-fix release.
jfjoch_broker: Add option to detect ice rings, adjust width of ice ring and change of logic to exclude ice rings in indexing
jfjoch_broker: Add FFTW based indexer for CPU only indexing
jfjoch_broker: Enable saving X-ray fluorescence spectra
jfjoch_writer: Write total spot count (before filtering)
jfjoch_viewer: Add more information on source, sample, and buttom to show ice rings
jfjoch_viewer: Enable data processing inside the viewer
CI: Moving from Gitlab to Gitea at PSI
1.0.0-rc.80¶
This is an UNSTABLE release.
jfjoch_broker: Fix bug when wrong value for a plot (NaN or infinity) would lead to a null in a plot, which cannot be parsed by viewer
1.0.0-rc.79¶
This is an UNSTABLE release.
jfjoch_viewer: Fix bug when loading new dataset was creating a cascade of signals leading to poor performance
jfjoch_writer: Save nimages_per_trigger in detectorSpecific
1.0.0-rc.78¶
This is an UNSTABLE release.
jfjoch_viewer: Using a single event loop (reading images is not in dedicated thread anymore)
1.0.0-rc.77¶
This is an UNSTABLE release.
jfjoch_viewer: Display detector and dataset settings with tooltips
jfjoch_viewer: Clean excessive HDF5 warnings
jfjoch_viewer: Display unit cell
jfjoch_extract_hkl: Write a tool to extract reflection intensity from a dataset
1.0.0-rc.76¶
This is an UNSTABLE release.
jfjoch_broker: Increase predicted hkl to 100.0, use lighter math to exclude too-high resolution ones
jfjoch_broker: Use standard deviation formula to find profile radius (not the one using median)
jfjoch_writer: Save space group number (non-NXmx addition) in addition to name
jfjoch_viewer: Fix the bug on reading space_group as string
jfjoch_viewer: Add missing resolution labels on rings
jfjoch_viewer: Remove Q value from the status bar
1.0.0-rc.75¶
This is an UNSTABLE release.
jfjoch_broker: EIGER2 missing minimum threshold - hardcoded to 2.7 keV for the time being
1.0.0-rc.74¶
This is an UNSTABLE release.
jfjoch_broker: Fix for EIGER UDP port settings (vertical half of the module missing)
jfjoch_broker: Detector settings were not applied for EIGER/DECTRIS detector when changed after initialization
1.0.0-rc.73¶
This is an UNSTABLE release.
jfjoch_broker: Space group number treatment in OpenAPI was wrong, zero value is no longer allowed and no longer default
1.0.0-rc.72¶
This is an UNSTABLE release. This release introduces new features, which usually means these need more field testing before enough maturity. For production use we recommend waiting for a future bug-fix release.
jfjoch_broker: Refactor of indexing and geometry refinement code
jfjoch_broker: Handle space group/centering in refinement code
jfjoch_broker: Replace mosaicity with profile radius: refining the former is difficult with still images
jfjoch_broker: There is no longer 0.5 pxl offset for spots-to-reciprocal-space conversion
jfjoch_writer: Experimental saving of reflections
jfjoch_writer: Save space group name as string
jfjoch_viewer: Add profile radius and B-factor
jfjoch_viewer: Show 4 digits for wavelength
jfjoch_viewer: Match rings between calibrant and observation (will handle missing/wrong rings)
FPGA: Use UDP destination port to distinguish between detector modules and data streams
FPGA: Add experimental PTP core (PTP over L2, only Sync/Follow_up)
FPGA driver: Fix for Linux kernel 6.12+ (thanks to Tim Gruene)
1.0.0-rc.71¶
This is an UNSTABLE release.
jfjoch_broker: Remove resolution estimation via machine learning
jfjoch_broker: Harmonize code to analyze spot finding results (indexing/refinement/integration) between CPU and FPGA receivers
jfjoch_viewer: Fix error when HDF5 files with indexing results couldn’t be loaded on a machine without GPU
1.0.0-rc.70¶
This is an UNSTABLE release. This release introduces new features (geometry refinement), which usually means these need more field testing before enough maturity. For production use we recommend waiting for a future bug-fix release.
jfjoch_broker: Fix bug when PSI EIGER frame time was not set properly at the start of the measurement
jfjoch_broker: Fix PONI rot2 angle rotating detector in a wrong direction (PyFAI convention is for this angle to rotate detector downwards)
jfjoch_broker: Enable geometry refinement - first try (work in progress)
jfjoch_viewer: Fix deadlock when opening HTTP connections
jfjoch_viewer: Display rings as ellipses with detector tilt
jfjoch_viewer: Add button to calibrate detector geometry based on LaB6 image
jfjoch_writer: Save detector tilt angles (rot1, rot2, rot3)
Add Google Ceres a non-linear least-square optimization library to Jungfraujoch
Add experimental detector calibration routines (for LaB6)
Improve documentation on the ZeroMQ writer notification socket and detector geometry
1.0.0-rc.69¶
This is an UNSTABLE release.
jfjoch_viewer: Metadata can be modified for an open dataset (no option to save)
jfjoch_viewer: Refactor multiple issues in the viewer regarding image reading code to allow for further developments
jfjoch_viewer: Resolution rings not enabled by default
jfjoch_broker: Handle properly PONI rotations in dataset settings though still not updated properly in the HDF5 file
1.0.0-rc.68¶
This is an UNSTABLE release.
jfjoch_broker: Temperature threshold can be changed for JUNGFRAU detector
jfjoch_broker: Default detector settings can be configured for each detector separately
jfjoch_broker: Refactor spot filtering code, max spot count can be modified for dataset settings
jfjoch_broker: Refactor indexing refinement, make it the same for both FFBIDX and FFT indexing
jfjoch_broker: Reference unit cell will be taken into account for FFT indexing to filter
jfjoch_broker: Review PONI rotation angles and azimuthal angle conventions along with PyFAI
1.0.0-rc.67¶
This is an UNSTABLE release.
jfjoch_broker: Enable SSL
jfjoch_broker: Wilson B-factor only provided is fit is relatively OK (R^2 > 0.3); this will be refined much more in the future
1.0.0-rc.66¶
This is an UNSTABLE release.
jfjoch_broker: Indexers operate as thread pool, which is operating
jfjoch_viewer: Increase interval between loading images + fix too many verbose messages
1.0.0-rc.65¶
This is an UNSTABLE release.
jfjoch_broker: Print information regarding used image pushers
jfjoch_viewer: Allow syncing with Jungfraujoch server
OpenAPI: Clarify licensing terms in the file
1.0.0-rc.64¶
This is an UNSTABLE release.
jfjoch_broker: Fix issue in receiver light with very long preparation time for threads
jfjoch_broker: Add verbose option
jfjoch_broker: Don’t trigger pedestal if critical settings are not changed when loading detector settings
jfjoch_broker: Detector left in busy state when detector settings were improper
jfjoch_viewer: Modify DBus interface to avoid loading same file and image 0 multiple times
jfjoch_lite_perf_test: Add verbose option
1.0.0-rc.63¶
This is an UNSTABLE release.
jfjoch_broker: Save NX/NY for grid scan result
jfjoch_broker: Add processing time to CBOR output and plot
jfjoch_writer: Add processing time to data file
1.0.0-rc.62¶
This is an UNSTABLE release.
jfjoch_broker: Fix bug where low resolution spots were not counted properly
jfjoch_broker: Spot count is provided prior to filtering of spots to max_spot_count
jfjoch_broker: Add more spot count information to CBOR
jfjoch_viewer: Fix issue with ROI drawing resulting in multiple overlapping rectangles
1.0.0-rc.61¶
This is an UNSTABLE release.
jfjoch_broker: Fix bug where FFT indexing could result in a very short or even zero length vector
jfjoch_broker: Ice ring and indexed spot count enabled as plots and saved in grid scan results
jfjoch_broker: High resolution limit for low res. spot counting can be adjusted
1.0.0-rc.60¶
This is an UNSTABLE release.
jfjoch_broker: Fix bug when the neural network inference client was busy and this status was never released
jfjoch_broker: Revert the indexing threshold with distance from integer for Miller indices
jfjoch_broker: Fix bug in scattering vector calculation, resulting in indexing not working outside 1.0 A X-ray wavelength
1.0.0-rc.59¶
This is an UNSTABLE release.
jfjoch_broker: Fix bug when broker was waiting for notification message before sending end message, resulting in deadlock.
jfjoch_writer: Verbose option for debugging.
1.0.0-rc.58¶
This is an UNSTABLE release.
jfjoch_viewer: Fix memory leak
jfjoch_writer: Add detector_number/serial_number to master file
1.0.0-rc.57¶
This is an UNSTABLE release.
jfjoch_broker: Fix bug when enabling ML resolution estimation was not possible
jfjoch_viewer: “Movie” mode
1.0.0-rc.56¶
This is an UNSTABLE release.
jfjoch_broker: Fixing more bugs related to neural network inference for ML estimation
1.0.0-rc.55¶
This is an UNSTABLE release.
jfjoch_broker: Fixing minor bugs related to neural network inference for ML estimation
1.0.0-rc.54¶
This is an UNSTABLE release.
jfjoch_broker: Indexing with AUTO settings (FFBIDX if unit cell provided; FFT if not)
jfjoch_broker: Don’t remove shared memory area when deactivating detector
jfjoch_writer: Save writer release
jfjoch_viewer: Increase time for the messages in the status bar
1.0.0-rc.53¶
This is an UNSTABLE release.
PCIe driver: Imperfect solution for RHEL 9.5+ changes
jfjoch_writer: Fix to angle containers for AutoProc compatibility
jfjoch_fpga_test: Use consecutive number for devices, not interleaved
1.0.0-rc.52¶
This is an UNSTABLE release.
jfjoch_viewer: Use warmer colors to distinguish from AareGUI
jfjoch_viewer: Minor adjustments to DBus setting image number
jfjoch_broker: Fix in low resolution spot count plotting
1.0.0-rc.51¶
This is an UNSTABLE release.
jfjoch_broker: Send preview in PNG format
jfjoch_broker: Provide count of spots in 50.0 - 5.0 A range
jfjoch_broker: Provide ML resolution estimation in scan result
jfjoch_broker: Allow removing beam center in web preview
1.0.0-rc.50¶
This is an UNSTABLE release.
The release fixes some of many bugs introduced in recent releases
jfjoch_viewer: display predictions for indexed cells
1.0.0-rc.49¶
This is an UNSTABLE release.
jfjoch_broker: Handle sample temperature (K) and ring current (mA) to metadata
jfjoch_writer: For angle containers in NXmx add _end dataset, sample temp. and ring current
1.0.0-rc.48¶
This is an UNSTABLE release.
jfjoch_broker: fix the bug when a unit cell was not exported for a scan result.
1.0.0-rc.47¶
This is an UNSTABLE release.
jfjoch_viewer: fix dbus service path
jfjoch_writer: fix CBF/TIFF writing
1.0.0-rc.46¶
This is an UNSTABLE release.
jfjoch_viewer: remove dependency on image analysis
1.0.0-rc.45¶
This is an UNSTABLE release.
jfjoch_broker: Detector list returns pixel size (mm)
1.0.0-rc.44¶
This is an UNSTABLE release.
jfjoch_broker: more general definition of scan result export
Braking changes:
It removes additions to OpenAPI from 1.0.0-rc.43
It makes changes to the “unit_cell” definition in OpenAPI specs. It might be harmless in some languages and may result in errors in other implementations.
1.0.0-rc.43¶
This is an UNSTABLE release.
jfjoch_broker: Export grid scan results into a single data structure
1.0.0-rc.42¶
This is an UNSTABLE release.
jfjoch_broker: Add pixel_sum to CBOR output.
jfjoch_broker: Changes to sigma estimation in QuickIntegrate routine
jfjoch_writer: Save pixel_sum
1.0.0-rc.41¶
This is an UNSTABLE release. This release includes multiple new features, it should not be used in production at the moment.
jfjoch_broker: Estimate B-factor, mosaicity to evaluate crystal diffraction
jfjoch_broker: Export GPU count via OpenAPI
jfjoch_broker: Enable 2D azimuthal integration and PONI rotations for detector
FPGA: Increase the number of integration bins to 2048
1.0.0-rc.40¶
This is an UNSTABLE release. This release includes multiple new features, it should not be used in production at the moment.
jfjoch_broker: Jungfraujoch supports grid scan metadata, including dedicated plotting schemes and NXmx structures
jfjoch_broker: Improve metadata for rotation data collection
jfjoch_broker: Better handling of plotting
jfjoch_broker: FFT based indexing
jfjoch_broker: Integration, first try, results not saved at the moment
jfjoch_broker: Internal improvements in image handling
jfjoch_writer: Multiple adjustments adapt to changes in this release for new features
jfjoch_writer: New state management model to improve clarity of error reporting
jfjoch_viewer: Remote control via DBus
Frontend: Multiple adjustments for new features
Frontend: Grid scan plots
WARNING! OpenAPI contains breaking changes in regard to plotting results, so care has to be taken.
1.0.0-rc.39¶
FPGA: Bugfix for pixel masked for data analysis if summation was on
jfjoch_viewer: Fix segmentation fault when cursor was outside of image
1.0.0-rc.38¶
jfjoch_broker: Neural net model is not linked with C++ code due to deployment issues, it is rather distributed as python code, connected via RES
jfjoch_broker: Neural net model can use all 4 quadrants of the detector
jfjoch_broker: For EIGER image time can be provided through /start
jfjoch_viewer: Add image list option
jfjoch_viewer: Drawing circular ROIs with shift
jfjoch_viewer: Enable image summation
jfjoch_viewer: Image reader is significantly reworked, hopefully without affecting the viewer
1.0.0-rc.37¶
jfjoch_broker: Make locking rules more flexible
jfjoch_broker: Load mask via SIMPLON interface for DECTRIS detectors
jfjoch_viewer: Add status bar
1.0.0-rc.36¶
This is UNSTABLE release. Wait for new version to use in a production environment.
jfjoch_broker: Support for Jungfraujoch Lite is enabled - software-based receiver for DECTRIS detectors (required a lot of refactoring, potentially leading to unstable code)
jfjoch_broker: Enable Resonet support (ML-based diffraction resolution estimation)
jfjoch_broker: Fix error in compression, where bitshuffle/LZ4 and bitshuffle/Zstd HDF5 headers were wrongly generated for 8-bit and 32-bit data
jfjoch_writer: Increase buffering to 1000 images in the receiver
jfjoch_writer: Images can be written as CBF or TIFF in addition to HDF5
1.0.0-rc.35¶
This is UNSTABLE release, not properly tested. Wait for new version for using production.
jfjoch_broker: If module is delayed by more than 50 frames versus other modules, it will be ignored and receiver is not waiting.
jfjoch_writer: Save EIGER energy threshold
jfjoch_writer: Add
/entry/sample/goniometerfor compatibility witheiger2cbfprogram
1.0.0-rc.34¶
This is UNSTABLE release - introducing new features, but not properly tested. Wait for new version for using production.
jfjoch_broker: More consistency for file format definition (breaking change in API from 1.0.0-rc.31 for file writer settings)
jfjoch_broker: For storage cells mask is logical sum of detector bad pixels for all storage cells
jfjoch_broker: Handle situation when detector doesn’t want to gracefully stop (to be tested)
jfjoch_broker: Center-of-mass position and mean for ROI is added to available plots
jfjoch_viewer: Can extract data analysis results from “legacy” format
jfjoch_viewer: Display dataset name
FPGA: Pixel mask is used for data analysis part even if it is not applied to pixels
FPGA: Add pixel sum to module statistics
FPGA: ROI number is reduced to 16, but pixel can belong to every defined ROI
FPGA: Spot finder is back to full dynamic range (24-bit)
FPGA: More debug features for internal FIFOs
Known issues:
ROI count flag was added to firmware. For the time being the flag will be wrongly set to 10 due to mismatch of FPGA build scripts.
EIGER data acquisition has an issue that is currently debugged
1.0.0-rc.33¶
jfjoch_broker: Fix issue with EIGER settings being loaded improperly
1.0.0-rc.32¶
jfjoch_broker: Refactor code for azimuthal integration for further improvements
jfjoch_broker: Minor fix for EIGER (trim energies are manually set for E9M, to be fixed properly later)
jfjoch_writer: Fix too much verbose information
FPGA: Minor fixes to spot finder (enable two-pass operation and limit number range to int20)
1.0.0-rc.31¶
This is UNSTABLE release - introducing many features, but still needs more testing. Expecting soon to put bugfix release.
jfjoch_writer: Allow to enable overwriting existing files (not enabled by default)
jfjoch_writer: Add new HDF5 master file format, which uses HDF5 virtual data sets and links processing results to data files (not enabled by default)
jfjoch_viewer: Image viewer work early test version
jfjoch_broker: Fixes to counting packets per dataset/image
jfjoch_broker: Image buffer is accessible for outside to check images
jfjoch_broker: error/saturated pixels and dedicated ROI “beam” can be tracked online
jfjoch_broker: Fix bug in handling pedestal G1/G2 count time for JUNGFRAU
jfjoch_broker: Fix bug in applying pixel mask interfering with pedestal calculation
jfjoch_broker: Fix bug in EIGER initializing
jfjoch_broker: Save maximum pixel value to HDF5 file and export as Web plot
PCIe driver: Add PCIe link speed and width
FPGA: Improve counting error/saturated/min/max pixels
FPGA: Spot finder is gradual column-wise (15 columns up/down) and fixed row-wise (32 pixel boxes); previously it was fixed both column- and row-wise with 32x32 pixel areas
FPGA: Require Vivado 2022.2
Warning: There are breaking changes to HDF5 file format, renaming entries regarding image storage cell number and image collection efficiency.
1.0.0-rc.30¶
jfjoch_writer: replace non-blocking with blocking operation on internal queues - less likely to “loose” images within the writer
1.0.0-rc.29¶
jfjoch_broker: refactor logic regarding frame time and count time for more flexibility for EIGER and JUNGFRAU
jfjoch_broker: readout time for EIGER is 3 us and JUNGFRAU is 20 us, this can be changed in input file
jfjoch_broker: OpenAPI interface includes more ways to provide information on the status (error/warning/info)
jfjoch_broker: ROIs handling via OpenAPI and frontend is more user friendly
Warning - two breaking changes to OpenAPI:
Handling of ROIs is through
/config/roipath only for both circle and box ROIs, path in/roiare no longer accessiblebroker_statusstructure introduced in 1.0.0-rc.28 has membermessageand noterror_messageto allow handling info/warning messages as well
1.0.0-rc.28¶
jfjoch_broker: save error message for initialization and data collection and provide these with OpenAPI
jfjoch_broker: fixed issue when in error state, response to /wait_till_done was not complaint to OpenAPI specs
jfjoch_test: remove header that failed when CUDA is absent during compilation
frontend: add soft trigger button in data collection tab
frontend: show error message when in error state
CMake: add option to force compilation without CUDA (-DJFJOCH_USE_CUDA=OFF)
1.0.0-rc.27¶
jfjoch_broker: add option to select electron source in instrument metadata, adapt wavelength calculation
jfjoch_broker: update pistache web server version
jfjoch_writer: minor changes to republish logic
Improvements to documentation
1.0.0-rc.26¶
jfjoch_broker: implement ZeroMQ stream for image metadata information
jfjoch_broker: refactor ZeroMQ stream for preview: start/end messages always sent
jfjoch_broker: add crystal lattice plots
jfjoch_broker: remove empty bins from the plots
jfjoch_broker: Fix bugs in ModuleSummation and MXAnalyzer for CPU “long” summation
jfjoch_broker: Fix bug when mean background estimation / indexing rate where affected by previous experiment
jfjoch_writer: fix missing “-w” parameter
jfjoch_writer: temporary files have “.tmp” suffix
jfjoch_writer: refactor logic for watermarks
jfjoch_writer: report on internal FIFO utilization
jfjoch_writer: clean-up naming for azimuthal integration and background estimate
jfjoch_writer: write final background estimate and indexing rate in the master file
tools/: remove unnecessary tools, make naming consistent
CBOR: Add indexing rate and background estimate to end message
CBOR: Clean-up documentation
1.0.0-rc.25¶
Updates to documentation
License set to GPLv3 / OHL-S
Fix bug in DiffractionExperiment::GetDefaultPlotBinning() - resulting in division by 0 if image time longer than 500ms
Add information on JUNGFRAU conversion and geometry transformation to CBOR and HDF5
1.0.0-rc.24¶
New FPGA functionality:
EIGER supports 8, 16 and 32-bit data input (for 8-bit mode at half performance; for 32-bit “real” depth is 23-bit + 1-bit signed)
Output possible to 8, 16 and 32-bit data
Threshold is applied before summation
Pixel mask can be applied on FPGA
Mark pixels with ADC content = 0 as bad pixels
FPGA stores semantic version information (access via /sys/class/misc/jfjoch…/version)
New software functionality:
Long summation (above 256 frames) done on CPU
Mechanism to save arbitrary data to HDF5 file
ZeroMQ preview has option to send start message
Rework pixel mask + add statistics displayed in web interface
Bug fixes:
Web frontend: Update preview image automatically during data acquisition
jfjoch_broker: Error handling if CUDA driver is not installed
jfjoch_broker: Correctly update progress during pedestal
jfjoch_broker: Provide proper error when uploaded file is not a proper TIFF
jfjoch_action_test: enable HLS simulation
Documentation improvement and placement in a dedicated directory