VTK  9.2.6
vtkKMeansStatistics.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: Visualization Toolkit
4 Module: vtkKMeansStatistics.h
5 
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright 2010 Sandia Corporation.
17  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
18  the U.S. Government retains certain rights in this software.
19  -------------------------------------------------------------------------*/
129 #ifndef vtkKMeansStatistics_h
130 #define vtkKMeansStatistics_h
131 
132 #include "vtkFiltersStatisticsModule.h" // For export macro
133 #include "vtkStatisticsAlgorithm.h"
134 
135 class vtkIdTypeArray;
136 class vtkIntArray;
137 class vtkDoubleArray;
140 
141 class VTKFILTERSSTATISTICS_EXPORT vtkKMeansStatistics : public vtkStatisticsAlgorithm
142 {
143 public:
145  void PrintSelf(ostream& os, vtkIndent indent) override;
147 
149 
153  vtkGetObjectMacro(DistanceFunctor, vtkKMeansDistanceFunctor);
155 
157 
160  vtkSetMacro(DefaultNumberOfClusters, int);
161  vtkGetMacro(DefaultNumberOfClusters, int);
163 
165 
168  vtkSetStringMacro(KValuesArrayName);
169  vtkGetStringMacro(KValuesArrayName);
171 
173 
177  vtkSetMacro(MaxNumIterations, int);
178  vtkGetMacro(MaxNumIterations, int);
180 
182 
186  vtkSetMacro(Tolerance, double);
187  vtkGetMacro(Tolerance, double);
189 
195 
199  bool SetParameter(const char* parameter, int index, vtkVariant value) override;
200 
202 
212  vtkSetMacro(GhostsToSkip, unsigned char);
213  vtkGetMacro(GhostsToSkip, unsigned char);
215 
216 protected:
219 
221 
226 
230  void Derive(vtkMultiBlockDataSet*) override;
231 
236 
240  void Test(vtkTable*, vtkMultiBlockDataSet*, vtkTable*) override { return; }
241 
245  void SelectAssessFunctor(vtkTable* inData, vtkDataObject* inMeta, vtkStringArray* rowNames,
246  AssessFunctor*& dfunc) override;
247 
253  virtual void UpdateClusterCenters(vtkTable* newClusterElements, vtkTable* curClusterElements,
254  vtkIdTypeArray* numMembershipChanges, vtkIdTypeArray* numDataElementsInCluster,
255  vtkDoubleArray* error, vtkIdTypeArray* startRunID, vtkIdTypeArray* endRunID,
256  vtkIntArray* computeRun);
257 
264 
272  vtkTable* dataElements, vtkIdTypeArray* numberOfClusters, vtkTable* curClusterElements,
273  vtkTable* newClusterElements, vtkIdTypeArray* startRunID, vtkIdTypeArray* endRunID);
274 
280  virtual void CreateInitialClusterCenters(vtkIdType numToAllocate,
281  vtkIdTypeArray* numberOfClusters, vtkTable* inData, vtkTable* curClusterElements,
282  vtkTable* newClusterElements);
283 
302  double Tolerance;
308 
313 
314  unsigned char GhostsToSkip;
315 
316 private:
317  vtkKMeansStatistics(const vtkKMeansStatistics&) = delete;
318  void operator=(const vtkKMeansStatistics&) = delete;
319 };
320 
321 #endif
maintain an unordered list of data objects
general representation of visualization data
dynamic, self-adjusting array of double
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:155
measure distance from k-means cluster centers
A class for KMeans clustering.
int MaxNumIterations
This is the maximum number of iterations allowed if the new cluster centers have not yet converged.
void SelectAssessFunctor(vtkTable *inData, vtkDataObject *inMeta, vtkStringArray *rowNames, AssessFunctor *&dfunc) override
Provide the appropriate assessment functor.
void Aggregate(vtkDataObjectCollection *, vtkMultiBlockDataSet *) override
Given a collection of models, calculate aggregate model NB: not implemented.
virtual void UpdateClusterCenters(vtkTable *newClusterElements, vtkTable *curClusterElements, vtkIdTypeArray *numMembershipChanges, vtkIdTypeArray *numDataElementsInCluster, vtkDoubleArray *error, vtkIdTypeArray *startRunID, vtkIdTypeArray *endRunID, vtkIntArray *computeRun)
Subroutine to update new cluster centers from the old centers.
char * KValuesArrayName
This is the name of the column that specifies the number of clusters in each run.
vtkIdType NumberOfGhosts
Number of ghosts in input data.
void Learn(vtkTable *, vtkTable *, vtkMultiBlockDataSet *) override
Execute the calculations required by the Learn option.
vtkKMeansDistanceFunctor * DistanceFunctor
This is the Distance functor.
bool SetParameter(const char *parameter, int index, vtkVariant value) override
A convenience method for setting properties by name.
virtual vtkIdType GetTotalNumberOfObservations(vtkIdType numObservations)
Subroutine to get the total number of observations.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int DefaultNumberOfClusters
This is the default number of clusters used when the user does not provide initial cluster centers.
void Derive(vtkMultiBlockDataSet *) override
Execute the calculations required by the Derive option.
void Assess(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Assess option.
int InitializeDataAndClusterCenters(vtkTable *inParameters, vtkTable *inData, vtkTable *dataElements, vtkIdTypeArray *numberOfClusters, vtkTable *curClusterElements, vtkTable *newClusterElements, vtkIdTypeArray *startRunID, vtkIdTypeArray *endRunID)
Subroutine to initialize the cluster centers using those provided by the user in input port LEARN_PAR...
virtual void CreateInitialClusterCenters(vtkIdType numToAllocate, vtkIdTypeArray *numberOfClusters, vtkTable *inData, vtkTable *curClusterElements, vtkTable *newClusterElements)
Subroutine to initialize cluster centerss if not provided by the user.
~vtkKMeansStatistics() override
static vtkKMeansStatistics * New()
double Tolerance
This is the percentage of data elements that swap cluster IDs.
void Test(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Test option.
virtual void SetDistanceFunctor(vtkKMeansDistanceFunctor *)
Set the DistanceFunctor.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
Composite dataset that organizes datasets into blocks.
A base class for a functor that assesses data.
Base class for statistics algorithms.
a vtkAbstractArray subclass for strings
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:183
A atomic type representing the union of many types.
Definition: vtkVariant.h:149
@ value
Definition: vtkX3D.h:226
@ parameter
Definition: vtkX3D.h:449
@ index
Definition: vtkX3D.h:252
int vtkIdType
Definition: vtkType.h:332