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,
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, 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, 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
129template<typename SizeFactor_, typename Block_>
130std::vector<SizeFactor_> center_spike_in_factors_blocked(
131 const std::size_t num,
132 SizeFactor_* const endogenous,
133 const std::vector<SizeFactor_*>& spike_ins,
134 const Block_* const block,
136) {
138 cent_opt.ignore_invalid = options.ignore_invalid;
139 cent_opt.block_mode = options.block_mode;
140 cent_opt.diagnostics = options.endogenous_diagnostics;
141 cent_opt.report_final = true;
142 auto output = center_size_factors_blocked(num, endogenous, block, cent_opt);
143
144 cent_opt.block_mode = CenterBlockMode::CUSTOM;
145 cent_opt.custom_centers = std::move(output);
146 const auto num_spikes = spike_ins.size();
147 const bool use_diagnostics = (num_spikes == options.spike_in_diagnostics.size());
148
149 for (I<decltype(num_spikes)> i = 0; i < num_spikes; ++i) {
150 if (use_diagnostics) {
151 cent_opt.diagnostics = options.spike_in_diagnostics[i];
152 }
153 center_size_factors_blocked(num, spike_ins[i], block, cent_opt);
154 }
155
156 output.swap(*(cent_opt.custom_centers));
157 return output;
158}
159
160}
161
162#endif
Center size factors prior to scaling normalization.
Scaling normalization of single-cell data.
Definition center_size_factors.hpp:20
std::vector< SizeFactor_ > center_size_factors_blocked(const std::size_t num, SizeFactor_ *const size_factors, const Block_ *const block, const CenterSizeFactorsBlockedOptions &options)
Definition center_size_factors.hpp:294
CenterBlockMode
Definition center_size_factors.hpp:219
SizeFactor_ center_size_factors(const std::size_t num, SizeFactor_ *const size_factors, const CenterSizeFactorsOptions &options)
Definition center_size_factors.hpp:194
void center_spike_in_factors(const std::size_t num, SizeFactor_ *const endogenous, const std::vector< SizeFactor_ * > &spike_ins, const CenterSpikeInFactorsOptions &options)
Definition center_spike_in_factors.hpp:58
std::vector< SizeFactor_ > center_spike_in_factors_blocked(const std::size_t num, SizeFactor_ *const endogenous, const std::vector< SizeFactor_ * > &spike_ins, const Block_ *const block, const CenterSpikeInFactorsBlockedOptions &options)
Definition center_spike_in_factors.hpp:130
Options for center_size_factors_blocked().
Definition center_size_factors.hpp:224
std::optional< std::vector< double > > custom_centers
Definition center_size_factors.hpp:266
CenterBlockMode block_mode
Definition center_size_factors.hpp:260
bool ignore_invalid
Definition center_size_factors.hpp:229
SizeFactorDiagnostics * diagnostics
Definition center_size_factors.hpp:235
bool report_final
Definition center_size_factors.hpp:272
Options for center_size_factors().
Definition center_size_factors.hpp:146
bool ignore_invalid
Definition center_size_factors.hpp:155
SizeFactorDiagnostics * diagnostics
Definition center_size_factors.hpp:168
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:20