SeqAn3
seqan3::wuss< SIZE > Class Template Reference

The WUSS structure alphabet of the characters .<>:,-_~;()[]{}AaBbCcDd... More...

#include <seqan3/alphabet/structure/wuss.hpp>

Inheritance diagram for seqan3::wuss< SIZE >:
[legend]

Public Types

using char_type = char_t
 The type of the alphabet when converted to char (e.g. via to_char()).
 
using rank_type = detail::min_viable_uint_t< size - 1 >
 The type of the alphabet when represented as a number (e.g. via to_rank()).
 

Public Member Functions

Constructors, destructor and assignment
constexpr wuss ()
 
constexpr wuss (wuss const &)=default
 
constexpr wuss (wuss &&)=default
 
constexpr wussoperator= (wuss const &)=default
 
constexpr wussoperator= (wuss &&)=default
 
 ~wuss ()=default
 
Read functions
constexpr char_type to_char () const noexcept
 Return the letter as a character of char_type. More...
 
constexpr rank_type to_rank () const noexcept
 Return the letter's numeric value (rank in the alphabet). More...
 
Write functions
constexpr wuss< SIZE > & assign_char (std::conditional_t< std::Same< char_type, void >, char, char_type > const c) noexcept
 Assign from a character. More...
 
constexpr wuss< SIZE > & assign_rank (rank_type const c) noexcept
 Assign from a numeric value. More...
 

Static Public Attributes

static detail::min_viable_uint_t< size > constexpr value_size
 The size of the alphabet, i.e. the number of different values it can take.
 
Letter values

Static member "letters" that can be assigned to the alphabet or used in aggregate initialization.

Similar to an Enum interface. Don't worry about the internal_type. The pseudoknot letters are not accessible in this way, please use the string literals.

static this_type_deferred constexpr UNPAIRED = this_type_deferred{}.assign_char('.')
 . not paired (insertion to known structure)
 
static this_type_deferred constexpr UNPAIRED1 = this_type_deferred{}.assign_char(':')
 : not paired (external residue outside structure)
 
static this_type_deferred constexpr UNPAIRED2 = this_type_deferred{}.assign_char(',')
 , not paired (multifurcation loop)
 
static this_type_deferred constexpr UNPAIRED3 = this_type_deferred{}.assign_char('-')
 - not paired (bulge, interior loop)
 
static this_type_deferred constexpr UNPAIRED4 = this_type_deferred{}.assign_char('_')
 _ not paired (hairpin loop)
 
static this_type_deferred constexpr UNPAIRED5 = this_type_deferred{}.assign_char('~')
 ~ not paired (due to local alignment)
 
static this_type_deferred constexpr UNPAIRED6 = this_type_deferred{}.assign_char(';')
 ; not paired
 
static this_type_deferred constexpr PAIR_OPEN = this_type_deferred{}.assign_char('<')
 < bracket left (simple terminal stem)
 
static this_type_deferred constexpr PAIR_OPEN1 = this_type_deferred{}.assign_char('(')
 ( bracket left (internal helix enclosing <>)
 
static this_type_deferred constexpr PAIR_OPEN2 = this_type_deferred{}.assign_char('[')
 [ bracket left (internal helix enclosing ())
 
static this_type_deferred constexpr PAIR_OPEN3 = this_type_deferred{}.assign_char('{')
 { bracket left (internal helix enclosing [])
 
static this_type_deferred constexpr PAIR_CLOSE = this_type_deferred{}.assign_char('>')
 > bracket right (simple terminal stem)
 
static this_type_deferred constexpr PAIR_CLOSE1 = this_type_deferred{}.assign_char(')')
 ) bracket right (internal helix enclosing <>)
 
static this_type_deferred constexpr PAIR_CLOSE2 = this_type_deferred{}.assign_char(']')
 ] bracket right (internal helix enclosing ())
 
static this_type_deferred constexpr PAIR_CLOSE3 = this_type_deferred{}.assign_char('}')
 } bracket right (internal helix enclosing [])
 

Related Functions

