Commit Graph
522 Commits
Author SHA1 Message Date
Erik Fröjdh a9c844887b Merge branch 'main' into dev/build-time
Build on RHEL8 / build (push) Successful in 3m12s
Build on RHEL9 / build (push) Successful in 3m27s
Run tests using data on local RHEL8 / build (push) Failing after 3m30s
2026-10-09 11:36:41 +02:00
Erik Fröjdh 0eca8328d7 Dev/sccache (#415)
Build on RHEL9 / build (push) Successful in 3m2s
Build on RHEL8 / build (push) Successful in 3m40s
Run tests using data on local RHEL8 / build (push) Failing after 4m38s
Build on local RHEL8 / build (push) Successful in 3m20s
- Use sccache: https://github.com/mozilla/sccache to speed up CI
- Not huge benefits for Windows but mac and linux really improves
2026-10-09 11:36:24 +02:00
Erik Fröjdh 48d7f7fb03 Merge branch 'main' into dev/build-time
Build on RHEL8 / build (push) Successful in 3m14s
Build on RHEL9 / build (push) Successful in 3m30s
Run tests using data on local RHEL8 / build (push) Failing after 3m8s
2026-10-09 09:33:24 +02:00
Erik Fröjdh bf0aa4a3bf Added missing header guards (#414)
Build on RHEL9 / build (push) Successful in 2m55s
Build on RHEL8 / build (push) Successful in 3m38s
Run tests using data on local RHEL8 / build (push) Failing after 4m35s
Build on local RHEL8 / build (push) Successful in 3m20s
- Python extension. Originally left out since it didn't matter but good
practice for future
- to_string.hpp - this is the important one
2026-10-07 12:04:54 +02:00
Erik Fröjdh 0a5b5f4d89 adding PCH for tests
Build on RHEL8 / build (push) Successful in 3m12s
Run tests using data on local RHEL8 / build (push) Failing after 3m26s
Build on RHEL9 / build (push) Successful in 3m32s
2026-10-07 08:30:16 +02:00
Erik Fröjdh 085960b816 Compile Catch2 as a unity build
Build on RHEL8 / build (push) Successful in 3m12s
Run tests using data on local RHEL8 / build (push) Failing after 3m14s
Build on RHEL9 / build (push) Successful in 3m32s
Catch2 v3 is ~100 small translation units that together took 58.5 s of
summed compile time in a Release build, more than aare_core itself.
Batched into unity sources of 16 files they take 13 s in 10 steps. The
test executable itself is unchanged.

Clean Release build with tests and bindings: 28 s -> 23 s on 10 cores;
all 277 test cases pass, both through run_tests and ctest.
2026-10-06 22:10:50 +02:00
Erik Fröjdh b40727ebdc Build the python extension without pybind11's forced LTO
pybind11_add_module links pybind11::lto, which adds full -flto to the
extension and ignores the target's INTERPROCEDURAL_OPTIMIZATION property.
That link ran single-threaded for 19-22 s and was the longest step of the
build. LTO cannot reach aare_core (a plain static library) and the hot
loops are header templates compiled at -O3 inside the extension anyway.

Pass NO_EXTRAS so the standard CMake property decides (off by default),
and re-add the extras pybind11 would have applied: pybind11_strip for
optimized builds and pybind11::windows_extras (/bigobj, /MP) on MSVC.
set_property(TARGET _aare PROPERTY INTERPROCEDURAL_OPTIMIZATION ON) or
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON brings LTO back as ThinLTO.

Measured on a clean Release build with tests: 42 s -> 28 s, extension
link 19 s -> 0.1 s, exports identical, all tests pass. The stripped
binary grows from 4.7 MB to 5.6 MB. Pedestal, eta and the aare_core code
paths (fits, calibration, decoding) run at the same speed; the
ClusterFinder micro-benchmark is consistently 1-2 % slower without LTO.
2026-10-06 22:02:15 +02:00
Erik Fröjdh 89b7a9ef20 Split the python bindings into parallel translation units
python/src/module.cpp was one translation unit instantiating every cluster
size and value type; it compiled for 38 s and was the critical path of the
whole build. The bindings now live in bind_io.cpp (files, geometry, pixel
maps, calibration, test probes), bind_hist.cpp, bind_pedestal.cpp,
bind_fit.cpp, bind_eta.cpp and one bind_cluster_NxN.cpp per cluster size,
with the entry points declared in bindings.hpp and called from module.cpp
in the same order as before. The DEFINE_CLUSTER_BINDINGS macros moved to
bind_cluster_common.hpp.

Headers that several units include needed small fixes: allocate_image_data
and define_corner_enum are inline, the file-reader entry point is not, and
np_helper.hpp, bind_Defs.hpp, bind_FastPedestal.hpp,
bind_PedestalTrackingPixelHistogram.hpp and bind_ClusterFileSink.hpp now
include what they use, in particular pybind11/stl/filesystem.h for the
std::filesystem::path arguments they bind (previously supplied by include
order in module.cpp).

The module's exported names, types and docstrings are identical (verified
by dumping all 1948 of them), both test suites pass, and a clean Release
build with tests drops from 68 s to 42 s; the longest unit now takes 13 s
and the remaining 19 s is pybind11's LTO link.
2026-10-06 21:50:33 +02:00
Erik Fröjdh 425133de3f Unity builds for Minuit2 and libzmq, shallow dependency clones
Minuit2's ~60 small files took 45 s of summed compile time in a Release
build (32 s in Debug); batched into unity sources that drops to 9 s (5 s)
with all [fit] tests passing. libzmq gets the same treatment on its
"objects" OBJECT library for when AARE_ZMQ is on: 37 s -> 7 s of CPU,
same warnings, identical exported symbols apart from one implicitly
defined destructor that is now inlined at its single use.

All git-fetched dependencies are shallow clones like Catch2 already was.
A fresh configure with network access went from 13.4 s to 10.5 s here and
the checkouts shrink from 19 MB to 3.7 MB (fmt) and 15 MB to 3.7 MB
(pybind11).
2026-10-06 21:38:42 +02:00
Erik Fröjdh 62e6c8fe13 Make ZeroMQ opt-in with AARE_ZMQ
Nothing in aare links libzmq at the moment, yet every configure fetched
it (a 25 MB clone) and ran its feature checks, which took 8 of the 10 s a
fresh configure needed. Gate the FetchContent/find_package block behind
AARE_ZMQ (default OFF) and expose the library as aare::zmq, so re-enabling
it later is -DAARE_ZMQ=ON plus one target_link_libraries line. The patch
and the AARE_FETCH_ZMQ / AARE_SYSTEM_LIBRARIES handling stay as they were.

A fresh configure without it takes about 3 s.
2026-10-06 21:28:48 +02:00
Erik FröjdhandTomas Celko fdc2d9499f Dev/win ci (#410)
Build on RHEL9 / build (push) Successful in 2m58s
Build on RHEL8 / build (push) Successful in 3m41s
Run tests using data on local RHEL8 / build (push) Failing after 4m40s
Build on local RHEL8 / build (push) Successful in 3m25s
Added CI (wheels + native build for Windows)

closes #397

---------

Co-authored-by: Tomas Celko <tomas.celko@cvut.cz>
2026-10-06 14:49:25 +02:00
Erik Fröjdh cdd8586f64 Fixed warnings on Windows (#407)
Now builds clean on MSVC: cl version 19.51.36260 for x64, from Visual
Studio 2026 Build Tools 18.10.3.

Major items:

- [[maybe_unused]] instead of gcc/clang specific pragmas
- Removed names variables that weren't used
- Cast + explicit uing64
2026-10-06 14:49:24 +02:00
Erik Fröjdh 7e1b8a765d Dev/win compile (#402)
Build on RHEL9 / build (push) Successful in 3m13s
Build on RHEL8 / build (push) Successful in 3m48s
Run tests using data on local RHEL8 / build (push) Failing after 4m38s
Build on local RHEL8 / build (push) Successful in 3m18s
Collection of fixes to make aare build on Windows. Requires the previous
PRs for compilation to succeed.

- Replaced `or` keyword with ||
- updated cmake file
- fix for 32 bit long in fseek

closes #395 
closes #396
2026-10-05 19:13:45 +02:00
Erik FröjdhandClaude Fable 5.1 060a0ec9e7 Make the logger timestamp portable (#401)
logger.hpp pulled in <sys/time.h> and used gettimeofday and localtime_r,
which do not exist on MSVC. Build the timestamp from std::chrono instead
and use localtime_s on MSVC. The output format is unchanged: <colour>-
HH:MM:SS.mmm LEVEL: message<reset>. The unused __SHORT_FORM_OF_FILE__
helper now also strips backslash separators. Add logger tests that pin
the timestamp and line format.

closes #394

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 19:13:44 +02:00
Erik Fröjdh 3e90eb2539 Convert paths to strings explicitly (#400)
On Windows std::filesystem::path holds wchar_t, so assigning a path
component to a std::string or passing path::c_str() to fopen does not
compile. Use path::string() at those sites, and drop a redundant path
round trip in NumpyFile.

closes #399
2026-10-05 19:13:44 +02:00
Erik FröjdhandClaude Fable 5.1 4ac941a003 Add aare::ssize_t alias for MSVC (#398)
- MSVC has no ssize_t, which made every translation unit fail on
Windows.
- Define aare::ssize_t in defs.hpp: the platform ssize_t on POSIX (so
nothing changes there) and std::ptrdiff_t on MSVC.
- Code inside the namespace picks it up unchanged; the few files that
use ssize_t outside the namespace get a using-declaration. FilePtr.hpp
now includes defs.hpp since it had no aare include.

Closing #393

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 19:13:43 +02:00
Khalil Ferjaoui aed952cd5e Python bindings for aare::xy (#403)
Build on RHEL9 / build (push) Successful in 3m9s
Build on RHEL8 / build (push) Successful in 3m52s
Run tests using data on local RHEL8 / build (push) Failing after 4m36s
Build on local RHEL8 / build (push) Successful in 3m17s
Added missing python bindings for aare::xy needed for RawFile::geometry
etc.

closes #345
2026-10-05 11:40:56 +02:00
Erik Fröjdh f2db33365e bindings for xy 2026-10-04 09:54:55 +02:00
Erik Frojdh 6f5e6b4702 bumped version
Build on RHEL9 / build (push) Successful in 2m56s
Build on RHEL8 / build (push) Successful in 3m36s
Run tests using data on local RHEL8 / build (push) Failing after 4m36s
Build on local RHEL8 / build (push) Successful in 3m21s
2026.9.30
2026-09-30 16:55:00 +02:00
9661aef013 Selectable minimizers: Fumili, Levenberg-Marquardt and VarPro for the fit models (#387)
Build on RHEL9 / build (push) Successful in 3m1s
Build on RHEL8 / build (push) Successful in 3m40s
Run tests using data on local RHEL8 / build (push) Failing after 4m43s
Build on local RHEL8 / build (push) Successful in 3m22s
## Summary

Makes the minimizer behind `FitModel` selectable and adds two built-in,
dependency-free solvers next to Minuit2's Migrad and Fumili.
`Minimizer.Migrad` stays the default, so existing fits behave as before.

- **`Minimizer` enum** (C++ `FitModel::SetMinimizer`, Python `minimizer`
constructor argument and property): `Migrad`, `Fumili`,
`LevenbergMarquardt`, `VarPro`.

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Khalil Ferjaoui <khalilferjaoui@yahoo.fr>
2026-09-30 16:50:27 +02:00
Erik Fröjdh 2efdd17d81 check ready before updating pd (#391)
Build on RHEL9 / build (push) Successful in 2m49s
Build on RHEL8 / build (push) Successful in 3m29s
Run tests using data on local RHEL8 / build (push) Failing after 4m37s
Build on local RHEL8 / build (push) Successful in 3m16s
- For set_nSigma only call update_pedestal if we have accumulated enough
samples otherwise just write it
- For update threshold check if pd is ready and if not throw

closes #390
2026-09-30 14:54:59 +02:00
Erik Fröjdh 941325ea15 More uniform binding of Numpy arrays (#381)
Build on RHEL9 / build (push) Successful in 2m54s
Build on RHEL8 / build (push) Successful in 3m31s
Run tests using data on local RHEL8 / build (push) Failing after 4m28s
Build on local RHEL8 / build (push) Successful in 3m6s
- Introduce a standard way to bind numpy arrays: py::array_t<T> and
.noconvert() on the argument
- Take py::array_t by value since it's just a small wrapper
- Update bindings
2026-09-25 14:40:33 +02:00
Erik Fröjdh 8579a140f7 Improved ArrayExpr (#378)
Build on RHEL9 / build (push) Successful in 3m9s
Build on RHEL8 / build (push) Successful in 3m34s
Run tests using data on local RHEL8 / build (push) Successful in 4m25s
Build on local RHEL8 / build (push) Successful in 3m5s
- removes code repetition
- avoid temporaries for scalar operations
2026-09-25 10:43:58 +02:00
Khalil Ferjaoui 4677e1003e Updated licensing info (#384)
Build on RHEL9 / build (push) Successful in 2m54s
Build on RHEL8 / build (push) Successful in 3m31s
Run tests using data on local RHEL8 / build (push) Successful in 4m24s
Build on local RHEL8 / build (push) Successful in 3m8s
- MIT correctly stated for NumpyHelpers
- added missing SPDX identifiers
- pinned sources for licensing
2026-09-24 15:52:37 +02:00
Erik Frojdh 24f1a6138a now correct
Build on RHEL9 / build (push) Successful in 2m58s
Build on RHEL8 / build (push) Successful in 3m36s
Run tests using data on local RHEL8 / build (push) Successful in 4m28s
2026-09-24 15:24:30 +02:00
Erik Frojdh 691735d89b added missing alias for Minuit standalone 2026-09-24 15:23:07 +02:00
Erik Frojdh 516b922b38 updated licensing info 2026-09-24 09:09:37 +02:00
Khalil Ferjaoui fb4a78b380 Removed move for SPSC queue and fixed license (#383)
Build on RHEL9 / build (push) Successful in 2m52s
Build on RHEL8 / build (push) Successful in 3m29s
Run tests using data on local RHEL8 / build (push) Successful in 4m34s
Build on local RHEL8 / build (push) Successful in 3m6s
- Removed faulty move (pointed out by: #227)
- Fixed license for the queue
- Runtime check for capacity=>2

Thank you @kferjaoui for finding the issue. In the end I found it better
to remove the operators rather than modifying the queue
2026-09-23 17:53:34 +02:00
Erik Frojdh abacfd5fda removed move for SPSC queue and fixed license 2026-09-23 16:58:48 +02:00
Erik Fröjdh 1398a74877 updated AGENTS.md and added CLAUDE.md (#380)
Build on RHEL9 / build (push) Successful in 2m48s
Build on RHEL8 / build (push) Successful in 3m25s
Run tests using data on local RHEL8 / build (push) Successful in 4m25s
Build on local RHEL8 / build (push) Successful in 3m7s
- Updated AGENTS.md 
- Added CLAUDE.md which tells claude to read AGENTS.md
2026-09-22 16:48:36 +02:00
Erik Fröjdh 752ec38596 added template for making views (#377)
Build on RHEL9 / build (push) Successful in 3m4s
Build on RHEL8 / build (push) Successful in 3m32s
Run tests using data on local RHEL8 / build (push) Successful in 4m25s
Build on local RHEL8 / build (push) Successful in 3m8s
Cleaned up the helper functions by: 
- Added template for make_view (and new make_const_view) instead of the
copy paste implementation
- checks c_style and dimensions inside make_view
- test binding to be able to probe the checks in make_view

Call sites can be reviewed in a second PR since usage of const or
strictness of conversion depends...
2026-09-22 09:25:42 +02:00
Erik Frojdh cbc4864e93 changed to size_t
Build on RHEL9 / build (push) Successful in 2m53s
Build on RHEL8 / build (push) Successful in 3m28s
Run tests using data on local RHEL8 / build (push) Successful in 4m29s
Build on local RHEL8 / build (push) Successful in 3m5s
2026-09-21 10:51:43 +02:00
Erik Fröjdhandmazzol_a 0dc72634a9 Reject raw files without padding if discard partial is not set (#374)
Build on RHEL9 / build (push) Successful in 3m3s
Build on RHEL8 / build (push) Successful in 3m25s
Run tests using data on local RHEL8 / build (push) Successful in 4m21s
Build on local RHEL8 / build (push) Successful in 3m5s
We have no code in aare to deal with RawFiles that have missing packets
if they are not padded to full size or frames with packet loss dropped.

Added: 
- check that we don't try to read files that are not supported
- python bindings for frame discard policy

at least we get the check in: 
closes #171

---------

Co-authored-by: AliceMazzoleni99 <alice.mazzoleni@psi.ch>
2026-09-18 17:06:11 +02:00
mazzol_aandErik Fröjdh 97ddf6e7c1 error when compiling with warnings (#376)
Build on RHEL9 / build (push) Successful in 2m43s
Build on RHEL8 / build (push) Successful in 3m23s
Run tests using data on local RHEL8 / build (push) Successful in 4m31s
Build on local RHEL8 / build (push) Successful in 3m5s
- error upon warning when building documentation (warnings often
indicate malrendered documentation)
- fixed some warnings

Co-authored-by: Erik Fröjdh <erik.frojdh@psi.ch>
2026-09-17 09:27:05 +02:00
Erik Fröjdhandmazzol_a b558f1146b Fixed seek bug in CtbRawFile (#373)
Build on RHEL9 / build (push) Successful in 2m49s
Build on RHEL8 / build (push) Successful in 3m25s
Run tests using data on local RHEL8 / build (push) Successful in 4m27s
Build on local RHEL8 / build (push) Successful in 3m6s
- seek to the edge of a file + read_into would select the wrong file
- Visible for example in f.read_frame(index) in python

Added fix, release notes and a small test. 

closes #371

Co-authored-by: AliceMazzoleni99 <alice.mazzoleni@psi.ch>
2026-09-17 08:09:12 +02:00
Erik Fröjdh 8551281eb7 Cleaned up Pedestal (#370)
Build on RHEL9 / build (push) Successful in 2m52s
Build on RHEL8 / build (push) Successful in 3m33s
Run tests using data on local RHEL8 / build (push) Successful in 4m31s
Build on local RHEL8 / build (push) Successful in 3m4s
- renamed pedestal.hpp to bind_Pedestal.hpp for python bindings
- variance is now always calculated in double and made private
- cost correctness in a few places
- removed push_fast and explicit updates of mean from Pedestal. If
performance is needed use FastPedestal
- Pedestal no longer caches std
2026-09-14 16:27:53 +02:00
Erik Fröjdh b0875106e3 Improved ClusterFile API (#358)
Build on RHEL9 / build (push) Successful in 2m49s
Build on RHEL8 / build (push) Successful in 3m23s
Run tests using data on local RHEL8 / build (push) Successful in 4m23s
Build on local RHEL8 / build (push) Successful in 3m5s
Improved API for ClusterFile

- read_frame now returns a std::optional<ClusterVector> to differentiate
between an empty frame and end of file
- f.frames() produces an iterator over frames
- f.chunks() produces an iterator reading chunks of clusters
2026-09-14 16:01:25 +02:00
mazzol_aandErik Fröjdh 86db375948 python repr for Eta, Cluster (#367)
Build on RHEL9 / build (push) Successful in 2m40s
Build on RHEL8 / build (push) Successful in 3m15s
Run tests using data on local RHEL8 / build (push) Successful in 4m15s
Build on local RHEL8 / build (push) Successful in 2m56s
- python string repr for Cluster and Eta
- Context manager for RawMasterFile 
- slice operator for ROI

---------

Co-authored-by: Erik Fröjdh <erik.frojdh@psi.ch>
2026-09-10 12:18:27 +02:00
Erik Fröjdh 3431bbe117 better error and update frames (#365)
Build on RHEL9 / build (push) Successful in 2m34s
Build on RHEL8 / build (push) Successful in 3m13s
Run tests using data on local RHEL8 / build (push) Failing after 4m14s
Build on local RHEL8 / build (push) Successful in 2m54s
- Updated error message to mention out of range and which file it
applies to
- If there are different number of frames in the subfiles, take the
minimum and print a warning

Closes: #363 
Closes: #362
2026-09-09 17:07:08 +02:00
mazzol_a afce91b358 Fix/clusterfinder test (#359)
Build on RHEL9 / build (push) Successful in 2m41s
Build on RHEL8 / build (push) Successful in 3m19s
Run tests using data on local RHEL8 / build (push) Successful in 4m21s
Build on local RHEL8 / build (push) Successful in 2m53s
- fixed test in ClusterFinderMT (use minimum one pedestal to accumulate
dummy pedestal)
- added minimum_pedestal_samples as additional constructor argument in
ClusterFinder and ClusterFinderMT
- bugfix: race conditions for empty queues in collect() - check directly
when needed
2026-09-09 16:38:54 +02:00
Erik Fröjdh dd409cfe41 Fixed ClusterVector move, filtering, and improved documentation (#357)
Run tests using data on local RHEL8 / build (push) Failing after 4m6s
Build on local RHEL8 / build (push) Successful in 2m52s
Build on RHEL9 / build (push) Successful in 2m44s
Build on RHEL8 / build (push) Successful in 3m16s
- Default `ClusterVector` move operations simplifying the code and
fixing a bug.
- Fixed inconsistent frame number type (uint64/int32)
- Validate Python masks as one-dimensional, C-contiguous Boolean arrays,
handle empty masks safely, and reserve filtered storage based on the
selected cluster count.
- Align the C++ and Python API documentation with the implementation,
including concise `hitmap` and reduction documentation and a correctly
rendered constructor example.
2026-09-07 08:19:26 +02:00
mazzol_a 4eb2bfcfcc enum TiminMode same as in slsDetectorPackage (#360)
Build on RHEL9 / build (push) Successful in 2m36s
Build on RHEL8 / build (push) Successful in 3m19s
Run tests using data on local RHEL8 / build (push) Failing after 4m13s
Build on local RHEL8 / build (push) Successful in 2m53s
**BugFix: **
- enum TimingMode same as in slsDetectorPackage 
- supports reading all timing modes from RawMasterFile
2026-09-04 12:19:00 +02:00
mazzol_aandErik Fröjdh 641ef047b5 Dev/filereading for disabled udp (#342)
Build on RHEL9 / build (push) Successful in 2m41s
Build on RHEL8 / build (push) Successful in 3m15s
Run tests using data on local RHEL8 / build (push) Failing after 4m13s
Build on local RHEL8 / build (push) Successful in 2m53s
- handles file reading of disabled udp ports 
- adds members disabled_udp_ports in master file as an optional 
- adds member diasbled_udp_port_types in master file as an optional
- Treats enabled udp ports as ROIs 
- merges/combines consecutive ROis into one 

### To discuss: 

- right now can only handle either ROI or disabled udp ports (disabled
udp ports has higher precedence)
- Should Frames in File be removed from Master File as value is nonsense
for disabled udp ports

---------

Co-authored-by: Erik Fröjdh <erik.frojdh@psi.ch>
2026-09-03 14:14:57 +02:00
Erik Fröjdh eddb919328 FastPedestal + optimizations in the cluster finder (#341)
Build on RHEL9 / build (push) Successful in 2m42s
Build on RHEL8 / build (push) Successful in 3m21s
Run tests using data on local RHEL8 / build (push) Failing after 3m56s
Build on local RHEL8 / build (push) Successful in 2m54s
Optimized pedestal tracking with FastPedestal and performance improvements to the cluster finder. 
- ~2x faster hitting 14k FPS on benchmark dataset on 16 core threadripper pro


**Changes**
- No bounds check on interior of frame. (only within half of a cluster)
(~15% improvement)
- Cache threshold (std*n_rms) Biggest improvement comes from not
computing std for each access
- Cache pedestal subtracted frame
- Switched to FastPedestal which assumes we reached steady state

**Things tried but rejected:**
- Always store cluster values, commit on val==max (~15% drop in frame
rate)

**Options**
- using 16 bit clusters and 16 bit pedestal. (slows down the single
threaded case but allow us to reach 12k with multi threading)

**Other notes on performance**
- Passing in memory frames from python and doing nothing: 0.8us/frame
- Passing + pedestal subtraction: 28us/frame
- Passing + pedestal + cluster finding (no store): 652us/frame
- Passing + pedestal + cluster finding: 886 us/frame
2026-09-01 18:41:12 +02:00
Erik Fröjdh 568f94926b baseline AGENTS.md (#356)
Build on RHEL9 / build (push) Successful in 2m32s
Build on RHEL8 / build (push) Successful in 3m15s
Run tests using data on local RHEL8 / build (push) Successful in 3m57s
Build on local RHEL8 / build (push) Successful in 2m44s
- AI generated baseline for AGENTS.md
- Meant to be edited in the future
2026-08-28 09:22:29 +02:00
Erik Fröjdh 85f9d0176a Dev/guess clusters (#355)
Build on RHEL9 / build (push) Successful in 2m40s
Build on RHEL8 / build (push) Successful in 3m17s
Run tests using data on local RHEL8 / build (push) Successful in 3m53s
Build on local RHEL8 / build (push) Successful in 2m47s
- exposing ClusterVector::empty in python
- added member guess_n_clusters
2026-08-25 09:15:38 +02:00
Erik Fröjdh 26d11f74a8 Fix/expand const buffer (#354)
Build on RHEL9 / build (push) Successful in 2m34s
Build on RHEL8 / build (push) Successful in 3m15s
Run tests using data on local RHEL8 / build (push) Successful in 3m53s
Build on local RHEL8 / build (push) Successful in 2m46s
Minor API change:

- NDView<T> implicitly converts to NDView<const T> (as std::span in
C++20)
- expand4to8bit and expand24to32bit now takes a view over const uint8_t
to show that the input is not changes

closes #291
2026-08-25 08:51:41 +02:00
mazzol_a 4970a92d50 updated clang-format commands (#352)
Build on RHEL9 / build (push) Successful in 2m28s
Build on RHEL8 / build (push) Successful in 3m21s
Run tests using data on local RHEL8 / build (push) Successful in 3m59s
Build on local RHEL8 / build (push) Successful in 2m43s
- updated custom targets clang-format, check-format, clang-tidy 
- find: paths must precede expression: `\' (double \\ not properly
escaped in bash)
2026-08-20 16:14:32 +02:00
Erik Fröjdh fef57c13c9 added const overload for NDArray::view() (#351)
Build on RHEL9 / build (push) Successful in 2m29s
Build on RHEL8 / build (push) Successful in 3m3s
Run tests using data on local RHEL8 / build (push) Successful in 3m59s
Build on local RHEL8 / build (push) Successful in 2m45s
- Added missing const T overload for NDArray::view()
- Tests
2026-08-19 16:21:37 +02:00
Erik Fröjdh af25aea684 Fixed bug in reading analog samples for <v8.0 (#349)
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
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