IntaRNA 3.4.1
RNA-RNA interaction prediction | C++ API
Loading...
Searching...
No Matches
SeedHandlerIdxOffset.h
Go to the documentation of this file.
1
2#ifndef INTARNA_SEEDHANDLERIDXOFFSET_H_
3#define INTARNA_SEEDHANDLERIDXOFFSET_H_
4
7
8#include <boost/multi_array.hpp>
9
10
11
12namespace IntaRNA {
13
23{
24
25public:
26
34 , const bool deleteOnDestruction=true );
35
39 virtual ~SeedHandlerIdxOffset();
40
45 size_t getOffset1() const;
46
51 void setOffset1(size_t offset1);
52
57 size_t getOffset2() const;
58
63 void setOffset2(size_t offset2);
64
65
67
68
73 virtual
74 const SeedConstraint&
75 getConstraint() const;
76
81 virtual
84
85
98 virtual
99 size_t
100 fillSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2);
101
114 virtual
115 void
116 traceBackSeed( Interaction & interaction, const size_t i1, const size_t i2) const;
117
118
128 virtual
129 E_type
130 getSeedE( const size_t i1, const size_t i2 ) const;
131
140 virtual
141 bool
142 isSeedBound( const size_t i1, const size_t i2 ) const;
143
153 virtual
154 size_t
155 getSeedLength1( const size_t i1, const size_t i2 ) const;
156
166 virtual
167 size_t
168 getSeedLength2( const size_t i1, const size_t i2 ) const;
169
170
176 virtual
179
203 virtual
204 bool
205 updateToNextSeed( size_t & i1, size_t & i2
206 , const size_t i1min = 0, const size_t i1max = RnaSequence::lastPos
207 , const size_t i2min = 0, const size_t i2max = RnaSequence::lastPos
208 ) const;
209
217 virtual
218 void
219 addSeeds( Interaction & i ) const;
220
233 virtual
234 bool
235 areLoopOverlapping( const size_t i1, const size_t i2
236 , const size_t k1, const size_t k2 ) const;
237
247 virtual
248 bool
249 isFeasibleSeedBasePair( const size_t i1
250 , const size_t i2
251 , const bool atEndOfSeed = false ) const;
252
253protected:
254
257
260
263
266
269
272
273};
274
275
276
277
281
282
283inline
285SeedHandlerIdxOffset( SeedHandler * seedHandlerInstance, const bool deleteOnDestruction )
286 :
287 SeedHandler(seedHandlerInstance->getInteractionEnergy(), seedHandlerInstance->getConstraint() )
288 , seedHandlerOriginal( seedHandlerInstance )
289 , deleteOnDestruction( deleteOnDestruction )
290 , seedConstraintOffset( seedHandlerOriginal->getConstraint() )
291 , idxOffset1(0)
292 , idxOffset2(0)
293 , energyIdxOffset(seedHandlerInstance->getInteractionEnergy(),idxOffset1,idxOffset2)
294{
295}
296
298
299inline
307
309
310inline
311const SeedConstraint&
317
319
320inline
324{
325 return this->energyIdxOffset;
326}
327
329
330inline
331size_t
333fillSeed( const size_t i1min, const size_t i1max, const size_t i2min, const size_t i2max)
334{
335 return seedHandlerOriginal->fillSeed( i1min+idxOffset1, i1max+idxOffset1, i2min+idxOffset2, i2max+idxOffset2 );
336}
337
339
340inline
341void
343traceBackSeed( Interaction & interaction
344 , const size_t i1
345 , const size_t i2
346 ) const
347{
349}
350
352
353inline
354E_type
356getSeedE( const size_t i1, const size_t i2 ) const
357{
359}
360
362
363inline
364bool
366isSeedBound( const size_t i1, const size_t i2 ) const
367{
369}
370
372
373inline
374size_t
376getSeedLength1( const size_t i1, const size_t i2 ) const
377{
379}
380
382
383inline
384size_t
386getSeedLength2( const size_t i1, const size_t i2 ) const
387{
389}
390
392
393inline
394size_t
396getOffset1() const
397{
398 return idxOffset1;
399}
400
402
403inline
404size_t
406getOffset2() const
407{
408 return idxOffset2;
409}
410
412
413inline
414void
416setOffset1( const size_t offset )
417{
418#if INTARNA_IN_DEBUG_MODE
420 throw std::runtime_error("SeedHandlerIdxOffset.setOffset1("+toString(offset)
421 +") offset > seq1.length "+toString(seedHandlerOriginal->getInteractionEnergy().size1()));
422 }
423#endif
424 // set idx offset
425 this->idxOffset1 = offset;
427 // update ranges of seed constraint
429}
430
432
433inline
434void
436setOffset2( const size_t offset )
437{
438#if INTARNA_IN_DEBUG_MODE
440 throw std::runtime_error("SeedHandlerIdxOffset.setOffset2("+toString(offset)
441 +") offset > seq2.length "+toString(seedHandlerOriginal->getInteractionEnergy().size2()));
442 }
443#endif
444 // set idx offset
445 this->idxOffset2 = offset;
447 // update ranges of seed constraint
449}
450
452
453inline
460
462
463inline
464bool
466updateToNextSeed( size_t & i1_out, size_t & i2_out
467 , const size_t i1min, const size_t i1max
468 , const size_t i2min, const size_t i2max
469 ) const
470{
471 size_t i1 = i1_out+idxOffset1, i2 = i2_out+idxOffset2;
472
474 , i1min+idxOffset1,(i1max<energy.size1()?i1max+idxOffset1:i1max)
475 , i2min+idxOffset2,(i2max<energy.size2()?i2max+idxOffset2:i2max) ))
476 {
477 i1_out = i1-idxOffset1;
478 i2_out = i2-idxOffset2;
479 return true;
480 }
481 return false;
482}
483
485
486inline
487void
493
495
496inline
497bool
499areLoopOverlapping( const size_t i1, const size_t i2
500 , const size_t k1, const size_t k2 ) const
501{
503}
504
506
507inline
508bool
510isFeasibleSeedBasePair( const size_t i1
511 , const size_t i2
512 , const bool atEndOfSeed ) const
513{
515}
516
518
519} // namespace
520
521#endif /* SEEDHANDLERIDXOFFSET_H_ */
IndexRangeList shift(const int indexShift, const size_t indexMax) const
Definition InteractionEnergyIdxOffset.h:18
void setOffset1(size_t offset1)
Definition InteractionEnergyIdxOffset.h:552
void setOffset2(size_t offset2)
Definition InteractionEnergyIdxOffset.h:578
Definition InteractionEnergy.h:20
virtual size_t size1() const
Definition InteractionEnergy.h:709
virtual size_t size2() const
Definition InteractionEnergy.h:719
Definition Interaction.h:28
static const size_t lastPos
Definition RnaSequence.h:57
Definition SeedConstraint.h:20
const IndexRangeList & getRanges2() const
Definition SeedConstraint.h:397
const IndexRangeList & getRanges1() const
Definition SeedConstraint.h:388
Definition SeedHandlerIdxOffset.h:23
virtual size_t getSeedLength2(const size_t i1, const size_t i2) const
Definition SeedHandlerIdxOffset.h:386
virtual void addSeeds(Interaction &i) const
Definition SeedHandlerIdxOffset.h:489
size_t getOffset1() const
Definition SeedHandlerIdxOffset.h:396
SeedConstraint seedConstraintOffset
the index shifted seed constraint
Definition SeedHandlerIdxOffset.h:262
virtual const InteractionEnergy & getInteractionEnergy() const
Definition SeedHandlerIdxOffset.h:323
virtual bool areLoopOverlapping(const size_t i1, const size_t i2, const size_t k1, const size_t k2) const
Definition SeedHandlerIdxOffset.h:499
virtual size_t fillSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2)
Definition SeedHandlerIdxOffset.h:333
virtual void traceBackSeed(Interaction &interaction, const size_t i1, const size_t i2) const
Definition SeedHandlerIdxOffset.h:343
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
Definition SeedHandlerIdxOffset.h:466
size_t idxOffset1
offset for indices in seq1
Definition SeedHandlerIdxOffset.h:265
virtual SeedHandler & getOriginalSeedHandler()
Definition SeedHandlerIdxOffset.h:456
virtual const SeedConstraint & getConstraint() const
Definition SeedHandlerIdxOffset.h:313
SeedHandler * seedHandlerOriginal
the index shifted seed handler
Definition SeedHandlerIdxOffset.h:256
void setOffset2(size_t offset2)
Definition SeedHandlerIdxOffset.h:436
InteractionEnergyIdxOffset energyIdxOffset
dedicated energy object to avoid
Definition SeedHandlerIdxOffset.h:271
void setOffset1(size_t offset1)
Definition SeedHandlerIdxOffset.h:416
virtual E_type getSeedE(const size_t i1, const size_t i2) const
Definition SeedHandlerIdxOffset.h:356
SeedHandlerIdxOffset(SeedHandler *seedHandler, const bool deleteOnDestruction=true)
Definition SeedHandlerIdxOffset.h:285
virtual size_t getSeedLength1(const size_t i1, const size_t i2) const
Definition SeedHandlerIdxOffset.h:376
size_t idxOffset2
offset for indices in seq2
Definition SeedHandlerIdxOffset.h:268
size_t getOffset2() const
Definition SeedHandlerIdxOffset.h:406
virtual ~SeedHandlerIdxOffset()
Definition SeedHandlerIdxOffset.h:300
virtual bool isSeedBound(const size_t i1, const size_t i2) const
Definition SeedHandlerIdxOffset.h:366
virtual bool isFeasibleSeedBasePair(const size_t i1, const size_t i2, const bool atEndOfSeed=false) const
Definition SeedHandlerIdxOffset.h:510
const bool deleteOnDestruction
whether or not the original seed handler is to be destroyed
Definition SeedHandlerIdxOffset.h:259
Definition SeedHandler.h:17
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
virtual E_type getSeedE(const size_t i1, const size_t i2) const =0
virtual size_t getSeedLength2(const size_t i1, const size_t i2) const =0
virtual void traceBackSeed(Interaction &interaction, const size_t i1, const size_t i2) const =0
virtual bool isSeedBound(const size_t i1, const size_t i2) const =0
virtual bool areLoopOverlapping(const size_t i1, const size_t i2, const size_t k1, const size_t k2) const
virtual size_t fillSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2)=0
const InteractionEnergy & energy
the used energy function
Definition SeedHandler.h:199
virtual void addSeeds(Interaction &i) const
virtual bool isFeasibleSeedBasePair(const size_t i1, const size_t i2, const bool atEndOfSeed=false) const
virtual const SeedConstraint & getConstraint() const
Definition SeedHandler.h:237
virtual size_t getSeedLength1(const size_t i1, const size_t i2) const =0
virtual const InteractionEnergy & getInteractionEnergy() const
Definition SeedHandler.h:247
#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