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   -------------------------------------------------------------------------*/
00050 #ifndef __vtkPCAStatistics_h
00051 #define __vtkPCAStatistics_h
00052 
00053 #include "vtkMultiCorrelativeStatistics.h"
00054 
00055 class vtkDoubleArray;
00056 
00057 class VTK_INFOVIS_EXPORT vtkPCAStatistics : public vtkMultiCorrelativeStatistics
00058 {
00059 public:
00060   vtkTypeMacro(vtkPCAStatistics,vtkMultiCorrelativeStatistics);
00061   virtual void PrintSelf( ostream& os, vtkIndent indent );
00062   static vtkPCAStatistics* New();
00063 
00064   //BTX
00066 
00067   enum NormalizationType
00068     {
00069     NONE,               
00070     TRIANGLE_SPECIFIED, 
00071     DIAGONAL_SPECIFIED, 
00072     DIAGONAL_VARIANCE,  
00073     NUM_NORMALIZATION_SCHEMES 
00074     };
00076 
00078 
00080   enum ProjectionType
00081     {
00082     FULL_BASIS,         
00083     FIXED_BASIS_SIZE,   
00084     FIXED_BASIS_ENERGY, 
00085     NUM_BASIS_SCHEMES   
00086     };
00087   //ETX
00089 
00091 
00109   vtkSetMacro(NormalizationScheme,int);
00110   vtkGetMacro(NormalizationScheme,int);
00111   virtual void SetNormalizationSchemeByName( const char* sname );
00112   virtual const char* GetNormalizationSchemeName( int scheme );
00114 
00116 
00134   virtual vtkTable* GetSpecifiedNormalization();
00135   virtual void SetSpecifiedNormalization( vtkTable* );
00137 
00139 
00144   void GetEigenvalues(int request, vtkDoubleArray*);
00145   void GetEigenvalues(vtkDoubleArray*);
00146   double GetEigenvalue(int request, int i);
00147   double GetEigenvalue(int i);
00149 
00150 
00152 
00157   void GetEigenvectors(int request, vtkDoubleArray* eigenvectors);
00158   void GetEigenvectors(vtkDoubleArray* eigenvectors);
00159   void GetEigenvector(int i, vtkDoubleArray* eigenvector);
00160   void GetEigenvector(int request, int i, vtkDoubleArray* eigenvector);
00162 
00164 
00184   vtkSetMacro(BasisScheme,int);
00185   vtkGetMacro(BasisScheme,int);
00186   virtual const char* GetBasisSchemeName( int schemeIndex );
00187   virtual void SetBasisSchemeByName( const char* schemeName );
00189 
00191 
00194   vtkSetMacro(FixedBasisSize,int);
00195   vtkGetMacro(FixedBasisSize,int);
00197 
00199 
00203   vtkSetClampMacro(FixedBasisEnergy,double,0.,1.);
00204   vtkGetMacro(FixedBasisEnergy,double);
00206 
00208 
00211   virtual bool SetParameter( const char* parameter,
00212                              int index,
00213                              vtkVariant value );
00215 
00216 protected:
00217   vtkPCAStatistics();
00218   ~vtkPCAStatistics();
00219 
00223   virtual int FillInputPortInformation( int port, vtkInformation* info );
00224 
00226   virtual void Derive( vtkMultiBlockDataSet* inMeta );
00227 
00229 
00230   virtual void Test( vtkTable*,
00231                      vtkMultiBlockDataSet*,
00232                      vtkTable* );
00234 
00236 
00237   virtual void Assess( vtkTable*, 
00238                        vtkMultiBlockDataSet*, 
00239                        vtkTable* );
00241 
00242   //BTX  
00244 
00245   virtual void SelectAssessFunctor( vtkTable* inData, 
00246                                     vtkDataObject* inMeta,
00247                                     vtkStringArray* rowNames,
00248                                     AssessFunctor*& dfunc );
00249   //ETX
00251 
00252   int NormalizationScheme;
00253   int BasisScheme;
00254   int FixedBasisSize;
00255   double FixedBasisEnergy;
00256 
00257   //BTX
00258   static const char* BasisSchemeEnumNames[NUM_BASIS_SCHEMES + 1];
00259   static const char* NormalizationSchemeEnumNames[NUM_NORMALIZATION_SCHEMES + 1];
00260   //ETX
00261 
00262 private:
00263   vtkPCAStatistics( const vtkPCAStatistics& ); // Not implemented
00264   void operator = ( const vtkPCAStatistics& );  // Not implemented
00265 };
00266 
00267 #endif // __vtkPCAStatistics_h
00268