1#ifndef SCRAN_QC_FORMAT_FILTERS_HPP
2#define SCRAN_QC_FORMAT_FILTERS_HPP
8#include "sanisizer/sanisizer.hpp"
32template<
typename Keep_,
typename Index_>
33void filter_index(
const std::size_t num,
const Keep_*
const filter, std::vector<Index_>& output) {
35 for (
decltype(I(num)) i = 0; i < num; ++i) {
53template<
typename Index_,
typename Keep_>
54std::vector<Index_>
filter_index(
const std::size_t num,
const Keep_*
const filter) {
55 std::vector<Index_> output;
56#ifdef SCRAN_QC_TEST_INIT
57 output.resize(10, SCRAN_QC_TEST_INIT);
77template<
typename Keep_,
typename Output_>
78void combine_filters(
const std::size_t num,
const std::vector<Keep_*>& filters, Output_*
const output) {
79 std::copy_n(filters.front(), num, output);
80 const auto nfilters = filters.size();
81 for (
decltype(I(nfilters)) f = 1; f < nfilters; ++f) {
82 const auto filt = filters[f];
83 for (
decltype(I(num)) i = 0; i < num; ++i) {
84 output[i] = output[i] && filt[i];
101template<
typename Output_ =
unsigned char,
typename Keep_>
102std::vector<Output_>
combine_filters(
const std::size_t num,
const std::vector<const Keep_*>& filters) {
103 auto output = sanisizer::create<std::vector<Output_> >(num
104#ifdef SCRAN_QC_TEST_INIT
122template<
typename Index_,
typename Keep_>
123void combine_filters_index(
const Index_ num,
const std::vector<const Keep_*>& filters, std::vector<Index_>& output) {
126 const auto nfilters = filters.size();
127 for (
decltype(I(num)) i = 0; i < num; ++i) {
129 for (
decltype(I(nfilters)) f = 0; f < nfilters; ++f) {
130 if (!filters[f][i]) {
153template<
typename Index_,
typename Keep_>
155 std::vector<Index_> output;
156#ifdef SCRAN_QC_TEST_INIT
157 output.resize(10, SCRAN_QC_TEST_INIT);
Simple quality control for single-cell data.
Definition adt_quality_control.hpp:23
void combine_filters(const std::size_t num, const std::vector< Keep_ * > &filters, Output_ *const output)
Definition format_filters.hpp:78
void filter_index(const std::size_t num, const Keep_ *const filter, std::vector< Index_ > &output)
Definition format_filters.hpp:33
void combine_filters_index(const Index_ num, const std::vector< const Keep_ * > &filters, std::vector< Index_ > &output)
Definition format_filters.hpp:123