An RNA secondary structure. More...
#include <rna_structure.hh>
Public Types | |
typedef std::pair< size_t, size_t > | bp_t |
base pair type | |
typedef std::set< bp_t, std::less< bp_t > > | bps_t |
base pair set type | |
typedef bps_t::const_iterator | const_iterator |
Check whether a loop contains a position. | |
Public Member Functions | |
RnaStructure () | |
construct empty | |
RnaStructure (const std::string &structure) | |
construct from dot-bracket string | |
bool | operator== (const RnaStructure &s) const |
Equality operator. | |
bool | contains (const bp_t &x) const |
Base pair for membership test. | |
size_t | length () const |
sequence length | |
size_t | size () const |
number of base pairs | |
void | insert (const bp_t &bp) |
insert base pair | |
void | remove (const bp_t &bp) |
remove base pair | |
void | clear () |
clear structure set structure to empty | |
const_iterator | begin () const |
begin of base pair set | |
const_iterator | end () const |
end of base pair set | |
std::string | to_string () const |
convert to dot-bracket string | |
bool | empty () const |
Check for empty structure / class PLAIN. | |
bool | nested () const |
Check for nested structure / class NESTED. | |
bool | crossing () const |
Check for crossing structure / class CROSSING. | |
void | remove_lonely_pairs () |
remove lonely base pairs | |
void | apply_bpfilter (const BasePairFilter::Filter &filter) |
apply base pair filter | |
Static Public Member Functions | |
static bool | empty (const bps_t &bps) |
Check base pair set for empty structure / class PLAIN. | |
static bool | nested (const bps_t &bps) |
Check for class NESTED. | |
static bool | crossing (const bps_t &bps) |
Check for class CROSSING. |
An RNA secondary structure.
Represents a structure (for a sequence of given length) as set of base pairs. Supports parsing of dot-bracket strings (potentially including pseudoknots) and traversal of base pairs.
Generally, base pairs (i,j) have to be oriented, i.e. i<j; compare private method assert_valid_bp()
typedef bps_t::const_iterator LocARNA::RnaStructure::const_iterator |
Check whether a loop contains a position.
k | position |
x | loop; (0,length+1) means external loop |
Definition: the loop enclosed by (i,j) contains k iff i<k<j and there is no base pair (i',j') in the structure, where i<i'<k<j'<j. Note that we don't require (i,j) to be element of the structure.
k can be member of more than one loop unless nested(). constant iterator over base pairs
LocARNA::RnaStructure::RnaStructure | ( | const std::string & | structure | ) | [explicit] |
construct from dot-bracket string
structure | dot-bracket string |
We recognize different bracket pairs: (),[],{},<>, and letter pairs Aa, Bb, etc ; the structure string can encode crossing base pairs like in
.(((..[[.AA...)))..]]..aa.
The parser ignores all other symbols ( including _-,:.~ ) such that e.g. Vienna dot-bracket strings and WUSS notation is parsed correctly. Note that the parser is more general than the WUSS-specification, which forbids crossing of different bracket-symbols like [(...]), so that other common pseudoknot specifications are recognized as well.
void LocARNA::RnaStructure::apply_bpfilter | ( | const BasePairFilter::Filter & | filter | ) |
apply base pair filter
Applies a base pair filter to all base pairs; removes all base pairs that don't pass; in place.
const_iterator LocARNA::RnaStructure::begin | ( | ) | const [inline] |
begin of base pair set
bool LocARNA::RnaStructure::contains | ( | const bp_t & | x | ) | const [inline] |
Base pair for membership test.
x | base pair |
bool LocARNA::RnaStructure::crossing | ( | const bps_t & | bps | ) | [static] |
Check for class CROSSING.
bps | set of base pairs |
A structure is in the crossing class if no base pairs share common ends.
bool LocARNA::RnaStructure::crossing | ( | ) | const [inline] |
Check for crossing structure / class CROSSING.
bool LocARNA::RnaStructure::empty | ( | const bps_t & | bps | ) | [static] |
Check base pair set for empty structure / class PLAIN.
bps | set of base pairs |
bool LocARNA::RnaStructure::empty | ( | ) | const [inline] |
Check for empty structure / class PLAIN.
const_iterator LocARNA::RnaStructure::end | ( | ) | const [inline] |
end of base pair set
void LocARNA::RnaStructure::insert | ( | const bp_t & | bp | ) | [inline] |
insert base pair
bp | base pair |
bool LocARNA::RnaStructure::nested | ( | const bps_t & | bps | ) | [static] |
Check for class NESTED.
bps | set of base pairs |
A structure is in the class nested if no base pairs cross or share common ends.
bool LocARNA::RnaStructure::nested | ( | ) | const [inline] |
Check for nested structure / class NESTED.
bool LocARNA::RnaStructure::operator== | ( | const RnaStructure & | s | ) | const [inline] |
Equality operator.
s | rna structure to be compared |
void LocARNA::RnaStructure::remove | ( | const bp_t & | bp | ) | [inline] |
remove base pair
bp | base pair |
remove lonely base pairs
Removes the lonely base pairs in the structure; in place
std::string LocARNA::RnaStructure::to_string | ( | ) | const |
convert to dot-bracket string
If the structure contains crossing base pairs, such base pairs are encoded using more than one pair of bracket symbols. ( see constructor from dot bracket string ). The use of bracket symbols is greedy from left to right, following the order defined in the class (by constants open_symbols_ and close_symbols_).