From 792eea57bab19b067448a0027c2315b47fe9b734 Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 14:18:09 +0000
Subject: [PATCH 1/9] update developer's overview
It was wildly out-of-date w.r.t. C++ ffeatures etc.
---
documentation/STIR-developers-overview.tex | 120 ++++++++++-----------
documentation/release_5.2.htm | 9 +-
2 files changed, 65 insertions(+), 64 deletions(-)
diff --git a/documentation/STIR-developers-overview.tex b/documentation/STIR-developers-overview.tex
index b06805c054..35a6d43707 100644
--- a/documentation/STIR-developers-overview.tex
+++ b/documentation/STIR-developers-overview.tex
@@ -16,7 +16,7 @@
\textbf{{\huge STIR \\
Overview for developers}}\\
\textbf{Kris Thielemans}\\
-\textbf{\textit{version 5.1}}
+\textbf{\textit{version 5.2}}
\end{center}
@@ -60,7 +60,8 @@ \section{
doxygen on the source files that come in the STIR distribution).
\subsection{Language support}
-STIR is written in C++ and currently requires C++-11, but it should be compatible with nNewer versions of the C++ standard.
+STIR is written in C++ and currently requires C++-11, but it is compatible with newer versions of the C++ standard.
+We will enforce C++-14 from STIR 6.0.
Python and MATLAB support is provided via \R2Lurl{http://www.swig.org/}{SWIG}. This means that Python/MATLAB interfaces follow
the C++ classes closely, although some differences are required as these languages do not support templates for instance.
@@ -139,31 +140,25 @@ \subsection{
In 3D PET, two data storage modes are generally used for a \textbf{segment}\footnote{{The
-GE Advance file format does \textit{not} store the data per segment,
-but per view. In addition, the segments are then mixed. However,
+GE file formats does \textit{not} store the data per segment,
+but per view. However,
once read into STIR, this organisation is no longer available.
-\\
-The ECAT6 sinograms also have no easy way to understand which
-ring-pair corresponds to which sinogram number for 3D PET. This
-is the main reason why STIR does not attempt to read ECAT6 sinograms
-directly, but leaves this to a separate conversion utility.}}
+}}
\begin{itemize}
\item
where the 3D data is ordered by \textbf{sinogram} (i.e \textbf{axial position}, \textbf{view
-angle}, \textbf{tangential position}) (CTI terminology: \textit{Volume} mode)
+angle}, \textbf{tangential position})
(see Figure \ref{fig:sinogramstorage})
\item where the 3D dataset is ordered by \textbf{view} (i.e \textbf{view angle}, \textbf{axial
-position}, \textbf{tangential position}) (CTI terminology: \textit{View}
-mode) (see Figure \ref{fig:viewgramstorage})
+position}, \textbf{tangential position})
+(see Figure \ref{fig:viewgramstorage})
\end{itemize}
This notation means that for a sinogram, the tangential position
runs fastest.\\
In both modes, the 3D dataset has been stored in several segments
where the number of axial positions in each \textbf{segment} depends
-on the \textbf{axial compression (span)}.\\
-Note that we find the CTI terminology confusing, so you will
-see it nowhere in STIR except in this document.
+on the \textbf{axial compression (span)}.
From both modes, 2 different types of 2D datasets can be obtained
@@ -175,6 +170,18 @@ \subsection{
view.
\end{itemize}
+Note that in STIR version 6.0, Time-of-Flight (TOF) will be supported. This introduces another
+index. However, \texttt{Sinogram} and \texttt{Viewgram} will remain 2D objects, and \texttt{Segment*} 3D.
+This will also be the case once we have layers and energy windows.
+In STIR 5.2, we have therefore introduced new classes
+\texttt{SinogramIndices}, \texttt{ViewgramIndices}\footnote{Replacing \texttt{ViewSegmentNumbers} in previous versions of STIR.}
+and \texttt{SegmentIndices}, containing all ``other''
+indices necessary to get at the corresponding data. This means that the recommended coding style is now
+\begin{verbatim}
+ViewgramIndices vg_idx(view_num,segment_num);
+auto viewgram = proj_data.get_viewgram(vg_idx);
+\end{verbatim}
+In the next version of STIR, we will introduce extra methods to be able to conveniently loop over all viewgrams etc.
\begin{figure}[htbp]
\begin{center}
@@ -231,8 +238,8 @@ \subsection{
The file \textit{stir}/\textit{common.h} contains general configuration
info and tries to iron out some incompatibilities for certain
compilers. If you include any STIR \textit{.h} file, you are guaranteed
-to have included \textit{stir}/\textit{common.h} as well, hence it should
-never be included explicitly by a 'user'.
+to have included \textit{stir}/\textit{common.h} as well, hence there is usually no need
+to include it explicitly.
\subsection{
Namespace}
@@ -241,12 +248,9 @@ \subsection{
are within this namespace. The effect of this is that conflicts
with other symbols are impossible (except when somebody else
is using the same namespace). STIR also uses sub-namespaces for
-certain things. This usage will probably be expanded in the future.\\
-For older compilers, the namespace can be disabled (see \textit{stir}/\textit{common.h}).
-For this reason, we have introduced some macros such as \textit{START\_NAMESPACE\_STIR.} You
-could use the macros in your own code as well, although people
-with a compiler that does not support namespace really should
-upgrade.
+certain things. This usage will probably be expanded in the future.
+In most of the code, we use macros such as \textit{START\_NAMESPACE\_STIR}
+(originally used for older compilers).
\subsection{
Naming conventions }
@@ -262,6 +266,7 @@ \subsection{
with \textit{num}, e.g. \textit{num\_gates}.
\item
the number of an item in a sequence end with \textit{num}, e.g. \textit{gate\_num}.
+\footnote{We are slowly starting to use \texttt{\_idx} in a few places as ``indices'' are a more general concept, and avoid confusion between the pre- and postfix use of \texttt{num}.}
\item
a relative time (normally with respect to the scan start) end
with \textit{rel\_time}, e.g. \textit{tracer\_injection\_rel\_time}.
@@ -389,15 +394,14 @@ \subsection{
\subsection{\label{ssect:AdvancedCppFeatures}
Advanced (?) C++ features used}
-We attempted to follow the ANSI C++ standard as close as possible.
-We expect to have some marginal problems with a 'strict' ANSI
-C++ compiler, although there should now be very few cases (as
-gcc warns about a lot of stuff). We have used some preprocessor
-macros (see \textit{stir/common.h}) to isolate work-arounds for older
+STIR uses C++-11 an dis compatible with C++-20 to the best of our knowledge.
+For legacy reasons, we have some preprocessor
+macros (see \textit{stir/common.h}) that were used isolate work-arounds for older
compilers. Ideally, all these \#ifdefs should disappear at a
-later development stage of the library. We gradually give up
-on supporting older compilers anyway.
+later development stage of the library.
+This section describes some C++ features used in STIR that might not be so familiar to
+non-C++ programmers.
\subsubsection{Templates}
The library uses templates very often. This allows us to write
@@ -417,23 +421,15 @@ \subsubsection{Templates}
actual definition is in a \textit{.txx} file that you can include.\\
We do use partial class template specialisation in some places.
However, (very ugly) work-arounds are provided for compilers
-that do not support this feature (although not anymore in recent code).\\
-Very occasionally we use member templates (in such a form that
-it could be compiled by Visual C++ 6.0, i.e. inline in the class definition).
+that do not support this feature (although these areee being gradually removed).\\
+Very occasionally we use member templates.
\subsubsection{Run Time Type Information}
Another C++ feature that we use is Run Time Type
Information (RTTI). We almost exclusively use this to check validity
of pointer (or reference) casts down a hierarchy ('down-casting').
See section \ref{sect:classhierarchies}
-for an example. If a compiler does not support
-RTTI (but all compilers do these days), it would be possible to declare
-a (essentially empty) \texttt{dynamic\_cast}
-template function such that the above code would compile. The
-resulting programme would become inherently type-unsafe though,
-and we recommend that you upgrade your compiler. Some code does
-rely on explicit type checking, you would have to check this
-in detail if you don't have RTTI.
+for an example.
\subsubsection{
Iterators}
@@ -447,7 +443,7 @@ \subsubsection{
\begin{verbatim}
void f(vector& v)
{
- for (vector::iterator iter = v.begin(); iter != v.end(); ++iter)
+ for (auto iter = v.begin(); iter != v.end(); ++iter)
*iter += 2;
}
\end{verbatim}
@@ -464,7 +460,7 @@ \subsubsection{
template
void f(Container& v)
{
- for (typename Container::iterator iter = v.begin(); iter != v.end(); ++iter)
+ for (auto iter = v.begin(); iter != v.end(); ++iter)
*iter += 2;
}
\end{verbatim}
@@ -483,7 +479,7 @@ \subsubsection{
template
void f(Array& a)
{
- for (typename Array::full_iterator iter = a.begin_all();
+ for (auto iter = a.begin_all();
iter != a.end_all(); ++iter)
*iter += 2;
}
@@ -511,18 +507,14 @@ \subsubsection{
(something which you cannot achieve with an ordinary pointer).
Generally, the destructor of the smart pointer will make sure
that the object it points to is deleted (when appropriate).\\
-\textit{std::auto\_ptr} is a standard smart pointer class which is
+\textit{std::unique\_ptr} is a standard smart pointer class which is
suitable for pointers to objects where there's only one smart
-pointer for each object. Unfortunately, its syntax has been decided
-rather late in ANSI C++ and its implementation requires some
-advanced C++ features, leading to a non-standard implementation
-of \texttt{std::auto\_ptr} in older compilers (including VC 6.0) and it is now
-superseded by \texttt{std::unique\_ptr} in C++11. For this
-reason, we do not use this smart pointer class too much, and
+pointer for each object. Unfortunately, a lot of STIR was written
+pre-C++-11 and we do not use this smart pointer class too much, and
generally use \texttt{shared\_ptr} instead. This is somewhat unfortunate
as these two smart pointers are generally quite different concepts.
-\texttt{shared\_ptr} is a STIR (or boost) smart pointer class which
+\texttt{shared\_ptr} is a wrapper around the \texttt{std} (or boost\footnote{Boost smart pointer are probably no longer supported, and will no longer be from STIR 6.0.}) smart pointer class which
is suitable when there are (potentially) more than one pointer
pointing to the same object. It keeps a reference count such
that the object is (only) deleted when the last shared pointer
@@ -561,7 +553,8 @@ \subsubsection{
to test if a pointer is `null', i.e. does not point to anything. \textit{is\_null\_ptr}
works with ordinary pointers, shared\_ptrs and auto\_ptrs. Use
it to avoid that your code depends on what type of (smart) pointer
-you are using.
+you are using. Note however that since C++-11, it is more convenient to use the
+automatic converstion to \texttt{bool}.
\subsection{Generic functionality of STIR classes}
This is a (very incomplete) section describing some functionality that
@@ -749,8 +742,9 @@ \subsection{
\end{figure}
-Currently missing is support for fan-beam data.\\
-List-mode data is experimentally supported since version 1.2.
+Currently missing is support for fan-beam data.
+
+List-mode data is supported as well. See the \textit{Listmode} base-class and its hierarchy.
\subsection{
Data (or image) processor hierarchy}
@@ -1046,6 +1040,11 @@ \section{
number = 1;
a = 2.4F;
}
+ bool post_processing() // will be renamed to post_parsing()
+ {
+ // do some checks and handle some extra variables
+ return false; // everything was ok
+ }
};
int main(int argc, char **argv)
@@ -1088,8 +1087,7 @@ \subsection{Images}
You will have to include \texttt{stir/IO/write\_to\_file.h} for this to work. This
will write using the default output file format and is equivalent to the following:
\begin{verbatim}
- typedef DiscretisedDensity<3,float> DataType ;
- shared_ptr output_format_sptr =
+ auto output_format_sptr =
OutputFileFormat::default_sptr();
output_format_sptr->write_to_file(filename, density);
\end{verbatim}
@@ -1189,10 +1187,10 @@ \section{
template
void f(DiscretisedDensity<3, elemT>& density)
{
- VoxelsOnCartesianGrid * voxels_ptr =
+ auto voxels_ptr =
dynamic_cast< VoxelsOnCartesianGrid * > (&density);
- if (voxels_ptr == NULL)
- error("f: can only handle images of type VoxelsOnCartesianGrid\n");
+ if (!voxels_ptr)
+ error("f: can only handle images of type VoxelsOnCartesianGrid");
...
}
\end{verbatim}
@@ -1286,7 +1284,7 @@ \section{
)
# declare dependencies on other STIR libraries, for instance
-target_link_libraries($(dir) buildblock)
+target_link_libraries($(dir) PUBLIC buildblock)
# add to list of libraries for STIR to include in linking
list(APPEND STIR_LIBRARIES $(dir))
diff --git a/documentation/release_5.2.htm b/documentation/release_5.2.htm
index 58d95054d1..550c1ed137 100644
--- a/documentation/release_5.2.htm
+++ b/documentation/release_5.2.htm
@@ -15,7 +15,8 @@ Overall summary
improvements to the documentation. See also the
5.2 milestone on GitHub.
-Overall code management and assistance by Kris Thielemans (UCL and ASC).
+ Overall code management and assistance by Kris Thielemans (UCL and ASC). Other main contributors
+ were Daniel Deidda (NPL) and Markus Jehl (Positrigo).
Patch release info
@@ -149,12 +150,12 @@ Deprecated functionality
and should be replaced by their respective versions that use SegmentIndices
, ViewgramIndices
or SinogramIndices
. The former will not be
compatible with TOF information that will be introduced in version 6.0.0.
- - STIR version 6.0.0 will likely require C++ 14 (currently we require C++ 11, but already support C++ 20).
+ - STIR version 6.0.0 will require C++ 14 (currently we require C++ 11, but already support C++ 20).
Build system and dependencies
- - CMake 3.12 is now required on Windows. (It will be required on all platforms in the next version).
+ - CMake 3.12 is now required on Windows. (It will be required on all platforms in STIR 6.0).
- We now use CMake's OBJECT library feature for the registries. This avoids re-compilation of the registries for every executable and therefore speeds-up building time. Use of STIR in an external project is not affected as long as the recommended practice was followed. This is now documented in the User's Guide.
PR #1141.
@@ -206,10 +207,12 @@ Minor (?) bug fixes
Documentation changes
+ - Updated the STIR developers guide, which was quite out-of-date w.r.t. C++ features etc.
recon_test_pack changes
+ - Updated headers of most images and projection data to avoid warnings.
Other changes to tests
From 9e6fdf690d2dd97e00af09cb1f617a1a5d47167b Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 15:47:11 +0000
Subject: [PATCH 2/9] updated mailmap and CITATION.cff
---
.mailmap | 7 ++++--
CITATION.cff | 44 ++++++++++++++++-----------------
scripts/maintenance/git-fame.sh | 6 ++---
3 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/.mailmap b/.mailmap
index e0b863e5c9..66b9eb55f0 100644
--- a/.mailmap
+++ b/.mailmap
@@ -45,8 +45,10 @@ Palak Wadhwa
Rebecca Gillen <43674917+RebeccaGillen@users.noreply.github.com>
Richard Brown <33289025+rijobro@users.noreply.github.com>
Richard Brown
-Robert Twyman
-Robert Twyman
+Robert Twyman Skelly
+Robert Twyman Skelly
+Robert Twyman Skelly
+Robert Twyman Skelly <117300855+Robert-PrescientImaging@users.noreply.github.com>
Yu-jung Tsai
Gemma Fardell
Gemma Fardell <47746591+gfardell@users.noreply.github.com>
@@ -62,5 +64,6 @@ Nicole Jurjew
Tahereh Niknejad
Tahereh Niknejad
Sam D Porter <92305641+samdporter@users.noreply.github.com>
+Sam D Porter <92305641+samdporter@users.noreply.github.com>
Matthew Strugari
Matthew Strugari <56315593+mastergari@users.noreply.github.com>
diff --git a/CITATION.cff b/CITATION.cff
index 70d589c8ce..77d74b0396 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -18,31 +18,34 @@ authors:
given-names: Richard
orcid: 'https://orcid.org/0000-0001-6989-9200'
affiliation: University College London
+ - family-names: Twyman Skelly
+ given-names: Robert
+ affiliation: University College London and Prescient Imaging
- family-names: Tsoumpas
given-names: Charalampos
- - family-names: Twyman
- given-names: Robert
- affiliation: University College London
- family-names: Deidda
given-names: Daniel
orcid: 'https://orcid.org/0000-0002-2766-4339'
affiliation: National Physics Laboratory (UK)
+ - family-names: Falcon
+ given-names: Carles
- family-names: Borgeaud
given-names: Tim
affiliation: Hammersmith Imanet Ltd
- - family-names: Falcon
- given-names: Carles
- family-names: Khateri
given-names: Parisa
affiliation: ETH Zuerich
+ - family-names: Jehl
+ given-names: Markus
+ affiliation: Positrigo
- family-names: Wadhwa
given-names: Palak
affiliation: University of Leeds (UK)
- - family-names: Beisel
- given-names: Tobias
- family-names: Strugari
given-names: Matthew
affiliation: Dalhousie University (Canada)
+ - family-names: Beisel
+ given-names: Tobias
- family-names: Jacobson
given-names: Matthew
- family-names: Gillman
@@ -69,9 +72,6 @@ authors:
- family-names: Fischer
given-names: Jannis
orcid: 'https://orcid.org/0000-0002-8329-0220'
- - family-names: Jehl
- given-names: Markus
- affiliation: Positrigo
- family-names: Roethlisberger
given-names: Michael
affiliation: ETH Zuerich
@@ -80,13 +80,17 @@ authors:
- family-names: Brusaferri
given-names: Ludovica
affiliation: University College London
- - family-names: Bertolli
- given-names: Ottavia
- affiliation: University College London
- family-names: Pasca
given-names: Edoardo
affiliation: UK Research & Innovation
orcid: 'https://orcid.org/0000-0001-6957-2160'
+ - family-names: Thomas
+ given-names: Benjamin
+ orcid: 'https://orcid.org/0000-0002-9784-1177'
+ affiliation: University College London
+ - family-names: Bertolli
+ given-names: Ottavia
+ affiliation: University College London
- family-names: Niknejad
given-names: Tahereh
- family-names: Dikaios
@@ -113,10 +117,6 @@ authors:
- family-names: Valente
given-names: Patrick
affiliation: Brunel University (UK)
- - family-names: Thomas
- given-names: Benjamin
- orcid: 'https://orcid.org/0000-0002-9784-1177'
- affiliation: University College London
- family-names: Schramm
given-names: Georg
affiliation: Katholieke Universiteit Leuven (Belgium)
@@ -143,12 +143,12 @@ authors:
- family-names: Mikhaylova
given-names: Ekaterina
affiliation: Positrigo
- - family-names: da Costa-Luis
- given-names: Casper O.
- orcid: 'https://orcid.org/0000-0002-7211-1557'
- family-names: Porter
given-names: Sam David
affiliation: University College London, National Physics Laboratory (UK)
+ - family-names: da Costa-Luis
+ given-names: Casper O.
+ orcid: 'https://orcid.org/0000-0002-7211-1557'
- family-names: Rashidnasab
given-names: Alaleh
affiliation: University College London
@@ -160,11 +160,11 @@ authors:
affiliation: University College London
- family-names: Vavrek
given-names: Jayson
- - family-names: Kohr
- given-names: Holger
- family-names: Tsai
given-names: Yu-jung
affiliation: University College London
+ - family-names: Kohr
+ given-names: Holger
- name: tokkot
- family-names: El Katib
given-names: Mahmoud
diff --git a/scripts/maintenance/git-fame.sh b/scripts/maintenance/git-fame.sh
index b6823bba47..cd3a26c98e 100755
--- a/scripts/maintenance/git-fame.sh
+++ b/scripts/maintenance/git-fame.sh
@@ -37,7 +37,7 @@ exit
| Darren Hague | 50
# Also, SPECTUB files were checked in by KT, but actually written by Carles Falcon.
-# Finally PinholeSPECTUB is attributed (mostly to Carles), but git fame doesn't count his loc for some reason.
+# Finally PinholeSPECTUB is now attributed correctly (mostly to Carles)
# Just before release 5.1, we have the following loc
$ wc -l *SPECTUB*x
1346 PinholeSPECTUB_Tools.cxx
@@ -48,12 +48,12 @@ exit
989 SPECTUB_Weight3d.cxx
Roughly leading to
-| Carles Falcon | 3000
+| Carles Falcon | 3500
| Berta Marti-Fuster | 1000
Summary for corrections to output:
| Author | loc
-| Carles Falcon | 3000
+| Carles Falcon | 3500
| Berta Marti-Fuster | 1000
| Claire Labbe | 1000
| Mustapha Sadki | 400
From b154f5c6768b3b7eb9c48a82cb29c2ded39674e7 Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 18:34:36 +0000
Subject: [PATCH 3/9] update STIR general overview and user's guide
The general overview was wildly out-of-date... Now somewhat ok.
The User's guide still contained old material as well, now removed.
---
documentation/STIR-UsersGuide.tex | 173 ++++++++++++------------
documentation/STIR-general-overview.tex | 118 +++++-----------
documentation/release_5.2.htm | 8 +-
3 files changed, 121 insertions(+), 178 deletions(-)
diff --git a/documentation/STIR-UsersGuide.tex b/documentation/STIR-UsersGuide.tex
index 80a91a9aed..0d14db36be 100644
--- a/documentation/STIR-UsersGuide.tex
+++ b/documentation/STIR-UsersGuide.tex
@@ -44,7 +44,7 @@
\\[3cm]
\textbf{{\huge User's Guide\\
- Version 5.1}}
+ Version 5.2}}
\end{center}
\end{spacing}
@@ -53,7 +53,7 @@
\noindent
K. Thielemans \\
-{\it \small Hammersmith Imanet Ltd; Algorithms and Software Consulting Ltd; University College London}\\
+{\it \small University College London; Algorithms and Software Consulting Ltd (formerly Hammersmith Imanet Ltd}\\
Ch. Tsoumpas\\
{\it \small Hammersmith Imanet Ltd; Imperial College London; King's College London}\\
D. Sauge, C. Labb\'e, C. Morel \\
@@ -142,11 +142,42 @@ \section{
Any comments on documentation, and especially contributions are
always welcome. Please use the stir-users mailing list.
+\section{Installing STIR via a pre-built version }
+\subsection{
+Installing via conda}
+The easiest way is to use \texttt{conda} (or one of its derivatives such as \texttt{mamba}):
+\begin{verbatim}
+conda config --add channels conda-forge
+conda create -n stirenv stir matplotlib
+conda activate stirenv
+
+# use STIR executable or python
+
+# deactivate the environment
+conda deactivate
+\end{verbatim}
+See \url{https://stir.sourceforge.net/wiki/index.php/Installing_STIR_with_conda}{our Wiki page} for
+more detail, including on how to get a development version.
+
+\subsection{SIRF distributions}
+CCP SyneRBI distributes SIRF with its dependencies, including STIR,
+see \url{https://www.ccpsynerbi.ac.uk/downloads/}{its download page} for
+a Virtual Machine, docker etc. However, only the STIR libraries are included in
+these distributions. You can easily install ``full'' STIR on the Virtual Machine though,
+see \url{https://github.com/SyneRBI/SIRF-SuperBuild/blob/master/VirtualBox/documentation/README.md}{its documentation}.
+
\section{
-Installation}
+Installation from source}
This section describes how to install STIR. It is complemented by information on the
\url{http://stir.sourceforge.net/wiki}{STIR Wiki} with information for specific systems etc.
+Note that as opposed to using the instructions below, you can also
+the \url{https://github.com/SyneRBI/SIRF-SuperBuild/blob/master/README.md}{SIRF-Superbuild}
+of \url{https://www.ccpsynerbi.ac.uk/}{SyneRBI} to build STIR with CMake. This will take care of all dependencies.
+Note that you will need to use advanced CMake variables \texttt{STIR\_BUILD\_EXECUTABLES=ON}
+and \texttt{STIR\_BUILD\_SWIG\_PYTHON=ON}.
+
+
\subsection{
Installing source files}
@@ -156,26 +187,15 @@ \subsection{
\end{center}
or from \url{https://github.com/UCL/STIR/releases}{github.com/UCL/STIR/releases}.\\
Alternatively, if you are feeling adventurous, you can get the most-recent
-developer version (no guarantees!) of STIR from\\
+developer version (no guarantees!) of STIR from
\url{https://github.com/UCL/STIR}{https://github.com/UCL/STIR}.\\
-Download the source files in the zip format. You can then use unzip from \\
-\url{http://www.info-zip.org/pub/infozip/}{http://www.info-zip.org/pub/infozip/}.
-Extract using
-\cmdline{unzip -a file.zip}
-
-
-The \texttt{-a} option makes sure that files are extracted using the
-end-of-line convention appropriate for your system. Note that
-other programs that can handle zip files (such as WinZip) should
-work as well, although you might have problems with the EOL convention.
-
Note that you can put the distribution in any location (it does
not have to be your home directory).
-The result is a \textbf{STIR} directory and subdirectories, described
-in the annex section.
+After unpacking, you should have a \textbf{STIR} directory (subdirectories are described
+in the doxygen documentation).
\subsection{
Installing external software}
@@ -183,6 +203,13 @@ \subsection{
On most systems, you should be able to get these using your package manager.
Please check the Wiki for most up-to-date information.
+\subsubsection{
+C++ Compiler}
+
+In order to compile and run the \textit{STIR} programs, you will need a compiler
+and associated tools such as \texttt{CMake}. These days, any compiler should work. We would love
+to hear from any attempts where there are failures.
+
\subsubsection{BOOST}
The only required external library is the well-respected \textit{boost} library. If it
is not installed on your system, you can download it from
@@ -195,29 +222,19 @@ \subsubsection{BOOST}
\subsubsection{JSON}
The \texttt{HUToMu} and \texttt{Radionuclide} database functionality parse a file in JSON format. We use the
\url{https://github.com/nlohmann/json}{nlohman\_json} library for this. Installation
-instructions for this library are available on its github page.
+instructions for this library are available on its github page or you can get it via \texttt{conda}.
+Without it, we only support a few basic radionuclides.
\subsubsection{
-C++ Compiler}
+Enabling ECAT 7 support\label{sec:ECAT67support}}
+{\em ECAT7 support is no longer tested.}
-In order to compile and run the \textit{STIR} programs, you will need a compiler
-and associated tools. These days, any compiler should work. See the
-\url{http://sourceforge.net/stir}{STIR Wiki} for more
-specific information of which compilers we have tried.
-We would love
-to hear from any attempts of using another compiler.
-
-\subsubsection{
-Enabling ECAT 7 support}
-\label{sec:ECAT67support}
Older CTI (Siemens) scanners use a file format called ECAT\texttrademark{}.
At present, \textit{STIR} uses parts of the Louvain la Neuve ecat library (called LLN in
the rest of this document).\footnote{\textit{STIR} versions 1.? came with
specific files for ECAT6 support without the need for the LLN library.
However, due to license restrictions this is now no longer the case.}
-The library might still be available on
-\url{ftp://ftp.topo.ucl.ac.be/pub/ecat }{ftp://ftp.topo.ucl.ac.be/pub/ecat}.
-It is also available for GATE users.
+The library could be available on the OpenGATE website.
You have to download that library and issue 'make --f Makefile.unix'
(or 'make --f Makefile.cygwin' if you are using CYGWIN on Windows)
@@ -235,10 +252,26 @@ \subsubsection{
For most operating systems this can be done via your package manager which we highly recommend. You could also
download from the \url{https://www.hdfgroup.org/downloads/hdf5/}{HDF5 group download page}.
+\subsubsection{
+Enabling ROOT support\label{sec:installROOT}}
+STIR can read CERN ROOT files from GATE (see section \ref{sec:ROOTIO}). Check the \url{https://root.cern/install/}{installation instructions for ROOT}.
+
+\subsubsection{
+Enabling ITK support\label{sec:installITK}}
+STIR can use \url{http://www.itk.org}{ITK}, a large open source library. Specifying this
+ enables NRRD, MetaIO and Nifti IO, and DICOM reading.
+ Use your package manager, including conda or pip, or check the \url{https://itk.org/download/}{installation instructions for ITK}.
+
+\subsubsection{
+Enabling AVW support\label{sec:installAVW}}
+AVW was the library used by the commercial program \url{https://analyzedirect.com/}{Analyze}.
+\textit{AVW support has not been tested since about 2010 and we have no idea of STIR still builds with it.} AVW support will be dropped in STIR 6.0.
+See \ref{sec:convAVW} for usage.
+
\subsection{
Building}
Since version 2.2, \textit{STIR} contains files to build STIR using the platform-independent
-\url{"http://www.cmake.org"}{CMake}. This is now the only to build STIR as
+\url{"http://www.cmake.org"}{CMake}. This is now the only option to build STIR as
it is easier for configuration and finding system dependencies.
\subsubsection{
Using CMake}
@@ -309,10 +342,6 @@ \subsubsection{
% ROW
{\raggedright \textit{STIR\_OPENMP}} &
{\raggedright Toggles between ON, OFF. Enable threaded processing using OPENMP.
-\footnote{Since version 2.0, \textit{STIR} contains preliminary code for running \texttt{FBP2D} in threaded mode
-(contribution by Tobias Beisel, Univ. of Paderborn). You need a compiler that
-supports \texttt{OPENMP}. Note however, that this code doesn't presently result
-in a decent speed-up of \texttt{FBP2D}.}
See section \ref{sec:RunningWithOPENMP} for information on how to run programs using OPENMP.
} \\
\hline
@@ -347,14 +376,13 @@ \subsubsection{
capabilities of STIR.
\begin{itemize}
\item LLN files for ECAT support via \texttt{LLN\_INCLUDE\_DIRS} and \texttt{LLN\_LIBRARIES}.
-\item AVW\texttrademark{} (a commercial library\footnote{See \url{http://www.mayo.edu/bir/Software/AVW/AVW1.html}
-{www.mayo.edu/bir/Software/AVW/AVW1.html}.})
-via \texttt{AVW\_ROOT\_DIR}. See section \ref{sec:convAVW} for usage.\\
-\textit{AVW support has not been tested since about 2010.}
-\item ITK\_DIR, use IO from \url{http://www.itk.org}{ITK}, a large open source library. Specifying this
- enables NRRD, MetaIO and Nifti IO.
+See section \ref{sec:ECAT67support}.
+\item AVW\texttrademark{} [deprecated] (a commercial library, probably no longer available)
+via \texttt{AVW\_ROOT\_DIR}. See section \ref{sec:installAVW}.
+\item ITK\_DIR, use IO from ITK, see section \ref{sec:installITK}.
\item CERN ROOT files used by GEANT and GATE via \texttt{ROOT\_DIR}.
If this is not set, we will try to get it from the \texttt{ROOTSYS} environment (or CMake) variable.
+ See \ref{sec:installROOT}.
\item GE RDF\texttrademark{} 9 support via \texttt{HDF5\_ROOT} and related variables (requires the HDF5 library).
\end{itemize}
@@ -371,14 +399,15 @@ \subsubsection{
\item \textit{CMAKE\_CXX\_STANDARD} can be used to tell CMake to add flags to your compiler to use
a particular version of the C++ standard (if it supports it). It is set
to \texttt{11} since STIR 5.0. Other possible allowed values are
-\texttt{14} and \texttt{17}. More recent version have not yet been tested.
+\texttt{14}, \texttt{17} and \textit{20}. More recent version have not yet been tested.
\end{itemize}
When building the Python code, and you have multiple versions of Python installed,
it is often necessary to specify the correct Python executable that you want, together with
-the libraries. You can use the \texttt{PYTHON\_EXECUTABLE} variable for this. If you
-specify the full path to the actual executable, this should be sufficient. If not, set
-\texttt{PYTHON\_LIBRARY} as well.
+the libraries. You can use the \texttt{Python\_EXECUTABLE} variable for this. If you
+specify the full path to the actual executable, this should be sufficient.
+\footnote{If you are using CMake 3.13 or older, use \texttt{PYTHON\_EXECUTABLE}.
+In this case, you might have to set \texttt{PYTHON\_LIBRARY} as well.}
There are various other variables that can be set, some of which are only visible if you toggled
the display of \texttt{Advanced} variables on. They should only be set by advanced users, or if a package
@@ -5723,12 +5752,12 @@ \section{Using STIR in an external C++ project
\label{sec:ExternalProjectC++}}
STIR exports its CMake settings. Therefore, an external project can do
\begin{verbatim}
-find_package(STIR 5.1 CONFIG)
+find_package(STIR 5.2 CONFIG)
add_library(my_lib file1.cxx file2.cxx)
# my_lib uses STIR functionality
-target_link_libraries(my_lib ${STIR_LIBRARIES})
+target_link_libraries(my_lib PUBLIC ${STIR_LIBRARIES})
add_executable(my_exe my_exe.cxx ${STIR_REGISTRIES})
-target_link_libraries(my_exe my_lib)
+target_link_libraries(my_exe PUBLIC my_lib)
\end{verbatim}
In addition, if your CMake is older than 3.12, you need to add
\begin{verbatim}
@@ -5749,20 +5778,9 @@ \section{
The \textit{STIR} library, in its current state, possesses many capabilities.
The developers, however, look forward to still further increases
-in the flexibility and power of the software. Some of the developments
-being discussed are:
-
-\begin{itemize}
-\item
-expanded library of polymorphic classes (e.g. image grids, and
-ordered subsets)
-\item
-additional scanners, also for SPECT
-\item
-additional data formats support, without conversion to Interfile.
-\item
-point-spread function reconstruction
-\end{itemize}
+in the flexibility and power of the software.
+Please check the \url{https://github.com/UCL/STIR/milestones}{GitHub milestones}
+for some information.
While support for the library is on a voluntary basis, users
@@ -5771,35 +5789,12 @@ \section{
\url{http://stir.sourceforge.net/ }{http://stir.sourceforge.net})
where they can follow developments of the software and obtain
helpful information from other users. Questions will ONLY be
-answered (if at all) when directed to the mailing list.
+answered (if at all) when creating a \url{https://github.com/UCL/STIR/issues}{GitHub issue} (preferred) or
+when directed to the mailing list.
Commercial support is available from \url{http://asc.uk.com}{Algorithms and
Software Consulting Ltd}.
-Below, we list of some of the features that might make it into the next releases.
-However, which feature is actually finalised/implemented depends
-on the needs of the developers. If you want one of these features
-and are willing to help, let us know.
-\begin{itemize}
-\item
-More automatic testing programs
-\item
-More algorithms: potentially ART,
-OSCB [Ben99b]
-\item
-More projectors
-\item
-More priors
-\item
-Extending the parallelisation of OSMAPOSL and OSSPS to FBP3DRP etc, or using OPEMMP
-\item
-Compatibility of the interpolating backprojector with recent
-processors.
-\item
-More kinetic models: Spectral Analysis, Logan Plot
-\end{itemize}
-
-
diff --git a/documentation/STIR-general-overview.tex b/documentation/STIR-general-overview.tex
index ca233c4afb..28d8b8626b 100644
--- a/documentation/STIR-general-overview.tex
+++ b/documentation/STIR-general-overview.tex
@@ -17,7 +17,7 @@
\textbf{{\huge STIR \\
General Overview}}\\
\textbf{Kris Thielemans}\\
-\textbf{\textit{version 2.3}}
+\textbf{\textit{version 5.2}}
\end{spacing}
@@ -57,18 +57,21 @@
\section{
Disclaimer}
Many names used below are trademarks owned by various companies. They are
-is fully acknowledged, but not explicitly stated.
+fully acknowledged, but not explicitly stated.
+
+This document has been brought somewhat up-to-date for version 5.2, but there is more work to do.
\section{
Overview}
STIR (\textit{Software for Tomographic Image Reconstruction}) is Open
Source software (written in C++) consisting of classes, functions
-and utilities for 3D PET image reconstruction, although it is
+and utilities for 3D PET and SPECT image reconstruction, although it is
general enough to accommodate other imaging modalities. An overview
of STIR 2.x is given in [Thi12], which you ideally refer to in your paper.
+See the STIR website for more details on how to reference STIR, depending on which functionality you use.
-STIR consists of 2 parts.
+STIR consists of 3 parts.
\begin{itemize}
\item
A library providing building blocks for image and projection
@@ -76,6 +79,7 @@ \section{
\item
Applications using this library including basic image manipulations,
file format conversions and of course image reconstructions.
+\item Python interface to the library via SWIG.
\end{itemize}
The library has been designed so that it can be used for many
@@ -85,8 +89,8 @@ \section{
yet. This will enable the software to be run not only on single
processors, but also on massively parallel computers, or on clusters
of workstations. \\
-STIR is portable on all systems supporting the GNU C++ compiler
-or MS Visual C++ (or hopefully any ANSI C++ compliant compiler).
+STIR is portable on all systems supporting the GNU C++ compiler, CLang++, Intel C++,
+or MS Visual C++ (or hopefully any C++-11 compliant compiler).
The library is fully documented.\\
The object-oriented features make this library very modular and
flexible. This means that it is relatively easy to add new algorithms,
@@ -94,17 +98,16 @@ \section{
It is even possible to select at run-time which version of these
components you want to use.\\
The software is \textbf{freely available} for downloading under the
-GNU LPGL (the library) or GNU GPL (the applications) license,
-see the 'Registration' section of our web-site. \\
+Apache 2.0 license.\\
\textbf{It is the hope of the collaborators of the STIR project that
-other researchers in the PET community will use this library
+other researchers in the PET and SPECT will use this library
for their own work, extending it and making their work available
as well.} Please subscribe to some of our mailing
lists if you are interested. \\
In its current status, the software is mainly a research tool.
It is probably not friendly enough to use in a clinical setting. In any
case, \textbf{STIR should not be used to generate images for diagnostic
-purposes}, as there is no warranty, and most definitely no FDA approval
+purposes}, as there is no warranty, and most definitely no FDA approval nor CE marking
@@ -132,10 +135,7 @@ \section{
algorithm type, etc.);
\item multi-dimensional arrays (any dimension) with various
operations, including numeric manipulations;
-\item reading and writing (I/O) data in Interfile format (for
-which a 3D PET extension is proposed), reading of GE Advance
-sinogram data, limited reading and writing of ECAT6 and ECAT7
-and conversion between ECAT6 and Interfile;
+\item reading of various raw data as well as writing in Interfile format;
\item classes of projection data (complete data set, segments,
sinograms, viewgrams) and images (2D and 3D);
\item various filter transfer functions (1D, 2D and 3D);
@@ -156,7 +156,7 @@ \section{
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=5.667in, height=1.137in]{graphics/STIR-general-overviewFig1}
-\caption{Current hierarchy for back projectors.}
+\caption{Somewhat outdated hierarchy for back projectors.}
\end{center}
\end{figure}
@@ -193,7 +193,7 @@ \subsection{FBP}
\subsection{3DRP}
The 3DRP [Kin89] algorithm is often considered the 'reference'
algorithm for 3D PET. It is a 3D FBP algorithm which uses reprojection
-to fill in the missing data.
+to fill in the missing data. However, this is not actively maintained anymore.
\subsection{
Ordered Subsets Maximum A Posteriori using the One Step Late
@@ -203,11 +203,7 @@ \subsection{
its accelerated variant OSEM (Ordered Set Expectation Maximization)
[Hud94] are iterative methods for computing the maximum likelihood
estimate of the tracer distribution based on the measured projection
-data. Their benefits have been examined in various reports. Notably,
-it has been found (e.g. [Rea98b]) that 3D OSEM can produce images
-of higher quality, in terms of both resolution and contrast,
-than analytic algorithms of common commercial use such as the
-reprojection (3DRP) algorithm [Kin89].
+data.
One drawback of OSEM is its tendency to develop noise artefacts
with increasing iterations. As a remedy, various modifications
@@ -371,47 +367,17 @@ \section{
\section{
Currently supported systems}
-
-These are the systems we tested our software on. We think that
-it will work in other cases as well with minor tuning. Experience
-will tell\dots
-
-
-
-\subsection{
-Computing platforms}
+We regularly run STIR on Lniux, MacOS and Windows. Check our GitHub Actions
+and Appveyor for details.
-\subsubsection{
-Serial versions of algorithms}
-A lot of STIR was developed kust before 2000. Therefore, the code
-contains in various places work-arounds for deficient C++ compilers
-(e.g. GNU g++ 2.95.2 or Microsoft Visual C++ 6.0 service pack 3).
-However, we are no longer
-testing STIR on such older systems. It might be possible to revive this,
-but we strongly recommend that you get a recent compiler instead.
-\begin{itemize}
-\item
-Intel based PCs using Windows XP or higher (NT probably still works if you
-find a compiler for it). These were tested with Microsoft Visual C++ 2003, 2005 up to
-Visual Studio 2010,
-and various GNU g++ versions (up to at least 4.5.3) via CYGWIN (http://cygwin.com).
-\item
-Linux using GNU g++ (from 3.5 to 4.6).
-Intel's C++ compiler 12.1.0 works fine (tested on Linux), older versions had some problems with the Fourier transform code but the reconstruction itself was fine.
-\item
-MacOS using GNU g++.
-\end{itemize}
-However, people run STIR on various other systems, including Solaris. Please
-check the mailing lists.
-
\textbf{Warning}:
We currently have a problem
in the incremental backprojection routines due to different rounding
-of floating point calculations on Sparc, HP and Opteron processors.
-Thanks to a fix of Bing Bai this problem might have disappeared on your processor, but it is still there on recent 64-bit processors.
+of floating point calculations.
You will find out if this problem still exists when you run the
recon\_text\_pack available on the STIR web-site. Please let us know.
+This currently only affects the FBP routines.
See the User's Guide for how to use another backprojector.
@@ -419,7 +385,8 @@ \subsubsection{
Parallel versions of algorithms}
\begin{itemize}
\item a parallel version of \texttt{OSMAPOSL} and \texttt{OSSPS} using MPI
-\item a threaded version of FBP2D using OPENMP, but for most systems, there is no performance gain.
+\item OpenMP versions of many functions
+\item CUDA versions for NiftyPET and parallelproj
\end{itemize}
@@ -427,18 +394,7 @@ \subsubsection{
\subsection{
PET scanners}
-\begin{itemize}
-\item
-GE Advance, Discovery LS, Discovery ST, Discvoery STE, Discovery RX,
-Discovery 600
-\item
-PRT-1
-\item
-ECAT 921, 931, 953, 951, 962, 966 (and most other ECAT systems)
-\item
-HRRT apparently works as well
-\item Philips Allegro (using its convention of having a ``virtual'' extra crystal to cover the gaps).
-\end{itemize}
+See \texttt{buildblock/Scanners.cxx}.
Other cylindrical PET scanners can easily be added. This can be done
without modifying the code (see the Wiki).
@@ -449,37 +405,27 @@ \subsection{
\begin{itemize}
\item
An extension of the Interfile standard (see the ''Other info'' section of the STIR website.)
+\item
+ITK can be used to read many image file formats
+\item Siemens ``interfile-like'' data
+\item GE RDF9 (if you have the HDF5 libraries)
\item
The commercial AnalyzeAVW library from the BIR, Mayo University, can be used
-to read images via a conversion utility.
+to read images via a conversion utility. This will be dropped in version 6.0.
\item
-GE Advance VOLPET sinogram format, but for reading only (with
-very limited support for the header). If you have a research contract with GE,
-you might be able to get a STIR extension to read Discovery ST, STE and RX data in both
-VOLPET and RDF format.
+GE Advance VOLPET sinogram format, but for reading only. This will be dropped in version 6.0.
\item
-ECAT 7 matrix format for reading only (for reading multiple
-frames/gates, an Interfile
-header has to be created using a utility we provide). Single
-frame/gate/bed images can be directly read or written. Single
-frame/gate/bed sinograms can be directly read.
+ECAT 7 matrix format for reading only might work but is no longer supported.
However, this file format needs the ECAT Matrix library (developed
previously by M. Sibomana and C. Michel at Louvain la Neuve, Belgium).
This library is no longer maintained however.
-\item
-ECAT 6 matrix format was supported in previous version of STIR, but
-is currently broken on some systems (probably due to a bug in the ECAT
-MATRIX library for ECAT 6). ECAT6 was supported by using conversion
-utilities to and from
-Interfile. Single frame/gate/bed images could be directly read
-or written.
\end{itemize}
See the User's Guide for more detail on the supported file formats.\\
In addition, a separate set of classes is avalailable
to read list-mode
data. Only a few scanners are currently supported (such as the
-ECAT HR+ and HR++), although it should not be too difficult to
+ECAT HR+ and HR++, GE RDF9, Siemens mMR and SAFIR), although it should not be too difficult to
add your own (if you know the list-mode file format!).
diff --git a/documentation/release_5.2.htm b/documentation/release_5.2.htm
index 550c1ed137..91258cb749 100644
--- a/documentation/release_5.2.htm
+++ b/documentation/release_5.2.htm
@@ -141,7 +141,7 @@ Changed functionality
-Deprecated functionality
+Deprecated functionality and upcoming changes to required tool versions
- The following functions (previously used for upsampling the scatter estimate) have been
made obsolete or replaced, and will be removed in STIR version 6.0.0:
interpolate_axial_position
, extend_sinogram_in_views
and extend_segment_in_views
@@ -150,12 +150,14 @@ Deprecated functionality
and should be replaced by their respective versions that use SegmentIndices
, ViewgramIndices
or SinogramIndices
. The former will not be
compatible with TOF information that will be introduced in version 6.0.0.
- - STIR version 6.0.0 will require C++ 14 (currently we require C++ 11, but already support C++ 20).
+ - Use of the AVW library to read Analyze files will be removed in 6.0, as this has not been checked in more than 15 years. Use ITK instead.
+ - GE VOLPET and IE support will be removed in 6.0, as we have no files to test this, and it's obsolete anyway.
+ - STIR version 6.0.0 will require C++ 14 (currently we require C++ 11, but already support C++ 20) and CMake 3.14.
Build system and dependencies
- - CMake 3.12 is now required on Windows. (It will be required on all platforms in STIR 6.0).
+ - CMake 3.12 is now required on Windows.
- We now use CMake's OBJECT library feature for the registries. This avoids re-compilation of the registries for every executable and therefore speeds-up building time. Use of STIR in an external project is not affected as long as the recommended practice was followed. This is now documented in the User's Guide.
PR #1141.
From 6ae96eaebd57d4252ee05306f7284cfa509b2e8d Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 21:50:07 +0000
Subject: [PATCH 4/9] updated version number to 5.2.0
---
CMakeLists.txt | 6 +++---
VERSION.txt | 2 +-
recon_test_pack/run_ML_norm_tests.sh | 12 ++----------
recon_test_pack/run_root_GATE.sh | 2 +-
recon_test_pack/run_scatter_tests.sh | 2 +-
recon_test_pack/run_test_listmode_recon.sh | 2 +-
recon_test_pack/run_test_simulate_and_recon.sh | 2 +-
.../run_test_simulate_and_recon_with_motion.sh | 2 +-
recon_test_pack/run_test_zoom_image.sh | 2 +-
recon_test_pack/run_tests.sh | 2 +-
recon_test_pack/simulate_PET_data_for_tests.sh | 2 +-
11 files changed, 14 insertions(+), 22 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cec25b64b3..2873ad6dc5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,9 +56,9 @@ endif()
####### Set Version number etc
set(VERSION_MAJOR 5)
-set(VERSION_MINOR 1)
-set(VERSION_PATCH 2)
-set(VERSION 050102) # only used in STIRConfig.h.in
+set(VERSION_MINOR 2)
+set(VERSION_PATCH 0)
+set(VERSION 050200) # only used in STIRConfig.h.in
set(STIR_VERSION
${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
diff --git a/VERSION.txt b/VERSION.txt
index 61fcc87350..91ff57278e 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-5.1.2
+5.2.0
diff --git a/recon_test_pack/run_ML_norm_tests.sh b/recon_test_pack/run_ML_norm_tests.sh
index bb4199f3b2..73b3f342f7 100755
--- a/recon_test_pack/run_ML_norm_tests.sh
+++ b/recon_test_pack/run_ML_norm_tests.sh
@@ -10,22 +10,14 @@
# Copyright (C) 2013, 2020, 2021 University College London
# This file is part of STIR.
#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-
-# This file is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License for more details.
+# SPDX-License-Identifier: Apache-2.0
#
# See STIR/LICENSE.txt for details
#
# Author Kris Thielemans
#
-echo This script should work with STIR version 5.0. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_root_GATE.sh b/recon_test_pack/run_root_GATE.sh
index 0eb0f29c68..070da72cae 100755
--- a/recon_test_pack/run_root_GATE.sh
+++ b/recon_test_pack/run_root_GATE.sh
@@ -11,7 +11,7 @@
#
# Author Nikos Efthimiou, Kris Thielemans
-echo This script should work with STIR version ">"3.0. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_scatter_tests.sh b/recon_test_pack/run_scatter_tests.sh
index 8a2ee00f00..8dd29343bb 100755
--- a/recon_test_pack/run_scatter_tests.sh
+++ b/recon_test_pack/run_scatter_tests.sh
@@ -13,7 +13,7 @@
# Author Kris Thielemans
#
-echo This script should work with STIR version 5.1. If you have
+echo This script should work with STIR version 5.1 and 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_test_listmode_recon.sh b/recon_test_pack/run_test_listmode_recon.sh
index 5003040a8b..e3d1ece552 100755
--- a/recon_test_pack/run_test_listmode_recon.sh
+++ b/recon_test_pack/run_test_listmode_recon.sh
@@ -20,7 +20,7 @@ if [ -n "$TRAVIS" -o -n "$GITHUB_WORKSPACE" ]; then
set -e
fi
-echo This script should work with STIR version ">=" 5.1. If you have
+echo This script should work with STIR version 5.1 and 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_test_simulate_and_recon.sh b/recon_test_pack/run_test_simulate_and_recon.sh
index d955c58142..b277fa3fe5 100755
--- a/recon_test_pack/run_test_simulate_and_recon.sh
+++ b/recon_test_pack/run_test_simulate_and_recon.sh
@@ -19,7 +19,7 @@ if [ -n "$TRAVIS" -o -n "$GITHUB_WORKSPACE" ]; then
set -e
fi
-echo This script should work with STIR version 2.2, 2.3, 2.4 and 3.0. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_test_simulate_and_recon_with_motion.sh b/recon_test_pack/run_test_simulate_and_recon_with_motion.sh
index 61fda54345..46527cc989 100755
--- a/recon_test_pack/run_test_simulate_and_recon_with_motion.sh
+++ b/recon_test_pack/run_test_simulate_and_recon_with_motion.sh
@@ -21,7 +21,7 @@ if [ -n "$TRAVIS" -o -n "$GITHUB_WORKSPACE" ]; then
set -e
fi
-echo This script should work with STIR version 2.4 and 3.0. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_test_zoom_image.sh b/recon_test_pack/run_test_zoom_image.sh
index d46aa80c9f..d53a2280a6 100755
--- a/recon_test_pack/run_test_zoom_image.sh
+++ b/recon_test_pack/run_test_zoom_image.sh
@@ -18,7 +18,7 @@ if [ -n "$TRAVIS" -o -n "$GITHUB_WORKSPACE" ]; then
set -e
fi
-echo This script should work with STIR version 4.0. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/run_tests.sh b/recon_test_pack/run_tests.sh
index 7d74b1761e..9aa41f4dff 100755
--- a/recon_test_pack/run_tests.sh
+++ b/recon_test_pack/run_tests.sh
@@ -19,7 +19,7 @@ if [ -n "$TRAVIS" -o -n "$GITHUB_WORKSPACE" ]; then
set -e
fi
-echo This script should work with STIR version 2.1, 2.2, 2.3, 2.4 and 3.0. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
diff --git a/recon_test_pack/simulate_PET_data_for_tests.sh b/recon_test_pack/simulate_PET_data_for_tests.sh
index 6c0d759f13..3eece2ba8a 100755
--- a/recon_test_pack/simulate_PET_data_for_tests.sh
+++ b/recon_test_pack/simulate_PET_data_for_tests.sh
@@ -17,7 +17,7 @@
# Author Kris Thielemans
#
-echo This script should work with STIR version 5.x. If you have
+echo This script should work with STIR version 5.2. If you have
echo a later version, you might have to update your test pack.
echo Please check the web site.
echo
From 5c1cd22ad9cef592f9fdf855118e2f3549913712 Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 21:54:23 +0000
Subject: [PATCH 5/9] removed mention of Travis
---
CONTRIBUTING.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7210cb7641..3c8ea7411a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -44,7 +44,6 @@ Please by mindful about the resources used by our Continuous Integration (CI) wo
- Use specific keywords in the first line of the last commit that you push to prevent CI being run:
- `[ci skip]` skips all CI runs (e.g. when you only change documentation, or when your update isn't ready yet)
- `[actions skip]` does not run GitHub Actions, see [here](https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/). Note: this can be in the main commit message.
- - `[travis skip]` does not run Travis-CI, see [here](https://docs.travis-ci.com/user/customizing-the-build/#skipping-a-build). Note: this can be in the main commit message.
- `[skip appveyor]` does not run Appveyor, see [here](https://www.appveyor.com/docs/how-to/filtering-commits/#skip-directive-in-commit-message)
8. After acceptance of your PR, go home with a nice warm feeling.
From e2a359a10033ffc45f61b969d9148f3bebb8c884 Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 21:58:16 +0000
Subject: [PATCH 6/9] add PR template
---
.github/PULL_REQUEST_TEMPLATE.md | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000..aed2641f0e
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,22 @@
+
+
+## Changes in this pull request
+
+
+## Testing performed
+
+
+## Related issues
+
+
+
+## Checklist before requesting a review
+
+ - [] I have performed a self-review of my code
+ - [] I have added docstrings/doxygen in line with the guidance in the developer guide
+ - [] I have implemented unit tests that cover any new or modified functionality (if applicable)
+ - [] The code builds and runs on my machine
+ - [] `documentation/release_XXX.md` has been updated with any functionality change (if applicable)
From 2086080978ad57bb6492b6a1a0905eecd60956d3 Mon Sep 17 00:00:00 2001
From: Kris Thielemans
Date: Sun, 29 Oct 2023 22:03:22 +0000
Subject: [PATCH 7/9] update release 5.2.0 dates
---
documentation/history.htm | 4 +++-
documentation/release_5.2.htm | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/documentation/history.htm b/documentation/history.htm
index 076f96d3b3..c4a258e8bb 100644
--- a/documentation/history.htm
+++ b/documentation/history.htm
@@ -11,6 +11,8 @@ History of public releases of the STIR software
The following links give you a summary what has changed. However,
the ChangeLog is the definite (but tedious) information.