Skip to content

Commit

Permalink
Merge branch 'master' into modifications_for_psmr2024
Browse files Browse the repository at this point in the history
  • Loading branch information
NikEfth committed May 16, 2024
2 parents e67faec + 6b88234 commit e7a2656
Show file tree
Hide file tree
Showing 57 changed files with 1,945 additions and 991 deletions.
8 changes: 8 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# change to Apache 2.0 license
47d1aa5f302c5b6b579de176535e01aa97d1ff27
# run clang-tidy --modernize-use-override
8af125617a113724f52d26e991bfc6c36abb952f
# manual fixes in stir_experimental and clang-tidy modernize-use-override
c5a1c6bc29d3f24d8fdb5c198946ec9580947257
# stir_maintenance run pre-commit
88f4ce70929a41c745fc39030e90c87bfaf046b7
26 changes: 20 additions & 6 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,6 @@ jobs:
CXX=${CXX}-${{ matrix.compiler_version }}
fi
if test 'XX${{ matrix.os }}' = 'XXmacOS-latest'; then
# need to force XCode version for the moment due to a linker bug
# see https://github.com/UCL/STIR/issues/1103
echo DEVELOPER_DIR="/Applications/Xcode_14.1.app/Contents/Developer" >> $GITHUB_ENV
if test 'XX${{ matrix.compiler }}' = 'XXclang'; then
brew install llvm@${{ matrix.compiler_version }}
if test XX${HOMEBREW_PREFIX} = XX; then
Expand Down Expand Up @@ -353,7 +350,10 @@ jobs:
fi
# don't run all of them in Debug mode as it takes too long
if test ${BUILD_TYPE} = Debug; then
EXCLUDE_Debug="test_data_processor_projectors|test_export_array|test_ArcCorrection"
# Also excluding test_PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin
# as it is a bit slow. Moreover it fails on MacOS (Debug)
# https://github.com/UCL/STIR/pull/1418#issuecomment-2109518132
EXCLUDE_Debug="test_data_processor_projectors|test_export_array|test_ArcCorrection|test_PoissonLogLikelihoodWithLinearModelForMeanAndListModeWithProjMatrixByBin"
EXCLUDE="${EXCLUDE_Debug}${EXCLUDE:+"|"}${EXCLUDE}"
fi
# prepend -E
Expand All @@ -363,6 +363,19 @@ jobs:
# execute tests
ctest --output-on-failure -C ${BUILD_TYPE} ${EXCLUDE}
- name: Upload ctest log files for debugging
uses: actions/upload-artifact@v4
if: failure()
with:
name: ctest_log_files-${{ matrix.os }}-${{ matrix.compiler }}${{ matrix.compiler_version }}-cuda${{ matrix.cuda_version }}-${{ matrix.BUILD_TYPE }}-pp=${{ matrix.parallelproj }}-ROOT=${{ matrix.ROOT }}
path: |
${{ github.workspace }}/build/**/*.log
${{ github.workspace }}/build/**/*.hv
${{ github.workspace }}/build/**/*.v
${{ github.workspace }}/build/**/*.hs
${{ github.workspace }}/build/**/*.s
retention-days: 7

- name: C++ examples with STIR_LOCAL
shell: bash
run: |
Expand Down Expand Up @@ -435,11 +448,12 @@ jobs:
fi
- name: Upload recon_test_pack log files for debugging
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: recon_test_pack_log_files-${{ matrix.os }}-${{ matrix.compiler }}${{ matrix.compiler_version }}-cuda${{ matrix.cuda_version }}-${{ matrix.BUILD_TYPE }}-pp=${{ matrix.parallelproj }}-ROOT=${{ matrix.ROOT }}
path: ${{ github.workspace }}/recon_test_pack/**/*.log
path: |
${{ github.workspace }}/recon_test_pack/**/*.log
${{ github.workspace }}/recon_test_pack/**/my_*v
${{ github.workspace }}/recon_test_pack/**/my_*s
retention-days: 7
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ install_manifest.txt
~$*
*~
*.bak
\#*#

