Summary of changes in STIR release 2.4 (dated 31/07/2013)
This release was mostly prepared by Charalampos Tsoumpas (King's College London).
Special thanks to Irene Polycarpou for her rigorous validation and the
invaluable help while debugging the code. Minor changes and bug fixes by Kris Thielemans
(Algorithms and Software Consulting Ltd, University College London).
Summary for end users (also to be read by developers)
Important bug fixes
- corrected BUG in memory allocation in InputStreamWithRecords (introduced in STIR 2.3).
This potentially affected all list mode handling.
New functionality
- Addition of motion utilities and an objective function for reconstructing a single motion corrected
image from gated projection data.
- Conversion routines for reading/writing GIPL images.
- A conversion routine to create Interfile data from raw GATE projection data output.
- 4 new scanners: Siemens mMR, nanoPET (Mediso), HYPER (HyperImage FP7 project), PANDA (KCL internal).
- Added "-t tolerance" option to compare_projdata.
- Python support:
- Added input files for python examples.
- Added test scripts using py.test (these need to be run manually at present)
- Added ByteOrder, NumericType, Segment, TimedObject,
InterfileOutputFileFormat, ECAT7OutputFileFormat (applicable to all swig interfaces)
- Added get_num_dimensions() and shape() to Array
Changed functionality
- PoissonLogLikelihoodWithLinearKineticModelAndDynamicProjectionData now defaults to using all segments (to be consistent with other
objective functions)
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. Hand-crafted project files
for Visual Studio are no longer distributed.
- use CMake FOLDER properties to group projects in
Visual Studio (and XCode etc?), needs CMake 2.8.3
- disable export of cmake settings as it's no longer supported by CMake
Known problems
- On Windows, using shared libraries fails. We need to sort out dependencies between libraries to fix this.
- This release is known to fail when both MPI and shared libraries are enabled. You will see linking errors in all non_MPI executables.
- The recon_test_pack routines fail with the MPI version. A work-around is to prefix the reconstruction executables with mpirun -np 4 or so).
- The MPI version of OSMAPOSL and OSSPS cannot compute the value of the objective function. Therefore, setting the
report objective function values interval keyword to 1 will cause a crash.
- 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
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
- fixed possible race-condition in OPENMP version of FBP2D (but it's still too slow to be practical)
- list_lm_events: reset output-format to decimal after printing a gating event (previously all
remaining output was in hex); also added newline after printing an unknown event.
- fix a (nearly irrelevant) bug in reading a file signature that lead to uninitialised memory being
returned if the file size was shorter than 1024 bytes (but that doesn't really happen for normal files).
- A few error messages in ECAT IO would actually crash as opposed to writing a decent message.
- 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).
Documentation changes
- Added documentation on new features, more on using CMake, etc
- 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
- added a test script for the motion version
- added a test script for the scatter simulation
- relaxed test for OSSPS in run_tests.sh to avoid problem of outer rim voxels on cygwin (and others?)
- small updates to test scrips, giving early exit if a STIR executable not found and feedback which STIR executable is being used
Other changes to tests
- added a test for warping images
- changed IO tests in test_Array to accomodate for gcc 4.8.1 numerical precision (flagged and tested by Justin Mikell)
What's new for developers (aside from what should be obvious
from the above):
Major bugs fixed
- corrected BUG in memory allocation in InputStreamWithRecords (introduced in STIR 2.3).
This potentially affected all list mode handling.
New functionality
- Lots of warping/motion stuff!
Other code changes
- modifications to the scatter estimation code changes to be able to run multiple scatter
simulation from the same ScatterEstimation object (possibly re-using the
cache). Results are identical.
- removed a few using std::cout (and other items in the std namespace) from some include files
as this created problems on some compilers. This might affect your code if it relied on these using statements.
- replaced a few output lines to std::cerr with calls to stir::info (still many more to do).
Build system
- changes to test-macros for CMake to allow linking without the registries (such as
IO_registries), speeding up the linking process of some tests.
- fixes for MPI. The CMake files might now work on more MPI platforms.