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 -------------------------------------------------------------------------*/ 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