Proposals:Refactoring Statistics Framework 2007: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
 
(36 intermediate revisions by 3 users not shown)
Line 31: Line 31:
== Tasks ==
== Tasks ==


=== Class Manifesto ===
=== Build a Class Manifesto ===


There are 72 header files in the Statistics directory.
There are 72 header files in the Statistics directory.


They are categorized in the following table
They are categorized in the following page


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


{| border="1"
=== Adapt to Pipeline ===
|- bgcolor="#abcdef"
! Conceptual Class !! Number
|-
| Containers || 2
|-
| Adaptors || 5
|-
| Distributions || 4
|-
| Multivariate Density Functions || 8
|-
| Distance Metrics || 2
|-
| Algorithms || 2
|-
| Calculators || 6
|-
| Generators || 12
|-
| Filters || 10
|-
| Total || 72
|}


=== Iterators Review ===
The collection of objects in the current statistics framework is relatively independent from the data pipeline used in most of the toolkit.


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.
In this task we target to reorganize the existing classes into data objects and process objects following the pipeline architecture.


==== List of Data Containers ====
=== Review Iterators ===


* Sample
[[Proposals:Refactoring Statistics Framework 2007 Iterators | Iterators Review ]]
* Histogram
* ListSampleBase
* ListSample
* MembershipSample
* VariableDimensionHistogram
* DenseFrequencyContainer
* SparseFrequencyContainer
* ImageToCooccurrenceListAdaptor
* ImageToListAdaptor
* JointDomainImageToListAdaptor
* PointSetToListAdaptor
* ScalarImageToListAdaptor
* KdTree


==== List of Iterators ====




==== Class Diagrams ====
=== Miscellaneous Issues ===


<graphviz>
[[Proposals:Refactoring Statistics Framework 2007 Miscellaneous | Miscellaneous Issues ]]
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>


= Brad's Comments =


<graphviz>
 
digraph G {
= Action Items =
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"];
[[Proposals:Refactoring Statistics Framework 2007 Action Items | List of Action Items ]]
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"];
= Prototype Code =
Object -> DenseFrequencyContainer
 
Object -> SparseFrequencyContainer
The prototype code of the refactoring is available in the NAMICSandbox. You can download it by using the following svn command
Object -> KdTree
 
}
  svn checkout http://svn.na-mic.org/NAMICSandBox/trunk/ITKStatisticsPipelineRefactoring ITKStatisticsPipelineRefactoring
</graphviz>
 
The old location (deprecated) of the repository was:
 
  svn checkout http://www.na-mic.org/svn/NAMICSandBox/trunk/ITKStatisticsPipelineRefactoring
 
= The New World =
 
[[Proposals:Refactoring Statistics Framework 2007 New Statistics Framework | New Statistics Framework ]]
 
= Migration Users Guide =
 
[[Proposals:Refactoring Statistics Framework 2007 Migration Users Guide | Migration Users Guide ]]
 
= Classifiers =
*[[Proposals:Refactoring Statistics Framework 2007 Background | Background ]]
*[[Proposals:Refactoring Statistics Framework 2007 List of Classifier Related Classes | List of classifier related classes ]]
*[[Proposals:Refactoring Statistics Framework 2007 New API | New API ]]
 
= Transition Plan =
 
[[Proposals:Refactoring Statistics Framework 2007 Transition Plan | Transition Plan ]]

Latest revision as of 19:06, 3 April 2009

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

The collection of objects in the current statistics framework is relatively independent from the data pipeline used in most of the toolkit.

In this task we target to reorganize the existing classes into data objects and process objects following the pipeline architecture.

Review Iterators

Iterators Review


Miscellaneous Issues

Miscellaneous Issues

Brad's Comments

Action Items

List of Action Items

Prototype Code

The prototype code of the refactoring is available in the NAMICSandbox. You can download it by using the following svn command

 svn checkout http://svn.na-mic.org/NAMICSandBox/trunk/ITKStatisticsPipelineRefactoring ITKStatisticsPipelineRefactoring

The old location (deprecated) of the repository was:

 svn checkout http://www.na-mic.org/svn/NAMICSandBox/trunk/ITKStatisticsPipelineRefactoring

The New World

New Statistics Framework

Migration Users Guide

Migration Users Guide

Classifiers

Transition Plan

Transition Plan