Skip to content

Commit e50e6b1

Browse files
Merge pull request #1478 from KrisThielemans/v6.2.0prep
V6.2.0prep
2 parents c0b10eb + b6d5862 commit e50e6b1

File tree

6 files changed

+56
-45
lines changed

6 files changed

+56
-45
lines changed

LICENSE.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Licensing information for STIR 6.0.0
1+
Licensing information for STIR 6.2.0
22
----------------------------------
33

44
See for more info http://stir.sourceforge.net, section Registration.
@@ -209,6 +209,7 @@ Explicit list of files that carry the PARAPET license
209209
./src/include/stir/recon_buildblock/BackProjectorByBinUsingInterpolation.h
210210
./src/include/stir/recon_buildblock/SymmetryOperations_PET_CartesianGrid.h
211211
./src/include/stir/recon_buildblock/ProjMatrixElemsForOneBin.h
212+
./src/include/stir/recon_buildblock/distributable.txx
212213
./src/include/stir/recon_buildblock/RelatedBins.h
213214
./src/include/stir/recon_buildblock/RelatedDensels.inl
214215
./src/include/stir/recon_buildblock/ProjMatrixByBin.h
@@ -219,6 +220,7 @@ Explicit list of files that carry the PARAPET license
219220
./src/include/stir/CPUTimer.h
220221
./src/include/stir/VoxelsOnCartesianGrid.inl
221222
./src/include/stir/stream.h
223+
./src/include/stir/HigherPrecision.h
222224
./src/include/stir_experimental/phantoms/Utah.h
223225
./src/test/test_ByteOrder.cxx
224226
./src/test/test_VectorWithOffset.cxx

documentation/STIR-UsersGuide.tex

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
\\[3cm]
4545

4646
\textbf{{\huge User's Guide\\
47-
Version 6.1}}
47+
Version 6.2}}
4848
\end{center}
4949

5050
\end{spacing}
@@ -1092,17 +1092,18 @@ \subsubsection{
10921092
the same idea while still allowing preserving some of the obliqueness.
10931093
For instance, for a dataset with 9 segments, \textbf{SSRB} can produce
10941094
a new dataset with only 3 segments. This essentially increases
1095-
the axial compression (or \textit{span} in CTI terminology), see the
1095+
the axial compression (or \textit{span} in CTI/Siemens terminology), see the
10961096
\textit{STIR} Glossary on axial compression. In addition, \textbf{SSRB} can
10971097
introduce extra \textit{mashing} (see the \textit{STIR} Glossary) of the data,
1098-
i.e. add views together.
1098+
i.e. add views and/or TOF bins together.
10991099

11001100

11011101
\textit{Usage:}
11021102

11031103
\cmdline{SSRB output\_filename input\_projdata\_name {\textbackslash} \\
11041104
num\_segments\_to\_combine [num\_views\_to\_combine {\textbackslash}\\
1105-
{[}do\_normalisation [max\_in\_segment\_num\_to\_process ]]]}
1105+
{[}do\_normalisation [max\_in\_segment\_num\_to\_process {\textbackslash}\\
1106+
{[}num\_tof\_bins\_to\_combine ]]]]}
11061107
or
11071108
\cmdline{SSRB --template template\_filename output\_filename input\_projdata\_name [do\_normalisation]}
11081109

