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 -------------------------------------------------------------------------*/ 00058 #ifndef __vtkStatisticsAlgorithm_h 00059 #define __vtkStatisticsAlgorithm_h 00060 00061 #include "vtkTableAlgorithm.h" 00062 00063 class vtkDataObjectCollection; 00064 class vtkMultiBlockDataSet; 00065 class vtkStdString; 00066 class vtkStringArray; 00067 class vtkVariant; 00068 class vtkVariantArray; 00069 class vtkStatisticsAlgorithmPrivate; 00070 00071 class VTK_INFOVIS_EXPORT vtkStatisticsAlgorithm : public vtkTableAlgorithm 00072 { 00073 public: 00074 vtkTypeMacro(vtkStatisticsAlgorithm, vtkTableAlgorithm); 00075 void PrintSelf(ostream& os, vtkIndent indent); 00076 00077 //BTX 00079 00080 enum InputPorts 00081 { 00082 INPUT_DATA = 0, 00083 LEARN_PARAMETERS = 1, 00084 INPUT_MODEL = 2 00085 }; 00087 00089 00090 enum OutputIndices 00091 { 00092 OUTPUT_DATA = 0, 00093 OUTPUT_MODEL = 1, 00094 ASSESSMENT = 2, 00095 OUTPUT_TEST = 2 00096 }; 00097 //ETX 00099 00101 00104 virtual void SetLearnOptionParameterConnection( vtkAlgorithmOutput* params ) 00105 { this->SetInputConnection( vtkStatisticsAlgorithm::LEARN_PARAMETERS, params ); } 00107 00109 00112 virtual void SetLearnOptionParameters( vtkDataObject* params ) 00113 { this->SetInput( vtkStatisticsAlgorithm::LEARN_PARAMETERS, params ); } 00115 00117 00120 virtual void SetInputModelConnection( vtkAlgorithmOutput* model ) 00121 { this->SetInputConnection( vtkStatisticsAlgorithm::INPUT_MODEL, model ); } 00123 00125 00127 virtual void SetInputModel( vtkDataObject* model ) 00128 { this->SetInput( vtkStatisticsAlgorithm::INPUT_MODEL, model ); } 00130 00132 00133 vtkSetMacro( LearnOption, bool ); 00134 vtkGetMacro( LearnOption, bool ); 00136 00138 00139 vtkSetMacro( DeriveOption, bool ); 00140 vtkGetMacro( DeriveOption, bool ); 00142 00144 00145 vtkSetMacro( AssessOption, bool ); 00146 vtkGetMacro( AssessOption, bool ); 00148 00150 00151 vtkSetMacro( TestOption, bool ); 00152 vtkGetMacro( TestOption, bool ); 00154 00156 00157 vtkSetMacro( NumberOfPrimaryTables, vtkIdType ); 00158 vtkGetMacro( NumberOfPrimaryTables, vtkIdType ); 00160 00162 00163 virtual void SetAssessNames( vtkStringArray* ); 00164 vtkGetObjectMacro(AssessNames,vtkStringArray); 00166 00167 //BTX 00169 00170 class AssessFunctor { 00171 public: 00172 virtual void operator() ( vtkVariantArray*, 00173 vtkIdType ) = 0; 00174 virtual ~AssessFunctor() { } 00175 }; 00176 //ETX 00178 00190 virtual void SetColumnStatus( const char* namCol, int status ); 00191 00194 virtual void ResetAllColumnStates(); 00195 00199 virtual int RequestSelectedColumns(); 00200 00202 virtual void ResetRequests(); 00203 00209 virtual vtkIdType GetNumberOfRequests(); 00210 00212 virtual vtkIdType GetNumberOfColumnsForRequest( vtkIdType request ); 00213 00215 00224 virtual const char* GetColumnForRequest( vtkIdType r, vtkIdType c ); 00225 //BTX 00226 virtual int GetColumnForRequest( vtkIdType r, vtkIdType c, vtkStdString& columnName ); 00227 //ETX 00229 00235 void AddColumn( const char* namCol ); 00236 00244 void AddColumnPair( const char* namColX, const char* namColY ); 00245 00247 00252 virtual bool SetParameter( const char* parameter, 00253 int index, 00254 vtkVariant value ); 00256 00258 00259 virtual void Aggregate( vtkDataObjectCollection*, 00260 vtkMultiBlockDataSet* ) = 0; 00262 00263 protected: 00264 vtkStatisticsAlgorithm(); 00265 ~vtkStatisticsAlgorithm(); 00266 00267 virtual int FillInputPortInformation( int port, vtkInformation* info ); 00268 virtual int FillOutputPortInformation( int port, vtkInformation* info ); 00269 00270 virtual int RequestData( 00271 vtkInformation*, 00272 vtkInformationVector**, 00273 vtkInformationVector* ); 00274 00276 00278 virtual void Learn( vtkTable*, 00279 vtkTable*, 00280 vtkMultiBlockDataSet* ) = 0; 00282 00284 virtual void Derive( vtkMultiBlockDataSet* ) = 0; 00285 00287 00288 virtual void Assess( vtkTable*, 00289 vtkMultiBlockDataSet*, 00290 vtkTable* ) = 0; 00292 00294 00296 void Assess( vtkTable*, 00297 vtkMultiBlockDataSet*, 00298 vtkTable*, 00299 int ); 00301 00303 00304 virtual void Test( vtkTable*, 00305 vtkMultiBlockDataSet*, 00306 vtkTable* ) = 0; 00308 00309 //BTX 00311 00312 virtual void SelectAssessFunctor( vtkTable* outData, 00313 vtkDataObject* inMeta, 00314 vtkStringArray* rowNames, 00315 AssessFunctor*& dfunc ) = 0; 00316 //ETX 00318 00319 int NumberOfPrimaryTables; 00320 bool LearnOption; 00321 bool DeriveOption; 00322 bool AssessOption; 00323 bool TestOption; 00324 vtkStringArray* AssessNames; 00325 vtkStatisticsAlgorithmPrivate* Internals; 00326 00327 private: 00328 vtkStatisticsAlgorithm(const vtkStatisticsAlgorithm&); // Not implemented 00329 void operator=(const vtkStatisticsAlgorithm&); // Not implemented 00330 }; 00331 00332 #endif