Summary of changes in STIR release 2.3 (dated 04/05/2013)
This update was mostly prepared by Kris Thielemans (Algorithms and Software Consulting Ltd). The FORE implementation was developed over many years with main authors
Matthias Egger, Claire Labbé, Oliver Nix, Kris Thielemans.
The SimSET updates were checked by Robert Harrison.
Summary for end users (also to be read by developers)
Important bug fixes
- The routines to handle SimSET data did have some problems in the previous release,
but should work now. Check SimSET/README.txt for some information.
- run_SimSET.sh had a few crucial lines commented out.
- corrected the case where scatter_parameter is 4|5|9|10 in conv_SimSET_projdata_to_STIR.sh
New functionality
- Addition of the FORE algorithm.
- Dynamic projection data can now be read from Interfile data. This means that the parametric
image estimation routines need less ECAT7 support (still required for images at present).
- Expanded the interface for using STIR from Python. This works now but
needs documentation. There's functions
to copy STIR arrays to numpy arrays, indexing STIR arrays with tuples, etc. To use this, you will need to get a recent version of SWIG and enable
the BUILD_SWIG_PYTHON option when using CMake.
- Preliminary support for using STIR from Octave. However, this is
partially broken due to problems in SWIG for octave.
Changed functionality
- ProjMatrixByBinFromFile now assumes that if an LOR isn't found in the file, it's empty (in previous STIR versions, we called error())
Build system
-
Using CMake is now recommended (see the wiki). Some options
such as shared libraries and SWIG support can only be enabled when using CMake.
- For the normal Makefiles, we now use the -Ofast option for gcc
if it supports it.
Known problems
- This release has a memory allocation problem when processing list mode data. Depending on your system, compiler,
bad luck, you might get wrong results. If you use list mode, please upgrade to STIR 2.4.
- This release is known to fail when both MPI and shared libraries are enabled. You will see linking errors in all non_MPI executables.
- On Windows, using shared libraries fails. We need to sort out dependencies between libraries to fix this.
- The recon_test_pack routines fail with the MPI version. See the mailing list for a work-around.
- ECAT6 is no longer supported
- The interpolating back-projector still gives problems in the centre of the images
on some architectures/compiler/optimisation settings. We recommend to use the ray-tracing
matrix (with additional rays) instead.
- When using Visual Studio (Express) with the provided solution files, there is a linking problem for some
utilities. It is recommended to use the new CMake files for building instead (see the wiki).
- When using
GRAPHICS=X
(i.e. on Unix/Linux/MacOSX) the window displaying
the bitmaps is sometimes empty. This might depend on your X server settings.
This affects manip_image, manip_projdata and display_projdata.
We have currently no work-around (aside from using GRAPHICS=PGM
or
stir_write_pgm).
Minor bug fixes
- This update contains a few fixes for Visual C++ 2010 and 2012, e.g. in Debug mode and on 64bit systems, Intel C++ (adapt the makefile to use xiar when using -fast).
- a few changes to the CMakeLists.txt files for cmake clarifying dependencies
between libraries. This makes shared libraries better suppported, but there are still circular dependencies. This doesn't seem to create trouble on most systems,
but makes shared libraries fail on some (e.g. msys on windows).
- test_Scanner.cxx:
declare ecat_model function in case it isn't in ecat_model.h
Documentation changes
- The Wiki expands more and more, so use it in addition to the provided PDFs.
recon_test_pack changes
- updated version number and added some clarification to the README.txt
- removed the ECAT6 tests
Other changes to tests
None
What's new for developers (aside from what should be obvious
from the above):
Major bugs fixed
None
New functionality
- BasicCoordinate, VectorWithOffset and Array now have new members at() (checking for out-of-range index access) and empty() (like std::vector).
- error() and warning() now support using boost::format. The old (unsafe) printf-like syntax will be removed in
a future version.
Other code changes
- removed _scanner_sptr member of MultipleProjData,
added a few set_*() functions.
- error and warning have now an additional version using only 1 argument that writes to stream, i.e. like info()
- PoissonLogLikelihoodWithLinearModelForMean:
added get/set pair for (sub)sensitivity_filename(s)
- OSMAPOSLReconstruction:
overloading IterativeReconstruction::get_objective_function()
with a return-type specifying it'll always be a Poisson log likelihood.
- no longer have using std::vector and/or using std::ios etc in some .h files
- A few minor changes for SWIG compatibility