VTK  9.3.20240418
vtkKMeansDistanceFunctor.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 #ifndef vtkKMeansDistanceFunctor_h
4 #define vtkKMeansDistanceFunctor_h
5 
18 #include "vtkFiltersStatisticsModule.h" // For export macro
19 #include "vtkObject.h"
20 
21 VTK_ABI_NAMESPACE_BEGIN
22 class vtkVariantArray;
23 class vtkAbstractArray;
24 class vtkTable;
25 
26 class VTKFILTERSSTATISTICS_EXPORT vtkKMeansDistanceFunctor : public vtkObject
27 {
28 public:
31  void PrintSelf(ostream& os, vtkIndent indent) override;
32 
38 
43  virtual void operator()(double&, vtkVariantArray*, vtkVariantArray*);
44 
53  virtual void PairwiseUpdate(vtkTable* clusterCenters, vtkIdType row, vtkVariantArray* data,
54  vtkIdType dataCardinality, vtkIdType totalCardinality);
55 
65 
72 
76  virtual void DeallocateElementArray(void*);
77 
84 
90  virtual void PackElements(vtkTable* curTable, void* vElements);
91 
93 
98  virtual void UnPackElements(
99  vtkTable* curTable, vtkTable* newTable, void* vLocalElements, void* vGlobalElements, int np);
100  virtual void UnPackElements(
101  vtkTable* curTable, void* vLocalElements, vtkIdType numRows, vtkIdType numCols);
103 
107  virtual int GetDataType();
108 
109 protected:
112 
113  vtkVariantArray* EmptyTuple; // Used to quickly initialize Tuple for each datum
114  vtkTable*
115  CenterUpdates; // Used to hold online computation of next iteration's cluster center coords.
116 
117 private:
119  void operator=(const vtkKMeansDistanceFunctor&) = delete;
120 };
121 
122 VTK_ABI_NAMESPACE_END
123 #endif // vtkKMeansDistanceFunctor_h
Abstract superclass for all arrays.
a simple class to control print indentation
Definition: vtkIndent.h:108
measure distance from k-means cluster centers
virtual vtkVariantArray * GetEmptyTuple(vtkIdType dimension)
Return an empty tuple.
static vtkKMeansDistanceFunctor * New()
virtual void PairwiseUpdate(vtkTable *clusterCenters, vtkIdType row, vtkVariantArray *data, vtkIdType dataCardinality, vtkIdType totalCardinality)
This is called once per observation per run per iteration in order to assign the observation to its n...
virtual void UnPackElements(vtkTable *curTable, vtkTable *newTable, void *vLocalElements, void *vGlobalElements, int np)
Unpack the cluster center coordinates in vElements into columns of curTable.
virtual void * AllocateElementArray(vtkIdType size)
Allocate an array large enough to hold size coordinates and return a void pointer to this array.
virtual int GetDataType()
Return the data type used to store cluster center coordinates.
virtual void UnPackElements(vtkTable *curTable, void *vLocalElements, vtkIdType numRows, vtkIdType numCols)
Unpack the cluster center coordinates in vElements into columns of curTable.
virtual void operator()(double &, vtkVariantArray *, vtkVariantArray *)
Compute the distance from one observation to another, returning the distance in the first argument.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void PackElements(vtkTable *curTable, void *vElements)
Pack the cluster center coordinates in vElements into columns of curTable.
~vtkKMeansDistanceFunctor() override
virtual void DeallocateElementArray(void *)
Free an array allocated with AllocateElementArray.
virtual void PerturbElement(vtkTable *, vtkTable *, vtkIdType, vtkIdType, vtkIdType, double)
When a cluster center (1) has no observations that are closer to it than other cluster centers or (2)...
virtual vtkAbstractArray * CreateCoordinateArray()
Return a vtkAbstractArray capable of holding cluster center coordinates.
abstract base class for most VTK objects
Definition: vtkObject.h:162
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:168
An array holding vtkVariants.
@ size
Definition: vtkX3D.h:253
@ data
Definition: vtkX3D.h:315
int vtkIdType
Definition: vtkType.h:315