VTK
dox/Infovis/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   -------------------------------------------------------------------------*/
00052 #ifndef __vtkPCAStatistics_h
00053 #define __vtkPCAStatistics_h
00054 
00055 #include "vtkMultiCorrelativeStatistics.h"
00056 
00057 class vtkDoubleArray;
00058 
00059 class VTK_INFOVIS_EXPORT vtkPCAStatistics : public vtkMultiCorrelativeStatistics
00060 {
00061 public:
00062   vtkTypeMacro(vtkPCAStatistics,vtkMultiCorrelativeStatistics);
00063   virtual void PrintSelf( ostream& os, vtkIndent indent );
00064   static vtkPCAStatistics* New();
00065 
00066   //BTX
00068 
00069   enum NormalizationType
00070     {
00071     NONE,               
00072     TRIANGLE_SPECIFIED, 
00073     DIAGONAL_SPECIFIED, 
00074     DIAGONAL_VARIANCE,  
00075     NUM_NORMALIZATION_SCHEMES 
00076     };
00078 
00080 
00082   enum ProjectionType
00083     {
00084     FULL_BASIS,         
00085     FIXED_BASIS_SIZE,   
00086     FIXED_BASIS_ENERGY, 
00087     NUM_BASIS_SCHEMES   
00088     };
00089   //ETX
00091 
00093 
00111   vtkSetMacro(NormalizationScheme,int);
00112   vtkGetMacro(NormalizationScheme,int);
00113   virtual void SetNormalizationSchemeByName( const char* sname );
00114   virtual const char* GetNormalizationSchemeName( int scheme );
00116 
00118 
00136   virtual vtkTable* GetSpecifiedNormalization();
00137   virtual void SetSpecifiedNormalization( vtkTable* );
00139 
00141 
00147   void GetEigenvalues(int request, vtkDoubleArray*);
00148   void GetEigenvalues(vtkDoubleArray*);
00149   double GetEigenvalue(int request, int i);
00150   double GetEigenvalue(int i);
00152 
00154 
00162   void GetEigenvectors(int request, vtkDoubleArray* eigenvectors);
00163   void GetEigenvectors(vtkDoubleArray* eigenvectors);
00164   void GetEigenvector(int i, vtkDoubleArray* eigenvector);
00165   void GetEigenvector(int request, int i, vtkDoubleArray* eigenvector);
00167 
00169 
00189   vtkSetMacro(BasisScheme,int);
00190   vtkGetMacro(BasisScheme,int);
00191   virtual const char* GetBasisSchemeName( int schemeIndex );
00192   virtual void SetBasisSchemeByName( const char* schemeName );
00194 
00196 
00199   vtkSetMacro(FixedBasisSize,int);
00200   vtkGetMacro(FixedBasisSize,int);
00202 
00204 
00208   vtkSetClampMacro(FixedBasisEnergy,double,0.,1.);
00209   vtkGetMacro(FixedBasisEnergy,double);
00211 
00213 
00216   virtual bool SetParameter( const char* parameter,
00217                              int index,
00218                              vtkVariant value );
00220 
00221 protected:
00222   vtkPCAStatistics();
00223   ~vtkPCAStatistics();
00224 
00228   virtual int FillInputPortInformation( int port, vtkInformation* info );
00229 
00231   virtual void Derive( vtkMultiBlockDataSet* );
00232 
00234 
00235   virtual void Test( vtkTable*,
00236                      vtkMultiBlockDataSet*,
00237                      vtkTable* );
00239 
00241 
00242   virtual void Assess( vtkTable*, 
00243                        vtkMultiBlockDataSet*, 
00244                        vtkTable* );
00246 
00247   //BTX  
00249 
00250   virtual void SelectAssessFunctor( vtkTable* inData, 
00251                                     vtkDataObject* inMeta,
00252                                     vtkStringArray* rowNames,
00253                                     AssessFunctor*& dfunc );
00254   //ETX
00256 
00257   int NormalizationScheme;
00258   int BasisScheme;
00259   int FixedBasisSize;
00260   double FixedBasisEnergy;
00261 
00262   //BTX
00263   static const char* BasisSchemeEnumNames[NUM_BASIS_SCHEMES + 1];
00264   static const char* NormalizationSchemeEnumNames[NUM_NORMALIZATION_SCHEMES + 1];
00265   //ETX
00266 
00267 private:
00268   vtkPCAStatistics( const vtkPCAStatistics& ); // Not implemented
00269   void operator = ( const vtkPCAStatistics& );  // Not implemented
00270 };
00271 
00272 #endif // __vtkPCAStatistics_h
00273