VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkStatisticsAlgorithm.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 2011 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 -------------------------------------------------------------------------*/ 00061 #ifndef __vtkStatisticsAlgorithm_h 00062 #define __vtkStatisticsAlgorithm_h 00063 00064 #include "vtkFiltersStatisticsModule.h" // For export macro 00065 #include "vtkTableAlgorithm.h" 00066 00067 class vtkDataObjectCollection; 00068 class vtkMultiBlockDataSet; 00069 class vtkStdString; 00070 class vtkStringArray; 00071 class vtkVariant; 00072 class vtkVariantArray; 00073 class vtkStatisticsAlgorithmPrivate; 00074 00075 class VTKFILTERSSTATISTICS_EXPORT vtkStatisticsAlgorithm : public vtkTableAlgorithm 00076 { 00077 public: 00078 vtkTypeMacro(vtkStatisticsAlgorithm, vtkTableAlgorithm); 00079 void PrintSelf(ostream& os, vtkIndent indent); 00080 00081 //BTX 00083 00084 enum InputPorts 00085 { 00086 INPUT_DATA = 0, 00087 LEARN_PARAMETERS = 1, 00088 INPUT_MODEL = 2 00089 }; 00091 00093 00094 enum OutputIndices 00095 { 00096 OUTPUT_DATA = 0, 00097 OUTPUT_MODEL = 1, 00098 #ifndef VTK_LEGACY_REMOVE 00099 ASSESSMENT = 2, 00100 #endif 00101 OUTPUT_TEST = 2 00102 }; 00103 //ETX 00105 00107 00110 virtual void SetLearnOptionParameterConnection( vtkAlgorithmOutput* params ) 00111 { this->SetInputConnection( vtkStatisticsAlgorithm::LEARN_PARAMETERS, params ); } 00113 00115 00118 virtual void SetLearnOptionParameters( vtkDataObject* params ) 00119 { this->SetInputData( vtkStatisticsAlgorithm::LEARN_PARAMETERS, params ); } 00121 00123 00126 virtual void SetInputModelConnection( vtkAlgorithmOutput* model ) 00127 { this->SetInputConnection( vtkStatisticsAlgorithm::INPUT_MODEL, model ); } 00129 00131 00133 virtual void SetInputModel( vtkDataObject* model ) 00134 { this->SetInputData( vtkStatisticsAlgorithm::INPUT_MODEL, model ); } 00136 00138 00139 vtkSetMacro( LearnOption, bool ); 00140 vtkGetMacro( LearnOption, bool ); 00142 00144 00145 vtkSetMacro( DeriveOption, bool ); 00146 vtkGetMacro( DeriveOption, bool ); 00148 00150 00151 vtkSetMacro( AssessOption, bool ); 00152 vtkGetMacro( AssessOption, bool ); 00154 00156 00157 vtkSetMacro( TestOption, bool ); 00158 vtkGetMacro( TestOption, bool ); 00160 00162 00163 vtkSetMacro( NumberOfPrimaryTables, vtkIdType ); 00164 vtkGetMacro( NumberOfPrimaryTables, vtkIdType ); 00166 00168 00169 virtual void SetAssessNames( vtkStringArray* ); 00170 vtkGetObjectMacro(AssessNames,vtkStringArray); 00172 00173 //BTX 00175 00176 class AssessFunctor { 00177 public: 00178 virtual void operator() ( vtkVariantArray*, 00179 vtkIdType ) = 0; 00180 virtual ~AssessFunctor() { } 00181 }; 00182 //ETX 00184 00196 virtual void SetColumnStatus( const char* namCol, int status ); 00197 00200 virtual void ResetAllColumnStates(); 00201 00205 virtual int RequestSelectedColumns(); 00206 00208 virtual void ResetRequests(); 00209 00215 virtual vtkIdType GetNumberOfRequests(); 00216 00218 virtual vtkIdType GetNumberOfColumnsForRequest( vtkIdType request ); 00219 00221 00230 virtual const char* GetColumnForRequest( vtkIdType r, vtkIdType c ); 00231 //BTX 00232 virtual int GetColumnForRequest( vtkIdType r, vtkIdType c, vtkStdString& columnName ); 00233 //ETX 00235 00241 void AddColumn( const char* namCol ); 00242 00250 void AddColumnPair( const char* namColX, const char* namColY ); 00251 00253 00258 virtual bool SetParameter( const char* parameter, 00259 int index, 00260 vtkVariant value ); 00262 00264 00265 virtual void Aggregate( vtkDataObjectCollection*, 00266 vtkMultiBlockDataSet* ) = 0; 00268 00269 protected: 00270 vtkStatisticsAlgorithm(); 00271 ~vtkStatisticsAlgorithm(); 00272 00273 virtual int FillInputPortInformation( int port, vtkInformation* info ); 00274 virtual int FillOutputPortInformation( int port, vtkInformation* info ); 00275 00276 virtual int RequestData( 00277 vtkInformation*, 00278 vtkInformationVector**, 00279 vtkInformationVector* ); 00280 00282 00284 virtual void Learn( vtkTable*, 00285 vtkTable*, 00286 vtkMultiBlockDataSet* ) = 0; 00288 00290 virtual void Derive( vtkMultiBlockDataSet* ) = 0; 00291 00293 00294 virtual void Assess( vtkTable*, 00295 vtkMultiBlockDataSet*, 00296 vtkTable* ) = 0; 00298 00300 00302 void Assess( vtkTable*, 00303 vtkMultiBlockDataSet*, 00304 vtkTable*, 00305 int ); 00307 00309 00310 virtual void Test( vtkTable*, 00311 vtkMultiBlockDataSet*, 00312 vtkTable* ) = 0; 00314 00315 //BTX 00317 00318 virtual void SelectAssessFunctor( vtkTable* outData, 00319 vtkDataObject* inMeta, 00320 vtkStringArray* rowNames, 00321 AssessFunctor*& dfunc ) = 0; 00322 //ETX 00324 00325 int NumberOfPrimaryTables; 00326 bool LearnOption; 00327 bool DeriveOption; 00328 bool AssessOption; 00329 bool TestOption; 00330 vtkStringArray* AssessNames; 00331 vtkStatisticsAlgorithmPrivate* Internals; 00332 00333 private: 00334 vtkStatisticsAlgorithm(const vtkStatisticsAlgorithm&); // Not implemented 00335 void operator=(const vtkStatisticsAlgorithm&); // Not implemented 00336 }; 00337 00338 #endif