Skip to content

Commit c6ee75a

Browse files
Merge pull request #1636 from KrisThielemans/prep_v6.3.0
Prepare for v6.3.0
2 parents 4e9666a + f5bc42d commit c6ee75a

File tree

6 files changed

+77
-44
lines changed

6 files changed

+77
-44
lines changed

.github/workflows/build-test.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,14 +253,18 @@ jobs:
253253
if ! command -v ninja > /dev/null; then
254254
brew install ninja
255255
fi
256-
if ! command -v python3 > /dev/null; then
257-
brew install python
258-
fi
259256
if ! command -v swig > /dev/null; then
260257
brew install swig
261258
fi
262259
brew install boost nlohmann-json
263-
PYTHON_EXECUTABLE=$(which python3)
260+
# Temp fix to 3.13 due to https://github.com/UCL/STIR/issues/1638
261+
#if ! command -v python3 > /dev/null; then
262+
# brew install python
263+
#fi
264+
brew install [email protected]
265+
266+
PYTHON_EXECUTABLE=$(find /opt/homebrew/Cellar/[email protected] -type f -name python3.13)
267+
#PYTHON_EXECUTABLE=$(which python3)
264268
;;
265269
(windows*)
266270
# this compiles the whole thing so takes ages

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ endif()
5454

5555
####### Set Version number etc
5656
set(VERSION_MAJOR 6)
57-
set(VERSION_MINOR 2)
57+
set(VERSION_MINOR 3)
5858
set(VERSION_PATCH 0)
59-
set(VERSION 060200) # only used in STIRConfig.h.in and swig/CMakeLists.txt
59+
set(VERSION 060300) # only used in STIRConfig.h.in and swig/CMakeLists.txt
6060

6161
set(STIR_VERSION
6262
${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})

VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.2.0
1+
6.3.0

documentation/STIR-UsersGuide.tex

Lines changed: 27 additions & 16 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.2}}
47+
Version 6.3}}
4848
\end{center}
4949

