scran_norm
Scaling normalization of single-cell data
Loading...
Searching...
No Matches
center_spike_in_factors.hpp
Go to the documentation of this file.
1#ifndef SCRAN_NORM_CENTER_SPIKE_IN_FACTORS_HPP
2#define SCRAN_NORM_CENTER_SPIKE_IN_FACTORS_HPP
3
5#include "utils.hpp"
6
12namespace scran_norm {
13
21 bool ignore_invalid = true;
22
28
35 std::vector<SizeFactorDiagnostics*> spike_in_diagnostics;
36};
37
57template<typename SizeFactor_>
59 const std::size_t num_cells,
60 SizeFactor_* const endogenous,
61 const std::vector<SizeFactor_*>& spike_ins,
62 const CenterSpikeInFactorsOptions& options
63) {
65 cent_opt.ignore_invalid = options.ignore_invalid;
66 cent_opt.diagnostics = options.endogenous_diagnostics;
67 center_size_factors(num_cells, endogenous, cent_opt);
68
69 const auto num_spikes = spike_ins.size();
70 const bool use_diagnostics = (num_spikes == options.spike_in_diagnostics.size());
71 for (I<decltype(num_spikes)> i = 0; i < num_spikes; ++i) {
72 if (use_diagnostics) {
73 cent_opt.diagnostics = options.spike_in_diagnostics[i];
74 }
75 center_size_factors(num_cells, spike_ins[i], cent_opt);
76 }
77}
78
86 bool ignore_invalid = true;
87
93
100 std::vector<SizeFactorDiagnostics*> spike_in_diagnostics;
101
105 CenterBlockMode block_mode = CenterBlockMode::LOWEST;
106};
107
130template<typename SizeFactor_, typename Block_>
131std::vector<SizeFactor_> center_spike_in_factors_blocked(
132 const std::size_t num_cells,
133 SizeFactor_* const endogenous,
134 const std::vector<SizeFactor_*>& spike_ins,
135 const Block_* const block,
136 const std::size_t num_blocks,
138) {
140 cent_opt.ignore_invalid = options.ignore_invalid;
141 cent_opt.block_mode = options.block_mode;
142 cent_opt.diagnostics = options.endogenous_diagnostics;
143 cent_opt.report_final = true;
144 auto output = center_size_factors_blocked(num_cells, endogenous, block, num_blocks, cent_opt);
145
146 cent_opt.block_mode = CenterBlockMode::CUSTOM;
147 cent_opt.custom_centers = std::move(output);
148 const auto num_spikes = spike_ins.size();
149 const bool use_diagnostics = (num_spikes == options.spike_in_diagnostics.size());
150
151 for (I<decltype(num_spikes)> i = 0; i < num_spikes; ++i) {
152 if (use_diagnostics) {
153 cent_opt.diagnostics = options.spike_in_diagnostics[i];
154 }
155 center_size_factors_blocked(num_cells, spike_ins[i], block, num_blocks, cent_opt);
156 }
157
158 output.swap(*(cent_opt.custom_centers));
159 return output;
160}
161
162}
163
164#endif
Center size factors prior to scaling normalization.
Scaling normalization of single-cell data.
Definition center_size_factors.hpp:20
SizeFactor_ center_size_factors(const std::size_t num_cells, SizeFactor_ *const size_factors, const CenterSizeFactorsOptions &options)
Definition center_size_factors.hpp:197
std::vector< SizeFactor_ > center_size_factors_blocked(const std::size_t num_cells, SizeFactor_ *const size_factors, const Block_ *const block, const std::size_t num_blocks, const CenterSizeFactorsBlockedOptions &options)
Definition center_size_factors.hpp:298
void center_spike_in_factors(const std::size_t num_cells, SizeFactor_ *const endogenous, const std::vector< SizeFactor_ * > &spike_ins, const CenterSpikeInFactorsOptions &options)
Definition center_spike_in_factors.hpp:58
CenterBlockMode
Definition center_size_factors.hpp:222
std::vector< SizeFactor_ > center_spike_in_factors_blocked(const std::size_t num_cells, SizeFactor_ *const endogenous, const std::vector< SizeFactor_ * > &spike_ins, const Block_ *const block, const std::size_t num_blocks, const CenterSpikeInFactorsBlockedOptions &options)
Definition center_spike_in_factors.hpp:131
Options for center_size_factors_blocked().
Definition center_size_factors.hpp:227
std::optional< std::vector< double > > custom_centers
Definition center_size_factors.hpp:269
CenterBlockMode block_mode
Definition center_size_factors.hpp:263
bool ignore_invalid
Definition center_size_factors.hpp:232
SizeFactorDiagnostics * diagnostics
Definition center_size_factors.hpp:238
bool report_final
Definition center_size_factors.hpp:275
Options for center_size_factors().
Definition center_size_factors.hpp:149
bool ignore_invalid
Definition center_size_factors.hpp:158
SizeFactorDiagnostics * diagnostics
Definition center_size_factors.hpp:171
Options for center_spike_in_factors_blocked().
Definition center_spike_in_factors.hpp:82
SizeFactorDiagnostics * endogenous_diagnostics
Definition center_spike_in_factors.hpp:92
std::vector< SizeFactorDiagnostics * > spike_in_diagnostics
Definition center_spike_in_factors.hpp:100
bool ignore_invalid
Definition center_spike_in_factors.hpp:86
CenterBlockMode block_mode
Definition center_spike_in_factors.hpp:105
Options for center_spike_in_factors().
Definition center_spike_in_factors.hpp:17
std::vector< SizeFactorDiagnostics * > spike_in_diagnostics
Definition center_spike_in_factors.hpp:35
SizeFactorDiagnostics * endogenous_diagnostics
Definition center_spike_in_factors.hpp:27
bool ignore_invalid
Definition center_spike_in_factors.hpp:21
Diagnostics for the size factors.
Definition sanitize_size_factors.hpp:21