[Insight-developers] ITKv4 Modularization Plan

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


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.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
>
> _______________________________________________
> 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/2089ac72/attachment.pgp>


More information about the Insight-developers mailing list