[Insight-developers] ITKv4 Modularization Plan
Xiaoxiao Liu
xiaoxiao.liu at kitware.com
Tue Feb 8 11:08:25 EST 2011
Yup. This file was created by hand and stored in the "modularITKSupport"
repository, which contains all the manually created cmake files for modules.
When you run the modularization scripts, this "modularITKSupport" repo was
downloaded to your modular ITK tree before the monolithic ITK's source
codes are copied over into modules.
Let me know if you have more questions regarding this process, we could
discuss on the phone if you will.
Thanks.
2011/2/8 Gaëtan Lehmann <gaetan.lehmann at jouy.inra.fr>
>
> Le 8 févr. 11 à 15:59, Xiaoxiao Liu a écrit :
>
>
> 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)
>>
>>
> are they created by hande, after once the modularization script has been
> run?
>
>
>
>> 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.
>> Clifton Park, NY
>> Phone: (518) 881-4924 or (518) 371-3971 x124
>>
>>
>>
> --
> 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/1e91248d/attachment.htm>
More information about the Insight-developers
mailing list