Summary:
This paper describes the implementation of an enhanced wrapping system for ITK. The wrappers allow access to ITK filters, algorithms and pipelines using Python (TCL and Java are on the way: waiting for other contributers/helpers).
Hypothesis:
This paper suggests that the proposed wrapping system is easier to use, better documented, and more Python friendly than the current wrapping system.
Evidence:
The authors present an easy to follow installation guide, a developers guide, and various examples demonstrating usage. The code is easy to understand and the Python functionality really streamlines prototyping with ITK. I have not personally used the existing wrapping system, but my experience with WrapITK has been extremely positivie. The claims made by the authors (ease of use, good documentation, and Python friendly) are well supported from the article examples and my own usage/exploration.
Open Science:
The authors provide the cmake files for the wrapping system and point to other required software - all publically available (ie. CMake, ITK, and CableSwig).
Reproducibility:
I was able to download, configure, and compile WrapITK (with some minor issues - see below).
My system configuration was as follows:
- Operating System=Windows XP SP2
- CMake=CMake 2.4.2
- Compiler=Microsoft.NET 2003 (7.1.3088)
- ITK=InsightToolkit-2.8.1
- CableSwig=CVS checkout on 10th July 2006, 9:30AM (GMT+10:00)
- WrapITK=Nightly archive from http://voxel.jouy.inra.fr/darcs/contrib-itk/WrapITK/WrapITK.tar.gz downloaded on 10th July 2006, 8:45AM (GMT+10:00)
- Python=Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] on win32
I applied the given patches, and I worked through most of the examples and achieved the same/similar results.
Use of Open Source Software:
Uses CMake, ITK, CableSwig, GCC_XML, Python.
Open Source Contributions:
All source code is provided.
Code Quality:
The code is easy to read, and the installation/developer guides are easy to follow.
Applicability to other problems:
WrapITK allows for easy prototyping with ITK. I have been using ITK for various image analysis tasks for ~12months, and have found prototyping to be a somewhat tedious task (ie. create a temp CMake project, create main file, add includes, add all input arguments, compile, run, and repeat). Prototyping with WrapITK is
very easy and can be achieved using either the command line interpreter or custom scripts. While the setup time may be large (it took me ~1 day to download, configure, and compile all components), I envisage that the time/engery/frustration I will save using WrapITK to prototype will far outweigh this initial outlay of time.
Requests for additional information from authors:
The article should be updated to include the itk.echo(.) function and itk.pipeline class from itkExtras/__init__.py.
Minor issues compiling WrapITK:
I encountered some minor issues compiling WrapITK on Windows. I have detailed these in an email sent to insight-users@itk.org on 11th July 2006 (http://public.kitware.com/pipermail/insight-users/2006-July/018621.html).
These issues included:
1. Error accessing __FUNCSIG__ in itkGDCMSeriesFileNames.h.
2. Object file format limit exceeded error (C1128) when selecting extra types to wrap (ie. setting WRAP_unsigned_short=ON).
3. Ambiguous call to overloaded function 'sqrt' in itkSignedMaurerDistanceMapImageFilter.txx
4. Error accessing protected member EnlargeOutputRequestedRegion(.) in itkScalarConnectedComponentImageFilter.cxx.
5. Minor error with Python site-packages installation for Windows.
6. Incorrect string formatting in Python win32.