VTK
|
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