@@ -1116,8 +1117,8 @@ \subsubsection{
11161117
the result is normalised, i.e. divided by \textit{num\_segments\_to\_combine*num\_views\_to\_combine}.
11171118
This is appropriate for rebinning data where normalisation has
11181119
already been applied, but inappropriate otherwise.
1119-
1120-
\item[template\_filename] inicated by the \textit{--template} flag,
1120+
\item[num\_tof\_bins\_to\_combine] defaults to 1, so TOF bins are not combined.
1121+
\item[template\_filename] indicated by the \textit{--template} flag,
11211122
is the sinogram type that the \textit{input\_projdata\_name} will
11221123
be mapped to. This allows for the effective use of
11231124
\textit{num\_segments\_to\_combine} to be an even number,
@@ -4446,6 +4447,12 @@ \subsubsection{
44464447
END Relative Difference Prior Parameters:=
44474448
\end{verbatim}
44484449

4450+
Note that if you have the \em{CUDA} drivers (and toolkit when building), setting
4451+
\begin{verbatim}
4452+
prior type := Cuda Relative Difference Prior
4453+
\end{verbatim}
4454+
will enable a \em{CUDA} implementation (with some restrictions). Other parameter
4455+
settings are identical.
44494456

44504457
{ \subsubsubsection{Logcosh} \label{sec:priors:Logcosh}
44514458
}

documentation/STIR-developers-overview.tex

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
\textbf{{\huge STIR \\
1717
Overview for developers}}\\
1818
\textbf{Kris Thielemans}\\
19-
\textbf{\textit{version 6.0}}
19+
\textbf{\textit{version 6.2}}
2020

2121
\end{center}
2222

@@ -60,8 +60,8 @@ \section{
6060
doxygen on the source files that come in the STIR distribution).
6161

6262
\subsection{Language support}
63-
STIR is written in C++ and currently requires C++-14, but it is compatible with newer versions of the C++ standard.
64-
We will enforce C++-16 from STIR 6.2.
63+
STIR is written in C++ and currently requires C++-17, but it is compatible with newer versions of the C++ standard.
64+
We will enforce C++-20 from STIR 7.0 (possibly earlier).
6565

6666
Python and MATLAB support is provided via \R2Lurl{http://www.swig.org/}{SWIG}. This means that Python/MATLAB interfaces follow
6767
the C++ classes closely, although some differences are required as these languages do not support templates for instance.
@@ -392,7 +392,7 @@ \subsection{
392392
with info on the file and line number where the assertion failed.
393393

394394
\subsection{C++ conventions}
395-
STIR uses C++-14 and is compatible with C++-20 to the best of our knowledge.
395+
STIR uses C++-17 and is compatible with C++-20 to the best of our knowledge.
396396
For legacy reasons, we have some preprocessor
397397
macros (see \textit{stir/common.h}) to define the stir namespace (see below).
398398
These should disappear at a
@@ -622,6 +622,12 @@ \subsubsection{typedefs}
622622
};
623623
\end{verbatim}
624624

625+
\section{CUDA support}
626+
STIR 6.2 introduced first versions of some CUDA code. The include file
627+
\texttt{cuda\_utilities.h} contains some helpers classes to copy
628+
arrays to/from the device. This is still work-in-progress as objects
629+
cannot remain on the device.
630+
625631
\section{
626632
Overview of classes}
627633

documentation/STIR-glossary.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
\end{center}
1515

1616
\begin{center}
17-
\textit{Version 6.0}\\
17+
\textit{Version 6.2}\\
1818
Originally based on PARAPET Deliverable 4.1,
1919
Extended for Quantitative Reconstruction and motion compensation
2020

@@ -207,7 +207,7 @@ \section*{Different (lossy) data compressions used}
207207
by the scanner (in list-mode) over the actual number of TOF bins. Currently in STIR, this
208208
ratio has to be an integer. The size of a TOF bin is computed by multiplying the
209209
\textbf{TOF mashing factor} with the \textbf{size of unmashed TOF time bins}, with the latter
210-
defined as a scanner property.\\
210+
defined as a scanner property. \texttt{SSRB} can be used to increase the TOF mashing factor.\\
211211
Note that many PET scanners use a \textbf{TOF mashing factor} greater than 1
212212
for their standard histogrammed projection data.
213213

documentation/history.htm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ <h1>History of public releases of the STIR software</h1>
1111
The following links give you a summary what has changed. However,
1212
the ChangeLog is the definite (but tedious) information.
1313
<ul >
14+
<li><a href="release_6.2.htm">version 6.2.0 (dated 23 July 2024)</a></li>
1415
<li><a href="release_6.1.htm">version 6.1.0 (dated 16 May 2024)</a></li>
1516
<li><a href="release_6.0.htm">version 6.0.0 (dated 07 February 2024)</a></li>
1617
<li><a href="release_5.2.htm">version 5.2.0 (dated 30 October 2023)</a></li>

documentation/release_6.2.htm

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@
77
<body>
88
<h1>Summary of changes in STIR release 6.2</h1>
99

10-
<p>
11-
This version is 100% backwards compatible with STIR 6.1, aside from the default of the
12-
tail-fitting of the scatter estimator (see below). However, C++-17 is now required.
13-
</p>
1410

1511
<h2>Overall summary</h2>
1612
<p>
17-
13+
This version is 100% backwards compatible with STIR 6.1, aside from a bug fix for
14+
the blocks-on-cylindrical set-up which caused the wrong geometry, and a changed
15+
default of the tail-fitting of the scatter estimator (see below). However,
16+
C++-17 is now required.
17+
</p>
18+
<p>
19+
Main new features are the capability to mash TOF bins (via <tt>SSRB</tt> utility/code)
20+
and a CUDA version of the Relative Difference Prior. There are also some
21+
import bug fixes, as well as some speed-up (hopefully) in the use of arrays.
1822
</p>
1923

2024
<p>
@@ -29,15 +33,9 @@ <h2>Overall summary</h2>
2933
<h2>Patch release info</h2>
3034
<ul>
3135
<li>
32-
6.2.0 released ??/2024<br>
36+
6.2.0 released 23/07/2024<br>
3337
<a href="https://github.com/UCL/STIR/milestone/11">GitHub Milestone 6.2</a>
3438
</li>
35-
<!--
36-
<li> 4.0.1 released 28/04/2020
37-
<ul>
38-
<li><a href=https://github.com/UCL/STIR/pull/513>PR 513</a> (suppress warnings with clang)</li>
39-
</ul>
40-
-->
4139
</ul>
4240

4341
<h2> Summary for end users (also to be read by developers)</h2>
@@ -56,7 +54,7 @@ <h3>New functionality</h3>
5654
New prior <code>CudaRelativeDifferencePrior</code> (use <tt>Cuda Relative Difference Prior</tt> in <tt>.par</tt> files), only
5755
available if the CUDA toolkit is found during building. Results are identical to <code>RelativeDifferencePrior</code>
5856
up to numerical rounding issues. However, the code is currently limited to 3x3x3 weights.<br>
59-
Added timings for the RDP (both non-CUDA and CUDA) tothe <tt>stir_timings</tt> utility.<br>
57+
Added timings for the RDP (both non-CUDA and CUDA) to the <tt>stir_timings</tt> utility.<br>
6058
<a href=https://github.com/UCL/STIR/pull/1408>PR #1408</a>
6159
</li>
6260
</ul>
@@ -70,7 +68,7 @@ <h3>Changed functionality</h3>
7068
(see <a href=https://github.com/UCL/STIR/issues/1280>issue #1280</a>.<br>
7169
<strong>WARNING:</strong><i>This potentially changes your scatter estimates</i>. (You can check log files
7270
of the scatter estimation to see what the scaling factors are.) However,
73-
the Siemens mMR example files already lowered the default scale factor to .1, so if you used
71+
the Siemens mMR example files already lowered the default scale factor to .1, so if you use(d)
7472
those, you will get identical results.
7573
</li>
7674
<li>
@@ -94,10 +92,10 @@ <h3>Changed functionality</h3>
9492
<li>
9593
<tt>SPECT_dicom_to_interfile</tt> improvements:
9694
<ul>
97-
<li>remove requirement for the <tt>is_planar</tt> parameters.
95+
<li>remove requirement for the <tt>is_planar</tt> parameters.
9896
As STIR can only read SPECT sinograms, we now read/set all fields
9997
from a planar scan as well. There is therefore no need anymore for
100-
the boolean, and it is just ignored.
98+
the boolean, and it is just ignored.
10199
Output of a conversion of planar data is now directly readable into STIR.
102100
</li>
103101
<li>
@@ -131,10 +129,19 @@ <h3>Bug fixes</h3>
131129
</ul>
132130

133131
<h3>Build system</h3>
134-
<ul
132+
<ul>
135133
<li>
136134
C++-17 is now required.
137135
</li>
136+
<li>
137+
Force C++ version according to CERN ROOT versions: ROOT 6.28.10 needs C++17 and 6.30.2 needs C++20.
138+
Also some fixes when relying on <code>root-config</code>.
139+
</li>
140+
<li>
141+
Optionally enable CUDA as a CMake language (for the CUDA RDP). <strong>You should use CMake 3.23 or later</strong>
142+
if you use CUDA. If you have the CUDA Toolkit but an old version of CMake that you cannot update,
143+
you will have to set <tt>DISABLE_STIR_CUDA</tt> to <tt>ON</tt>.
144+
</li>
138145
</ul>
139146

140147
<h3>Known problems</h3>
@@ -175,7 +182,7 @@ <h3>Other code changes</h3>
175182
Fixed an incompatibility with C++20.
176183
</li>
177184
<li>
178-
Enabled OpenMP for <code>Array</code> members <code>find_max(), find_min(), sum(), sum_positivie()</code>.
185+
Enabled OpenMP for <code>Array</code> members <code>find_max(), find_min(), sum(), sum_positive()</code>.
179186
<br>
180187
<a href=https://github.com/UCL/STIR/pull/1449>PR #1449</a>.
181188
</li>
@@ -184,18 +191,6 @@ <h3>Other code changes</h3>
184191
</li>
185192
</ul>
186193

187-
<h3>Build system</h3>
188-
<ul>
189-
<li>
190-
Force C++ version according to CERN ROOT versions: ROOT 6.28.10 needs C++17 and 6.30.2 needs C++20.
191-
Also some fixes when relying on <code>root-config</code>.
192-
</li>
193-
<li>
194-
Optionally enable CUDA as a CMake language (for the CUDA RDP). <strong>You should use CMake 3.23 or later</strong>
195-
if you use CUDA.
196-
</li>
197-
</ul>
198-
199194
<h3>Test changes</h3>
200195

201196
<h4>C++ tests</h4>
@@ -210,8 +205,8 @@ <h4>C++ tests</h4>
210205
<h4>recon_test_pack</h4>
211206
<ul>
212207
<li>
213-
The output of <tt>simulate_PET_data_for_tests.sh</tt> can now varied by setting environment variables, e.g.
214-
<code>max_rd</code>.
208+
The output of <tt>simulate_PET_data_for_tests.sh</tt> can now be varied by setting environment variables, e.g.
209+
<code>max_rd</code>. (Do not forget to unset those variables afterwards!)
215210
</li>
216211
<li>
217212
New test <tt>run_test_SSRB.sh</tt>

0 commit comments

Comments
 (0)