(Note that these are not member functions.)

std::vector< wuss51operator""_wuss51 (const char *str, std::size_t len)
 wuss literal More...
 
std::optional< uint8_t > pseudoknot_id (structure_type const alph)
 Get an identifier for a pseudoknotted interaction. More...
 
Requirements for seqan3::rna_structure_concept

You can expect these functions on all types that implement seqan3::rna_structure_concept.

template<typename alphabet_type >
constexpr uint8_t max_pseudoknot_depth_v = max_pseudoknot_depth<alphabet_type>::value
 The pseudoknot ability of the alphabet. [value metafunction shortcut]. More...
 
Helpers for seqan3::rna_structure_concept

These functions and metafunctions expose member variables and types so that they satisfy seqan3::rna_structure_concept.

template<typename structure_type >
constexpr bool is_pair_open (structure_type const alph) requires requires(structure_type alph)
 Implementation of seqan3::rna_structure_concept::is_pair_open() that delegates to a member function. More...
 
template<typename structure_type >
constexpr bool is_pair_close (structure_type const alph) requires requires(structure_type alph)
 Implementation of seqan3::rna_structure_concept::is_pair_close() that delegates to a member function. More...
 
template<typename structure_type >
constexpr bool is_unpaired (structure_type const alph) requires requires(structure_type alph)
 Implementation of seqan3::rna_structure_concept::is_unpaired() that delegates to a member function. More...
 
template<typename alphabet_type_with_pseudoknot_attribute >
constexpr std::optional< uint8_t > pseudoknot_id (alphabet_type_with_pseudoknot_attribute const alph)
 Implementation of seqan3::rna_structure_concept::pseudoknot_id() that delegates to a member function. More...
 
Requirements for seqan3::alphabet_concept

You can expect these functions on all types that implement seqan3::alphabet_concept.

template<typename alphabet_type >
using underlying_char_t = typename underlying_char< alphabet_type >::type
 The char_type of the alphabet. [type metafunction shortcut]. More...
 
char_type to_char (alphabet_concept const alph)
 Returns the alphabet letter's value in character representation. More...
 
alphabet_concept && assign_char (alphabet_concept &&alph, char_type const chr)
 Returns the alphabet letter's value in character representation. More...
 
Requirements for seqan3::semi_alphabet_concept

You can expect these functions on all types that implement seqan3::semi_alphabet_concept.

template<typename semi_alphabet_type >
using underlying_rank_t = typename underlying_rank< semi_alphabet_type >::type
 The rank_type of the semi_alphabet. [type metafunction shortcut]. More...
 
template<typename alphabet_type >
constexpr auto alphabet_size_v = alphabet_size<alphabet_type>::value
 The size of the alphabet. [value metafunction shortcut]. More...
 
rank_type to_rank (semi_alphabet_concept const alph)
 Returns the alphabet letter's value in rank representation. More...
 
semi_alphabet_concept && assign_rank (semi_alphabet_concept &&alph, rank_type const rank)
 Returns the alphabet letter's value in rank representation. More...
 
Requirements for std::Swappable

You can expect these functions on all types that implement std::Swappable.

void swap (t &lhs, t &rhs)
 Swaps the contents of two objects. More...
 
Requirements for std::EqualityComparable

You can expect these functions on all types that implement std::Equality_comparable.

bool operator== (type const &lhs, type const &rhs)
 (In-)Equality comparison. More...
 
bool operator!= (type const &lhs, type const &rhs)
 (In-)Equality comparison. More...
 
Requirements for std::StrictTotallyOrdered

You can expect these functions on all types that implement std::StrictTotallyOrdered.

bool operator< (type const &lhs, type const &rhs)
 Less-than, greater-than and -or-equal comparisons. More...
 
bool operator<= (type const &lhs, type const &rhs)
 Less-than, greater-than and -or-equal comparisons. More...
 
bool operator> (type const &lhs, type const &rhs)
 Less-than, greater-than and -or-equal comparisons. More...
 
bool operator>= (type const &lhs, type const &rhs)
 Less-than, greater-than and -or-equal comparisons. More...
 

