2#ifndef INTARNA_INTERACTION_H_
3#define INTARNA_INTERACTION_H_
11#include <boost/functional/hash.hpp>
22class InteractionRange;
60 boost::hash_combine(key, i.
first);
61 boost::hash_combine(key, i.
second);
126 boost::hash_combine(key, i.
i1);
127 boost::hash_combine(key, i.
j1);
128 boost::hash_combine(key, i.
i2);
129 boost::hash_combine(key, i.
j2);
444 dotBracket(
const Interaction & i,
const char symOpen =
'(',
const char symClose =
')',
const bool fullLength =
false);
449 template <
typename bpIterator >
452 dotSomething( bpIterator bpBegin,
const bpIterator bpEnd,
const bool handleSeq1,
const char bpSymbol );
482 , basePairs(toCopy.basePairs)
483 , energy( toCopy.energy )
484 , seed( toCopy.seed == NULL ? NULL : new
SeedSet() )
570#if INTARNA_IN_DEBUG_MODE
571 if (i.
s1 !=
s1 || i.
s2 !=
s2)
throw std::runtime_error(
"Interaction::operator < () : comparing interactions for different sequences");
572 if (
basePairs.empty() || i.
basePairs.empty())
throw std::runtime_error(
"Interaction::operator < () : comparing empty interactions");
607 &&
seed != NULL &&
seed->size() > 0 && i.
seed != NULL && i.
seed->size() > 0 &&
seed->begin()->energy < i.
seed->begin()->energy)
617template <
typename bpIterator >
621dotSomething( bpIterator bp,
const bpIterator bpEnd,
const bool handleSeq1,
const char bpSymbol )
626 for (bpIterator bpLast = bp; bp!=bpEnd; bp++) {
628 for (
size_t u = handleSeq1 ? (bp->first - bpLast->first) : (bp->second - bpLast->second); u>1; u-- ) {
Definition IndexRangeList.h:20
Definition InteractionRange.h:17
type of a base pair index encoding
Definition Interaction.h:33
BasePair(const size_t first=RnaSequence::lastPos, const size_t second=RnaSequence::lastPos)
Definition Interaction.h:45
const bool operator==(const BasePair &bp) const
Definition Interaction.h:82
const bool operator<(const BasePair &bp) const
Definition Interaction.h:71
size_t first
index in first sequence
Definition Interaction.h:37
size_t second
index in second sequence
Definition Interaction.h:38
Definition Interaction.h:95
size_t i2
1st index in second sequence
Definition Interaction.h:101
const bool operator==(const Boundary &rhs) const
Definition Interaction.h:140
size_t i1
1st index in first sequence
Definition Interaction.h:99
size_t j1
last index in first sequence
Definition Interaction.h:100
Boundary(const size_t i1=RnaSequence::lastPos, const size_t j1=RnaSequence::lastPos, const size_t i2=RnaSequence::lastPos, const size_t j2=RnaSequence::lastPos)
Definition Interaction.h:111
size_t j2
last index in second sequence
Definition Interaction.h:102
Definition Interaction.h:154
BasePair bp_j
right-most base pair of seed
Definition Interaction.h:175
const bool operator<(const Seed &s) const
Definition Interaction.h:186
const bool operator==(const Seed &s) const
Definition Interaction.h:208
BasePair bp_i
left-most base pair of seed
Definition Interaction.h:173
Seed(const BasePair &bp_i, const BasePair &bp_j, const E_type energy)
E_type energy
overall energy of seed
Definition Interaction.h:177
Definition Interaction.h:28
static std::string dotBracket(const Interaction &i, const char symOpen='(', const char symClose=')', const bool fullLength=false)
void setSeedRange(const BasePair bp_left, const BasePair bp_right, const E_type energy)
std::vector< BasePair > PairingVec
type of a vector encoding base pair indices that are interacting
Definition Interaction.h:90
static std::string dotBar(const Interaction &i, const bool fullLength=false)
E_type energy
energy of the interaction
Definition Interaction.h:232
void sort()
Definition Interaction.h:531
SeedSet * seed
optional: seed information
Definition Interaction.h:235
std::set< Seed > SeedSet
type of a vector containing seeds
Definition Interaction.h:218
Interaction(const RnaSequence &s1, const RnaSequence &s2)
Definition Interaction.h:465
const RnaSequence * s1
the first interaction partner
Definition Interaction.h:223
friend std::ostream & operator<<(std::ostream &out, const Boundary &b)
friend std::ostream & operator<<(std::ostream &out, const Interaction &i)
static std::string dotSomething(bpIterator bpBegin, const bpIterator bpEnd, const bool handleSeq1, const char bpSymbol)
Definition Interaction.h:621
bool operator<(const Interaction &i) const
Definition Interaction.h:568
void clear()
Definition Interaction.h:542
Interaction & operator=(const Interaction &toCopy)
virtual ~Interaction()
Definition Interaction.h:511
const RnaSequence * s2
the second interaction partner
Definition Interaction.h:226
PairingVec basePairs
interacting indices
Definition Interaction.h:229
bool operator==(const Interaction &i) const
static bool compareEnergy(const E_type &energy, const Interaction &hasLargerE)
Definition Interaction.h:558
IndexRangeList getSeedRanges1() const
bool isEmpty() const
Definition Interaction.h:521
friend std::ostream & operator<<(std::ostream &out, const BasePair &bp)
IndexRangeList getSeedRanges2() const
Definition RnaSequence.h:29
static const size_t lastPos
Definition RnaSequence.h:57
#define E_equal(e1, e2)
check if two energies are equal
Definition general.h:131
void INTARNA_CLEANUP(T *&pointer)
Definition general.h:30
Definition Accessibility.h:13
int E_type
type for energy values (energy + accessibility [ED]) (internally)
Definition general.h:78
const E_type E_INF
Definition general.h:79
hash value computation
Definition Interaction.h:51
size_t operator()(const BasePair &i) const
Definition Interaction.h:57
hash value computation
Definition Interaction.h:117
size_t operator()(const Boundary &i) const
Definition Interaction.h:123