00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00057 #ifndef __vtkStatisticsAlgorithm_h
00058 #define __vtkStatisticsAlgorithm_h
00059
00060 #include "vtkTableAlgorithm.h"
00061
00062 class vtkDataObjectCollection;
00063 class vtkStdString;
00064 class vtkStringArray;
00065 class vtkVariant;
00066 class vtkVariantArray;
00067 class vtkStatisticsAlgorithmPrivate;
00068
00069 class VTK_INFOVIS_EXPORT vtkStatisticsAlgorithm : public vtkTableAlgorithm
00070 {
00071 public:
00072 vtkTypeRevisionMacro(vtkStatisticsAlgorithm, vtkTableAlgorithm);
00073 void PrintSelf(ostream& os, vtkIndent indent);
00074
00075
00077
00078 enum InputPorts
00079 {
00080 INPUT_DATA = 0,
00081 LEARN_PARAMETERS = 1,
00082 INPUT_MODEL = 2
00083 };
00085
00087
00088 enum OutputIndices
00089 {
00090 OUTPUT_DATA = 0,
00091 OUTPUT_MODEL = 1,
00092 ASSESSMENT = 2,
00093 OUTPUT_TEST = 2
00094 };
00096
00097
00099
00102 virtual void SetLearnOptionParameterConnection( vtkAlgorithmOutput* params )
00103 { this->SetInputConnection( vtkStatisticsAlgorithm::LEARN_PARAMETERS, params ); }
00105
00107
00110 virtual void SetLearnOptionParameters( vtkDataObject* params )
00111 { this->SetInput( vtkStatisticsAlgorithm::LEARN_PARAMETERS, params ); }
00113
00115
00118 virtual void SetInputModelConnection( vtkAlgorithmOutput* model )
00119 { this->SetInputConnection( vtkStatisticsAlgorithm::INPUT_MODEL, model ); }
00121
00123 virtual void SetInputModel( vtkDataObject* model )
00124 { this->SetInput( vtkStatisticsAlgorithm::INPUT_MODEL, model ); }
00126
00128
00129 vtkSetMacro( LearnOption, bool );
00130 vtkGetMacro( LearnOption, bool );
00132
00134
00135 vtkSetMacro( DeriveOption, bool );
00136 vtkGetMacro( DeriveOption, bool );
00138
00140
00141 vtkSetMacro( AssessOption, bool );
00142 vtkGetMacro( AssessOption, bool );
00144
00146
00147 vtkSetMacro( TestOption, bool );
00148 vtkGetMacro( TestOption, bool );
00150
00152
00153 virtual void SetAssessParameters( vtkStringArray* );
00154 vtkGetObjectMacro(AssessParameters,vtkStringArray);
00156
00158
00159 virtual void SetAssessNames( vtkStringArray* );
00160 vtkGetObjectMacro(AssessNames,vtkStringArray);
00162
00163
00165 void SetAssessOptionParameter( vtkIdType id, vtkStdString name );
00166
00168 vtkStdString GetAssessParameter( vtkIdType id );
00169
00171
00172 class AssessFunctor {
00173 public:
00174 virtual void operator() ( vtkVariantArray*,
00175 vtkIdType ) = 0;
00176 virtual ~AssessFunctor() { }
00177 };
00179
00180
00192 virtual void SetColumnStatus( const char* namCol, int status );
00193
00196 virtual void ResetAllColumnStates();
00197
00201 virtual int RequestSelectedColumns();
00202
00204 virtual void ResetRequests();
00205
00211 virtual vtkIdType GetNumberOfRequests();
00212
00214 virtual vtkIdType GetNumberOfColumnsForRequest( vtkIdType request );
00215
00217
00226 virtual const char* GetColumnForRequest( vtkIdType r, vtkIdType c );
00227
00228 virtual int GetColumnForRequest( vtkIdType r, vtkIdType c, vtkStdString& columnName );
00229
00231
00232
00234
00239 virtual bool SetParameter( const char* parameter,
00240 int index,
00241 vtkVariant value );
00243
00244
00246
00247 virtual void Aggregate( vtkDataObjectCollection*,
00248 vtkDataObject* ) = 0;
00250
00251 protected:
00252 vtkStatisticsAlgorithm();
00253 ~vtkStatisticsAlgorithm();
00254
00255 virtual int FillInputPortInformation( int port, vtkInformation* info );
00256 virtual int FillOutputPortInformation( int port, vtkInformation* info );
00257
00258 virtual int RequestData(
00259 vtkInformation*,
00260 vtkInformationVector**,
00261 vtkInformationVector* );
00262
00264
00266 virtual void Learn( vtkTable*,
00267 vtkTable*,
00268 vtkDataObject* ) = 0;
00270
00272 virtual void Derive( vtkDataObject* ) = 0;
00273
00275
00276 virtual void Assess( vtkTable*,
00277 vtkDataObject*,
00278 vtkTable* ) = 0;
00280
00282
00283 virtual void Test( vtkTable*,
00284 vtkDataObject*,
00285 vtkDataObject* ) = 0;
00287
00288
00290
00291 virtual void SelectAssessFunctor( vtkTable* outData,
00292 vtkDataObject* inMeta,
00293 vtkStringArray* rowNames,
00294 AssessFunctor*& dfunc ) = 0;
00295
00297
00298 bool LearnOption;
00299 bool DeriveOption;
00300 bool AssessOption;
00301 bool TestOption;
00302 vtkStringArray* AssessParameters;
00303 vtkStringArray* AssessNames;
00304 vtkStatisticsAlgorithmPrivate* Internals;
00305
00306 private:
00307 vtkStatisticsAlgorithm(const vtkStatisticsAlgorithm&);
00308 void operator=(const vtkStatisticsAlgorithm&);
00309 };
00310
00311 #endif