Skip to content

v6.1.0

Compare
Choose a tag to compare
@KrisThielemans KrisThielemans released this 16 May 10:44
· 226 commits to master since this release

Summary of changes in STIR release 6.1

This version is 100% backwards compatible with STIR 6.0 for the user, except for the bug-fix in the RDP (see below).

Overall summary

This version adds capability of using Parallelproj (CPU and GPU versions) for TOF data. In addition, the list-mode objective function
has several improvements, including speed-up by using multi-threading if caching was not enabled.

Of course, there is also the usual code-cleanup and improvements to the documentation.

This release contains mainly code written by Nicole Jurjew (UCL) and Kris Thielemans (UCL).

Summary for end users (also to be read by developers)

New functionality

  • Add TOF capability of the parallelproj projector (see PR #1356)
  • It is now possible to read TOF bin order from the interfile header (see PR #1389)
  • PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin can now compute the value as well as
    accumulate_Hessian_times_input. PR #1418
  • GeneralisedObjectiveFunction has 2 new members to compute the full gradient (compute_gradient and compute_gradient_without_penalty). Previously, only subset gradients were available. PR #1418

Changed functionality

  • PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin now computes the gradient multi-threaded (if OpenMP is enabled), even if caching to file of the list-mode file is not enabled. PR #1418
  • Accumulation in computation of priors now uses doubles, which could result in slightly better precision. Part of PR #1410.

Bug fixes

  • The Relative Difference Prior gave incorrect results, probably since switching to C++-14 in version 6.0, although we are not sure.
    See PR #1410 and associated issue #1409.
  • Our checks for determining system byte-order were out-of-date and in particular did not work on MacOS 14 on ARM. We now use CMake's CMAKE_CXX_BYTE_ORDER (available since CMake 3.20). This could potentially affect reading of list-mode data (which would otherwise be garbled). Fixed in PR #1412.
  • The listmode objective function did not loop over TOF bins when computing the Hessian. This would give different results in OSSPS for
    computing the "denominator". Fixed in issue #1427.

Known problems

See our issue tracker.

What's new for developers (aside from what should be obvious from the above):

Backward incompatibities

  • Additional checks on GeometryBlocksOnCylindrical scanner configuration, which may lead to an error being raised, while previously the code silently proceeded.

Bug fixes

  • PoissonLogLikelihoodWithLinearModelForMeanAndProjData had a (minor?) problem with TOF data that when computing the gradient, the normalisation object was not set-up with the TOF data, but non-TOF instead. This did not happen in our normal reconstruction code, and would have thrown an error if it occured. Fixed in issue #1427.

Other code changes

  • Fixes an incompatibility with C++20.

Build system

  • Force C++ version according to CERN ROOT versions: ROOT 6.28.10 needs C++17 and 6.30.2 needs C++20. Also some fixes when relying on root-config.

Test changes

C++ tests

  • Objective functions (both projection-data and list-mode) and priors now have a numerical test for accumulate_Hessian_times_input
    PR #1418

Full Changelog: rel_6.0.0...rel_6.1.0