[Insight-developers] ITKv4 Modularization Plan

Xiaoxiao Liu xiaoxiao.liu at kitware.com
Tue Feb 8 09:59:56 EST 2011


Inside each module, there is a itk-module.cmake file, which lists the module
dependency in one line.
For example, in itk-io-tiff/itk-module.cmake, you will find:
       itk_module(itk-io-tiff DEPENDS itk-tiff itk-io-base)


2011/2/8 Gaëtan Lehmann <gaetan.lehmann at jouy.inra.fr>

>
> I forgot a question: where are the dependencies between modules?
>
> Thanks,
>
> Gaëtan
>
>
> Le 8 févr. 11 à 15:49, Gaëtan Lehmann a écrit :
>
>
>
>> 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.gitto 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
>>
>> _______________________________________________
>> 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
>
>


-- 
---------------------------------------------
*Xiaoxiao Liu*, Ph.D.
R & D Engineer
Kitware Inc <http://www.kitware.com/>.
Clifton Park, NY
Phone: (518) 881-4924  or  (518) 371-3971 x124
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20110208/8331f982/attachment-0001.htm>


More information about the Insight-developers mailing list