scran_variances
Model per-gene variance in expression
Loading...
Searching...
No Matches
choose_highly_variable_genes.hpp
Go to the documentation of this file.
1#ifndef SCRAN_VARIANCES_CHOOSE_HIGHLY_VARIABLE_GENES_HPP
2#define SCRAN_VARIANCES_CHOOSE_HIGHLY_VARIABLE_GENES_HPP
3
4#include <vector>
5#include <cstddef>
6
7#include "sanisizer/sanisizer.hpp"
8#include "topicks/topicks.hpp"
9
15namespace scran_variances {
16
31 std::size_t top = 4000;
32
36 bool larger = true;
37
42 bool use_bound = false;
43
52 double bound = 0;
53
58 bool keep_ties = true;
59};
60
64namespace internal {
65
66template<typename Stat_>
67topicks::PickTopGenesOptions<Stat_> translate_options(const ChooseHighlyVariableGenesOptions& chvg_options) {
68 topicks::PickTopGenesOptions<Stat_> opt;
69 opt.keep_ties = chvg_options.keep_ties;
70 if (chvg_options.use_bound) {
71 opt.bound = chvg_options.bound;
72 }
73 return opt;
74}
75
76}
91template<typename Stat_, typename Bool_>
92void choose_highly_variable_genes(const std::size_t n, const Stat_* const statistic, Bool_* const output, const ChooseHighlyVariableGenesOptions& options) {
93 topicks::pick_top_genes(n, statistic, options.top, options.larger, output, internal::translate_options<Stat_>(options));
94}
95
106template<typename Bool_ = char, typename Stat_>
107std::vector<Bool_> choose_highly_variable_genes(const std::size_t n, const Stat_* const statistic, const ChooseHighlyVariableGenesOptions& options) {
108 auto output = sanisizer::create<std::vector<Bool_> >(n
109#ifdef SCRAN_VARIANCES_TEST_INIT
110 , SCRAN_VARIANCES_TEST_INIT
111#endif
112 );
113 choose_highly_variable_genes(n, statistic, output.data(), options);
114 return output;
115}
116
128template<typename Index_, typename Stat_>
129std::vector<Index_> choose_highly_variable_genes_index(const Index_ n, const Stat_* const statistic, const ChooseHighlyVariableGenesOptions& options) {
130 return topicks::pick_top_genes_index<Index_>(n, statistic, options.top, options.larger, internal::translate_options<Stat_>(options));
131}
132
133}
134
135#endif
Variance modelling for single-cell expression data.
Definition choose_highly_variable_genes.hpp:15
std::vector< Index_ > choose_highly_variable_genes_index(const Index_ n, const Stat_ *const statistic, const ChooseHighlyVariableGenesOptions &options)
Definition choose_highly_variable_genes.hpp:129
void choose_highly_variable_genes(const std::size_t n, const Stat_ *const statistic, Bool_ *const output, const ChooseHighlyVariableGenesOptions &options)
Definition choose_highly_variable_genes.hpp:92
Options for choose_highly_variable_genes().
Definition choose_highly_variable_genes.hpp:20
std::size_t top
Definition choose_highly_variable_genes.hpp:31
bool use_bound
Definition choose_highly_variable_genes.hpp:42
double bound
Definition choose_highly_variable_genes.hpp:52
bool keep_ties
Definition choose_highly_variable_genes.hpp:58
bool larger
Definition choose_highly_variable_genes.hpp:36