forked from UCL/STIR
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease_6.2.htm
185 lines (158 loc) · 6.52 KB
/
release_6.2.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Summary of changes in STIR release 6.2</title>
</head>
<body>
<h1>Summary of changes in STIR release 6.2</h1>
<p>
This version is 100% backwards compatible with STIR 6.1, aside from the default of the
tail-fitting of the scatter estimator (see below). However, C++-17 is now required.
</p>
<h2>Overall summary</h2>
<p>
</p>
<p>
Of course, there is also the usual code-cleanup and improvements to the documentation.
</p>
<p>
This release contains mainly code written by Nicole Jurjew (UCL) (SSRB for TOF),
Imraj Singh (UCL) (CUDA version of the Relative Difference Prior) and Kris Thielemans (UCL).
</p>
<h2>Patch release info</h2>
<ul>
<li>
6.2.0 released ??/2024<br>
<a href="https://github.com/UCL/STIR/milestone/11">GitHub Milestone 6.2</a>
</li>
<!--
<li> 4.0.1 released 28/04/2020
<ul>
<li><a href=https://github.com/UCL/STIR/pull/513>PR 513</a> (suppress warnings with clang)</li>
</ul>
-->
</ul>
<h2> Summary for end users (also to be read by developers)</h2>
<h3>New functionality</h3>
<ul>
<li>
<code>ProjData</code> now has most of the methods for numerical operations as <code>Array</code>,
i.e. +=,-=,*=,/=,<code>find_max()</code>,<code>find_min()</code>,<code>sum()</code>.
<code>ProjDataInMemory</code> adds =,-,*,/ (as well as overloads that are faster than the implementations
in <code>ProjData</code>).<br>
<a href=https://github.com/UCL/STIR/pull/1439>PR #1439</a> and <a href=https://github.com/UCL/STIR/pull/1448>PR #1448</a>
</li>
<li>
New prior <code>CudaRelativeDifferencePrior</code> (use <tt>Cuda Relative Difference Prior</tt> in <tt>.par</tt> files), only
available if the CUDA toolkit is found during building. Results are identical to <code>RelativeDifferencePrior</code>
up to numerical rounding issues. However, the code is currently limited to 3x3x3 weights.<br>
Added timings for the RDP (both non-CUDA and CUDA) tothe <tt>stir_timings</tt> utility.<br>
<a href=https://github.com/UCL/STIR/pull/1408>PR #1408</a>
</li>
</ul>
<h3>Changed functionality</h3>
<ul>
<li>
The default minimum scale factor for tail-fitting in the scatter estimation is now 0.05 (was 0.4).
This (temporarily) resolves a problem that for the Siemens mMR, the default factor was too large
(see <a href=https://github.com/UCL/STIR/issues/1280>issue #1280</a>.<br>
<strong>WARNING:</strong><i>This potentially changes your scatter estimates</i>. (You can check log files
of the scatter estimation to see what the scaling factors are.) However,
the Siemens mMR example files already lowered the default scale factor to .1, so if you used
those, you will get identical results.
</li>
<li>
<code>Array::sum()</code> (and hence images etc) now accumulates in a variable at higher precision to avoid loss of precision.<br>
<a href=https://github.com/UCL/STIR/pull/1439>PR #1439</a>
</li>
<li>
<code>PoissonLogLikelihoodWithLinearModelForMeanAndProjData</code> now attempts to auto-detect
if it should compute sensitivity using TOF back-projection or not. It does this by
checking if its normalisation object can only handle TOF data or not.
This should mean that the <tt>use time-of-flight sensitivities</tt> keyword should now
rarely (if ever) be necessary.
<br>
<a href=https://github.com/UCL/STIR/pull/1458>PR #1458</a>
</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>
There was a bug in the computation of the detector coordinates for <code>BlocksOnCylindrical</code>
scanners that caused the buckets to not be symmetric. <br>
<a href=https://github.com/UCL/STIR/pull/1462>PR #1462</a>
</li>
<li>
<code>BlocksOnCylindrical</code> scanners were not axially symmetric due to a bug in how gaps were
handled. Also, downsampling of <code>BlocksOnCylindrical</code> scanners in scatter simulation was inaccurate.<br>
<a href=https://github.com/UCL/STIR/pull/1466>PR #1466</a>
</li>
</ul>
<h3>Build system</h3>
<ul
<li>
C++-17 is now required.
</li>
</ul>
<h3>Known problems</h3>
<p>See <a href=https://github.com/UCL/STIR/labels/bug>our issue tracker</a>.</p>
<H2>What is new for developers (aside from what should be obvious
from the above):</H2>
<h3>Changed functionality</h3>
<ul>
<li>
<code>Array</code> classes by default use contiguous memory allocation (as opposed to a sequence of 1D vectors).
This could speed up memory allocation and destruction of arrays with a high number of underlying 1D vectors. It also allows reading/writing
data in one call to the C++ library, as opposed to many small calls. Also added move constructors to the <code>Array</code>,
<code>VectorWithOffset</code> classes.
<br>
<a href=https://github.com/UCL/STIR/pull/1236>PR #1236</a> and <a href=https://github.com/UCL/STIR/pull/1438>PR #1438</a>.
</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>
<code>PoissonLogLikelihoodWithLinearModelForMeanAndProjData</code> 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.
<br>
Fixed in <a href=https://github.com/UCL/STIR/pull/1427>PR #1427</a>.
</li>
</ul>
<h3>Other code changes</h3>
<ul>
<li>
Fixed an incompatibility with C++20.
</li>
<li>
Enabled OpenMP for <code>Array</code> members <code>find_max(), find_min(), sum(), sum_positivie()</code>.
<br>
<a href=https://github.com/UCL/STIR/pull/1449>PR #1449</a>.
</li>
<li>
Changes to allow reading Siemens Biograph Vision data: iSSRB and SSRB are now included in the SWIG interface; minor changes to a shell script altering e7tools headers.
</li>
</ul>
<h3>Build system</h3>
<ul>
<li>
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 <code>root-config</code>.
</li>
<li>
Optionally enable CUDA as a CMake language (for the CUDA RDP). <strong>You should use CMake 3.23 or later</strong>
if you use CUDA.
</li>
</ul>
<h3>Test changes</h3>
<h4>C++ tests</h4>
<ul>
<li>
Objective functions (both projection-data and list-mode) and priors now have a numerical test for <code>accumulate_Hessian_times_input</code>
<br>
<a href=https://github.com/UCL/STIR/pull/1418> PR #1418</a>
</li>
</ul>
</body>
</html>