umappp
A C++ library for UMAP
Loading...
Searching...
No Matches
Status.hpp
Go to the documentation of this file.
1#ifndef UMAPPP_STATUS_HPP
2#define UMAPPP_STATUS_HPP
3
4#include <cstddef>
5
6#include "sanisizer/sanisizer.hpp"
7
8#include "Options.hpp"
9#include "optimize_layout.hpp"
10
16namespace umappp {
17
25template<typename Index_, typename Float_>
26class Status {
27public:
31 Status(internal::EpochData<Index_, Float_> epochs, Options options, const std::size_t num_dim) :
32 my_epochs(std::move(epochs)),
33 my_options(std::move(options)),
34 my_engine(my_options.optimize_seed),
35 my_num_dim(num_dim)
36 {}
41private:
42 internal::EpochData<Index_, Float_> my_epochs;
43 Options my_options;
44 RngEngine my_engine;
45 std::size_t my_num_dim;
46
47public:
51 // Only used for testing, specifically in comparison to uwot:::data2set.
52 const auto& get_epoch_data() const {
53 return my_epochs;
54 }
59public:
63 std::size_t num_dimensions() const {
64 return my_num_dim;
65 }
66
70 int epoch() const {
71 return my_epochs.current_epoch;
72 }
73
78 int num_epochs() const {
79 return my_epochs.total_epochs;
80 }
81
85 Index_ num_observations() const {
86 return my_epochs.cumulative_num_edges.size() - 1;
87 }
88
89public:
101 void run(Float_* const embedding, int epoch_limit) {
102 if (my_options.num_threads == 1 || !my_options.parallel_optimization) {
103 internal::optimize_layout<Index_, Float_>(
104 my_num_dim,
105 embedding,
106 my_epochs,
107 my_options.a,
108 my_options.b,
109 my_options.repulsion_strength,
110 my_options.learning_rate,
111 my_engine,
112 epoch_limit
113 );
114 } else {
115 internal::optimize_layout_parallel<Index_, Float_>(
116 my_num_dim,
117 embedding,
118 my_epochs,
119 my_options.a,
120 my_options.b,
121 my_options.repulsion_strength,
122 my_options.learning_rate,
123 my_engine,
124 epoch_limit,
125 my_options.num_threads
126 );
127 }
128 }
129
138 void run(Float_* const embedding) {
139 run(embedding, my_epochs.total_epochs);
140 }
141};
142
143}
144
145#endif
Options for the UMAP algorithm.
Status of the UMAP optimization iterations.
Definition Status.hpp:26
int epoch() const
Definition Status.hpp:70
std::size_t num_dimensions() const
Definition Status.hpp:63
void run(Float_ *const embedding, int epoch_limit)
Definition Status.hpp:101
Index_ num_observations() const
Definition Status.hpp:85
void run(Float_ *const embedding)
Definition Status.hpp:138
int num_epochs() const
Definition Status.hpp:78
Methods for UMAP.
Definition initialize.hpp:22
std::mt19937_64 RngEngine
Definition Options.hpp:28
Options for initialize().
Definition Options.hpp:33
double repulsion_strength
Definition Options.hpp:87
int parallel_optimization
Definition Options.hpp:193
double learning_rate
Definition Options.hpp:150
double b
Definition Options.hpp:81
double a
Definition Options.hpp:73
int num_threads
Definition Options.hpp:178