2#ifndef INTARNA_INTERACTIONENERGY_H_
3#define INTARNA_INTERACTIONENERGY_H_
92 ,
const bool energyWithDangle
120 getE(
const size_t i1,
const size_t j1
121 ,
const size_t i2,
const size_t j2
122 ,
const E_type hybridE )
const;
166 isGU(
const size_t i1,
const size_t i2 )
const;
193 getED1(
const size_t i1,
const size_t j1 )
const;
205 getED2(
const size_t i2,
const size_t j2 )
const;
245 ,
const size_t i2,
const size_t j2
263 getES1(
const size_t i1,
const size_t j1 )
const = 0;
280 getES2(
const size_t i2,
const size_t j2 )
const = 0;
350 getE_interLeft(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const = 0;
422 getPr_danglingLeft(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const;
438 getPr_danglingRight(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const;
510 getBasePair(
const size_t i1,
const size_t i2 )
const;
557 isValidInternalLoop(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const;
641 ,
const size_t maxInternalLoopSize1
642 ,
const size_t maxInternalLoopSize2
644 ,
const bool energyWithDangles
645 ,
const bool internalLoopGU
650 , maxInternalLoopSize1(maxInternalLoopSize1)
651 , maxInternalLoopSize2(maxInternalLoopSize2)
652 , energyAdd(energyAdd)
653 , energyWithDangles(energyWithDangles)
654 , internalLoopGU(internalLoopGU)
673 return i < seq.
size()
678 && (j-i) <= (1+maxInternalLoopSize);
699isGU(
const size_t i1,
const size_t i2 )
const
729isValidInternalLoop(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const
808getBasePair(
const size_t i1,
const size_t i2 )
const
838getED1(
const size_t i1,
const size_t j1 )
const
848getED2(
const size_t i2,
const size_t j2 )
const
883getPr_danglingLeft(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const
886 Z_type probDangle1 = 1.0, probDangle2 = 1.0;
912 return probDangle1 * probDangle2;
920getPr_danglingRight(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 )
const
923 Z_type probDangle1 = 1.0, probDangle2 = 1.0;
949 return probDangle1 * probDangle2;
957getE(
const size_t i1,
const size_t j1
958 ,
const size_t i2,
const size_t j2
959 ,
const E_type hybridE )
const
1004 ,
const size_t i2,
const size_t j2
1007#if INTARNA_IN_DEBUG_MODE
1008 if (i1 >= j1 )
throw std::runtime_error(
"InteractionEnergy::getE_multi() : i1>=j1 : "+
toString(i1)+
" "+
toString(j1));
1009 if (i2 >= j2 )
throw std::runtime_error(
"InteractionEnergy::getE_multi() : i2>=j2 : "+
toString(i2)+
" "+
toString(j2));
1010 if (j1 >=
size1())
throw std::runtime_error(
"InteractionEnergy::getE_multi() : j1>=size1() : "+
toString(j1)+
" "+
toString(
size1()));
1011 if (j2 >=
size2())
throw std::runtime_error(
"InteractionEnergy::getE_multi() : j2>=size2() : "+
toString(j2)+
" "+
toString(
size2()));
bool isAccessible(const size_t i) const
Definition AccessibilityConstraint.h:379
Definition Accessibility.h:25
static const E_type ED_UPPER_BOUND
upper bound for all ED return values
Definition Accessibility.h:30
virtual const AccessibilityConstraint & getAccConstraint() const
Definition Accessibility.h:279
virtual const RnaSequence & getSequence() const
Definition Accessibility.h:259
virtual E_type getED(const size_t from, const size_t to) const =0
Definition InteractionEnergy.h:20
virtual E_type getE_multiClosing() const =0
const ReverseAccessibility & accS2
accessibility values for sequence S2 (reversed index order)
Definition InteractionEnergy.h:591
virtual E_type getEnergyAdd() const
Definition InteractionEnergy.h:776
virtual E_type getE_endLeft(const size_t i1, const size_t i2) const =0
const E_type energyAdd
user defined shift of the energy spectrum
Definition InteractionEnergy.h:602
virtual EnergyContributions getE_contributions(const Interaction &interaction) const
const size_t maxInternalLoopSize1
Definition InteractionEnergy.h:595
virtual E_type getE_multi(const size_t i1, const size_t j1, const size_t i2, const size_t j2, const ES_multi_mode ES_mode) const
Definition InteractionEnergy.h:1003
virtual size_t getIndex2(const Interaction::BasePair &bp) const
Definition InteractionEnergy.h:828
const Accessibility & accS1
accessibility values for sequence S1
Definition InteractionEnergy.h:588
virtual E_type getE_multiUnpaired(const size_t numUnpaired) const =0
virtual Z_type getRT() const =0
virtual E_type getEall2() const =0
virtual E_type getE_init() const =0
virtual E_type getE(const size_t i1, const size_t j1, const size_t i2, const size_t j2, const E_type hybridE) const
Definition InteractionEnergy.h:957
virtual Z_type getPr_danglingRight(const size_t i1, const size_t j1, const size_t i2, const size_t j2) const
Definition InteractionEnergy.h:920
virtual size_t getIndex1(const Interaction::BasePair &bp) const
Definition InteractionEnergy.h:818
const size_t getMaxInternalLoopSize2() const
Definition InteractionEnergy.h:472
const bool energyWithDangles
whether or not dangling end energy contributions are to be added
Definition InteractionEnergy.h:605
virtual bool isAccessible2(const size_t i) const
Definition InteractionEnergy.h:871
virtual E_type getE_interLeft(const size_t i1, const size_t j1, const size_t i2, const size_t j2) const =0
virtual bool isAccessible1(const size_t i) const
Definition InteractionEnergy.h:858
virtual E_type getE_danglingLeft(const size_t i1, const size_t i2) const =0
virtual Z_type getBoltzmannWeight(const E_type energy) const
Definition InteractionEnergy.h:786
InteractionEnergy(const Accessibility &accS1, const ReverseAccessibility &accS2, const size_t maxInternalLoopSize1, const size_t maxInternalLoopSize2, const E_type energyAdd, const bool energyWithDangle, const bool internalLoopGU)
Definition InteractionEnergy.h:639
virtual const ReverseAccessibility & getAccessibility2() const
Definition InteractionEnergy.h:766
virtual bool areComplementary(const size_t i1, const size_t i2) const
Definition InteractionEnergy.h:687
virtual E_type getE_endRight(const size_t j1, const size_t j2) const =0
virtual E_type getE_multiHelix(const size_t j1, const size_t j2) const =0
const size_t getMaxInternalLoopSize1() const
Definition InteractionEnergy.h:463
virtual E_type getES2(const size_t i2, const size_t j2) const =0
const bool internalLoopGU
whether or not GU base pairs allowed in internal loops
Definition InteractionEnergy.h:608
virtual const Accessibility & getAccessibility1() const
Definition InteractionEnergy.h:756
static bool isAllowedLoopRegion(const RnaSequence &seq, const size_t i, const size_t j, const size_t maxInternalLoopSize)
Definition InteractionEnergy.h:670
virtual ~InteractionEnergy()
Definition InteractionEnergy.h:661
virtual bool isValidInternalLoop(const size_t i1, const size_t j1, const size_t i2, const size_t j2) const
Definition InteractionEnergy.h:729
virtual size_t size1() const
Definition InteractionEnergy.h:709
virtual E_type getED1(const size_t i1, const size_t j1) const
Definition InteractionEnergy.h:838
bool isInternalLoopGUallowed() const
Definition InteractionEnergy.h:746
virtual E_type getEall1() const =0
virtual Interaction::BasePair getBasePair(const size_t i1, const size_t i2) const
Definition InteractionEnergy.h:808
virtual E_type getES1(const size_t i1, const size_t j1) const =0
const size_t maxInternalLoopSize2
Definition InteractionEnergy.h:599
virtual Z_type getPr_danglingLeft(const size_t i1, const size_t j1, const size_t i2, const size_t j2) const
Definition InteractionEnergy.h:883
virtual size_t size2() const
Definition InteractionEnergy.h:719
virtual bool isGU(const size_t i1, const size_t i2) const
Definition InteractionEnergy.h:699
virtual E_type getE_danglingRight(const size_t j1, const size_t j2) const =0
ES_multi_mode
Definition InteractionEnergy.h:28
@ ES_multi_both
incorporate ES for both sequences
Definition InteractionEnergy.h:34
@ ES_multi_2only
incorporate ES for seq2 only
Definition InteractionEnergy.h:32
@ ES_multi_1only
incorporate ES for seq1 only
Definition InteractionEnergy.h:30
virtual E_type getED2(const size_t i2, const size_t j2) const
Definition InteractionEnergy.h:848
type of a base pair index encoding
Definition Interaction.h:33
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:28
Definition ReverseAccessibility.h:13
virtual E_type getED(const size_t from, const size_t to) const
Definition ReverseAccessibility.h:172
virtual const RnaSequence & getSequence() const
Definition ReverseAccessibility.h:147
size_t getReversedIndex(const size_t i) const
Definition ReverseAccessibility.h:195
virtual const AccessibilityConstraint & getAccConstraint() const
Definition ReverseAccessibility.h:159
Definition RnaSequence.h:29
static bool isGU(const RnaSequence &s1, const RnaSequence &s2, const size_t p1, const size_t p2)
Definition RnaSequence.h:610
const String_type & asString() const
Definition RnaSequence.h:442
static bool areComplementary(const RnaSequence &s1, const RnaSequence &s2, const size_t p1, const size_t p2)
Definition RnaSequence.h:587
size_t size() const
Definition RnaSequence.h:366
#define E_isNotINF(e)
check if a given energy is NOT set to E_INF
Definition general.h:137
#define E_2_Z(e)
convert E_type to Z_type
Definition general.h:119
#define toString(x)
Definition general.h:60
#define Z_2_E(e)
convert Z_type to E_type
Definition general.h:125
#define Z_exp
Definition general.h:90
#define Z_log
Definition general.h:89
Definition Accessibility.h:13
int E_type
type for energy values (energy + accessibility [ED]) (internally)
Definition general.h:78
double Z_type
type for probabilities, RT and Boltzmann values
Definition general.h:88
const E_type E_INF
Definition general.h:79
Definition InteractionEnergy.h:40
E_type dangleRight
the energy for the dangling ends at the right end of the interaction
Definition InteractionEnergy.h:53
E_type ED2
the energy penalty for making the interaction site accessible in seq2
Definition InteractionEnergy.h:49
E_type energyAdd
the energy shift requested by the user
Definition InteractionEnergy.h:59
E_type ED1
the energy penalty for making the interaction site accessible in seq1
Definition InteractionEnergy.h:47
E_type endRight
the energy penalty for the right end of the interaction
Definition InteractionEnergy.h:57
E_type loops
the energy for all intermolecular loops
Definition InteractionEnergy.h:43
E_type init
the energy penalty for initiating the interaction
Definition InteractionEnergy.h:45
E_type endLeft
the energy penalty for the left end of the interaction
Definition InteractionEnergy.h:55
E_type dangleLeft
the energy for the dangling ends at the left end of the interaction
Definition InteractionEnergy.h:51