Slicer3:Transition Testing

From Slicer Wiki
Jump to: navigation, search
Home < Slicer3:Transition Testing

This page will describe the current status of testing classes of slicer2.


Modules to test

The Piority one modules are:

  • Base
  • vtkTensorUtil (mathieu)
  • vtkDTMRI (mathieu)
  • vtkEMAtlasBrainClassifier (Katie)
  • vtkEMLocalSegment (Katie)
  • vtkFreeSurferReaders (Nicole)

Within each of those modules, each class has a priority rank from 0 (non important) to 5 (very important)

And then the status specify if the task is not done (default), partial, or completed

Base

Nicole will look at the base classes to determine which ones need tests.

Potential candidates classes

Test Name Priority Status Description Dependencies
1 If kept, need rewrite because of the use of static var (cleanup not done properly) See vtkPolyBoolean vtkBoolTess
0 This is a simple macro, could be merged in one place vtkCellTriMacro
1 A vtk version would be good - does it exist (endoscopy package)?
Comment:Use of vtkShortArray explicitely, use of vtkStructuredPoints, Write function instead of pipeline to writer...

vtkPolyDataToImageStencil/vtkImageStencil

vtkDataSetToLabelMap
3 Minor diff with current VTK implementation (uses vtkOBBTree internally)
Change will not be merged in VTK since result is slower and produce error
Generic Warning: In /home/mathieu/Dashboards/MyTests/ParaView/VTK/Common/vtkMath.cxx, line 717
vtkMath::Jacobi: Error extracting eigenfunctions
Hardware picking (backbuffer) would be better vtkFastCellPicker
1 not compatible with VTK 5 ?? - can be removed VTK 5.x has shaders, nicer to use in this context vtkFog
1 not used? - can be removed ITK has FastMarching with input a list of points (level set) vtkImageBandedDistanceMap
5 Would be good to keep or find ITK way
Well written, clear
Separate population (~Otsu), stays in slicer vtkImageBimodalAnalysis
5 Needed for Editor
Well written, clear (only short type supported)
Stays in Slicer vtkImageConnectivity
3 Could be replaced by vtk clases
very slicer specific, should be rewritten with vtkImageData::DeepCopy
Stays in Slicer vtkImageCopy
3 Handy to keep Compare to vtkImageCursor3D ?? vtkImageCrossHair2D
3 Great if this were in vtk
Need doc, remove FileName stuff, minor cleanup .. good to go !
Move to EMSegment (too specific) vtkImageCurveRegion
1 ? Move to EM vtkImageDrawObjects
1 Used for editor
looks like vtkPolyDataToImageStencil+vtkImageStencil...
Stays in Slicer vtkImageDrawROI
1 Important for slicer2 editor
compare to vtkImageContinuousErode3D
ITK has a fast erosion (ErodeMorphometric, single object) vtkImageErode
1 Important for slicer2 editor Nice to merge with vtkImageDrawROI vtkImageFillROI
0 Is there a vtk class for this?
vtkWindowToImageFilter or vtkRenderLargeImage
vtkWindowToImage vtkImageFrameSource
1 Move to EM vtkImageGraph
1 Used in Editor vtkImageMathematics can do that (SetOperationToReplaceCByK) vtkImageLabelChange
Needed for slice display vtkImageLabelOutline
Editor vtkImageLabelVOI
0 Is there a vtk replacement? might not be needed if switching to ITK vtkImageNeighborhoodFilter
0 Replace with something from KWWidgets?
why not vtkXYPlotActor?
Use instead: vtkKWHistogram vtkImagePlot
0 Move to MRML vtkImageRealtimeScan
1 Needed for editor ITK has a notion of itkPaste... vtkImageReplaceRegion
0 Could be dropped (maybe speedups can go to vtk?)
Well written, a few bugs in comments can be use to extent vtkLoookupTable...
vtkIndirectLookupTable
1 Can easily be added into vtkMath done Outer product, rest should be vnl (be carefull with numerical recipe...) vtkMathUtils
0 Better to use std formate if possible vtkPolyDataWriter (to write set of points) vtkPTSWriter
1 Would be great functionality to move to vtk
compare it to vtkImageMathematics/vtkImageLogic? ITK?
vtkPolyBoolean
0 no need vtkSlicer
0 no need vtkSlicerBaseWin32Header
3 Used for measure - does vtk have something like this?
Looks like a patch vtkMassPropertiesdone (04/28/06)
Should enhance vtkMassProperties vtkSurfaceProps
0 for the Twin module?? vtkXDisplayWindow

