2#ifndef INTARNA_HELIXHANDLERUNPAIRED_H_
3#define INTARNA_HELIXHANDLERUNPAIRED_H_
9#include <boost/multi_array.hpp>
36 typedef boost::array<HelixRecMatrix::index, 3>
HelixIndex;
89 fillHelix(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2 );
101 fillHelixSeed(
const size_t i1,
const size_t j1,
const size_t i2,
const size_t j2);
139 getHelixE(
const size_t i1,
const size_t i2 )
const;
180 getHelixLength1(
const size_t i1,
const size_t i2,
const size_t bp )
const;
191 getHelixLength2(
const size_t i1,
const size_t i2,
const size_t bp )
const;
227 getBestBP(
const size_t i1,
const size_t i2)
const;
241 getHelixE(
const size_t i1,
const size_t i2,
const size_t bp);
255 setHelixPair(
const size_t i1,
const size_t i2,
const size_t bp
256 ,
const E_type E,
const size_t length );
327 ,
const size_t i1,
const size_t i2,
const size_t bp);
372 , helixConstraint(helixConstraint)
373 , seedHandler(seedHandler)
380 if (seedHandler != NULL) {
381 setSeedHandler(*seedHandler);
416getBestBP(
const size_t i1,
const size_t i2)
const
430#if INTARNA_IN_DEBUG_MODE
431 if ( i1 <
offset1 )
throw std::runtime_error(
"HelixHandlerUnpaired::traceBackHelix(i1="+
toString(i1)+
") is out of range (>"+
toString(
offset1)+
")");
433 if ( i2 <
offset2 )
throw std::runtime_error(
"HelixHandlerUnpaired::traceBackHelix(i2="+
toString(i2)+
") is out of range (>"+
toString(
offset2)+
")");
435 if (
E_isINF(
getHelixE(i1,i2) ) )
throw std::runtime_error(
"HelixHandlerUnpaired::traceBackHelix(i1="+
toString(i1)+
",i2="+
toString(i2)+
") no helix known (E_INF)");
451getHelixE(
const size_t i1,
const size_t i2)
const
492getHelixLength1(
const size_t i1,
const size_t i2,
const size_t bp)
const {
498 {{(HelixRecMatrix::index) i1, (HelixRecMatrix::index) i2, (HelixRecMatrix::index) bp}})).second);
506getHelixLength2(
const size_t i1,
const size_t i2,
const size_t bp)
const
513 {{(HelixRecMatrix::index) i1, (HelixRecMatrix::index) i2, (HelixRecMatrix::index) bp}})).second);
542getHelixE(
const size_t i1,
const size_t i2,
const size_t bp)
548 return helixE_rec(
HelixIndex({{(HelixRecMatrix::index) i1, (HelixRecMatrix::index) i2, (HelixRecMatrix::index) bp}})).first;
557setHelixPair(
const size_t i1,
const size_t i2,
const size_t bp,
const E_type E,
const size_t length)
560 (HelixRecMatrix::index) i1
561 , (HelixRecMatrix::index) i2
562 , (HelixRecMatrix::index) bp}}) ) = std::make_pair(E,
E_isINF(E) ? 0 : length);
Definition HelixConstraint.h:19
size_t getMaxLength1() const
Definition HelixConstraint.h:229
Definition HelixHandlerUnpaired.h:23
boost::array< HelixRecMatrix::index, 3 > HelixIndex
Definition HelixHandlerUnpaired.h:36
size_t decodeHelixSeedLength1(const size_t code) const
Definition HelixHandlerUnpaired.h:610
SeedHandler * seedHandler
used seedHandler
Definition HelixHandlerUnpaired.h:356
size_t offset2
offset for seq2 indices for the current matrices
Definition HelixHandlerUnpaired.h:353
size_t encodeHelixLength(const size_t l1, const size_t l2) const
Definition HelixHandlerUnpaired.h:570
size_t offset1
offset for seq1 indices for the current matrices
Definition HelixHandlerUnpaired.h:350
virtual size_t getHelixSeedLength2(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:532
const HelixConstraint & helixConstraint
the helix constraint to be applied
Definition HelixHandlerUnpaired.h:335
Matrix< std::pair< E_type, size_t > > HelixSeedMatrix
Definition HelixHandlerUnpaired.h:43
size_t encodeHelixSeedLength(const size_t l1, const size_t l2) const
Definition HelixHandlerUnpaired.h:600
virtual E_type getHelixSeedE(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:462
Matrix< std::tuple< E_type, size_t, size_t > > HelixMatrix
Definition HelixHandlerUnpaired.h:42
virtual size_t getHelixSeedLength1(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:522
void setSeedHandler(SeedHandler &seedHandler)
Definition HelixHandlerUnpaired.h:630
boost::multi_array< std::pair< E_type, size_t >, 3 > HelixRecMatrix
Definition HelixHandlerUnpaired.h:32
virtual size_t getHelixLength1(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:472
virtual const HelixConstraint & getConstraint() const
Definition HelixHandlerUnpaired.h:407
size_t getBestBP(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:416
size_t decodeHelixSeedLength2(const size_t code) const
Definition HelixHandlerUnpaired.h:620
void setHelixPair(const size_t i1, const size_t i2, const size_t bp, const E_type E, const size_t length)
Definition HelixHandlerUnpaired.h:557
virtual size_t fillHelixSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2)
virtual const InteractionEnergy & getInteractionEnergy() const
Definition HelixHandlerUnpaired.h:397
virtual size_t fillHelix(const size_t i1, const size_t j1, const size_t i2, const size_t j2)
size_t decodeHelixLength2(const size_t code) const
Definition HelixHandlerUnpaired.h:590
HelixMatrix helix
the helix mfe information for helix starting at (i1, i2)
Definition HelixHandlerUnpaired.h:344
HelixSeedMatrix helixSeed
the helix mfe information for helix with seed starting at (i1, i2)
Definition HelixHandlerUnpaired.h:347
virtual void traceBackHelixSeed(Interaction &interaction, const size_t i1, const size_t i2)
virtual size_t getHelixLength2(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:482
const InteractionEnergy & energy
the used energy function
Definition HelixHandlerUnpaired.h:332
virtual void traceBackHelix(Interaction &interaction, const size_t i1, const size_t i2)
Definition HelixHandlerUnpaired.h:425
virtual E_type getHelixE(const size_t i1, const size_t i2) const
Definition HelixHandlerUnpaired.h:451
virtual ~HelixHandlerUnpaired()
Definition HelixHandlerUnpaired.h:388
HelixRecMatrix helixE_rec
Definition HelixHandlerUnpaired.h:341
void traceBackHelix(Interaction &interaction, const size_t i1, const size_t i2, const size_t bp)
size_t decodeHelixLength1(const size_t code) const
Definition HelixHandlerUnpaired.h:580
HelixHandlerUnpaired(const InteractionEnergy &energy, const HelixConstraint &helixConstraint, SeedHandler *const seedHandler=NULL)
Definition HelixHandlerUnpaired.h:365
Definition HelixHandler.h:16
Definition InteractionEnergy.h:20
Definition Interaction.h:28
std::size_t size2() const noexcept
Definition Matrix.h:164
std::size_t size1() const noexcept
Definition Matrix.h:159
size_t getMaxLength1() const
Definition SeedConstraint.h:370
Definition SeedHandler.h:17
virtual const SeedConstraint & getConstraint() const
Definition SeedHandler.h:237
#define toString(x)
Definition general.h:60
#define E_isINF(e)
check if a given energy is set to E_INF
Definition general.h:143
Definition Accessibility.h:13
int E_type
type for energy values (energy + accessibility [ED]) (internally)
Definition general.h:78