VTK
dox/Filters/Statistics/vtkStatisticsAlgorithm.h
Go to the documentation of this file.
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