Class being dropped

Test Name Priority Status Description Dependencies
1 I don't think this is needed anymore - right vtkEuclideanPlaneFit ? vtkDistractorSource
0 I dont think this is needed anymore
Looks like vtkImageEuclideanDistance
old Oliver Cuisenaire class vtkImageEuclideanDistanceTransformation
0 Better to use a vtkPolyData vtkPolyData vtkPolygonList
0 should be vtkPolyData vtkPolyData vtkStackOfPolygons

Class that might have a vtk replacement already

...with vtkImageReslice
Test Name Priority Status Description Dependencies
could be ImageReslice vtkImageCloseUp2D
Could be a vtkImageReslice vtkImageDouble2D
Replace with vtkImageReslice vtkImageReformat
Replace with vtkImageReslice vtkImageReformatIJK
Should switch to vtkImageReslice vtkImageResize
vtkImageReslice vtkImageZoom2D
Why not use vtkImageReslice vtkResliceImage

...with vtkImageAccumulate
Test Name Priority Status Description Dependencies
Useful
What is the diff with vtkImageAccumulate?
Simply pipe to a vtkImageCast vtkImageAccumulateDiscrete
Could be done with an accumulate vtkImageMeasureVoxels
3 Can move to vtkImageAccumulate. Done(04/27) Need the NonZero option so can switch to vtkImageAccumulate or better switch to itk::Histogram vtkImageStatistics

Test Name Priority Status Description Dependencies
Why not reuse vtkDICOMImageReader? vtkDCMLister
Why not reuse vtkDICOMImageReader? vtkDCMParser
Why not reuse vtkDICOMImageReader? vtkImageDICOMReader

...with vtkImageBlend
Test Name Priority Status Description Dependencies
0 Will probably transition to vtkImageBlend vtkImageBlend vtkImageOverlay
1 Done, VTK CVS has a completely rewritten from scratch vtkImageWeightedSum Maybe could be vtkImageBlend? Need a patched vtkImageMathmatics (sa vtkImplicitSum) vtkImageWeightedSum

Class specific for Slicer (Editor)

Test Name Priority Status Description Dependencies
Important for slicer2 editor vtkImageEditor
Important for slicer2 editor vtkImageEditorEffects

Class that will be moved to Module

Test Name Priority Status Description Dependencies
Livewire -> Move to Module vtkImageLiveWire
Livewire -> Move to Module vtkImageLiveWireEdgeWeits
Livewire -> Move to Module vtkImageLiveWireScale
Livewire -> Move to Module vtkImageLiveWireTester
Move to a PhaseWire module vtkImageDijkstra

MRML

Testing should be done by Alex.


vtkMrmlColorNode
vtkMrmlCrossSectionNode
vtkMrmlData
vtkMrmlDataTetraMe
vtkMrmlDataVolume
vtkMrmlDataVolumeReadWrite
vtkMrmlDataVolumeReadWriteStructuredPoints
vtkMrmlEndFiducialsNode
vtkMrmlEndHieraryNode
vtkMrmlEndModelGroupNode
vtkMrmlEndPaNode
vtkMrmlEndScenesNode
vtkMrmlEndTransformNode
vtkMrmlEndVolumeStateNode
vtkMrmlFiducialsNode
vtkMrmlHieraryNode
vtkMrmlLandmarkNode
vtkMrmlLocatorNode
vtkMrmlMatrixNode
vtkMrmlModelGroupNode
vtkMrmlModelNode
vtkMrmlModelRefNode
vtkMrmlModelStateNode
vtkMrmlNode
vtkMrmlOptionsNode
vtkMrmlPaNode
vtkMrmlPointNode
vtkMrmlSceneOptionsNode
vtkMrmlScenesNode
vtkMrmlSlicer
vtkMrmlTetraMeNode
vtkMrmlTransformNode
vtkMrmlTree
vtkMrmlVolumeNode
vtkMrmlVolumeReadWriteNode
vtkMrmlVolumeReadWriteStructuredPointsNode
vtkMrmlVolumeStateNode
vtkMrmlWindowLevelNode

