1 #ifndef LOCARNA_BASE_PAIR_FILTER
2 #define LOCARNA_BASE_PAIR_FILTER
9 namespace BasePairFilter {
12 typedef std::pair<size_t, size_t> bp_t;
24 operator()(
size_t i,
size_t j)
const {
31 operator()(
const bp_t &bp)
const {
32 return (*
this)(bp.first, bp.second);
92 return lo_ <= (j - i + 1) && (up_ == 0 || (j - i + 1) <= up_);
100 const std::string &sequence_;
107 :
Filter(), sequence_(sequence) {}
121 return Filter::operator()(i, j) &&
122 canonical(sequence_[i], sequence_[j]);
127 canonical(
char x,
char y) {
128 static std::string cpairs =
"AUCGGUUAGCUG";
129 for (
size_t i = 0; i < cpairs.length(); i += 2) {
130 if (x == cpairs[i] && y == cpairs[i + 1])
143 :
Filter(), fa_(fa), fb_(fb) {}
148 operator()(
size_t i,
size_t j)
const {
149 return fa_(i, j) && fb_(i, j);
loop size base pair filter
Definition: base_pair_filter.hh:39
BPMinLoopSize(size_t mls)
constructor
Definition: base_pair_filter.hh:46
~BPMinLoopSize()
d'tor
Definition: base_pair_filter.hh:50
bool operator()(size_t i, size_t j) const
check for minimum loop size
Definition: base_pair_filter.hh:58
base pair filter to allow only canonical base pairs
Definition: base_pair_filter.hh:99
~Canonical()
d'tor
Definition: base_pair_filter.hh:111
Canonical(const std::string &sequence)
constructor
Definition: base_pair_filter.hh:106
bool operator()(size_t i, size_t j) const
check for canonical base pair
Definition: base_pair_filter.hh:120
Definition: base_pair_filter.hh:137
basic class for base pair filters (no filtering)
Definition: base_pair_filter.hh:17
base pair range filter
Definition: base_pair_filter.hh:67
bool operator()(size_t i, size_t j) const
check for span
Definition: base_pair_filter.hh:90
~SpanRange()
d'tor
Definition: base_pair_filter.hh:82
SpanRange(size_t lo, size_t up)
Construct with range.
Definition: base_pair_filter.hh:78
Definition: aligner.cc:15