# Ignore Visual Studio User-specific files
*.suo
Expand Down
1 change: 1 addition & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ Matthias Ehrhardt <m.ehrhardt@bath.ac.uk> <m.ehrhardt@bath.ac.uk>
Matthias Ehrhardt <m.ehrhardt@bath.ac.uk> <m.j.ehrhardt@damtp.cam.ac.uk>
Nikos Efthimiou <nikos.efthimiou@gmail.com> <nikos.efthimiou@gmail.com>
Nikos Efthimiou <nikos.efthimiou@gmail.com> <NikEfth@users.noreply.github.com>
Nikos Efthimiou <nikos.efthimiou@gmail.com> <n.efthymiou@hull.ac.uk>
Ottavia Bertolli <ottavia.bertolli.13@ucl.ac.uk>
Palak Wadhwa <pwadhwa351@gmail.com> <38861704+pwadhwa351@users.noreply.github.com>
Palak Wadhwa <pwadhwa351@gmail.com> <medpwad@leeds.ac.uk>
Expand Down
24 changes: 14 additions & 10 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -32,31 +32,31 @@ authors:
- family-names: Jehl
given-names: Markus
affiliation: Positrigo
- family-names: Borgeaud
given-names: Tim
affiliation: Hammersmith Imanet Ltd
- family-names: Strugari
given-names: Matthew
affiliation: Dalhousie University (Canada)
- family-names: Khateri
given-names: Parisa
affiliation: ETH Zuerich
- family-names: Beisel
given-names: Tobias
- family-names: Wadhwa
given-names: Palak
affiliation: University of Leeds (UK)
- family-names: Borgeaud
given-names: Tim
affiliation: Hammersmith Imanet Ltd
- family-names: Beisel
given-names: Tobias
- family-names: Emond
given-names: Elise
affiliation: University College London
- family-names: Jacobson
given-names: Matthew
- family-names: Gillman
given-names: Ashley
orcid: 'https://orcid.org/0000-0001-9130-1092'
affiliation: >-
Commonwealth Scientific and Industrial Research
Organisation, and University of Queensland
- family-names: Jacobson
given-names: Matthew
- family-names: Zverovich
given-names: Alexey
affiliation: Brunel University (UK)
Expand Down Expand Up @@ -113,6 +113,9 @@ authors:
- family-names: Valente
given-names: Patrick
affiliation: Brunel University (UK)
- family-names: Jurjew
given-names: Nicole
affiliation: University College London
- family-names: Ovtchinnikov
given-names: Evgueni
orcid: 'https://orcid.org/0000-0002-9359-6514'
Expand All @@ -127,9 +130,6 @@ authors:
- family-names: Belluzzo
given-names: Damiano
affiliation: Hospedale San Raffaele Milano (Italy)
- family-names: Jurjew
given-names: Nicole
affiliation: University College London
- family-names: Ching
given-names: Daniel
- family-names: Hague
Expand Down Expand Up @@ -178,10 +178,14 @@ authors:
identifiers:
- type: doi
value: 10.1088/0031-9155/57/4/867
- type: doi
value: 10.3389/fnume.2023.1134774
- type: doi
value: 10.1186/s40658-019-0248-9
- type: doi
value: 10.3390/jimaging8060172
- type: doi
value: 10.1088/1361-6560/aaf9b9
- type: doi
value: 10.1109/NSSMIC.2018.8824341
- type: doi
Expand Down
12 changes: 9 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ endif()

####### Set Version number etc
set(VERSION_MAJOR 6)
set(VERSION_MINOR 0)
set(VERSION_MINOR 1)
set(VERSION_PATCH 0)
set(VERSION 060000) # only used in STIRConfig.h.in and swig/CMakeLists.txt
set(VERSION 060100) # only used in STIRConfig.h.in and swig/CMakeLists.txt

set(STIR_VERSION
${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
Expand Down Expand Up @@ -121,7 +121,13 @@ if(NOT DISABLE_CERN_ROOT)
find_package(CERN_ROOT)
if (CERN_ROOT_FOUND)
message(STATUS "ROOT Version: ${CERN_ROOT_VERSION}")
if (${CERN_ROOT_VERSION} VERSION_GREATER 6.23.99)
if (${CERN_ROOT_VERSION} VERSION_GREATER 6.29.99)
message(STATUS "ROOT Version is >= 6.30. Setting the minimum CXX version to 20.")
UseCXX(20)
elseif (${CERN_ROOT_VERSION} VERSION_GREATER 6.27.99)
message(STATUS "ROOT Version is >= 6.28. Setting the minimum CXX version to 17.")
UseCXX(17)
elseif (${CERN_ROOT_VERSION} VERSION_GREATER 6.23.99)
message(STATUS "ROOT Version is >= 6.24. Setting the minimum CXX version to 14.")
UseCXX(14)
endif()
Expand Down
2 changes: 1 addition & 1 deletion VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.0.0
6.1.0
5 changes: 3 additions & 2 deletions documentation/STIR-UsersGuide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
\\[3cm]

\textbf{{\huge User's Guide\\
Version 6.0}}
Version 6.1}}
\end{center}

