1#ifndef UMAPPP_INITIALIZE_HPP
2#define UMAPPP_INITIALIZE_HPP
5#include "combine_neighbor_sets.hpp"
7#include "neighbor_similarities.hpp"
8#include "spectral_init.hpp"
27template<
typename Index_>
28int choose_num_epochs(
const std::optional<int> num_epochs,
const Index_ size) {
29 if (num_epochs.has_value()) {
40 constexpr Index_ limit = 10000;
41 const int minimal = 200, maximal = 300;
43 return minimal + maximal;
45 return minimal +
static_cast<int>(std::ceil(maximal *
static_cast<double>(limit) /
static_cast<double>(size)));
69template<
typename Index_,
typename Float_>
71 NeighborSimilaritiesOptions<Float_> nsopt;
75 neighbor_similarities(x, nsopt);
77 combine_neighbor_sets(x,
static_cast<Float_
>(options.
mix_ratio));
81 const bool spectral_okay = spectral_init(
106 if (!options.
a.has_value() || !options.
b.has_value()) {
108 options.
a = found.first;
109 options.
b = found.second;
138template<
typename Index_,
typename Input_,
typename Float_>
141 return initialize(std::move(output), num_dim, embedding, std::move(options));
165template<
typename Index_,
typename Float_,
class Matrix_ = knncolle::Matrix<Index_, Float_> >
167 const std::size_t data_dim,
168 const Index_ num_obs,
169 const Float_*
const data,
171 const std::size_t num_dim,
172 Float_*
const embedding,
176 return initialize(*prebuilt, num_dim, embedding, std::move(options));
Defines the NeighborList alias.
Status of the UMAP algorithm.
std::unique_ptr< Prebuilt< Index_, Data_, Distance_ > > build_unique(const Matrix_ &data) const
Status of the UMAP optimization iterations.
Definition Status.hpp:26
NeighborList< Index_, Distance_ > find_nearest_neighbors(const Prebuilt< Index_, Data_, Distance_ > &index, int k, int num_threads=1)
Functions for creating UMAP embeddings.
Definition initialize.hpp:22
knncolle::NeighborList< Index_, Float_ > NeighborList
Lists of neighbors for each observation.
Definition NeighborList.hpp:29
Status< Index_, Float_ > initialize(NeighborList< Index_, Float_ > x, const std::size_t num_dim, Float_ *const embedding, Options options)
Definition initialize.hpp:70
Options for initialize().
Definition Options.hpp:37
double initialize_random_scale
Definition Options.hpp:139
double mix_ratio
Definition Options.hpp:57
double negative_sample_rate
Definition Options.hpp:171
irlba::Options< Eigen::VectorXd > initialize_spectral_irlba_options
Definition Options.hpp:110
std::optional< double > a
Definition Options.hpp:79
bool initialize_spectral_jitter
Definition Options.hpp:125
std::optional< double > b
Definition Options.hpp:87
InitializeMethod initialize_method
Definition Options.hpp:98
double bandwidth
Definition Options.hpp:49
double min_dist
Definition Options.hpp:71
std::optional< int > num_epochs
Definition Options.hpp:159
double initialize_spectral_jitter_sd
Definition Options.hpp:131
int num_neighbors
Definition Options.hpp:178
double spread
Definition Options.hpp:63
int num_threads
Definition Options.hpp:192
RngEngine::result_type initialize_seed
Definition Options.hpp:147
bool initialize_random_on_spectral_fail
Definition Options.hpp:105
double local_connectivity
Definition Options.hpp:43
double initialize_spectral_scale
Definition Options.hpp:118