@@ -19,6 +19,7 @@ <h2> Summary for end users (also to be read by developers)</h2>
1919
2020
2121 < h3 > New functionality</ h3 >
22+ < h4 > General</ h4 >
2223 < ul >
2324 < li >
2425 The analytic Spline Reconstruction Technique (SRT) algorithm has been added in 2 different versions: for PET
@@ -51,9 +52,6 @@ <h3>New functionality</h3>
5152 However, projection data is currently still always returned as non-TOF (but list-mode data is read as TOF).< br >
5253 < a href =https://github.com/UCL/STIR/pull/1503 > PR #1503</ a >
5354 </ li >
54- < li >
55- < tt > stir_timings</ tt > has now an extra option to parse a par-file for a projector-pair.
56- </ li >
5755 < li >
5856 Added the ability to set a forward projector for mask projection in the < code > ScatterEstimation</ code > class.< br >
5957 < a href =https://github.com/UCL/STIR/pull/1530 > PR #1530</ a >
@@ -64,18 +62,42 @@ <h3>New functionality</h3>
6462 < a href =https://github.com/UCL/STIR/pull/1519 > PR #1519</ a >
6563 </ li >
6664 < li >
67- < code > LmToProjData</ code > /< tt > lm_to_projdata</ tt > now no longer requires a template projection data. If none is
65+ < code > LmToProjData</ code > class /< tt > lm_to_projdata</ tt > utility now no longer requires a template projection data. If none is
6866 specified, it will use the proj_data_info from the input list-mode.< br >
6967 < b > Warning</ b > for some scanners with TOF capabilities, this will result in very large projection data (possibly
7068 larger than the default from the vendor).< br >
7169 < a href =https://github.com/UCL/STIR/pull/1315 > PR #1315</ a >
7270 </ li >
71+ </ ul >
72+ < h4 > Python</ h4 >
73+ < ul >
74+ < li >
75+ "Container" classes such as < code > FloatVoxelsOnCartesianGrid</ code > , < code > ProjDataInMemory</ code >
76+ and array-classes now have numerical operations properly defined, for instance
77+ < code > a = b + c</ code > and < code > a -= 3</ code > . Note that < code > a = 1 + b</ code > is not
78+ yet available.< br >
79+ < a href =https://github.com/UCL/STIR/pull/1630 > PR #1630</ a >
80+ </ li >
81+ < li >
82+ The above "container" classes now have an extra member `as_array()` which returns a numpy < code > ndarray</ code > . This
83+ is equivalent to `stirextra.to_numpy()` which will become deprecated later. In addition, the
84+ < code > fill()</ code > method now directly accepts an < code > ndarray</ code > , avoiding the need to go via an iterator.
85+ These additions also make it easier to prt SIRF python code to STIR.< br >
86+ < a href =https://github.com/UCL/STIR/pull/1632 > PR #1632</ a >
87+ </ li >
7388 < li >
74- Added a Python script to convert e7tools generated Siemens Biograph Vision 600 sinograms to STIR compatible format.
89+ Added a Python script to convert e7tools generated Siemens Biograph Vision 600 sinograms to STIR compatible format.< br >
7590 < a href =https://github.com/UCL/STIR/pull/1593 > PR #1593</ a >
7691 </ li >
7792 </ ul >
7893
94+ < h4 > Utilities</ h4 >
95+ < ul >
96+ < li >
97+ < tt > stir_timings</ tt > has now an extra option to parse a par-file for a projector-pair.
98+ </ li >
99+ </ ul >
100+
79101 < h3 > Changed functionality</ h3 >
80102 < ul >
81103 < li >
@@ -87,6 +109,14 @@ <h3>Changed functionality</h3>
87109 < li >
88110 Default ECAT scanner configurations updated to use a negative intrinsic tilt.
89111 </ li >
112+ < li >
113+ When computing the sensitivity images in < code > PoissonLogLikelihoodWithLinearModelForMeanAndProjData</ code > ,
114+ we now avoid creating an extra < code > ProjDataInMemory</ code > in most cases (there are still some corner
115+ cases for TOF data when using non-TOF projector for the sensitivity, but then the memory overhead is small).
116+ This enables LAFOV PET reconstructions with the "ray tracing" matrix (we use less memory, and we avoid running into a current
117+ < code > ProjDataInMemory</ code > < a href =https://github.com/UCL/STIR/issues/1505 > limitation on the number of bins</ a > ).< br >
118+ < a href =https://github.com/UCL/STIR/pull/1617 > PR #1716</ a >
119+ </ li >
90120 < li >
91121 Boost format was replaced by `std::format` for formatting strings. If C++20 or newer is
92122 not yet used, a work-around is in place by using the [{fmt} library](https://github.com/fmtlib/fmt/)
@@ -154,6 +184,12 @@ <h3>New functionality</h3>
154184
155185 < h3 > Changed functionality</ h3 >
156186 < ul >
187+ < li >
188+ In C++, "Container" classes such as < code > VoxelsOnCartesianGrid</ code > , < code > ProjDataInMemory</ code >
189+ and array-classes now have numerical operations that return objects of the correct type.
190+ (Previously, it was a base-class such as < code > NumericVectorWithOffset< Array < 2 , float > , float> </ code > ).< br >
191+ < a href =https://github.com/UCL/STIR/pull/1630 > PR #1630</ a >
192+ </ li >
157193 < li >
158194 Made 2 (deprecated) members of < code > ProjDataInfoBlocksOnCylindricalNoArcCorr</ code > < code > private</ code >
159195 and do some clean-up of which files to include.
@@ -181,12 +217,12 @@ <h3>Changed functionality</h3>
181217
182218 < h3 > Bug fixes</ h3 >
183219 < ul >
184- < li > Fixed minor incompatibility with gcc-14 and clang-18 buy adding an extra include file< br >
220+ < li > Fixed minor incompatibility with gcc-14 and clang-18 by adding an extra include file. < br >
185221 < a href =https://github.com/UCL/STIR/pull/1552 > PR #1552</ a >
186222 </ li >
187223 </ ul >
188224
189- < h3 > Deprecations </ h3 >
225+ < h3 > New deprecations </ h3 >
190226 < ul >
191227 < li >
192228 < code > truncate_end_planes</ code > will be removed in v7.0
@@ -197,7 +233,13 @@ <h3>Other code changes</h3>
197233
198234
199235 < h3 > Test changes</ h3 >
200-
236+ < h4 > Python tests</ h4 >
237+ < ul >
238+ < li >
239+ Tests for numerical operations for the "container" classes were added in the same PR as the code.< br >
240+ < a href =https://github.com/UCL/STIR/pull/1630 > PR #1630</ a >
241+ </ li >
242+ </ ul >
201243
202244 < h4 > C++ tests</ h4 >
203245
0 commit comments