\end{spacing}
Expand Down Expand Up @@ -444,7 +444,8 @@ \subsubsection{

{ \subsubsubsection{Cygwin on Windows}
}
\textit{Cygwin support has not been tested since about 2018 but likely still works. Instructions below might be out-of-date though.}
\textit{Cygwin support has not been tested since about 2018 but likely still works. Instructions below are likely out-of-date though.
We highly recommend to use WSL instead.}

If you are using Windows but would like
to have nearly everything that Linux/Unix has to offer, Cygwin could help. Check out http://cygwin.com.
Expand Down
20 changes: 13 additions & 7 deletions documentation/STIR-developers-overview.tex
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +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 is compatible with newer versions of the C++ standard.
We will enforce C++-14 from STIR 6.0.
STIR is written in C++ and currently requires C++-14, but it is compatible with newer versions of the C++ standard.
We will enforce C++-16 from STIR 6.2.

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.
Expand Down Expand Up @@ -170,8 +170,8 @@ \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.
Note that since STIR version 6.0, Time-of-Flight (TOF) is supported. This introduces another
index. However, \texttt{Sinogram} and \texttt{Viewgram} 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.}
Expand Down Expand Up @@ -897,7 +897,7 @@ \subsubsection{
\end{itemize}


At the moment, we have three derived classes:
At the moment, we have the following derived classes:
\begin{itemize}
\item
\texttt{ProjMatrixByBinUsingRayTracing} uses essentially the same
Expand All @@ -916,6 +916,10 @@ \subsubsection{
part of the projection matrix needs to be stored. Our current
implementation does not yet provide a very compact format for
storing the elements (although they are of course stored sparsely).
\item
\texttt{ProjMatrixByBinSPECTUB} is for parallel hole SPECT
\item
\texttt{ProjMatrixByBinPinholeSPECTUB} is for multi-pinhole SPECT
\end{itemize}

\begin{figure}[htbp]
Expand Down Expand Up @@ -956,8 +960,10 @@ \subsection{Objective functions}
that is computed is generally not the gradient of the
log-likelihood that corresponds to the forward projector.
However, one hopes that it still points towards the optimum.
The corresponding objective function is implemented in the class\\
\texttt{PoissonLogLikelihoodWithLinearModelForMeanAndProjData}.
The corresponding objective function is implemented in the classes\\
\texttt{PoissonLogLikelihoodWithLinearModelForMeanAndProjData} for
projection data and \texttt{PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin}
for list-mode data. There are classes for dynamic and gated data as well.

There can be different objective function that use common operations.
For instance, the objective function could implement a least squares
Expand Down
7 changes: 4 additions & 3 deletions documentation/credits.htm
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,9 @@ <h2>contributions since the PARAPET EU project (April 2000)</h2>
Roethlisberger, Michael

16. Positrigo, Switserland
SWIG improvements and "blocks on cylindrical" testing
Mikhaylova, Ekaterina
SWIG improvements, "blocks on cylindrical" testing and fixes
Jehl, Markus
Mikhaylova, Ekaterina
Fisher, Jannis

17. National Physical Laboratory, UK
Expand All @@ -132,7 +132,8 @@ <h2>contributions since the PARAPET EU project (April 2000)</h2>

19. University College London, UK
(2013-2024)
scatter updates, dynamic data updates, OPENMP, PLS, RDP etc priors, reconstruction hierarchy, Siemens ECAT8 support etc
scatter updates, dynamic data updates, OPENMP, PLS, RDP etc priors, reconstruction hierarchy, Siemens ECAT8 support,
TOF support, parallelproj integration etc
pinhole SPECT modelling
help with integration and general maintenance
Brown, Richard
Expand Down
3 changes: 2 additions & 1 deletion documentation/history.htm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ <h1>History of public releases of the STIR software</h1>
The following links give you a summary what has changed. However,
the ChangeLog is the definite (but tedious) information.
<ul >
<li><a href="release_6.1.htm">version 6.1.0 (dated 16 May 2024)</a></li>
<li><a href="release_6.0.htm">version 6.0.0 (dated 07 February 2024)</a></li>
<li><a href="release_5.2.htm">version 5.2.0 (dated 30 October 2023)</a></li>
<li><a href="release_5.1.htm">version 5.1.2 (dated 10 September 2023)</a></li>
Expand Down Expand Up @@ -49,7 +50,7 @@ <h1>History of public releases of the PARAPET software</h1>

<!-- Created: Wed Jul 19 16:03:02 BST 2000 -->
<!-- hhmts start -->
Last modified: 7 February 2024
Last modified: 16 May 2024
<!-- hhmts end -->
</body>
</html>
Loading

0 comments on commit e7a2656

Please sign in to comment.