1#ifndef MUMOSA_SIMPLE_HPP
2#define MUMOSA_SIMPLE_HPP
13#include "quickstats/quickstats.hpp"
14#include "sanisizer/sanisizer.hpp"
59template<
typename Index_,
typename Distance_>
60std::pair<Distance_, Distance_>
compute_distance(
const Index_ num_cells, Distance_*
const distances) {
62 return std::pair<Distance_, Distance_>(0, 0);
65 const Distance_ med = quickstats::median(num_cells, distances);
67 for (Index_ i = 0; i < num_cells; ++i) {
68 const auto d = distances[i];
71 rmsd = std::sqrt(rmsd / num_cells);
72 return std::make_pair(med, rmsd);
93template<
typename Index_,
typename Input_,
typename Distance_>
96 Distance_*
const buffer,
103 const auto searcher = prebuilt.initialize();
104 std::vector<Distance_> cur_distances;
105 for (Index_ i = start, end = start + length; i < end; ++i) {
106 searcher->search(i, capped_k, NULL, &cur_distances);
107 if (cur_distances.size()) {
108 buffer[i] = cur_distances.back();
141template<
typename Index_,
typename Input_,
typename Distance_,
class Matrix_ = knncolle::Matrix<Index_, Input_> >
143 const std::size_t num_dim,
144 const Index_ num_cells,
145 const Input_*
const data,
147 Distance_*
const buffer,
std::unique_ptr< Prebuilt< Index_, Data_, Distance_ > > build_unique(const Matrix_ &data) const
virtual Index_ num_observations() const=0
void parallelize(int num_workers, Task_ num_tasks, Run_ run_task_range)
int cap_k(int k, Index_ num_observations)
Scale multi-modal embeddings to adjust for differences in variance.
Definition blocked.hpp:22
std::pair< Distance_, Distance_ > compute_distance(const Index_ num_cells, Distance_ *const distances)
Definition simple.hpp:60
Options for compute_distance().
Definition simple.hpp:28
int num_threads
Definition simple.hpp:40
int num_neighbors
Definition simple.hpp:34