VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/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   -------------------------------------------------------------------------*/
00055 #ifndef vtkPCAStatistics_h
00056 #define vtkPCAStatistics_h
00057 
00058 #include "vtkFiltersStatisticsModule.h" // For export macro
00059 #include "vtkMultiCorrelativeStatistics.h"
00060 
00061 class vtkDoubleArray;
00062 class vtkIdTypeArray;
00063 
00064 class VTKFILTERSSTATISTICS_EXPORT vtkPCAStatistics : public vtkMultiCorrelativeStatistics
00065 {
00066 public:
00067   vtkTypeMacro(vtkPCAStatistics,vtkMultiCorrelativeStatistics);
00068   virtual void PrintSelf( ostream& os, vtkIndent indent );
00069   static vtkPCAStatistics* New();
00070 
00071   //BTX
00073 
00074   enum NormalizationType
00075     {
00076     NONE,               
00077     TRIANGLE_SPECIFIED, 
00078     DIAGONAL_SPECIFIED, 
00079     DIAGONAL_VARIANCE,  
00080     NUM_NORMALIZATION_SCHEMES 
00081     };
00083 
00085 
00087   enum ProjectionType
00088     {
00089     FULL_BASIS,         
00090     FIXED_BASIS_SIZE,   
00091     FIXED_BASIS_ENERGY, 
00092     NUM_BASIS_SCHEMES   
00093     };
00094   //ETX
00096 
00098 
00116   vtkSetMacro(NormalizationScheme,int);
00117   vtkGetMacro(NormalizationScheme,int);
00118   virtual void SetNormalizationSchemeByName( const char* sname );
00119   virtual const char* GetNormalizationSchemeName( int scheme );
00121 
00123 
00143   virtual vtkTable* GetSpecifiedNormalization();
00144   virtual void SetSpecifiedNormalization( vtkTable* );
00146 
00148 
00154   void GetEigenvalues(int request, vtkDoubleArray*);
00155   void GetEigenvalues(vtkDoubleArray*);
00156   double GetEigenvalue(int request, int i);
00157   double GetEigenvalue(int i);
00159 
00161 
00169   void GetEigenvectors(int request, vtkDoubleArray* eigenvectors);
00170   void GetEigenvectors(vtkDoubleArray* eigenvectors);
00171   void GetEigenvector(int i, vtkDoubleArray* eigenvector);
00172   void GetEigenvector(int request, int i, vtkDoubleArray* eigenvector);
00174 
00176 
00196   vtkSetMacro(BasisScheme,int);
00197   vtkGetMacro(BasisScheme,int);
00198   virtual const char* GetBasisSchemeName( int schemeIndex );
00199   virtual void SetBasisSchemeByName( const char* schemeName );
00201 
00203 
00206   vtkSetMacro(FixedBasisSize,int);
00207   vtkGetMacro(FixedBasisSize,int);
00209 
00211 
00215   vtkSetClampMacro(FixedBasisEnergy,double,0.,1.);
00216   vtkGetMacro(FixedBasisEnergy,double);
00218 
00220 
00223   virtual bool SetParameter( const char* parameter,
00224                              int index,
00225                              vtkVariant value );
00227 
00228 protected:
00229   vtkPCAStatistics();
00230   ~vtkPCAStatistics();
00231 
00235   virtual int FillInputPortInformation( int port, vtkInformation* info );
00236 
00238   virtual void Derive( vtkMultiBlockDataSet* );
00239 
00241 
00242   virtual void Test( vtkTable*,
00243                      vtkMultiBlockDataSet*,
00244                      vtkTable* );
00246 
00248 
00249   virtual void Assess( vtkTable*,
00250                        vtkMultiBlockDataSet*,
00251                        vtkTable* );
00252   //BTX
00254 
00256   virtual vtkDoubleArray* CalculatePValues(vtkIdTypeArray*, vtkDoubleArray*);
00257 
00258   //BTX
00260 
00261   virtual void SelectAssessFunctor( vtkTable* inData,
00262                                     vtkDataObject* inMeta,
00263                                     vtkStringArray* rowNames,
00264                                     AssessFunctor*& dfunc );
00265   //ETX
00267 
00268   int NormalizationScheme;
00269   int BasisScheme;
00270   int FixedBasisSize;
00271   double FixedBasisEnergy;
00272 
00273   //BTX
00274   static const char* BasisSchemeEnumNames[NUM_BASIS_SCHEMES + 1];
00275   static const char* NormalizationSchemeEnumNames[NUM_NORMALIZATION_SCHEMES + 1];
00276   //ETX
00277 
00278 private:
00279   vtkPCAStatistics( const vtkPCAStatistics& ); // Not implemented
00280   void operator = ( const vtkPCAStatistics& );  // Not implemented
00281 };
00282 
00283 #endif // vtkPCAStatistics_h
00284