VTK  9.3.20240423
vtkPCAStatistics.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright 2010 Sandia Corporation
3// SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov
69#ifndef vtkPCAStatistics_h
70#define vtkPCAStatistics_h
71
72#include "vtkFiltersStatisticsModule.h" // For export macro
74
75VTK_ABI_NAMESPACE_BEGIN
76class vtkDoubleArray;
77class vtkIdTypeArray;
78
79class VTKFILTERSSTATISTICS_EXPORT vtkPCAStatistics : public vtkMultiCorrelativeStatistics
80{
81public:
83 void PrintSelf(ostream& os, vtkIndent indent) override;
85
90 {
95 NUM_NORMALIZATION_SCHEMES
96 };
97
102 {
106 NUM_BASIS_SCHEMES
107 };
108
110
132 vtkSetMacro(NormalizationScheme, int);
133 vtkGetMacro(NormalizationScheme, int);
134 virtual void SetNormalizationSchemeByName(const char* schemeName);
135 virtual const char* GetNormalizationSchemeName(int scheme);
137
139
166
168
176 void GetEigenvalues(int request, vtkDoubleArray*);
178 double GetEigenvalue(int request, int i);
179 double GetEigenvalue(int i);
181
183
193 void GetEigenvectors(int request, vtkDoubleArray* eigenvectors);
194 void GetEigenvectors(vtkDoubleArray* eigenvectors);
195 void GetEigenvector(int i, vtkDoubleArray* eigenvector);
196 void GetEigenvector(int request, int i, vtkDoubleArray* eigenvector);
198
200
227 vtkSetMacro(BasisScheme, int);
228 vtkGetMacro(BasisScheme, int);
229 virtual const char* GetBasisSchemeName(int schemeIndex);
230 virtual void SetBasisSchemeByName(const char* schemeName);
232
234
239 vtkSetMacro(FixedBasisSize, int);
240 vtkGetMacro(FixedBasisSize, int);
242
244
249 vtkSetClampMacro(FixedBasisEnergy, double, 0., 1.);
250 vtkGetMacro(FixedBasisEnergy, double);
252
258 bool SetParameter(const char* parameter, int index, vtkVariant value) override;
259
260protected:
263
269 int FillInputPortInformation(int port, vtkInformation* info) override;
270
275
280
285
291
296 AssessFunctor*& dfunc) override;
297
302
303 static const char* BasisSchemeEnumNames[NUM_BASIS_SCHEMES + 1];
304 static const char* NormalizationSchemeEnumNames[NUM_NORMALIZATION_SCHEMES + 1];
305
306private:
307 vtkPCAStatistics(const vtkPCAStatistics&) = delete;
308 void operator=(const vtkPCAStatistics&) = delete;
309};
310
311VTK_ABI_NAMESPACE_END
312#endif // vtkPCAStatistics_h
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:108
Store vtkAlgorithm input/output information.
Composite dataset that organizes datasets into blocks.
A class for multivariate linear correlation.
A class for multivariate principal component analysis.
ProjectionType
These are the enumeration values that SetBasisScheme() accepts and GetBasisScheme returns.
@ FIXED_BASIS_SIZE
Use the first N entries in the basis matrix.
@ FULL_BASIS
Use all entries in the basis matrix.
@ FIXED_BASIS_ENERGY
Use consecutive basis matrix entries whose energies sum to at least T.
virtual void SetBasisSchemeByName(const char *schemeName)
This variable controls the dimensionality of output tuples in Assess operation.
void Derive(vtkMultiBlockDataSet *) override
Execute the calculations required by the Derive option.
virtual const char * GetNormalizationSchemeName(int scheme)
This determines how (or if) the covariance matrix cov is normalized before PCA.
bool SetParameter(const char *parameter, int index, vtkVariant value) override
A convenience method (in particular for access from other applications) to set parameter values.
void GetEigenvalues(int request, vtkDoubleArray *)
Get the eigenvalues.
double GetEigenvalue(int i)
Get the eigenvalues.
virtual void SetNormalizationSchemeByName(const char *schemeName)
This determines how (or if) the covariance matrix cov is normalized before PCA.
void GetEigenvectors(vtkDoubleArray *eigenvectors)
Get the eigenvectors.
static vtkPCAStatistics * New()
NormalizationType
Methods by which the covariance matrix may be normalized.
@ TRIANGLE_SPECIFIED
Normalize cov(i,j) by V(i,j) where V is supplied by the user.
@ NONE
The covariance matrix should be used as computed.
@ DIAGONAL_SPECIFIED
Normalize cov(i,j) by sqrt(V(i)*V(j)) where V is supplied by the user.
@ DIAGONAL_VARIANCE
Normalize cov(i,j) by sqrt(cov(i,i)*cov(j,j)).
double GetEigenvalue(int request, int i)
Get the eigenvalues.
virtual void SetSpecifiedNormalization(vtkTable *)
These methods allow you to set/get values used to normalize the covariance matrix before PCA.
void GetEigenvectors(int request, vtkDoubleArray *eigenvectors)
Get the eigenvectors.
void GetEigenvector(int request, int i, vtkDoubleArray *eigenvector)
Get the eigenvectors.
void GetEigenvalues(vtkDoubleArray *)
Get the eigenvalues.
int FillInputPortInformation(int port, vtkInformation *info) override
This algorithm accepts a vtkTable containing normalization values for its fourth input (port 3).
~vtkPCAStatistics() override
void Assess(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Assess option.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SelectAssessFunctor(vtkTable *inData, vtkDataObject *inMeta, vtkStringArray *rowNames, AssessFunctor *&dfunc) override
Provide the appropriate assessment functor.
virtual const char * GetBasisSchemeName(int schemeIndex)
This variable controls the dimensionality of output tuples in Assess operation.
virtual vtkDoubleArray * CalculatePValues(vtkIdTypeArray *, vtkDoubleArray *)
Calculate p-value.
void Test(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Test option.
virtual vtkTable * GetSpecifiedNormalization()
These methods allow you to set/get values used to normalize the covariance matrix before PCA.
void GetEigenvector(int i, vtkDoubleArray *eigenvector)
Get the eigenvectors.
A base class for a functor that assesses data.
a vtkAbstractArray subclass for strings
A table, which contains similar-typed columns of data.
Definition vtkTable.h:168
A type representing the union of many types.
Definition vtkVariant.h:162