1 #include <Sequence/variant_matrix/filtering.hpp> 12 VariantMatrix &m,
const std::function<
bool(
const T &)> &f,
13 const std::function<T(VariantMatrix &,
const std::size_t)> &viewmaker,
16 constexpr
auto remove_pos = std::is_same<T, RowView>::value;
18 for (std::size_t i = 0; i < dim; ++i)
20 auto view = viewmaker(m, i);
25 view.begin(), view.end(), view.begin(),
30 = std::numeric_limits<double>::quiet_NaN();
40 m.positions.begin(), m.positions.end(),
41 [](
double d) {
return std::isnan(d); }),
44 m.data.erase(std::remove(m.data.begin(), m.data.end(),
47 dim -=
static_cast<std::size_t
>(rv);
53 filter_sites(VariantMatrix &m,
54 const std::function<
bool(
const RowView &)> &f)
56 return filter_common<RowView>(
57 m, f, [](VariantMatrix &m,
63 filter_haplotypes(VariantMatrix &m,
64 const std::function<
bool(
const ColView &)> &f)
66 return filter_common<ColView>(
67 m, f, [](VariantMatrix &m,
internal::row_view_< std::int8_t * > RowView
View of a VariantMatrix row (a variable site)
The namespace in which this library resides.
ConstRowView get_RowView(const VariantMatrix &m, const std::size_t row)
Return a ConstRowView from VariantMatrix m at row row. std::out_of_range is thrown if row is out of r...
ColView get_ColView(VariantMatrix &m, const std::size_t col)
Return a ColView from VariantMatrix m at col col. std::out_of_range is thcoln if col is out of range...
internal::col_view_< std::int8_t * > ColView
View of a VariantMatrix column ("haplotype")
static const std::int8_t mask
Reserved value for masked data.