SimpleITK 2.0 Release Candidate 2

Announcement

Announcing the SimpleITK 2.0 Release Candidate 2!

This RC contains backwards incompatible changes. Users are encouraged to test the RC with their code and report back bugs and issues.

This update contains major improvements and changes to the code generation used in SimpleITK. The changes include support for in-place operations of filters in C++ and improved C++11 style and usage.

Additional release notes can be found in Release Candidate 1.

Installing SimpleITK

Complete instructions on getting started with SimpleITK including downloading binaries or building SimpleITK can be found on the SimpleITK Read the Docs web page.

Python Binary Downloads

  • Python binary wheels are available for download. It is important to have the latest version of pip for correct wheel compatibility and installation. To install the latest SimpleITK package from GitHub releases:
python -m pip install --upgrade pip
python -m pip install --pre SimpleITK --find-links https://github.com/SimpleITK/SimpleITK/releases/tag/v2.0rc2

Anaconda Binary Downloads

Conda packages are available from Anaconda Cloud on the SimpleITK channel. These can be installed with:

conda install -c simpleitk/label/dev simpleitk

Release Notes

API and Compatibility Changes

  • Remove from all filters the Execute method with filter parameters as arguments.
  • Remove AddTrailPoints and ClearTrialPoints methods from FastMarchingImageFilter due to consolidation of code generation templates.
  • With Java wrapped Vector types whose C++ element type is an unsigned integer, the wrapped element type changed to the next larger Java signed integer type ( see 618d89 ).
  • Removed procedural methods taking scalar radius from the following ( see 444f9a ):
    • BinaryClosingByReconstruction
    • BinaryDilate
    • BinaryErode
    • BinaryMorphologicalClosing
    • BinaryMorphologicalOpening
    • BinaryOpeningByReconstruction
    • BlackTopHat
    • ClosingByReconstruction
    • DilateObjectMorphology
    • ErodeObjectMorphology
    • GrayscaleDilate
    • GrayscaleErode
    • GrayscaleMorphologicalClosing
    • GrayscaleMorphologicalOpening
    • MorphologicalGradient
    • OpeningByReconstruction
    • WhiteTopHat
  • Dropped Python 3.4 support due to end of life.
  • Remove the sitk::ImageFilter template parameter because it is no longer utilized.
  • The Python installation command using setup.py changed with the location of setup.py. To install see updated Sphinx documentation.
  • Remove Transform::AddTransform and Transform::FlattenTransform methods. Use the CompositeTransform class.

New Features

  • Update ITK version to on 5.1.0 release branch, which includes critical patches for Mattes mutual information and the CompositeTransform class. ITK hash c8c42430626f0123e7ec401c17c72c7d5ce82669.
  • Add Image::IsUnique method.
  • Add wrapping for DICOMOrientImageFilter.
  • Add complex pixel type support to GetBufferAs methods.
  • Improve checking and error messages when Image inputs require the dimensions, sizes or pixel types to match.
  • Add LevelSetMotionRegistrationImageFilter::InitialDisplacementField method.
  • Update to use SWIG 4.0.1; SWIG >= 4 is now required.
  • Refactor of the template code generation system to enable numerous new features and C++ style enhancements.
  • Add boolean in_place field to all JSON filter descriptions.
  • Add C++ automatic “in place” ITK filter execution with r-value image input.
  • Add C++ Image operators with automatic in-place filter execution with r-value Image classes.
  • Use native SWIG/R enumeration support.
  • Add named filter inputs to morphological reconstruction image filters.
  • Replace the CMake configuration option of “SimpleITK_4D_IMAGE” with “SimpleITK_MAX_DIMENSION”
  • Default configuration now include 5D Image support.
  • The following filters support up to “SimpleITK_MAX_DIMENSION”:
    • ExtractImageFilter
    • JoinSeriesImageFilter
    • PasteImageFilter
    • HashImageFilter
    • ImageFileReader
    • ImageFileWriter and ImageSeriesWriter
  • Refactored MemberFunctionFactory’s hashing function.
  • Add ExtractImageFilter support to extract an abitrary dimension e.g. 3D image from 5D image.
  • Add sitkScaleVersor enum.
  • Add Transform::GetTransfromEnum method.
  • Add CompositeTransform class.
  • Update to ITKv5 threading model behaviors for the following ProcessObject methods:
    • SetGlobalDefaultThreader and GetGlobalDefaultThreader
    • SetGlobalDefaultNumberOfThreads and GetGlobalDefaultNumberOfThreads
    • SetNumberOfWorkUnits and GetNumberOfWorkUnits
  • Add Python keyword argument support for Resample procedure.
  • Improve Python Image class’s in-place operators to use C++ in-place operators.
  • Improved Python keyword arguments for procedual methods due to removal of overloaded methods.
  • Add Python slice indexing for arbitrary dimension extracting.
  • Add Python __setitem__ support for assigning sub-regions via the PasteImageFilter.
  • Refactor Python SWIG code to separate classes and add Python code as modules.
  • Add Python Transform.Downcast method.
  • Applied PEP 8 style to Python examples.

Bug Fixes

  • Add missing deepcopy implementation for Image with RLE “Label” pixel types.
  • Fixed Python pickling for missed transform classes.
  • Refactored GetImageFromVector method to retain reference to original container with a command object. Fixing image buffer aliasing with BSplineTransform and DisplacementFieldTransform.
  • Make TranslationTransform conversion constructor explicit.
  • Remove implicit conversion from Image to Transform class.

Documentation

  • Update Sphinx filter list.
  • Add example for reading raw image files.
  • Add DICOM series writing example with floating point pixels.
  • Add FAQ entry for the differences between ITK and SimpleITK.
  • Rename Sphinx “installation” page to “getting started”.
  • Update examples from using scalar radius to vector.
  • Use Doxygen interactive SVG output, and enable client side MathJax for Latex rendering.
  • Add C++ CMake example for using SimpleITK.
  • Update examples to use CompositeTransform.

Compilation

  • Continue to address compilation warnings.
  • Pin Sphinx version for Read-The-Docs.
  • Remove EXPORT specification for static member function declaration.
  • Support pass TBB_DIR to ITK in the Superbuild.

Miscellaneous

  • Update SimpleITK logo.
  • Updates to manylinux Dockerfile including updating CMake and openssl versions.
  • Write testing output with compression enabled.
  • Use C++11 nullptr over NULL.
  • Update classes to use C++11 inline class initializaton.
  • Use C++11 default class constructors.
  • Use C++11 type alias over typedefs.
  • Use clang-tidy to improve code with:
    • modernize-redundant-void-arg
    • modernize-use-equals-default
    • modernize-use-override
    • modernize-use-emplace
    • readability-container-size-empty
  • Continuing updates and improvements to the testing, build and packaging infrastructure.
  • Update set parameter methods to use std::vector by value with C++ std::move internally.
  • Add CI for running flake8.
3 Likes