scran
C++ library for basic single-cell RNA-seq analyses
Loading...
Searching...
No Matches
SummarizeEffects.hpp
Go to the documentation of this file.
1#ifndef SCRAN_SUMMARIZE_EFFECTS_HPP
2#define SCRAN_SUMMARIZE_EFFECTS_HPP
3
4#include "../utils/macros.hpp"
5
6#include "../utils/vector_to_pointers.hpp"
8
9#include <vector>
10
17namespace scran {
18
65public:
69 struct Defaults {
73 static constexpr int num_threads = 1;
74
78 static constexpr bool compute_min = true;
79
83 static constexpr bool compute_mean = true;
84
88 static constexpr bool compute_median = true;
89
93 static constexpr bool compute_max = true;
94
98 static constexpr bool compute_min_rank = true;
99 };
100
101private:
102 int num_threads = Defaults::num_threads;
103 bool compute_min = Defaults::compute_min;
104 bool compute_mean = Defaults::compute_mean;
105 bool compute_median = Defaults::compute_median;
106 bool compute_max = Defaults::compute_max;
107 bool compute_min_rank = Defaults::compute_min_rank;
108
109public:
115 num_threads = n;
116 return *this;
117 }
118
127 compute_min = c;
128 return *this;
129 }
130
139 compute_mean = c;
140 return *this;
141 }
142
151 compute_median = c;
152 return *this;
153 }
154
163 compute_max = c;
164 return *this;
165 }
166
175 compute_min_rank = c;
176 return *this;
177 }
178
179public:
196 template<typename Stat>
197 void run(size_t ngenes, size_t ngroups, const Stat* effects, std::vector<std::vector<Stat*> > summaries) const {
198 if (summaries.empty()) {
199 return;
200 }
201
202 auto& min_rank = summaries[differential_analysis::MIN_RANK];
203 if (min_rank.size()) {
204 differential_analysis::compute_min_rank(ngenes, ngroups, effects, min_rank, num_threads);
205 }
206
207 differential_analysis::summarize_comparisons(ngenes, ngroups, effects, summaries, num_threads);
208 }
209
227 template<typename Stat>
228 std::vector<std::vector<std::vector<Stat> > > run(size_t ngenes, size_t ngroups, const Stat* effects) const {
229 std::vector<std::vector<std::vector<Stat> > > output(differential_analysis::n_summaries);
230
231 auto inflate = [&](auto& o) -> void {
232 o.resize(ngroups);
233 for (auto& o2 : o) {
234 o2.resize(ngenes);
235 }
236 };
237
238 if (compute_min) {
239 inflate(output[differential_analysis::MIN]);
240 }
241 if (compute_mean) {
242 inflate(output[differential_analysis::MEAN]);
243 }
244 if (compute_median) {
245 inflate(output[differential_analysis::MEDIAN]);
246 }
247 if (compute_max) {
248 inflate(output[differential_analysis::MAX]);
249 }
250 if (compute_min_rank) {
251 inflate(output[differential_analysis::MIN_RANK]);
252 }
253
254 run(ngenes, ngroups, effects, vector_to_pointers(output));
255 return output;
256 }
257};
258
259}
260
261#endif
Summarize pairwise effects into summary statistics per group.
Definition SummarizeEffects.hpp:64
void run(size_t ngenes, size_t ngroups, const Stat *effects, std::vector< std::vector< Stat * > > summaries) const
Definition SummarizeEffects.hpp:197
SummarizeEffects & set_compute_min(bool c=Defaults::compute_min)
Definition SummarizeEffects.hpp:126
SummarizeEffects & set_compute_min_rank(bool c=Defaults::compute_min_rank)
Definition SummarizeEffects.hpp:174
SummarizeEffects & set_compute_median(bool c=Defaults::compute_median)
Definition SummarizeEffects.hpp:150
std::vector< std::vector< std::vector< Stat > > > run(size_t ngenes, size_t ngroups, const Stat *effects) const
Definition SummarizeEffects.hpp:228
SummarizeEffects & set_num_threads(int n=Defaults::num_threads)
Definition SummarizeEffects.hpp:114
SummarizeEffects & set_compute_mean(bool c=Defaults::compute_mean)
Definition SummarizeEffects.hpp:138
SummarizeEffects & set_compute_max(bool c=Defaults::compute_max)
Definition SummarizeEffects.hpp:162
Functions for single-cell RNA-seq analyses.
Definition AggregateAcrossCells.hpp:18
std::vector< T * > vector_to_pointers(std::vector< std::vector< T > > &input)
Definition vector_to_pointers.hpp:26
Default parameter settings.
Definition SummarizeEffects.hpp:69
static constexpr bool compute_median
Definition SummarizeEffects.hpp:88
static constexpr bool compute_max
Definition SummarizeEffects.hpp:93
static constexpr int num_threads
Definition SummarizeEffects.hpp:73
static constexpr bool compute_min
Definition SummarizeEffects.hpp:78
static constexpr bool compute_mean
Definition SummarizeEffects.hpp:83
static constexpr bool compute_min_rank
Definition SummarizeEffects.hpp:98
Utilities for effect summarization.