VTK  9.3.20240420
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
21VTK_ABI_NAMESPACE_BEGIN
22class vtkVariantArray;
24class vtkTable;
25
26class VTKFILTERSSTATISTICS_EXPORT vtkKMeansDistanceFunctor : public vtkObject
27{
28public:
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
71 virtual void* AllocateElementArray(vtkIdType size);
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
109protected:
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
117private:
119 void operator=(const vtkKMeansDistanceFunctor&) = delete;
120};
121
122VTK_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 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 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.
virtual vtkAbstractArray * CreateCoordinateArray()
Return a vtkAbstractArray capable of holding cluster center coordinates.
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.
virtual void * AllocateElementArray(vtkIdType size)
Allocate an array large enough to hold size coordinates and return a void pointer to this array.
virtual vtkVariantArray * GetEmptyTuple(vtkIdType dimension)
Return an empty tuple.
~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)...
static vtkKMeansDistanceFunctor * New()
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.
int vtkIdType
Definition vtkType.h:315