Proposals:Refactoring Statistics Framework 2007
ITK: Statistical Framework Refactoring
Summary
Motivation
Recently it has been found that certain characteristics of the Statistical Framework API could be improved in order to provide a more consistent inteface.
In particular, issues have been pointed out regarding the following topics
- Iterators
- Samples versus Subsamples
- Statistical calculator integrated into the pipeline
Tasks
The proposed refactoring will include the following specific tasks
- Review all iterators used in the Statistics framework and add tests for their functionalities until bringing their code coverage to 100%
- Restructure the implementation of the Subsample class, to make sure that
- It can be used in any place where a sample can be used.
- Sub-sampling can be nested without breaking the consistency of the statistical operation.
Schedule
The refactoring tasks will be initiated on March 23rd and will be completed before April 15th 2007
Specific Program
Tasks
Build a Class Manifesto
There are 72 header files in the Statistics directory.
They are categorized in the following table
Conceptual Class | Number |
---|---|
Measurement Containers | 8 |
Frequency Containers | 2 |
Process Objects | 2 |
Traits | 1 |
Mean shift | 3 |
Adaptors | 5 |
Univariate Distributions | 4 |
Algorithms | 3 |
Calculators | 6 |
Generators | 12 |
Filters | 10 |
Multivariate Density Functions | 8 |
Distance Metrics | 2 |
Components | 4 |
Estimators | 2 |
Total | 72 |
Measurement Containers
- KdTree
- Histogram
- VariableDimensionHistogram
- ListSampleBase
- ListSample
- Sample
- Subsample
- MembershipSample
Frequency Containers
- DenseFrequencyContainer
- SparseFrequencyContainer
Process Objects
- SampleClassifier
- SampleClassifierWithMask
Traits
- MeasurementVectorTraits
MeanShift
- ypersphereKernelMeanShiftModeSeeker
- MeanShiftModeCacheMethod
- MeanShiftModeSeekerBase
Adaptors
- ImageToCooccurrenceListAdaptor
- ImageToListAdaptor
- JointDomainImageToListAdaptor
- PointSetToListAdaptor
- ScalarImageToListAdaptor
Univariate Distributions
- ChiSquareDistribution
- GaussianDistribution
- ProbabilityDistribution
- TDistribution
Algorithms
- SampleAlgorithmBase
- StatisticsAlgorithm
- NeighborhoodSampler
Calculators
- CovarianceCalculator
- GreyLevelCooccurrenceMatrixTextureCoefficientsCalculator
- MeanCalculator
- ScalarImageTextureCalculator
- WeightedCovarianceCalculator
- WeightedMeanCalculator
Generators
- ImageToHistogramGenerator
- ImageToListGenerator
- KdTreeGenerator
- ListSampleToHistogramGenerator
- MaskedScalarImageToGreyLevelCooccurrenceMatrixGenerator
- MembershipSampleGenerator
- NormalVariateGenerator
- RandomVariateGeneratorBase
- ScalarImageToGreyLevelCooccurrenceMatrixGenerator
- ScalarImageToHistogramGenerator
- SelectiveSubsampleGenerator
- WeightedCentroidKdTreeGenerator
Filters
* HistogramToEntropyImageFilter
- HistogramToImageFilter
- HistogramToIntensityImageFilter
- HistogramToLogProbabilityImageFilter
- HistogramToProbabilityImageFilter
- ListSampleToHistogramFilter
- SampleMeanShiftBlurringFilter
- SampleMeanShiftClusteringFilter
- SampleSelectiveMeanShiftBlurringFilter
- SampleToHistogramProjectionFilter
Multivariate Density Functions
* DensityFunction
- DistanceToCentroidMembershipFunction
- GaussianDensityFunction
- GoodnessOfFitFunctionBase
- GoodnessOfFitMixtureModelCostFunction
- LogLikelihoodGoodnessOfFitFunction
- MahalanobisDistanceMembershipFunction
- MembershipFunctionBase
Distance Metrics
* DistanceMetric
- EuclideanDistance
Components
- GaussianGoodnessOfFitComponent
- GaussianMixtureModelComponent
- GoodnessOfFitComponentBase
- MixtureModelComponentBase
Estimators
- ExpectationMaximizationMixtureModelEstimator
- KdTreeBasedKmeansEstimator
Iterators Review
The goal of this task is to ensure that the set of iterators is consistent with the set of data containers and that all the iterators are tested to a 100% code coverage.
List of Data Containers
- Sample
- Histogram
- ListSampleBase
- ListSample
- MembershipSample
- VariableDimensionHistogram
- DenseFrequencyContainer
- SparseFrequencyContainer
- ImageToCooccurrenceListAdaptor
- ImageToListAdaptor
- JointDomainImageToListAdaptor
- PointSetToListAdaptor
- ScalarImageToListAdaptor
- KdTree
List of Iterators
Class Diagrams