vtkTensorUtil

Class Name Priority Status Description Dependencies
vtkBSplineInterpolateImageFunction 2 Partial (VTKTENSORUTIL.TestBSplineInterpolateImageFunction) Interpolation of a image with a BSpline kernel. The class compute the interpolated value for a given specific location, then the image can be treated as an ImplicitFunction Use in the PreciceStreamline process. This class is used by vtkPreciseHyperStreamline after being encapsulated in vtkTensorImplicitFunctionToFunctionSet
vtkImageGetTensorComponents 4 This class get each tensor component as a different vtkImageData This class is used in the registration framework of the DTMRI module based on the framework provided by vtkAG module. One of the registration modalities is to register each tensor component as a input channel in the vtkAG multichannel tensor framework
vtkPreciseHyperPoint 2 This class is a helper class for the streamline method implemented by vtkPreciseHyperStreamline vtkPreciseHyperStreamline
vtkSuperquadricTensorGlyph 5 Main class to perform glyph rendering Directly invoke from the tcl script to set up the glyph rendering pipeline (DTMRIGlyphs.tcl)
vtkTensorMathematics 5 Main class to perform serveral scalar calculation from a tensor field Directly invoke in DTMRICalculateScalars.tcl
vtkHyperPointandArray 4 Helper class to keep the state info of the streamline/tractography algorithm Used by vtkHyperStreamlineDTMRI
vtkImageSetTensorComponents 4 Pack different image channels into a Tensor field. Used in the registration framework.
vtkPreciseHyperStreamline 2 Streamer class to do tractography using the Higher Order Runge Kutta This class relies on the BSpline Interpolation classes to have a precise interpolation of the tensor field, needed by the high order Runge Kutta
vtkTensorFlip 1 Helper class to flip a tensor field I do not think is currently use in any pipeline process. However it is an interesting class to have just as a pure extension of vtkImageFlip
vtkVectorToOuterProductDualBasis 1 Class to compute the Dual basis of the outer product of a set of vectors This helper class was originally used for the estimation of diffusion tensor using Dual basis. The Estimation class was update to rely on a simple SVD for the computation of the B-matrix. This class is going to suffer further changes in an attempt to use teem as a main tensor estimation engine.
vtkHyperStreamlineDTMRI 5 Main class to do DTI tractography in the Slicer. Overload part of the functionality of vtkHyperStreamline Used by vtkSeedTracts.cxx in the DTMRI module.
vtkInteractiveTensorGlyph 5 Main class to do DTI glyph rendering in the Slicer (what is the diff with vtkSuperquadricTensorGlyph) Direclty invoked in DTMRIGlyphs.tcl
vtkPreciseHyperStreamlinePoints 3 Helper class to keep the state info of PreciseHyperStreamline class Used by vtkSeedTracts.cxx
vtkTensorImplicitFunctionToFunctionSet 3 Class to evaluate a tensor field at a given location Used by vtkPreciseHyperStreamline when doing the integration
vtkHyperStreamlineTeem 2 Tractography class encapsulating teem tractography framework Use by vtkSeedTracts. This class is still in alpha state.
vtkPreciseHyperArray 3 Helper class to keep PreciseHyperStreamline state Used by vtkPreciseHyperStreamlinePoints
vtkSuperquadricSource2 5 Modification of the Superquadric class to implement the superquadric glyphs as published by Gordon (the two class should be merged) Used by vtkSuperquadricTensorGlyph
vtkTensorMask 5 Mask a tensor field Used in the visualization pipeline in the DTMRI module

vtkDTMRI

