2#ifndef INTARNA_RNASEQUENCE_H_
3#define INTARNA_RNASEQUENCE_H_
12#ifndef VIENNA_RNA_PAIR_MAT_H
13#define VIENNA_RNA_PAIR_MAT_H
15 #include <ViennaRNA/pair_mat.h>
255 const size_t p1,
const size_t p2 );
269 const size_t p1,
const size_t p2 );
311 const std::string &
id
312 ,
const std::string & seqString
314 ,
const size_t seqNumber )
317 , seqString(getUpperCase(seqString))
318 , seqCode(getCodeForString(this->seqString))
319 , ambiguous(this->seqString.contains(
'N'))
321 , seqNumber(seqNumber)
323#if INTARNA_IN_DEBUG_MODE
324 if (
id.
size() == 0) {
325 throw std::runtime_error(
"RnaSequence::RnaSequence : id empty");
328 throw std::runtime_error(
"RnaSequence::RnaSequence : seqString empty");
378#if INTARNA_IN_DEBUG_MODE
380 throw std::runtime_error(
"RnaSequence::getInOutIndex : index "+
toString(i)+
" >= length "+
toString(
size()));
386 if (idxPos0<0 && p>=0) {
405 size_t p = (size_t)(i -
idxPos0);
407 if (idxPos0<0 && i>=0) {
426#if INTARNA_IN_DEBUG_MODE
428 throw std::runtime_error(
"RnaSequence::getReversedIndex : index "+
toString(i)+
" >= seq.length "+
toString(
size()));
432 return this->
size() -i -1;
488#if INTARNA_IN_DEBUG_MODE
495 for (
size_t i=0; i<
seqString.size(); ++i)
499 if (seqRet[i]==
'T') {
522 for (
size_t i=0; i<
seqString.size(); ++i)
571#if INTARNA_IN_DEBUG_MODE
574 throw std::runtime_error(
"RnaSequence::getCodeForChar() : unsupported nucleotide character '"+
toString(nucleotide)+
"' in sequence");
579 return (
Code_type)encode_char(nucleotide);
588 const size_t p1,
const size_t p2 )
590#if INTARNA_IN_DEBUG_MODE
593 throw std::runtime_error(
"RnaSequence::areComplementary : index positions p1/p2 ("
595 +
") are out of bounds s1/s2 ("
611 const size_t p1,
const size_t p2 )
613#if INTARNA_IN_DEBUG_MODE
616 throw std::runtime_error(
"RnaSequence::areComplementary : index positions p1/p2 ("
618 +
") are out of bounds s1/s2 ("
644 && this->
id == rna2.
id
Definition RnaSequence.h:29
virtual ~RnaSequence()
Definition RnaSequence.h:337
long getInOutIndex(const size_t i) const
Definition RnaSequence.h:376
static bool isValidSequenceIUPAC(const std::string &sequence)
Definition RnaSequence.h:546
static int bpGUcodes[]
codes for G and U to check for GU base pairs
Definition RnaSequence.h:280
const CodeSeq_type & asCodes() const
Definition RnaSequence.h:454
const bool operator==(const RnaSequence &rna2) const
Definition RnaSequence.h:636
long idxPos0
Input/output index of the first sequence position.
Definition RnaSequence.h:295
static String_type getUpperCase(const std::string &seqString)
Definition RnaSequence.h:486
static const std::string SequenceAlphabetIUPAC
Definition RnaSequence.h:48
CodeSeq_type seqCode
Integer encoding of the sequence.
Definition RnaSequence.h:289
size_t getReversedIndex(const size_t i) const
Definition RnaSequence.h:424
const std::string & getId() const
Definition RnaSequence.h:346
std::vector< Code_type > CodeSeq_type
type for sequence integer encoded representation
Definition RnaSequence.h:41
const size_t getSeqNumber() const
Definition RnaSequence.h:356
RnaSequence(const std::string &id, const std::string &seqString, const long idxPos0=1, const size_t seqNumber=1)
Definition RnaSequence.h:310
bool ambiguous
Whether or not the sequence contains ambiguous nucleotide encodings.
Definition RnaSequence.h:292
static std::locale codeLocale
the locale to use for integer encoding
Definition RnaSequence.h:277
friend std::ostream & operator<<(std::ostream &out, const RnaSequence &rna)
Definition RnaSequence.h:556
static bool isGU(const RnaSequence &s1, const RnaSequence &s2, const size_t p1, const size_t p2)
Definition RnaSequence.h:610
static const size_t lastPos
Definition RnaSequence.h:57
const String_type & asString() const
Definition RnaSequence.h:442
bool isAmbiguous() const
Definition RnaSequence.h:464
String_type seqString
The sequence's string representation.
Definition RnaSequence.h:286
size_t getIndex(const long i) const
Definition RnaSequence.h:398
static bool isValidSequence(const std::string &sequence)
Definition RnaSequence.h:535
static const std::string SequenceAlphabet
Definition RnaSequence.h:53
short Code_type
Definition RnaSequence.h:38
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
size_t seqNumber
Definition RnaSequence.h:299
static Code_type getCodeForChar(const char nucleotide)
Definition RnaSequence.h:569
std::string String_type
type for sequence string representation
Definition RnaSequence.h:34
static CodeSeq_type getCodeForString(const String_type &seqString)
Definition RnaSequence.h:517
std::string id
ID of this sequence.
Definition RnaSequence.h:283
#define toString(x)
Definition general.h:60
Definition Accessibility.h:13
std::ostream & operator<<(std::ostream &out, const AccessibilityConstraint &c)
Definition AccessibilityConstraint.h:481