STORMM Source Documentation
Loading...
Searching...
No Matches
clustering.h
1// -*-c++-*-
2#ifndef STORMM_CLUSTERING_H
3#define STORMM_CLUSTERING_H
4
5#include "copyright.h"
6#include "Random/random.h"
7#include "Structure/local_arrangement.h"
8#include "Structure/structure_enumerators.h"
9#include "cluster_manager.h"
10#include "series_ops.h"
11
12namespace stormm {
13namespace stmath {
14
15using random::Xoshiro256ppGenerator;
16using structure::BoundaryCondition;
17using structure::imageCoordinates;
18using structure::imageValue;
19using structure::ImagingMethod;
20
24template <typename Tdata, typename Tcalc>
25Tcalc clusteringDistance(const Tdata* data_points, size_t pt, Tdata centroid,
26 Tcalc scale_factor = 1.0,
27 BoundaryCondition boundaries = BoundaryCondition::ISOLATED,
28 Tcalc range = 0.0);
29
70template <typename Tdata, typename Tcalc>
71void seedKMeans(const Tdata* data_points, size_t count, int clusters, Xoshiro256ppGenerator *xrs,
72 Tcalc scale_factor = 1.0,
73 BoundaryCondition boundaries = BoundaryCondition::ISOLATED, Tcalc range = 0.0);
74
86template <typename Tdata, typename Tcalc>
87void kMeans(ClusterManager<Tdata, Tcalc> *cls, const Tdata* data_points, size_t count,
88 int clusters, Tcalc scale_factor = 1.0,
89 BoundaryCondition boundaries = BoundaryCondition::ISOLATED, Tcalc range = 0.0);
90
91template <typename Tdata, typename Tcalc>
92void kMeans(ClusterManager<Tdata, Tcalc> *cls, const std::vector<Tdata> &data_points, int clusters,
93 Tcalc scale_factor = 1.0, BoundaryCondition boundaries = BoundaryCondition::ISOLATED,
94 Tcalc range = 0.0);
95
96template <typename Tdata, typename Tcalc>
97void kMeans(ClusterManager<Tdata, Tcalc> *cls, const Hybrid<Tdata> &data_points, int clusters,
98 Tcalc scale_factor = 1.0, BoundaryCondition boundaries = BoundaryCondition::ISOLATED,
99 Tcalc range = 0.0);
100
101template <typename Tdata, typename Tcalc>
102ClusterManager<Tdata, Tcalc> kMeans(const Tdata* data_points, size_t count, int clusters,
103 Tcalc scale_factor = 1.0,
104 BoundaryCondition boundaries = BoundaryCondition::ISOLATED,
105 Tcalc range = 0.0);
106
107template <typename Tdata, typename Tcalc>
108ClusterManager<Tdata, Tcalc> kMeans(const std::vector<Tdata> &data_points, int clusters,
109 Tcalc scale_factor = 1.0,
110 BoundaryCondition boundaries = BoundaryCondition::ISOLATED,
111 Tcalc range = 0.0);
112
113template <typename Tdata, typename Tcalc>
114ClusterManager<Tdata, Tcalc> kMeans(const Hybrid<Tdata> &data_points, int clusters,
115 Tcalc scale_factor = 1.0,
116 BoundaryCondition boundaries = BoundaryCondition::ISOLATED,
117 Tcalc range = 0.0);
119
120} // namespace stmath
121} // namespace stormm
122
123#include "clustering.tpp"
124
125#endif
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
The "Xoshiro256++" random number generator. While not cryptographically useful, it is a rock-solid ra...
Definition random.h:218
An object to track the clusters into which a set of data points can be sorted.
Definition cluster_manager.h:62