Releases: SyneRBI/SIRF
Releases · SyneRBI/SIRF
SIRF v2.2.0
-
PET/STIR
- updates to steepest ascent demo
- STIR.AcquisitionData.get_info() returns a string that describes the scanner etc
- NiftyPET projector wrapped (if STIR is built with NiftyPET)
- Added
set_image_data_processor
toPETAcquisitionModel
. This allows for instance image-based PSF modelling. - Ability to set and get STIR verbosity from python.
- Save STIR images using a parameter file (e.g., for saving as
.nii
) - A passthrough for both the maximum and minimum relative change during OSMAPOSL reconstruction has been added.
-
MR/Gadgetron
- We have now corrected the geometrical information of
.h5
images (coming from ISMRMRD and Gadgetron). This means we can now convert them to other SIRF image types (e.g.,NiftiImageData
andSTIRImageData
). This is necessary for any kind of synergistic reconstruction. Further, to the best of our knowledge, this is the first ISMRMRD to NIfTI converter out there!
- We have now corrected the geometrical information of
-
Registration
- Default F3d to using non-symmetric version (previously, symmetric was used). Option to use the symmetric in C++, but currently exposed to python and matlab as we suspect there is an upstream bug there.
- The adjoint transformation has now been implemented for
NiftyResample
through the wrapping of NiftyMoMo. - The following methods have been added to C++, python and matlab NiftyResample:
out = forward(in)
forward(out, in)
out = adjoint(in)
adjoint(out, in)
- Inverse deformation images. Inverse displacements are also possible by converting to and from deformations.
- Resampling of complex images.
- SPM registration wrapping (only SPM12 tested). If
Matlab
andSPM
are present, the SPM wrapper is available fromC++
,Matlab
andPython
. - Support for registering multiple floating images has been added. This is only available for certain algorithms (currently only
SPM
). There are therefore new methodsadd_floating_image
andclear_floating_images
on top of the originalset_floating_image
. Methods extracting the results of registrations can now be called with an index (get_output(idx = 0)
,get_transformation_matrix_forward(idx = 0)
, etc.). This index defaults to the first to maintain backwards compatibility. - Ability to pad
NiftiImageData
, e.g.,a.pad([10,10,0],[10,10,0])
to add 10 voxels to the minimum and maximum of the x- and y-directions.
-
Other
- Changed CCP PETMR to SyneRBI
- documentation fixes/additions
SyneRBI SIRF v2.2.0 Release Candidate 1
- A passthrough for both the maximum and minimum relative change during OSMAPOSL reconstruction has been added.
- We have now corrected the geometrical information of
.h5
images (coming from ISMRMRD and Gadgetron). This means we can now convert them to other SIRF image types (e.g.,NiftiImageData
andSTIRImageData
). This is necessary for any kind of synergistic reconstruction. Further, to the best of our knowledge, this is the first ISMRMRD to NIfTI converter out there! - The adjoint transformation has now been implemented for
NiftyResample
through the wrapping of NiftyMoMo. Resample::process()
has been marked as deprecated. Instead, the following methods have been added to C++, python and matlab NiftyResample:out = forward(in)
forward(out, in)
out = adjoint(in)
adjoint(out, in)
out = backward(in)
<- alias for adjointbackward(out, in)
<- alias for adjoint
- Inverse deformation images. Inverse displacements are also possible by converting to and from deformations.
- NiftyPET projector wrapped (if STIR is built with NiftyPET)
- Added
set_image_data_processor
toPETAcquisitionModel
. This allows for instance image-based PSF modelling. - Resampling of complex images.
- SPM registration wrapping (only SPM12 tested). If
Matlab
andSPM
are present, the SPM wrapper is available fromC++
,Matlab
andPython
. - Support for registering multiple floating images has been added. This is only available for certain algorithms (currently only
SPM
). There are therefore new methodsadd_floating_image
andclear_floating_images
on top of the originalset_floating_image
. Methods extracting the results of registrations can now be called with an index (get_output(idx = 0)
,get_transformation_matrix_forward(idx = 0)
, etc.). This index defaults to the first to maintain backwards compatibility. - Ability to pad
NiftiImageData
, e.g.,a.pad([10,10,0],[10,10,0])
to add 10 voxels to the minimum and maximum of the x- and y-directions. - Ability to set and get STIR verbosity from python.
- Save STIR images using a parameter file (e.g., for saving as
.nii
) - Default F3d to using non-symmetric version (previously, symmetric was used). Option to use the symmetric in C++, but currently exposed to python and matlab as we suspect there is an upstream bug there.
CCPPETMR SIRF v2.1.0
- PET/STIR
- Interfaced HKEM into SIRF
- Interfaced SeparableGaussianImageFilter into SIRF
- MR/Gadgetron
- Added DICOM-writing gadgets for MR images output
- Added few Gadgetron GPU gadgets to SIRF gadget library
- Enabled handling of 3D slices of MR images by switching to 3D FFT
- Python
- Switched to new class style
- Introduced contiguity checks of filled data
- CIL/SIRF Compatibility
- added methods to AcquisitionData, ImageData and AcquisitionModel to be compatible with
CCPi's Core Imaging Library (CIL)
- added methods to AcquisitionData, ImageData and AcquisitionModel to be compatible with
CCPPETMR SIRF v2.0.0
- Set CMake policy CMP0079.
- Use
swig_add_library
instead ofswig_add_module
. - Averaging of rigid transformation matrices via quaternions (and therefore a quaternion class).
- Arrays of SIRF objects can be passed from the Python and Matlab interfaces to the C++ level (e.g., averaging a large number of matrices) via the DataHandleVector class. This is an internal class that should not be used. Simply pass a native array of objects and SIRF will convert to the DataHandleVector class if necessary.
- Image data role checks in MRAcquisitionModel introduced.
- Corrected ISMRMRD acquisition sorting.
- Added PhysioInterpolationGadget and FatWaterGadget to SIRF gadgets library.
- Wrapping of NiftyReg to allow registration/resampling in SIRF.
- Implemented new
ImageData
hierarchy common to PET and MR.ImageData
contain geometrical info. - MR/Gadgetron
- Added default constructor and set_up to MRAcquisitionModel
- Implemented sorting of MR images
- Implemented reading of MR acquisition data from ISMRMRD file
- PET/STIR
- projectors can now handle subsets (although with a somewhat ugly work-around)
- added FBP2D, SSRB and the Parallel Level Sets prior
- added TOF bins dimension to
PETAcquisitionData
(still fixed to have size 1)
- C++ changes
- Removed
using
statements from the C++ header files - Created namespace
sirf
- include files are now moved to subdirectories (such as
include/sirf/common
). - Modified ObjectHandle type so that it can handle both
std::shared_ptr
andboost::shared_ptr
.
- Removed
- Python/MATLAB:
petmr_data_path
is now obsolete. Useexamples_data_path
instead.
- Python:
- everything is now in a
sirf
module. Use for instanceimport sirf.Gadgetron
- everything is now in a
- Matlab:
- in keeping with changes to c++ and python, classes are now called with e.g.,
sirf.STIR.obj
instead ofmSTIR.obj
. Aliases can be used to shorten this (e.g.,PET=set_up_PET()
and thenPET.obj
).
- in keeping with changes to c++ and python, classes are now called with e.g.,
- CMake:
- Updated minimum required version of CMake to 3.9.0.
CCPPETMR SIRF v1.1.0
- Various bug fixes and corrections
BUILD_STIR_WITH_OPENMP
is nowON
by default- Gadgetron data processors check for Gadgetron server crash
- More data files in
SIRF/data/examples/MR
- Grayscale plotting enabled
- Created a python
sirf
package (recommended way of importing)- aliased
p(Gadgetron|STIR|Utilities) -> sirf.(Gadgetron|STIR|Utilities)
- added
setup.py
- exposed cmake variable
PYTHON_STRATEGY
. Options:PYTHONPATH
: prefix$PYTHONPATH
(default)SETUP_PY
: execute${PYTHON_EXECUTABLE} setup.py install
CONDA
: do nothing
- aliased
- Added
PYTHON_DEST_DIR
variable, which allows the user to select the install destination of the SIRF python modules.PYTHON_DEST_DIR
is a cached variable which can be updated on the GUI. IfPYTHON_DEST_DIR
is not set, we will install in${CMAKE_INSTALL_PREFIX}/python
. Likewise forMATLAB_DEST_DIR
. - Some improvements to the demos. Note that PET reconstruction demos have somewhat different parameters.
- Implemented PLS Prior
- Implemented 2D Filtered Back Projection
CCPPETMR SIRF v1.0.0
- Access to all MR images and acquisition parameters
- All 8 file IO available (PET: Interfile, MR: HDF5)
- PET
- PETAcquisitionData object creation from scanner name and parameters
- ListmodeToSinograms converter class, also estimating randoms (from delayed coincidences)
- Normalization from ECAT8 (Siemens mMR) and attenuation image
- Build with OpenMP delivers stable and substantially accelerated performance
- More documentation
- Developer's Guide
- Doxygen inline documentation (available on CCP PETMR website)
- More tests (now run via CTest), for Python, Matlab and C++.
- Coverage reporting for Python tests done by ctest