2#ifndef INTARNA_SEEDHANDLERNOBULGE_H_
3#define INTARNA_SEEDHANDLERNOBULGE_H_
9#include <boost/unordered_map.hpp>
29 typedef boost::unordered_map< Interaction::BasePair, E_type, Interaction::BasePair::Hash >
SeedHash;
69 fillSeed(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2)
override;
94 getSeedE(
const size_t i1,
const size_t i2 )
const override;
106 isSeedBound(
const size_t i1,
const size_t i2 )
const override;
116 getSeedLength1(
const size_t i1,
const size_t i2 )
const override;
126 getSeedLength2(
const size_t i1,
const size_t i2 )
const override;
189#if INTARNA_IN_DEBUG_MODE
191 LOG(WARNING) <<
"explicit seeds definitions not supported by noBulge-seed handler (and thus ignored)";
216#if INTARNA_IN_DEBUG_MODE
217 if ( !(
isSeedBound(i1,i2) ) )
throw std::runtime_error(
"SeedHandlerNoBulge::traceBackSeed(i1="+
toString(i1)+
",i2="+
toString(i2)+
") no seed known");
225 for (
size_t k=1; (k+1)<seedBps; k++) {
236getSeedE(
const size_t i1,
const size_t i2 )
const
239 SeedHash::const_iterator seedData =
seedForLeftEnd.find( SeedHash::key_type(i1,i2) );
249isSeedBound(
const size_t i1,
const size_t i2 )
const
262#if INTARNA_IN_DEBUG_MODE
263 if ( !(
isSeedBound(i1,i2) ) )
throw std::runtime_error(
"SeedHandlerNoBulge::getSeedLength1(i1="+
toString(i1)+
",i2="+
toString(i2)+
") no seed known");
276#if INTARNA_IN_DEBUG_MODE
277 if ( !(
isSeedBound(i1,i2) ) )
throw std::runtime_error(
"SeedHandlerNoBulge::getSeedLength2(i1="+
toString(i1)+
",i2="+
toString(i2)+
") no seed known");
305 for(
auto e=bpE.begin(); e!=bpE.end(); e++) { seedEhybrid += *e; }
315 seedForLeftEnd[ SeedHash::key_type(j1+1-seedBP,j2+1-seedBP) ] = seedEhybrid ;
Definition InteractionEnergy.h:20
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 E_type getED1(const size_t i1, const size_t j1) const
Definition InteractionEnergy.h:838
virtual Interaction::BasePair getBasePair(const size_t i1, const size_t i2) const
Definition InteractionEnergy.h:808
virtual bool isGU(const size_t i1, const size_t i2) const
Definition InteractionEnergy.h:699
virtual E_type getED2(const size_t i2, const size_t j2) const
Definition InteractionEnergy.h:848
Definition Interaction.h:28
PairingVec basePairs
interacting indices
Definition Interaction.h:229
static const size_t lastPos
Definition RnaSequence.h:57
Definition SeedConstraint.h:20
E_type getMaxEhybrid() const
Definition SeedConstraint.h:334
size_t getMaxUnpaired2() const
Definition SeedConstraint.h:352
E_type getMaxE() const
Definition SeedConstraint.h:316
const std::string & getExplicitSeeds() const
Definition SeedConstraint.h:424
bool isGUendAllowed() const
Definition SeedConstraint.h:451
size_t getBasePairs() const
Definition SeedConstraint.h:307
E_type getMaxED() const
Definition SeedConstraint.h:325
size_t getMaxUnpaired1() const
Definition SeedConstraint.h:343
Definition SeedHandlerNoBulge.h:21
virtual void traceBackSeed(Interaction &interaction, const size_t i1, const size_t i2) const override
Definition SeedHandlerNoBulge.h:211
std::vector< E_type > StackingEnergyList
container to store stacking energies of seed base pairs
Definition SeedHandlerNoBulge.h:26
virtual size_t getSeedLength1(const size_t i1, const size_t i2) const override
Definition SeedHandlerNoBulge.h:260
virtual size_t getSeedLength2(const size_t i1, const size_t i2) const override
Definition SeedHandlerNoBulge.h:274
SeedHandlerNoBulge(const InteractionEnergy &energy, const SeedConstraint &seedConstraint)
Definition SeedHandlerNoBulge.h:181
virtual E_type getSeedE(const size_t i1, const size_t i2) const override
Definition SeedHandlerNoBulge.h:236
virtual size_t fillSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2) override
virtual bool guaranteesStackOnlySeeds() const override
Definition SeedHandlerNoBulge.h:325
virtual ~SeedHandlerNoBulge() override
Definition SeedHandlerNoBulge.h:201
boost::unordered_map< Interaction::BasePair, E_type, Interaction::BasePair::Hash > SeedHash
container type for sparse seed information
Definition SeedHandlerNoBulge.h:29
void storeSeed(const size_t j1, const size_t j2, const StackingEnergyList &bpE)
Definition SeedHandlerNoBulge.h:288
virtual bool updateToNextSeed(size_t &i1, size_t &i2, const size_t i1min=0, const size_t i1max=RnaSequence::lastPos, const size_t i2min=0, const size_t i2max=RnaSequence::lastPos) const override
virtual bool isSeedBound(const size_t i1, const size_t i2) const override
Definition SeedHandlerNoBulge.h:249
SeedHash seedForLeftEnd
container to store seeds' hybridization energies
Definition SeedHandlerNoBulge.h:32
Definition SeedHandler.h:17
const SeedConstraint & seedConstraint
the seed constraint to be applied
Definition SeedHandler.h:209
const InteractionEnergy & energy
the used energy function
Definition SeedHandler.h:206
virtual const SeedConstraint & getConstraint() const
Definition SeedHandler.h:244
#define toString(x)
Definition general.h:60
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