Files
aare/RELEASE.md
Erik Fröjdh af25aea684
Build on RHEL9 / build (push) Successful in 2m34s
Build on RHEL8 / build (push) Successful in 3m2s
Run tests using data on local RHEL8 / build (push) Successful in 3m59s
Build on local RHEL8 / build (push) Successful in 2m43s
Fixed bug in reading analog samples for <v8.0 (#349)
Before v8.0 we should always try to read analog samples. This bug
resulted in old Mönch03 data not being reordered.

1. Added test for master file parsing
2. Fixed code 

closing #348
2026-08-19 12:34:37 +02:00

5.7 KiB

Release notes

Next

API Changes:

  • Removed the lmfit dependency and the legacy fit_gaus, fit_pol1, fit_scurve, and fit_scurve2 APIs. Use Gaussian, Pol1, RisingScurve, or FallingScurve and call model.fit(...) (or fit(model, ...)) instead.
  • Removed the legacy gaus, pol1, scurve, and scurve2 function evaluators. Model objects are callable and provide the replacement, for example Gaussian()(x, par).

Bugfixes:

  • Fixed broken reading of old (pre reordering) Moench03

2026.7.2

New Features:

  • Added a new Minuit2-based fitting framework for Gaussian, RisingScurve, FallingScurve, Pol1 and Pol2 models.
  • setter and getter for nSigma for ClusterFinder aare.ClusterFinder().nSigma = 2, aare.ClusterFinderMT().set_nSigma(2)
  • mask opeartor for ClusterVector masked_clustervector = aare.ClusterVector()(mask)
  • passing pre computed eta values to aare.Interpolator.interpolate alongside clusters
  • Added PixelHistogram and PedestalTrackingPixelHistogram
  • aare.transfrom.Matterhorn10Transform handles counter artefact in chip. Mind that enabling only one counter or three counters or enabling the wromg two counters e.g. 0,1 will still lead to erreneous data.
  • aare.transfrom.Matterhorn10Transform reshapes data such that first dimension is number of counters
  • Added support for len() for files. Returns the number of frames
  • Added support for direct subtraction of Pedestal from numpy array

Bugfixes:

  • Fixed split_task(first, last, n_threads) so task ranges now correctly respect the first offset. Previously, non-zero starting indices could generate incorrect subranges.
  • Fixed overflow issue causing failed allocations for NDArrays abouve ~2GB
  • Fixed libfmt failures due to consteval when building with C++20

2026.3.17

New Features:

  • Decoding transceiver data from Matterhorn10 transformed_data = aare.transform.Matterhorn10Transform(num_counters=2, dynamic_range=16)(data)
  • Expanding 24 to 32 bit data aare._aare.expand24to32bit(data, offset=4)
  • Decoding digital data from Mythen 302 transformed_data = aare.transform.Mythen302Transform(offset=4)(data)
  • added aare.Interpolator.transform_eta_values. Function transforms \eta-values to uniform spatial coordinates. Should only be used for easier debugging.
  • New to_string, string_to
  • Added exptime and period members to RawMasterFile including decoding
  • Removed redundant arr.value(ix,iy...) on NDArray use arr(ix,iy...)
  • Removed Print/Print_some/Print_all form NDArray (operator << still works)
  • Added const* version of .data()
  • reading multiple ROI's supported for aare.
    • Use aare.RawFile.read_roi(roi_index=0) to read a specific ROI for the current frame
    • Use aare.RawFile.read_rois() to read multiple ROIs for the current frame
    • Use aare.RawFile.read_n_with_roi(num_frames = 2, roi_index = 0) to read multiple frames for a specific ROI.
    • Note read_frame and read_n is not supported for multiple ROI's.
  • Building conda/pypi pkgs for python 3.14. Removing 3.11 builds.

Bugfixes:

  • multi threaded cluster finder doesnt drop frames if queues are full
  • Round before casting in the cluster finder to avoid biasing clusters by truncating

2025.11.21

New Features:

  • Added SPDX-License-Identifier: MPL-2.0 to source files

  • Calculate Eta3 supports all cluster types

  • interpolation class supports using cross eta3x3 and eta3x3 on full cluster as well as eta2x2 on full cluster

  • interpolation class has option to calculate the rosenblatt transform

  • reduction operations to reduce Clusters of general size to 2x2 or 3x3 clusters

  • max_sum_2x2 including index of subcluster with highest energy is now available from Python API

  • interpolation supports bilinear interpolation of eta values for more fine grained transformed uniform coordinates

  • Interpolation is documented

  • Added tell to ClusterFile. Returns position in bytes for debugging

Resolved Features:

  • calculate_eta coincides with theoretical definition

Bugfixes:

  • eta calculation assumes correct photon center
  • eta transformation to uniform coordinates starts at 0
  • Bug in interpolation
  • File supports reading new master json file format (multiple ROI's not supported yet)

API Changes:

  • ClusterFinder for 2x2 Cluster disabled
  • eta stores corner as enum class cTopLeft, cTopRight, BottomLeft, cBottomRight indicating 2x2 subcluster with largest energy relative to cluster center
  • max_sum_2x2 returns corner as index

2025.8.22

Features:

  • Apply calibration works in G0 if passes a 2D calibration and pedestal
  • count pixels that switch
  • calculate pedestal (also g0 version)
  • NDArray::view() needs an lvalue to reduce issues with the view outliving the array

Bugfixes:

  • Now using glibc 2.17 in conda builds (was using the host)
  • Fixed shifted pixels in clusters close to the edge of a frame

2025.7.18

Features:

  • Cluster finder now works with 5x5, 7x7 and 9x9 clusters
  • Added ClusterVector::empty() member
  • Added apply_calibration function for Jungfrau data

Bugfixes:

  • Fixed reading RawFiles with ROI fully excluding some sub files.
  • Decoding of MH02 files placed the pixels in wrong position
  • Removed unused file: ClusterFile.cpp

2025.5.22

Features:

  • Added scurve fitting

Bugfixes:

  • Fixed crash when opening raw files with large number of data files

Download, Documentation & Support

Download

The Source Code: https://github.com/slsdetectorgroup/aare

Documentation

Documentation including installation details: https://github.com/slsdetectorgroup/aare

Support

erik.frojdh@psi.ch
alice.mazzoleni@psi.ch
dhanya.thattil@psi.ch