VTK
dox/Filters/Statistics/vtkPCAStatistics.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003 Program:   Visualization Toolkit
00004 Module:    vtkPCAStatistics.h
00005 
00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007 All rights reserved.
00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010 This software is distributed WITHOUT ANY WARRANTY; without even
00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012 PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*-------------------------------------------------------------------------
00016   Copyright 2010 Sandia Corporation.
00017   Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00018   the U.S. Government retains certain rights in this software.
00019   -------------------------------------------------------------------------*/
00049 #ifndef __vtkPCAStatistics_h
00050 #define __vtkPCAStatistics_h
00051 
00052 #include "vtkFiltersStatisticsModule.h" // For export macro
00053 #include "vtkMultiCorrelativeStatistics.h"
00054 
00055 class vtkDoubleArray;
00056 class vtkIdTypeArray;
00057 
00058 class VTKFILTERSSTATISTICS_EXPORT vtkPCAStatistics : public vtkMultiCorrelativeStatistics
00059 {
00060 public:
00061   vtkTypeMacro(vtkPCAStatistics,vtkMultiCorrelativeStatistics);
00062   virtual void PrintSelf( ostream& os, vtkIndent indent );
00063   static vtkPCAStatistics* New();
00064 
00065   //BTX
00067 
00068   enum NormalizationType
00069     {
00070     NONE,               
00071     TRIANGLE_SPECIFIED, 
00072     DIAGONAL_SPECIFIED, 
00073     DIAGONAL_VARIANCE,  
00074     NUM_NORMALIZATION_SCHEMES 
00075     };
00077 
00079 
00081   enum ProjectionType
00082     {
00083     FULL_BASIS,         
00084     FIXED_BASIS_SIZE,   
00085     FIXED_BASIS_ENERGY, 
00086     NUM_BASIS_SCHEMES   
00087     };
00088   //ETX
00090 
00092 
00110   vtkSetMacro(NormalizationScheme,int);
00111   vtkGetMacro(NormalizationScheme,int);
00112   virtual void SetNormalizationSchemeByName( const char* sname );
00113   virtual const char* GetNormalizationSchemeName( int scheme );
00115 
00117 
00137   virtual vtkTable* GetSpecifiedNormalization();
00138   virtual void SetSpecifiedNormalization( vtkTable* );
00140 
00142 
00148   void GetEigenvalues(int request, vtkDoubleArray*);
00149   void GetEigenvalues(vtkDoubleArray*);
00150   double GetEigenvalue(int request, int i);
00151   double GetEigenvalue(int i);
00153 
00155 
00163   void GetEigenvectors(int request, vtkDoubleArray* eigenvectors);
00164   void GetEigenvectors(vtkDoubleArray* eigenvectors);
00165   void GetEigenvector(int i, vtkDoubleArray* eigenvector);
00166   void GetEigenvector(int request, int i, vtkDoubleArray* eigenvector);
00168 
00170 
00190   vtkSetMacro(BasisScheme,int);
00191   vtkGetMacro(BasisScheme,int);
00192   virtual const char* GetBasisSchemeName( int schemeIndex );
00193   virtual void SetBasisSchemeByName( const char* schemeName );
00195 
00197 
00200   vtkSetMacro(FixedBasisSize,int);
00201   vtkGetMacro(FixedBasisSize,int);
00203 
00205 
00209   vtkSetClampMacro(FixedBasisEnergy,double,0.,1.);
00210   vtkGetMacro(FixedBasisEnergy,double);
00212 
00214 
00217   virtual bool SetParameter( const char* parameter,
00218                              int index,
00219                              vtkVariant value );
00221 
00222 protected:
00223   vtkPCAStatistics();
00224   ~vtkPCAStatistics();
00225 
00229   virtual int FillInputPortInformation( int port, vtkInformation* info );
00230 
00232   virtual void Derive( vtkMultiBlockDataSet* );
00233 
00235 
00236   virtual void Test( vtkTable*,
00237                      vtkMultiBlockDataSet*,
00238                      vtkTable* );
00240 
00242 
00243   virtual void Assess( vtkTable*,
00244                        vtkMultiBlockDataSet*,
00245                        vtkTable* );
00246   //BTX
00248 
00250   virtual vtkDoubleArray* CalculatePValues(vtkIdTypeArray*, vtkDoubleArray*);
00251 
00252   //BTX
00254 
00255   virtual void SelectAssessFunctor( vtkTable* inData,
00256                                     vtkDataObject* inMeta,
00257                                     vtkStringArray* rowNames,
00258                                     AssessFunctor*& dfunc );
00259   //ETX
00261 
00262   int NormalizationScheme;
00263   int BasisScheme;
00264   int FixedBasisSize;
00265   double FixedBasisEnergy;
00266 
00267   //BTX
00268   static const char* BasisSchemeEnumNames[NUM_BASIS_SCHEMES + 1];
00269   static const char* NormalizationSchemeEnumNames[NUM_NORMALIZATION_SCHEMES + 1];
00270   //ETX
00271 
00272 private:
00273   vtkPCAStatistics( const vtkPCAStatistics& ); // Not implemented
00274   void operator = ( const vtkPCAStatistics& );  // Not implemented
00275 };
00276 
00277 #endif // __vtkPCAStatistics_h
00278