[Insight-developers] ITKv4 Modularization Plan

Gaëtan Lehmann gaetan.lehmann at jouy.inra.fr
Tue Feb 8 09:49:02 EST 2011


Hi Xiaoxiao,

I'm giving a closer look at the modularization. First I've tried to  
compute a quick summary of the number of classes by module:

[glehmann at marvin Modularization]$ egrep '/[a-zA-Z]*\.h' Manifest.txt |  
awk '{print $3}' | sort | uniq -c | sort -n
       1 itk-anti-alias
       1 itk-eigen
       1 itk-io-raw
       1 itk-polynomials
       1 itk-spatial-function
       1 itk-test-kernel
       1 itk-xml
       2 itk-io-biorad
       2 itk-io-bmp
       2 itk-io-gipl
       2 itk-io-jpeg
       2 itk-io-lsm
       2 itk-io-mesh
       2 itk-io-png
       2 itk-io-siemens
       2 itk-io-stimulate
       2 itk-io-tiff
       2 itk-io-vtk
       2 itk-narrow-band
       3 itk-io-analyze
       3 itk-io-deprecated
       3 itk-io-gdcm
       3 itk-io-ge
       3 itk-io-ipl
       3 itk-io-nifti
       3 itk-io-nrrd
       3 itk-io-spatialobjects
       3 itk-signed-distance-function
       3 itk-vtk
       4 itk-bias-correction
       4 itk-io-meta
       4 itk-markov-random-fields-classifiers
       4 itk-voronoi
       5 itk-deformation-field
       5 itk-fem-registration
       5 itk-label-voting
       5 itk-region-growing
       6 itk-classifiers
       6 itk-curvature-flow
       6 itk-edge-detection
       6 itk-finite-difference
       6 itk-image-compare
       6 itk-region-growing-klm
       6 itk-smoothing
       7 itk-bio-cell
       8 itk-fft
       9 itk-connected-components
       9 itk-thresholding
      10 itk-deprecated
      10 itk-pde-deformable-registration
      12 itk-anisotropic-smoothing
      12 itk-distance-map
      13 itk-watersheds
      14 itk-io-base
      15 itk-image-filter-base
      15 itk-path
      16 itk-meta-spatial-objects
      20 itk-image-statistics
      20 itk-mesh
      21 itk-quad-edge-mesh-filtering
      25 itk-image-grid
      25 itk-quad-edge-mesh
      27 itk-blox
      27 itk-image-function
      28 itk-optimizers
      33 itk-transform
      35 itk-registration-common
      38 itk-neural-networks
      41 itk-spatial-objects
      44 itk-fem
      46 itk-level-sets
      61 itk-mathematical-morphology
      61 itk-statistics
      99 itk-intensity-math
     271 itk-common

and the total number of modules:

[glehmann at marvin Modularization]$ egrep '/[a-zA-Z]*\.h' Manifest.txt |  
awk '{print $3}' | sort | uniq -c | sort -n | wc -l
75


And a few comments — sometimes only questions, as I don't know the  
answer ;-)

* no itk-fftw? As for the io modules, I guess this would simplify the  
management of the dependency on FFTW. I'm not sure how we can ensure  
that FFTW will be used if it is available however - is it possible to  
ensure that behavior with the itk factories?

* MedianImageFilter .h and .txx files are not in the same module

* VectorImageToImagePixelAccessor in itk-intensity-math?

* ChangeLabelImageFilter and RelabelImageFilter are not restricted to  
connected components

* ReflectiveImageRegion[Const]Iterator in itk-distance-map?

* AbsoluteValueDifferenceImageFilter in image-compare? I would rather  
put it in itk-intensity-math

* I don't get immediately the meaning of itk-image-grid.  
Unfortunately, I'm not sure to have something better to propose. In  
WrapITK, the closest library is named Resize

* itk-image-statistics contains mostly the filters for the projection.  
Those projections use some statistics to compute the projected value,  
that's right, but many filters are also using some statistics  
internally, like the Otsu threshold for example. In WrapITK, the  
projection filters are in the Resize library.

* the compose filters in itk-intensity-math?

* Gradient, Gaussian, Laplacian filters in itk-intensity-math?  
Clearly, I won't look there to find them!

* ImageToVectorImageFilter, RGBToLuminanceImageFilter and the Join  
filters are grouped with the Compose filter in WrapITK

* itk-intensity-math is quite big. It may be splitted in unary and  
binary and more filters.

