VTK
dox/Infovis/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   -------------------------------------------------------------------------*/
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