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
31 virtual bool guaranteesStackOnlySeeds() const override;
32
33
41 , const bool deleteOnDestruction=true );
42
46 virtual ~SeedHandlerIdxOffset() override;
47
52 size_t getOffset1() const;
53
58 void setOffset1(size_t offset1);
59
64 size_t getOffset2() const;
65
70 void setOffset2(size_t offset2);
71
72
74
75
80 virtual
81 const SeedConstraint&
82 getConstraint() const override;
83
88 virtual
90 getInteractionEnergy() const override;
91
92
105 virtual
106 size_t
107 fillSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2) override;
108
121 virtual
122 void
123 traceBackSeed( Interaction & interaction, const size_t i1, const size_t i2) const override;
124
125
135 virtual
136 E_type
137 getSeedE( const size_t i1, const size_t i2 ) const override;
138
147 virtual
148 bool
149 isSeedBound( const size_t i1, const size_t i2 ) const override;
150
160 virtual
161 size_t
162 getSeedLength1( const size_t i1, const size_t i2 ) const override;
163
173 virtual
174 size_t
175 getSeedLength2( const size_t i1, const size_t i2 ) const override;
176
177
183 virtual
186
210 virtual
211 bool
212 updateToNextSeed( size_t & i1, size_t & i2
213 , const size_t i1min = 0, const size_t i1max = RnaSequence::lastPos
214 , const size_t i2min = 0, const size_t i2max = RnaSequence::lastPos
215 ) const override;
216
224 virtual
225 void
226 addSeeds( Interaction & i ) const override;
227
240 virtual
241 bool
242 areLoopOverlapping( const size_t i1, const size_t i2
243 , const size_t k1, const size_t k2 ) const override;
244
254 virtual
255 bool
256 isFeasibleSeedBasePair( const size_t i1
257 , const size_t i2
258 , const bool atEndOfSeed = false ) const override;
259
260protected:
261
264
267
270
273
276
279
280};
281
282
283
284
288
289
290inline
292SeedHandlerIdxOffset( SeedHandler * seedHandlerInstance, const bool deleteOnDestruction )
293 :
294 SeedHandler(seedHandlerInstance->getInteractionEnergy(), seedHandlerInstance->getConstraint() )
295 , seedHandlerOriginal( seedHandlerInstance )
296 , deleteOnDestruction( deleteOnDestruction )
297 , seedConstraintOffset( seedHandlerOriginal->getConstraint() )
298 , idxOffset1(0)
299 , idxOffset2(0)
300 , energyIdxOffset(seedHandlerInstance->getInteractionEnergy(),idxOffset1,idxOffset2)
301{
302}
303
305
306inline
314
316
317inline
318const SeedConstraint&
324
326
327inline
331{
332 return this->energyIdxOffset;
333}
334
336
337inline
338size_t
340fillSeed( const size_t i1min, const size_t i1max, const size_t i2min, const size_t i2max)
341{
342 return seedHandlerOriginal->fillSeed( i1min+idxOffset1, i1max+idxOffset1, i2min+idxOffset2, i2max+idxOffset2 );
343}
344
346
347inline
348void
350traceBackSeed( Interaction & interaction
351 , const size_t i1
352 , const size_t i2
353 ) const
354{
356}
357
359
360inline
361E_type
363getSeedE( const size_t i1, const size_t i2 ) const
364{
366}
367
369
370inline
371bool
373isSeedBound( const size_t i1, const size_t i2 ) const
374{
376}
377
379
380inline
381size_t
383getSeedLength1( const size_t i1, const size_t i2 ) const
384{
386}
387
389
390inline
391size_t
393getSeedLength2( const size_t i1, const size_t i2 ) const
394{
396}
397
399
400inline
401size_t
403getOffset1() const
404{
405 return idxOffset1;
406}
407
409
410inline
411size_t
413getOffset2() const
414{
415 return idxOffset2;
416}
417
419
420inline
421void
423setOffset1( const size_t offset )
424{
425#if INTARNA_IN_DEBUG_MODE
427 throw std::runtime_error("SeedHandlerIdxOffset.setOffset1("+toString(offset)
428 +") offset > seq1.length "+toString(seedHandlerOriginal->getInteractionEnergy().size1()));
429 }
430#endif
431 // set idx offset
432 this->idxOffset1 = offset;
434 // update ranges of seed constraint
436}
437
439
440inline
441void
443setOffset2( const size_t offset )
444{
445#if INTARNA_IN_DEBUG_MODE
447 throw std::runtime_error("SeedHandlerIdxOffset.setOffset2("+toString(offset)
448 +") offset > seq2.length "+toString(seedHandlerOriginal->getInteractionEnergy().size2()));
449 }
450#endif
451 // set idx offset
452 this->idxOffset2 = offset;
454 // update ranges of seed constraint
456}
457
459
460inline
467
469
470inline
471bool
473updateToNextSeed( size_t & i1_out, size_t & i2_out
474 , const size_t i1min, const size_t i1max
475 , const size_t i2min, const size_t i2max
476 ) const
477{
478 size_t i1 = i1_out+idxOffset1, i2 = i2_out+idxOffset2;
479
481 , i1min+idxOffset1,(i1max<energy.size1()?i1max+idxOffset1:i1max)
482 , i2min+idxOffset2,(i2max<energy.size2()?i2max+idxOffset2:i2max) ))
483 {
484 i1_out = i1-idxOffset1;
485 i2_out = i2-idxOffset2;
486 return true;
487 }
488 return false;
489}
490
492
493inline
494void
500
502
503inline
504bool
506areLoopOverlapping( const size_t i1, const size_t i2
507 , const size_t k1, const size_t k2 ) const
508{
510}
511
513
514inline
515bool
517isFeasibleSeedBasePair( const size_t i1
518 , const size_t i2
519 , const bool atEndOfSeed ) const
520{
522}
523
525
526inline bool
531
532} // namespace
533
534#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
size_t getOffset1() const
Definition SeedHandlerIdxOffset.h:403
virtual size_t fillSeed(const size_t i1, const size_t j1, const size_t i2, const size_t j2) override
Definition SeedHandlerIdxOffset.h:340
SeedConstraint seedConstraintOffset
the index shifted seed constraint
Definition SeedHandlerIdxOffset.h:269
virtual bool areLoopOverlapping(const size_t i1, const size_t i2, const size_t k1, const size_t k2) const override
Definition SeedHandlerIdxOffset.h:506
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
Definition SeedHandlerIdxOffset.h:473
virtual ~SeedHandlerIdxOffset() override
Definition SeedHandlerIdxOffset.h:307
virtual size_t getSeedLength2(const size_t i1, const size_t i2) const override
Definition SeedHandlerIdxOffset.h:393
virtual const InteractionEnergy & getInteractionEnergy() const override
Definition SeedHandlerIdxOffset.h:330
size_t idxOffset1
offset for indices in seq1
Definition SeedHandlerIdxOffset.h:272
virtual SeedHandler & getOriginalSeedHandler()
Definition SeedHandlerIdxOffset.h:463
SeedHandler * seedHandlerOriginal
the index shifted seed handler
Definition SeedHandlerIdxOffset.h:263
void setOffset2(size_t offset2)
Definition SeedHandlerIdxOffset.h:443
virtual const SeedConstraint & getConstraint() const override
Definition SeedHandlerIdxOffset.h:320
InteractionEnergyIdxOffset energyIdxOffset
dedicated energy object to avoid
Definition SeedHandlerIdxOffset.h:278
void setOffset1(size_t offset1)
Definition SeedHandlerIdxOffset.h:423
virtual E_type getSeedE(const size_t i1, const size_t i2) const override
Definition SeedHandlerIdxOffset.h:363
virtual size_t getSeedLength1(const size_t i1, const size_t i2) const override
Definition SeedHandlerIdxOffset.h:383
virtual void addSeeds(Interaction &i) const override
Definition SeedHandlerIdxOffset.h:496
SeedHandlerIdxOffset(SeedHandler *seedHandler, const bool deleteOnDestruction=true)
Definition SeedHandlerIdxOffset.h:292
virtual bool isFeasibleSeedBasePair(const size_t i1, const size_t i2, const bool atEndOfSeed=false) const override
Definition SeedHandlerIdxOffset.h:517
virtual void traceBackSeed(Interaction &interaction, const size_t i1, const size_t i2) const override
Definition SeedHandlerIdxOffset.h:350
size_t idxOffset2
offset for indices in seq2
Definition SeedHandlerIdxOffset.h:275
size_t getOffset2() const
Definition SeedHandlerIdxOffset.h:413
virtual bool isSeedBound(const size_t i1, const size_t i2) const override
Definition SeedHandlerIdxOffset.h:373
virtual bool guaranteesStackOnlySeeds() const override
Definition SeedHandlerIdxOffset.h:527
const bool deleteOnDestruction
whether or not the original seed handler is to be destroyed
Definition SeedHandlerIdxOffset.h:266
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 guaranteesStackOnlySeeds() const
Definition SeedHandler.h:262
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:206
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:244
virtual size_t getSeedLength1(const size_t i1, const size_t i2) const =0
virtual const InteractionEnergy & getInteractionEnergy() const
Definition SeedHandler.h:254
#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