Proposals:Refactoring Statistics Framework 2007: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
Line 34: Line 34:


There are 72 header files in the Statistics directory.
There are 72 header files in the Statistics directory.
They are categorized in the following page


[[Proposals:Refactoring Statistics Framework 2007 Class Manifesto | Class Manifesto ]]
[[Proposals:Refactoring Statistics Framework 2007 Class Manifesto | Class Manifesto ]]


They are categorized in the following table
=== Adapt to Pipeline ===
 
 
{| border="1"
|- bgcolor="#abcdef"
! 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
 
 
==== Class Diagrams ====
 
<graphviz>
digraph G {
Sample [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Sample.html"];
ListSampleBase [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ListSampleBase.html"];
Histogram [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Histogram.html"];
Subsample [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Subsample.html"];
MembershipSample [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1MembershipSample.html"];
ListSample [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ListSample.html"];
VariableDimensionHistogram  [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1VariableDimensionHistogram.html"];
ImageToCooccurrenceListAdaptor [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ImageToCooccurrenceListAdaptor.html"];
ImageToListAdaptor [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ImageToListAdaptor.html"];
JointDomainImageToListAdaptor [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1JointDomainImageToListAdaptor.html"];
PointSetToListAdaptor [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1PointSetToListAdaptor.html"];
ScalarImageToListAdaptor [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ScalarImageToListAdaptor.html"];
Sample -> ListSampleBase;
Sample -> Histogram;
Sample -> Subsample;
Sample -> MembershipSample;
Sample -> VariableDimensionHistogram;
ListSampleBase -> ListSample;
ListSampleBase -> ImageToListAdaptor;
ListSampleBase -> PointSetToListAdaptor;
ImageToListAdaptor -> ScalarImageToListAdaptor;
ImageToListAdaptor -> JointDomainImageToListAdaptor;
ImageToListAdaptor -> ImageToCooccurrenceListAdaptor;
}
</graphviz>
 


<graphviz>
=== Review Iterators ===
digraph G {
DenseFrequencyContainer [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1DenseFrequencyContainer.html"];
SparseFrequencyContainer [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1SparseFrequencyContainer.html"];
KdTree [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1KdTree.html"];
Object [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Object.html"];
Object -> DenseFrequencyContainer
Object -> SparseFrequencyContainer
Object -> KdTree
}
</graphviz>

Revision as of 17:02, 26 March 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 page

Class Manifesto

Adapt to Pipeline

Review Iterators