IntaRNA 3.4.1
RNA-RNA interaction prediction | C++ API
Loading...
Searching...
No Matches
StackSeedDomain.h
Go to the documentation of this file.
1#ifndef INTARNA_STACKSEEDDOMAIN_H_
2#define INTARNA_STACKSEEDDOMAIN_H_
3
6#include <functional>
7#include <unordered_map>
8#include <vector>
9
10namespace IntaRNA {
16public:
18 struct Occurrence { size_t i, j, length; };
26 StackSeedDomain(const SeedHandler & handler, size_t n, size_t m, size_t span1, size_t span2);
34 StackSeedDomain(const std::vector<Occurrence> & occurrences, size_t n, size_t m, size_t span1, size_t span2);
36 size_t seedLength(size_t i, size_t j) const;
38 size_t seedEndingLength(size_t i, size_t j) const;
40 size_t maxSeedLength() const;
49 std::vector<Occurrence> minimalOccurrences() const;
54 void forEachStart(const std::function<void(size_t,size_t)> & visit) const;
55private:
57 std::unordered_map<Interaction::BasePair, size_t, Interaction::BasePair::Hash> lengths;
59 std::unordered_map<Interaction::BasePair, size_t, Interaction::BasePair::Hash> endingLengths;
61 struct Box { size_t i0, i1, j0, j1; };
62 std::vector<Box> boxes;
63 size_t maximum = 0;
64 void add(Occurrence seed, size_t n, size_t m, size_t span1, size_t span2);
65};
66inline size_t StackSeedDomain::seedLength(size_t i, size_t j) const {
67 auto p=lengths.find({i,j}); return p==lengths.end()?0:p->second;
68}
69inline size_t StackSeedDomain::seedEndingLength(size_t i, size_t j) const {
70 auto p=endingLengths.find({i,j}); return p==endingLengths.end()?0:p->second;
71}
72inline size_t StackSeedDomain::maxSeedLength() const { return maximum; }
73}
74#endif
Definition SeedHandler.h:17
Definition StackSeedDomain.h:15
StackSeedDomain(const std::vector< Occurrence > &occurrences, size_t n, size_t m, size_t span1, size_t span2)
std::vector< Occurrence > minimalOccurrences() const
void forEachStart(const std::function< void(size_t, size_t)> &visit) const
size_t seedLength(size_t i, size_t j) const
Definition StackSeedDomain.h:66
size_t maxSeedLength() const
Definition StackSeedDomain.h:72
StackSeedDomain(const SeedHandler &handler, size_t n, size_t m, size_t span1, size_t span2)
size_t seedEndingLength(size_t i, size_t j) const
Definition StackSeedDomain.h:69
Definition Accessibility.h:13
Definition StackSeedDomain.h:18
size_t i
Definition StackSeedDomain.h:18
size_t length
Definition StackSeedDomain.h:18
size_t j
Definition StackSeedDomain.h:18