Class Name Priority Status Description Dependencies
vtkClusterTracts 5 Controller-type object to do Spectral clustering. This class take a Collecition of streamline and perform clustering upon user requests (The class is not a process object) although it could be designed in that sense. The design idea was to encapsulate clustering pipeline with that relies on itk::SpectralClustering (NAMIC sandbox) Depends on itkSpectralClustering and vtkTractShapeFeatures
vtkColorROIFromPolyLines 3
vtkColorROIFromTracts 3
vtkDisplayTracts 5 Controller-type object that implement the visualization pipeline for the tracts/streamlines. This class is used/managed by vtkMultipleStreamlineController
vtkEstimateDiffusionTensor 2 New interface to perform tensor fitting. This class is intented to rely on teem for doing tensor model fitting. This class will replace vtkImageDiffusionTensor currently not used
vtkImageDiffusionTensor 5 Tensor fitting class. This class currently perform the job of tensor estimation Used in DTMRICalculateTensor.tcl
vtkImageExtractSlices 5 Class used to split a Volume with multiple DWI acquistions in different volumes. As of Today slicer stores DWI as a stacked of 3D volumes. As part of NRRD support this process is going to evolve such as DWI are seen as a multicomponent 3D volume (a more natural way of looking at DWI images Used in DTMRICalculateTensor.tcl
vtkLSDIreconTensor 0 Depreceated class
vtkMrmlTractGroupNode
vtkMrmlTractsNode
vtkMultipleStreamlineController 5 Manager class for tractography. This class has pointers to the classes in charge of seeding, visualizing and storing streamlines. Used as main hub for tractography
vtkODFGlyph 0 Class for Q-ball glyph rendering This class required a custom Q-ball images type developed by D. Tuch.
vtkPruneStreamline
vtkROISelectTracts
vtkSaveTracts
vtkSeedTracts
vtkStochasticTracking 1 Class under development
vtkStreamlineConvolve
vtkTractShapeFeatures 5 Compute different similarity metrics between fibers used for the clustering Used by vtkClusterTracts

vtkEMAtlasBrainClassifier

Katie will transition older tests into Dart framework.

Test Name Priority Status Description Dependencies
TestImageEMAtlas.tcl 3 TBD big test vtkEMLocalSegment

vtkEMLocalSegment

Katie will first transition older tests into Dart framework.

Test Name Priority Status Description Dependencies
TestImageEMLocalSegment.tcl 1 Done local test none
TestImageEMMarkov.tcl 2 In progress markov test none

vtkFreeSurferReaders

Small test surface files written in ascii using the Surface File Formats and then converted to binary using mris_convert.

Class Name Priority Status Description Dependencies Test Code
vtkBVolumeReader 4 TBD Test reading and rendering of binary short and float volumes none
vtkCORReader 3 TBD Test reading and rendering of COR volumes none
vtkFSIO 5 Not necessary Reads ints, shorts, and floats from compressed or uncompressed files none
vtkFSLookupTable 2 Done Test reading in surface file with overlay and rendering with colours vtkFSSurfaceReader, vtkFSSurfaceScalarReader Tcl/testFSLUT.tcl
vtkFSSurfaceAnnotationReader 2 TBD Test reading in surface with labels vtkFSSurfaceReader
vtkFSSurfaceReader 2 Done Test reading in a simple surface file none Tcl/testOrig.tcl
vtkFSSurfaceScalarReader 2 Done Test reading in surface with scalar vtkFSSurfaceReader Tcl/testCurv.tcl
vtkFSSurfaceWFileReader 3 Done Test reading in W surface vtkFSSurfaceReader Tcl/testW.tcl
vtkGDFReader 4 TBD Read in FreeSurfer group descriptor files vtkBVolumeReader
vtkMGHReader 1 Done Test MGZ file reading and rendering none Tcl/testMGZBrain.tcl
vtkMGHReader 2 in progress Test reading in aseg and rendering with colours none Tcl/testMGZAseg.tcl

Nicole transitioning older tests into Dart framework.

Test Name Priority Status Description Dependencies
annotation.tcl 3 TBD test annotation overlay surface and scalar reader
bvolume.tcl 1 TBD test B volume reading none
bvolume_slice.tcl 2 TBD test B volume rendering none
scalar.tcl 3 TBD test scalar reading none
scalars.tcl 3 TBD test scalars none
slice.tcl 4 TBD test slices none
surf-quad.tcl 3 TBD test none
surf-tri.tcl 3 TBD test none