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 <algorithm>
6#include <numeric>
7#include <cstddef>
8
9#include "sanisizer/sanisizer.hpp"
10#include "topicks/topicks.hpp"
11
17namespace scran_variances {
18
33 std::size_t top = 4000;
34
38 bool larger = true;
39
44 bool use_bound = false;
45
51 double bound = 0;
52
57 bool keep_ties = true;
58};
59
63namespace internal {
64
65template<typename Stat_>
66topicks::PickTopGenesOptions<Stat_> translate_options(const ChooseHighlyVariableGenesOptions& chvg_options) {
67 topicks::PickTopGenesOptions<Stat_> opt;
68 opt.keep_ties = chvg_options.keep_ties;
69 if (chvg_options.use_bound) {
70 opt.bound = chvg_options.bound;
71 }
72 return opt;
73}
74
75}
90template<typename Stat_, typename Bool_>
91void choose_highly_variable_genes(std::size_t n, const Stat_* statistic, Bool_* output, const ChooseHighlyVariableGenesOptions& options) {
92 topicks::pick_top_genes(n, statistic, options.top, options.larger, output, internal::translate_options<Stat_>(options));
93}
94
105template<typename Bool_ = char, typename Stat_>
106std::vector<Bool_> choose_highly_variable_genes(std::size_t n, const Stat_* statistic, const ChooseHighlyVariableGenesOptions& options) {
107 auto output = sanisizer::create<std::vector<Bool_> >(n
108#ifdef SCRAN_VARIANCES_TEST_INIT
109 , SCRAN_VARIANCES_TEST_INIT
110#endif
111 );
112 choose_highly_variable_genes(n, statistic, output.data(), options);
113 return output;
114}
115
127template<typename Index_, typename Stat_>
128std::vector<Index_> choose_highly_variable_genes_index(Index_ n, const Stat_* statistic, const ChooseHighlyVariableGenesOptions& options) {
129 return topicks::pick_top_genes_index<Index_>(n, statistic, options.top, options.larger, internal::translate_options<Stat_>(options));
130}
131
132}
133
134#endif
Variance modelling for single-cell expression data.
Definition choose_highly_variable_genes.hpp:17
void choose_highly_variable_genes(std::size_t n, const Stat_ *statistic, Bool_ *output, const ChooseHighlyVariableGenesOptions &options)
Definition choose_highly_variable_genes.hpp:91
std::vector< Index_ > choose_highly_variable_genes_index(Index_ n, const Stat_ *statistic, const ChooseHighlyVariableGenesOptions &options)
Definition choose_highly_variable_genes.hpp:128
Options for choose_highly_variable_genes().
Definition choose_highly_variable_genes.hpp:22
std::size_t top
Definition choose_highly_variable_genes.hpp:33
bool use_bound
Definition choose_highly_variable_genes.hpp:44
double bound
Definition choose_highly_variable_genes.hpp:51
bool keep_ties
Definition choose_highly_variable_genes.hpp:57
bool larger
Definition choose_highly_variable_genes.hpp:38