singler_classic_markers
Classic marker detection for SingleR
Loading...
Searching...
No Matches
singler_classic_markers
number.hpp
1
#ifndef SINGLER_CLASSIC_MARKERS_NUMBER_HPP
2
#define SINGLER_CLASSIC_MARKERS_NUMBER_HPP
3
4
#include <cmath>
5
#include <cstddef>
6
7
#include "sanisizer/sanisizer.hpp"
8
9
namespace
singler_classic_markers
{
10
23
inline
std::size_t
default_number
(std::size_t num_labels) {
24
if
(num_labels == 0) {
25
return
0;
26
}
else
{
27
return
sanisizer::from_float<std::size_t>(std::round(500.0 * std::pow(2.0/3.0, std::log2(
static_cast<
double
>
(num_labels)))));
28
}
29
}
30
34
template
<
typename
Index_>
35
Index_ get_num_keep(
const
std::size_t ngroups,
const
std::optional<std::size_t>& request) {
36
std::size_t num_keep;
37
if
(request.has_value()) {
38
num_keep = *request;
39
}
else
{
40
num_keep =
default_number
(ngroups);
41
}
42
return
sanisizer::cap<Index_>(num_keep);
43
}
48
}
49
50
#endif
singler_classic_markers
Implementation of the classic SingleR marker detection.
Definition
choose.hpp:21
singler_classic_markers::default_number
std::size_t default_number(std::size_t num_labels)
Definition
number.hpp:23
Generated by
1.12.0