5050
\end{spacing}
@@ -130,7 +130,7 @@ \section{
130130
recommend to read documentation in the following order:
131131
\begin{itemize}
132132
\item general overview documents, such as this User's Guide
133-
\item the \url{http://stir.sourceforge.net/wiki}{STIR Wiki}
133+
\item the \url{https://github.com/UCL/STIR/wiki/}{STIR Wiki}
134134
\item
135135
online generated documentation (produced by doxygen). This is
136136
produced from comments and (partly) code in the source files.
@@ -156,7 +156,7 @@ \subsection{
156156
# deactivate the environment
157157
conda deactivate
158158
\end{verbatim}
159-
See \url{https://stir.sourceforge.net/wiki/index.php/Installing_STIR_with_conda}{our Wiki page} for
159+
See \url{https://github.com/UCL/STIR/wiki/Installing-STIR-with-conda}{our Wiki page} for
160160
more detail, including on how to get a development version.
161161

162162
\subsection{SIRF distributions}
@@ -169,7 +169,7 @@ \subsection{SIRF distributions}
169169
\section{
170170
Installation from source}
171171
This section describes how to install STIR. It is complemented by information on the
172-
\url{http://stir.sourceforge.net/wiki}{STIR Wiki} with information for specific systems etc.
172+
\url{http://github.com/UCL/STIR/wiki}{STIR Wiki} with information for specific systems etc.
173173

174174
Note that as opposed to using the instructions below, you can also
175175
the \url{https://github.com/SyneRBI/SIRF-SuperBuild/blob/master/README.md}{SIRF-Superbuild}
@@ -181,11 +181,7 @@ \section{
181181
\subsection{
182182
Installing source files}
183183

184-
Download the source at the \textit{STIR} site:
185-
\begin{center}
186-
\url{http://stir.sourceforge.net }{http://stir.sourceforge.net}
187-
\end{center}
188-
or from \url{https://github.com/UCL/STIR/releases}{github.com/UCL/STIR/releases}.\\
184+
Download the source from \url{https://github.com/UCL/STIR/releases}{github.com/UCL/STIR/releases}.\\
189185
Alternatively, if you are feeling adventurous, you can get the most-recent
190186
developer version (no guarantees!) of STIR from
191187
\url{https://github.com/UCL/STIR}{https://github.com/UCL/STIR}.\\
@@ -254,7 +250,7 @@ \subsubsection{
254250

255251
\subsubsection{
256252
Enabling ROOT support\label{sec:installROOT}}
257-
STIR can read CERN ROOT files from GATE (see section \ref{sec:ROOTIO}). Check the \url{https://root.cern/install/}{installation instructions for ROOT}.
253+
STIR can read CERN ROOT files from GATE for PET data (see section \ref{sec:ROOTIO}). Check the \url{https://root.cern/install/}{installation instructions for ROOT}.
258254

259255
\subsubsection{
260256
Enabling ITK support\label{sec:installITK}}
@@ -264,8 +260,8 @@ \subsubsection{
264260

265261
\subsection{
266262
Building}
267-
Since version 2.2, \textit{STIR} contains files to build STIR using the platform-independent
268-
\url{"http://www.cmake.org"}{CMake}. This is now the only option to build STIR as
263+
\textit{STIR} contains files to build STIR using the platform-independent
264+
\url{"http://www.cmake.org"}{CMake}. This is the only option to build STIR as
269265
it is easier for configuration and finding system dependencies.
270266
\subsubsection{
271267
Using CMake}
@@ -390,8 +386,8 @@ \subsubsection{
390386
\texttt{./install} to put the files inside your build directory.
391387
\item \textit{CMAKE\_CXX\_STANDARD} can be used to tell CMake to add flags to your compiler to use
392388
a particular version of the C++ standard (if it supports it). It is set
393-
to \texttt{11} since STIR 5.0. Other possible allowed values are
394-
\texttt{14}, \texttt{17} and \textit{20}. More recent version have not yet been tested.
389+
to \texttt{17} since STIR 6.2. Other possible allowed values are
390+
\texttt{20} and \textit{23}. More recent version have not yet been tested.
395391
\end{itemize}
396392

397393
When building the Python code, and you have multiple versions of Python installed,
@@ -418,7 +414,7 @@ \subsubsection{
418414

419415
If you want to use the X windows display routines, CMake
420416
should work out-of-the-box if you have suitable libraries installed, see the wiki
421-
for required packages.
417+
for required packages. However, these will be removed soon.
422418

423419
{ \subsubsubsubsection{X development libraries}
424420
}
@@ -2175,6 +2171,15 @@ \subsubsection{
21752171
the default backprojector used by FBP3DRP, has a central artefact
21762172
on some systems (including Sparc and 64-bit AMD and Intel processors).
21772173

2174+
\subsubsection{
2175+
Spline Reconstruction Technique (SRT2D and SRT2DSPECT)}
2176+
2177+
Since STIR 6.3, SRT has been added. This is an alternative analytic reconstruction method.
2178+
For SPECT, it has the notable advantage that attenuation can be taken into account correctly,
2179+
i.e., it implements the inverse of the attenuation (2D) Radon transform.
2180+
The version in STIR implements the algorithm from [Fok2006]. A full description is currently
2181+
under review [Kyr2025].
2182+
21782183
\subsection{
21792184
Scatter Estimation and simulation}
21802185
\label{sec:scatterestimation}
@@ -5636,7 +5641,7 @@ \subsection{
56365641
\subsubsection{
56375642
X Windows display}
56385643
\label{sec:displayX}
5639-
\textbf{Warning} This functionality is deprecated and will be removed in a next version.
5644+
\textbf{Warning} This functionality is deprecated and will be removed in STIR v7.0.
56405645

56415646
This provides a (very basic) way of displaying bitmaps when using
56425647
X windows. This works by creating a new window where some of
@@ -5871,6 +5876,9 @@ \section{
58715876
reconstruction using ordered subsets of projection data. \textit{IEEE
58725877
Trans. Med. Imaging}, MI-13: 601-609.
58735878

5879+
{[}Fok2006] Fokas, A. S., A. Iserles, and V. Marinakis. "Reconstruction algorithm for
5880+
single photon emission computed tomography and its numerical implementation." \textit{Journal of the Royal Society Interface} 3.6 (2006).
5881+
58745882
{[}Fus13] Berta Marti Fuster, Carles Falcon, Charalampos Tsoumpas, Lefteris Livieratos, Pablo Aguiar, Albert Cot, Domenec Ros and Kris Thielemans, \textbf{ (2013)} Integration of advanced 3D SPECT modeling into the open-source STIR framework, \textit{Med. Phys. 40}, 092502; http://dx.doi.org/10.1118/1.4816676.
58755883

58765884
{[}Fus14] Berta Marti Fuster, Kjell Erlandsson, Carles Falcon, Charalampos Tsoumpas, Lefteris Livieratos, Domenec Ros, Kris Thielemans, \textbf{(2014)} Evaluation of the novel 3D SPECT Modelling Algorithm in the STIR Reconstruction Framework: Simple vs. full attenuation correction, \textit{proc. IEEE MIC 2013}, Seoul, Korea.
@@ -5893,6 +5901,9 @@ \section{
58935901
vol. 2, pp. 1339-1342,
58945902
\url{http://dx.doi.org/10.1109/NSSMIC.1996.591692}{doi 10.1109/NSSMIC.1996.591692}
58955903

5904+
[Kyr2025]
5905+
Kyriakopoulou, D., A. Fokas, K. Thielemans \textbf{2025}, submitted to \textt{Inverse Problems}.
5906+
58965907
{[}Lab97] Labbe C, Ashburner J, Koepp M, Spinks T, Richardson M
58975908
and Cunningham V \textbf{(1997)} Accurate PET quantification using
58985909
correction for partial volume effects within cerebral structures. \textit{Neuroimage},

documentation/STIR-developers-overview.tex

Lines changed: 18 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.2}}
19+
\textbf{\textit{version 6.3}}
2020

2121
\end{center}
2222

@@ -316,7 +316,9 @@ \subsection{
316316
as possible. Instead, we only declare the classes needed, e.g. \textit{class
317317
Bin;} instead of \textit{\#include ``stir/Bin.h''.}
318318

319-
319+
Include files should not contain statements like \texttt{using namespace std;} or
320+
\texttt{using std::cos;} (exceptions for the latter are by intention in texttt{shared\_ptr.h}
321+
and texttt{format.h}).
320322

321323
\subsection{
322324
Class definitions}
@@ -391,6 +393,12 @@ \subsection{
391393
is not slowed down. If an assertion is false, the program aborts
392394
with info on the file and line number where the assertion failed.
393395

396+
\subsection{Diagnostics}
397+
Many function use the \textit{info()} function, which will write to
398+
\texttt{stdout}. It has a verbosity argument, such that more frequent
399+
diagnostic messages can be disabled, see \textit{Verbosity::set\_verbosity}.
400+
Setting the level to 0 suprresses all diagnostics output. This is a global setting.
401+
394402
\subsection{C++ conventions}
395403
STIR uses C++-17 and is compatible with C++-20 to the best of our knowledge.
396404
For legacy reasons, we have some preprocessor
@@ -626,7 +634,7 @@ \section{CUDA support}
626634
STIR 6.2 introduced first versions of some CUDA code. The include file
627635
\texttt{cuda\_utilities.h} contains some helpers classes to copy
628636
arrays to/from the device. This is still work-in-progress as objects
629-
cannot remain on the device.
637+
need to be copied to be used by the rest of STIR.
630638

631639
\section{
632640
Overview of classes}
@@ -760,7 +768,10 @@ \subsection{
760768

761769
Currently missing is support for fan-beam data.
762770

763-
List-mode data is supported as well. See the \textit{Listmode} base-class and its hierarchy.
771+
\subsection{
772+
List-mode data}
773+
774+
This is supported as well for both PET and SPECT. See the \textit{Listmode} base-class and its hierarchy.
764775

765776
\subsection{
766777
Data (or image) processor hierarchy}
@@ -981,6 +992,9 @@ \subsection{Objective functions}
981992
class hierarchy using either a \texttt{ProjMatrixByBin} object,
982993
or a \texttt{ForwardProjectorByBin} and \texttt{BackProjectorByBin} pair.
983994

995+
Note that classes exist for Poisson log-likelihood for both (histogrammed)
996+
projection data and list-mode data.
997+
984998
Often, one includes a penalty (or prior) in the objective function
985999
(see doxygen documentation for the class \texttt{GeneralisedPrior}).
9861000
The penalty is expected to be a function that increases with higher

documentation/release_6.3.htm

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,18 @@ <h3>Changed functionality</h3>
128128
<a href=https://github.com/UCL/STIR/pull/1591>PR #1591</a> and <a href=https://github.com/UCL/STIR/pull/1605>PR #1605</a>
129129
</li>
130130
</ul>
131+
<h4>Changes to examples</h4>
132+
<ul>
133+
<li>
134+
Python example <code>plot_sinogram_profiles.py</code> has been renamed to <code>plot_projdata_profiles.py</code>
135+
and generalised to work with TOF dimensions etc. A small <code>pytest</code> has been added as well.<br>
136+
<a href=https://github.com/UCL/STIR/pull/1370>PR #1370</a>
137+
</li>
138+
<li>
139+
Python example <code>ProjDataVisualisation.py</code> now has a vmax slider.<br>
140+
<a href=https://github.com/UCL/STIR/pull/1568>PR #1568</a>
141+
</li>
142+
</ul>
131143

132144
<h3>Bug fixes</h3>
133145
<ul>
@@ -143,13 +155,14 @@ <h3>Bug fixes</h3>
143155
your threshold values. Expected scatter tail-fitting scale factors should now be restored to ~1-1.5 (depending on
144156
the amount of multiple and out-of-FOV scatter).
145157
See <a href="https://github.com/UCL/STIR/issues/1532">Issue #1532</a> for more detail. Fixed by using averaging
146-
functionality of SSRB instead of adding segments for attenuation correction factors.
158+
functionality of SSRB instead of adding segments for attenuation correction factors.<br>
147159
<a href=https://github.com/UCL/STIR/pull/1531>PR #1531</a>
148160
</li>
149161
<li>
150162
Fixed a bug in the distributed LM computation code (introduced in 6.1) that neglected to accumulate outputs when
151-
not build with OpenMP.
152-
See <a href="https://github.com/UCL/STIR/pull/1566"">PR #1566</a>" . </li>
163+
not built with OpenMP.<br>
164+
See <a href="https://github.com/UCL/STIR/pull/1566">PR #1566</a>.
165+
</li>
153166
</ul>
154167

155168
<h3>Build system</h3>
@@ -227,11 +240,13 @@ <h3>New deprecations</h3>
227240
<li>
228241
<code>truncate_end_planes</code> will be removed in v7.0
229242
</li>
243+
<li>
244+
legacy compatibility with version 3, 4 and 5 will be removed in v7.0.
245+
CMake options <tt>STIR_PROJECTORS_AS_V3</tt>, <tt>STIR_LEGACY_IGNORE_VIEW_OFFSET</tt> and
246+
<tt>STIR_ROOT_ROTATION_AS_V4</tt> will therefore be removed.
247+
</li>
230248
</ul>
231249

232-
<h3>Other code changes</h3>
233-
234-
235250
<h3>Test changes</h3>
236251
<h4>Python tests</h4>
237252
<ul>
@@ -246,17 +261,6 @@ <h4>C++ tests</h4>
246261

247262
<h4>recon_test_pack</h4>
248263

249-
<h3>Changes to examples</h3>
250-
<uk>
251-
<li>
252-
Python example <code>plot_sinogram_profiles.py</code> has been renamed to <code>plot_projdata_profiles.py</code>
253-
and generalised to work with TOF dimensions etc. A small <code>pytest</code> has been added as well.<br>
254-
<a href=https://github.com/UCL/STIR/pull/1370>PR #1370</a>
255-
</li>
256-
<li>
257-
Python example <code>ProjDataVisualisation.py</code> now has a vmax slider.<br>
258-
<a href=https://github.com/UCL/STIR/pull/1568>PR #1568</a>
259-
</ul>
260264

261265
</body>
262266

0 commit comments

Comments
 (0)