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 -------------------------------------------------------------------------*/ 00049 #ifndef __vtkPCAStatistics_h 00050 #define __vtkPCAStatistics_h 00051 00052 #include "vtkFiltersStatisticsModule.h" // For export macro 00053 #include "vtkMultiCorrelativeStatistics.h" 00054 00055 class vtkDoubleArray; 00056 class vtkIdTypeArray; 00057 00058 class VTKFILTERSSTATISTICS_EXPORT vtkPCAStatistics : public vtkMultiCorrelativeStatistics 00059 { 00060 public: 00061 vtkTypeMacro(vtkPCAStatistics,vtkMultiCorrelativeStatistics); 00062 virtual void PrintSelf( ostream& os, vtkIndent indent ); 00063 static vtkPCAStatistics* New(); 00064 00065 //BTX 00067 00068 enum NormalizationType 00069 { 00070 NONE, 00071 TRIANGLE_SPECIFIED, 00072 DIAGONAL_SPECIFIED, 00073 DIAGONAL_VARIANCE, 00074 NUM_NORMALIZATION_SCHEMES 00075 }; 00077 00079 00081 enum ProjectionType 00082 { 00083 FULL_BASIS, 00084 FIXED_BASIS_SIZE, 00085 FIXED_BASIS_ENERGY, 00086 NUM_BASIS_SCHEMES 00087 }; 00088 //ETX 00090 00092 00110 vtkSetMacro(NormalizationScheme,int); 00111 vtkGetMacro(NormalizationScheme,int); 00112 virtual void SetNormalizationSchemeByName( const char* sname ); 00113 virtual const char* GetNormalizationSchemeName( int scheme ); 00115 00117 00137 virtual vtkTable* GetSpecifiedNormalization(); 00138 virtual void SetSpecifiedNormalization( vtkTable* ); 00140 00142 00148 void GetEigenvalues(int request, vtkDoubleArray*); 00149 void GetEigenvalues(vtkDoubleArray*); 00150 double GetEigenvalue(int request, int i); 00151 double GetEigenvalue(int i); 00153 00155 00163 void GetEigenvectors(int request, vtkDoubleArray* eigenvectors); 00164 void GetEigenvectors(vtkDoubleArray* eigenvectors); 00165 void GetEigenvector(int i, vtkDoubleArray* eigenvector); 00166 void GetEigenvector(int request, int i, vtkDoubleArray* eigenvector); 00168 00170 00190 vtkSetMacro(BasisScheme,int); 00191 vtkGetMacro(BasisScheme,int); 00192 virtual const char* GetBasisSchemeName( int schemeIndex ); 00193 virtual void SetBasisSchemeByName( const char* schemeName ); 00195 00197 00200 vtkSetMacro(FixedBasisSize,int); 00201 vtkGetMacro(FixedBasisSize,int); 00203 00205 00209 vtkSetClampMacro(FixedBasisEnergy,double,0.,1.); 00210 vtkGetMacro(FixedBasisEnergy,double); 00212 00214 00217 virtual bool SetParameter( const char* parameter, 00218 int index, 00219 vtkVariant value ); 00221 00222 protected: 00223 vtkPCAStatistics(); 00224 ~vtkPCAStatistics(); 00225 00229 virtual int FillInputPortInformation( int port, vtkInformation* info ); 00230 00232 virtual void Derive( vtkMultiBlockDataSet* ); 00233 00235 00236 virtual void Test( vtkTable*, 00237 vtkMultiBlockDataSet*, 00238 vtkTable* ); 00240 00242 00243 virtual void Assess( vtkTable*, 00244 vtkMultiBlockDataSet*, 00245 vtkTable* ); 00246 //BTX 00248 00250 virtual vtkDoubleArray* CalculatePValues(vtkIdTypeArray*, vtkDoubleArray*); 00251 00252 //BTX 00254 00255 virtual void SelectAssessFunctor( vtkTable* inData, 00256 vtkDataObject* inMeta, 00257 vtkStringArray* rowNames, 00258 AssessFunctor*& dfunc ); 00259 //ETX 00261 00262 int NormalizationScheme; 00263 int BasisScheme; 00264 int FixedBasisSize; 00265 double FixedBasisEnergy; 00266 00267 //BTX 00268 static const char* BasisSchemeEnumNames[NUM_BASIS_SCHEMES + 1]; 00269 static const char* NormalizationSchemeEnumNames[NUM_NORMALIZATION_SCHEMES + 1]; 00270 //ETX 00271 00272 private: 00273 vtkPCAStatistics( const vtkPCAStatistics& ); // Not implemented 00274 void operator = ( const vtkPCAStatistics& ); // Not implemented 00275 }; 00276 00277 #endif // __vtkPCAStatistics_h 00278