RNA structure properties

static constexpr uint8_t max_pseudoknot_depth {(value_size - 7) / 2}
 The ability of this alphabet to represent pseudoknots, i.e. crossing interactions, up to a certain depth. It is the number of distinct pairs of interaction symbols the format supports: 4..30 (depends on size)
 
constexpr bool is_pair_open () const noexcept
 Check whether the character represents a rightward interaction in an RNA structure. More...
 
constexpr bool is_pair_close () const noexcept
 Check whether the character represents a leftward interaction in an RNA structure. More...
 
constexpr bool is_unpaired () const noexcept
 Check whether the character represents an unpaired position in an RNA structure. More...
 
constexpr std::optional< uint8_t > pseudoknot_id () const noexcept
 Get an identifier for a pseudoknotted interaction. Opening and closing brackets of the same type have the same id. More...
 

Detailed Description

template<uint8_t SIZE = 51>
class seqan3::wuss< SIZE >

The WUSS structure alphabet of the characters .<>:,-_~;()[]{}AaBbCcDd...

Template Parameters
SIZEThe alphabet size defaults to 50 and must be an odd number in range 15..67. It determines the allowed pseudoknot depth by adding characters AaBb..Zz to the alphabet.

The symbols .:,-_~; denote unpaired characters, brackets <>()[]{} represent base pair interactions and AaBbCcDd... form pseudoknots in the structure. The default alphabet has size 51 (letters until Rr). The size can be varied with the optional template parameter between 15 (no letters for pseudoknots) and 67 (all Aa-Zz for pseudoknots).

<<<___>>>,,<<<__>>>
<<<<_AAAA____>>>>aaaa
Usage
The following code example creates a wuss vector, modifies it, and prints the result to stdout.
// create vector
std::vector<wuss51> vec{wuss51::UNPAIRED, wuss51::PAIR_CLOSE, wuss51::PAIR_CLOSE};
// modify and print
for (wuss51 chr : vec)
debug_stream << to_char(chr); // .<>
debug_stream << "\n";

Member Function Documentation

◆ assign_char()

constexpr wuss< SIZE > & seqan3::alphabet_base< wuss< SIZE > , size, char >::assign_char ( std::conditional_t< std::Same< char_type, void >, char, char_type > const  c)
inlinenoexceptinherited

Assign from a character.

Satisfies the seqan3::alphabet_concept::assign_char() requirement via the seqan3::assign_char() wrapper.

Complexity

Constant.

Exceptions

Guaranteed not to throw.

◆ assign_rank()

constexpr wuss< SIZE > & seqan3::alphabet_base< wuss< SIZE > , size, char >::assign_rank ( rank_type const  c)
inlinenoexceptinherited

Assign from a numeric value.

Satisfies the seqan3::semi_alphabet_concept::assign_rank() requirement via the seqan3::assign_rank() wrapper.

Complexity

Constant.

Exceptions

Guaranteed not to throw.

◆ is_pair_close()

template<uint8_t SIZE = 51>
constexpr bool seqan3::wuss< SIZE >::is_pair_close ( ) const
inlinenoexcept

Check whether the character represents a leftward interaction in an RNA structure.

Returns
True if the letter represents a leftward interaction, False otherwise.

◆ is_pair_open()

template<uint8_t SIZE = 51>
constexpr bool seqan3::wuss< SIZE >::is_pair_open ( ) const
inlinenoexcept

Check whether the character represents a rightward interaction in an RNA structure.

Returns
True if the letter represents a rightward interaction, False otherwise.

◆ is_unpaired()

template<uint8_t SIZE = 51>
constexpr bool seqan3::wuss< SIZE >::is_unpaired ( ) const
inlinenoexcept

Check whether the character represents an unpaired position in an RNA structure.

Returns
True if the letter represents an unpaired site, False otherwise.

◆ pseudoknot_id()

template<uint8_t SIZE = 51>
constexpr std::optional<uint8_t> seqan3::wuss< SIZE >::pseudoknot_id ( ) const
inlinenoexcept

