SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
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 >:

Public Member Functions

constexpr char_type to_char () const noexcept
 Return the letter as a character of char_type.
 
constexpr rank_type to_rank () const noexcept
 Return the letter's numeric value (rank in the alphabet).
 
Constructors, destructor and assignment
constexpr wuss () noexcept=default
 Defaulted.
 
constexpr wuss (wuss const &) noexcept=default
 Defaulted.
 
constexpr wuss (wuss &&) noexcept=default
 Defaulted.
 
constexpr wussoperator= (wuss const &) noexcept=default
 Defaulted.
 
constexpr wussoperator= (wuss &&) noexcept=default
 Defaulted.
 
 ~wuss () noexcept=default
 Defaulted.
 
- Public Member Functions inherited from seqan3::alphabet_base< derived_type, size, char_t >
constexpr alphabet_base () noexcept=default
 Defaulted.
 
constexpr alphabet_base (alphabet_base const &) noexcept=default
 Defaulted.
 
constexpr alphabet_base (alphabet_base &&) noexcept=default
 Defaulted.
 
constexpr alphabet_baseoperator= (alphabet_base const &) noexcept=default
 Defaulted.
 
constexpr alphabet_baseoperator= (alphabet_base &&) noexcept=default
 Defaulted.
 
 ~alphabet_base () noexcept=default
 Defaulted.
 
constexpr char_type to_char () const noexcept
 Return the letter as a character of char_type.
 
constexpr rank_type to_rank () const noexcept
 Return the letter's numeric value (rank in the alphabet).
 
constexpr derived_type & assign_char (char_type const chr) noexcept
 Assign from a character, implicitly converts invalid characters.
 
constexpr derived_type & assign_rank (rank_type const c) noexcept
 Assign from a numeric value.
 

Static Public Attributes

static constexpr detail::min_viable_uint_t< size > alphabet_size
 The size of the alphabet, i.e. the number of different values it can take.
 
- Static Public Attributes inherited from seqan3::alphabet_base< derived_type, size, char_t >
static constexpr detail::min_viable_uint_t< size > alphabet_size = size
 The size of the alphabet, i.e. the number of different values it can take.
 

Protected Types

using char_type = std::conditional_t< std::same_as< char_t, void >, char, char_t >
 The char representation; conditional needed to make semi alphabet definitions legal.
 
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()).
 
- Protected Types inherited from seqan3::alphabet_base< derived_type, size, char_t >
using char_type = std::conditional_t< std::same_as< char_t, void >, char, char_t >
 The char representation; conditional needed to make semi alphabet definitions legal.
 
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()).
 

Related Symbols

(Note that these are not member symbols.)

using wuss51 = wuss< 51 >
 Alias for the default type wuss51.
 

RNA structure properties

static constexpr uint8_t max_pseudoknot_depth {static_cast<uint8_t>((alphabet_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.
 
constexpr bool is_pair_close () const noexcept
 Check whether the character represents a leftward interaction in an RNA structure.
 
constexpr bool is_unpaired () const noexcept
 Check whether the character represents an unpaired position in an RNA structure.
 
constexpr std::optional< uint8_t > pseudoknot_id () const noexcept
 Get an identifier for a pseudoknotted interaction, where opening and closing brackets of the same type have the same id.
 

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 51 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

Example

// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: CC0-1.0
int main()
{
using namespace seqan3::literals;
seqan3::wuss51 letter{':'_wuss51};
letter.assign_char('~');
seqan3::debug_stream << letter << '\n'; // prints "~"
letter.assign_char('#'); // Unknown characters are implicitly converted to ';'.
seqan3::debug_stream << letter << '\n'; // prints ";"
}
A "pretty printer" for most SeqAn data structures and related types.
Definition debug_stream_type.hpp:79
Provides seqan3::debug_stream and related types.
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition debug_stream.hpp:37
The SeqAn namespace for literals.
Provides the WUSS format for RNA structure.

This entity is experimental and subject to change in the future. Experimental since version 3.1.

Member Typedef Documentation

◆ char_type

template<uint8_t SIZE = 51>
using seqan3::alphabet_base< derived_type, size, char_t >::char_type = std::conditional_t<std::same_as<char_t, void>, char, char_t>
protected

The char representation; conditional needed to make semi alphabet definitions legal.

We need a return type for seqan3::alphabet_base::to_char and seqan3::alphabet_base::assign_char other than void to make these in-class definitions valid when char_t is void.

Attention
Please use seqan3::alphabet_char_t to access this type.

This entity is stable. Since version 3.1.

◆ rank_type

template<uint8_t SIZE = 51>
using seqan3::alphabet_base< derived_type, size, char_t >::rank_type = detail::min_viable_uint_t<size - 1>
protected

The type of the alphabet when represented as a number (e.g. via to_rank()).

Attention
Please use seqan3::alphabet_rank_t to access this type.

This entity is stable. Since version 3.1.

Member Function Documentation

◆ is_pair_close()

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

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

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

This entity is experimental and subject to change in the future. Experimental since version 3.1.

◆ is_pair_open()

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

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

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

This entity is experimental and subject to change in the future. Experimental since version 3.1.

◆ is_unpaired()

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

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

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

This entity is experimental and subject to change in the future. Experimental since version 3.1.

◆ pseudoknot_id()

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

Get an identifier for a pseudoknotted interaction, where 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.

This entity is experimental and subject to change in the future. Experimental since version 3.1.

◆ to_char()

template<uint8_t SIZE = 51>
constexpr char_type seqan3::alphabet_base< derived_type, size, char_t >::to_char ( ) const
inlineconstexprnoexcept

Return the letter as a character of char_type.

Provides an implementation for seqan3::to_char, required to model seqan3::alphabet.

Complexity

Constant.

Exceptions

Guaranteed not to throw.

This entity is stable. Since version 3.1.

◆ to_rank()

template<uint8_t SIZE = 51>
constexpr rank_type seqan3::alphabet_base< derived_type, size, char_t >::to_rank ( ) const
inlineconstexprnoexcept

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

Provides an implementation for seqan3::to_rank, required to model seqan3::semialphabet.

Complexity

Constant.

Exceptions

Guaranteed not to throw.

This entity is stable. Since version 3.1.

Member Data Documentation

◆ alphabet_size

template<uint8_t SIZE = 51>
constexpr detail::min_viable_uint_t<size> seqan3::alphabet_base< derived_type, size, char_t >::alphabet_size
staticconstexpr

The size of the alphabet, i.e. the number of different values it can take.

This entity is stable. Since version 3.1.

◆ max_pseudoknot_depth

template<uint8_t SIZE = 51>
constexpr uint8_t seqan3::wuss< SIZE >::max_pseudoknot_depth {static_cast<uint8_t>((alphabet_size - 7) / 2)}
staticconstexpr

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)

This entity is experimental and subject to change in the future. Experimental since version 3.1.


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