* there is a lot of itk-io-*. It may be better to create a module only  
if there is a dependency on another project, like gdcm or tiff?

* itk-common is probably a bit too big for wrapping. If possible, it  
would be nice to split it a bit.
Here are the classes which are not in the Base library in WrapITK, but  
are in itk-common — note the a library in wrapitk is a module in the  
modularization work.

BSplineInterpolationWeightFunction
CellInterface
DataObjectDecorator
DefaultDynamicMeshTraits
DefaultStaticMeshTraits
ExtractImageFilter
ImageConstIterator
ImageConstIteratorWithIndex
ImageDuplicator
ImageIterator
ImageIteratorWithIndex
ImageLinearConstIteratorWithIndex
ImageLinearIteratorWithIndex
ImageRandomConstIteratorWithIndex
ImageRandomIteratorWithIndex
ImageRandomNonRepeatingConstIteratorWithIndex
ImageRandomNonRepeatingIteratorWithIndex
ImageRegionConstIterator
ImageRegionConstIteratorWithIndex
ImageRegionIterator
ImageRegionIteratorWithIndex
ImageRegionSplitter
ImportImageFilter
LineCell
MinimumMaximumImageCalculator
PointSet
SimpleDataObjectDecorator
SparseFieldLayer
SparseImage
SpatialFunction
StreamingImageFilter
TreeNode
TriangleCell
TriangleHelper
VertexCell


In WrapITK I think we haven't kept anything related to mesh —  
CellInterface, LineCell, TriangleCell, VertexCell,  
DefaultDynamicMeshTraits, DefaultStaticMeshTraits, TriangleHelper and  
PointSet are in the Mesh library.
All the iterators are in a separate library in WrapITK.
The Sparse* classes are in the LevelSet library.
Some are not in Base in WrapITK because they are not widely used, but  
I think they should be in itk-common, like SimpleDataObjectDecorator,  
so that's ok :-)

Gaëtan



Le 7 févr. 11 à 21:51, Xiaoxiao Liu a écrit :

> Dear All,
>
>
>
> During the ITKv4 Boston meeting, we presented the modularization  
> progress and planned to push the modularized ITK into the main ITK  
> git repository on Feb, 28th.   To make this transition easier for  
> all of us, please let us know if you have any suggested improvements  
> as soon as possible. We would like to get more feedback especially  
> on the granularity of the segmentation of the modules and the naming  
> of the modules, since it will be harder to move things around once  
> everyone starts to contribute to the modularized ITK.
>
>
> So far we have created 90 modules out of the monolithic ITK (not  
> including Examples and Reviews). Among the 90 modules, there are 14  
> utility modules (such as  itk-tiff and itk-xml) ,  and  21 I/O  
> modules (such as itk-io-tiff).  The   Manifest (located ITK/ 
> Modularization/Manifest.txt)  lists 2352 source code files and  
> their  locations in the modularized ITK.  Here is a spreadsheet  
> version of the Manifest for your convinence to explore:  
> Manifest.xlsx.  You can also get a copy of a modularized ITK  
> (produced at Feb. 2nd) from  http://itk.org/gitweb?p=tmp/modularITK.git 
>  to investigate.
>
>
> The current modularization process involves manually editing the  
> Manifest file, adding tests for each module and running dashboards  
> for modularized ITK every day.  This process is done for the  
> majority of ITK now and will be done for the entire toolkit by Feb  
> 28th. Moreover, this process will continue to be carried out for any  
> new contributions into ITKv4. Therefore, it will be extremely  
> helpful for developers to get familiar with the new lay-out of the  
> toolkit and get ready for the changes.
>
>
> We are working on detailed documentations to help both developers  
> and users to adapt to the modularized version of ITK. More details  
> about the modularization can be found at this wiki page: http://www.itk.org/Wiki/ITK_Release_4/Modularization 
> .
>
>
> Thank you for your attention!
>
>
>
>
> - Best,
>
>   Modularization Team  (Luis, Bill, Brad, Xiaoxiao)
>
>
>
>
>
>
> ---------------------------------------------
> Xiaoxiao Liu, Ph.D.
> R & D Engineer
> Kitware Inc.
> Clifton Park, NY
> Phone: (518) 881-4924  or  (518) 371-3971 x124
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers

-- 
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr  http://www.itk.org
http://www.mandriva.org  http://www.bepo.fr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 203 bytes
Desc: Ceci est une signature ?lectronique PGP
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20110208/b4077eb4/attachment.pgp>


More information about the Insight-developers mailing list