Get an identifier for a pseudoknotted interaction. Opening and closing brackets of the same type have the same id.

Returns
The pseudoknot id, if alph denotes an interaction, and no value otherwise. It is guaranteed to be smaller than seqan3::max_pseudoknot_depth.

◆ to_char()

constexpr char_type seqan3::alphabet_base< wuss< SIZE > , size, char >::to_char ( ) const
inlinenoexceptinherited

Return the letter as a character of char_type.

Satisfies the seqan3::alphabet_concept::to_char() requirement via the seqan3::to_char() wrapper.

Complexity

Constant.

Exceptions

Guaranteed not to throw.

◆ to_rank()

constexpr rank_type seqan3::alphabet_base< wuss< SIZE > , size, char >::to_rank ( ) const
inlinenoexceptinherited

Return the letter's numeric value (rank in the alphabet).

Satisfies the seqan3::semi_alphabet_concept::to_rank() requirement via the to_rank() wrapper.

Complexity

Constant.

Exceptions

Guaranteed not to throw.

Friends And Related Function Documentation

◆ is_pair_close()

template<typename structure_type >
constexpr bool is_pair_close ( structure_type const  alph)
related

Implementation of seqan3::rna_structure_concept::is_pair_close() that delegates to a member function.

Template Parameters
structure_typeMust provide a .is_pair_close() member function.
Parameters
alphThe alphabet letter which is checked for the pairing property.
Returns
True if the letter represents a leftward interaction, False otherwise.

◆ is_pair_open()

template<typename structure_type >
constexpr bool is_pair_open ( structure_type const  alph)
related

Implementation of seqan3::rna_structure_concept::is_pair_open() that delegates to a member function.

Template Parameters
structure_typeMust provide a .is_pair_open() member function.
Parameters
alphThe alphabet letter which is checked for the pairing property.
Returns
True if the letter represents a rightward interaction, False otherwise.

◆ is_unpaired()

template<typename structure_type >
constexpr bool is_unpaired ( structure_type const  alph)
related

Implementation of seqan3::rna_structure_concept::is_unpaired() that delegates to a member function.

Template Parameters
structure_typeMust provide a .is_unpaired() member function.
Parameters
alphThe alphabet letter which is checked for the pairing property.
Returns
True if the letter represents an unpaired site, False otherwise.

◆ operator""_wuss51()

template<uint8_t SIZE = 51>
std::vector< wuss51 > operator""_wuss51 ( const char *  str,
std::size_t  len 
)
related

wuss literal

Returns
std::vector<seqan3::wuss51>

You can use this string literal to easily assign to a vector of wuss characters:

std::vector<wuss<>> foo{".<..>."_wuss51};
std::vector<wuss<>> bar = ".<..>."_wuss51;
auto bax = ".<..>."_wuss51;

◆ pseudoknot_id() [1/2]

std::optional< uint8_t > pseudoknot_id ( structure_type const  alph)
related

Get an identifier for a pseudoknotted interaction.

Parameters
alphThe alphabet letter which is checked for the pseudoknot id.
Returns
The pseudoknot id, if alph represents an interaction, and no value otherwise. It is guaranteed to be smaller than seqan3::max_pseudoknot_depth.

◆ pseudoknot_id() [2/2]

template<typename alphabet_type_with_pseudoknot_attribute >
constexpr std::optional< uint8_t > pseudoknot_id ( alphabet_type_with_pseudoknot_attribute const  alph)
related

Implementation of seqan3::rna_structure_concept::pseudoknot_id() that delegates to a member function.

Template Parameters
alphabet_type_with_pseudoknot_attributeIf it supports pseudoknots, it must provide a .pseudoknot_id() member function, otherwise it can be omitted.
Parameters
alphThe alphabet letter which is checked for the pseudoknot id.
Returns
The pseudoknot id, if alph represents an interaction, and no value otherwise. It is guaranteed to be smaller than seqan3::max_pseudoknot_depth.

The documentation for this class was generated from the following file: