SeqAn3
seqan3::aa27 Class Reference

The twenty-seven letter amino acid alphabet. More...

#include <seqan3/alphabet/aminoacid/aa27.hpp>

Inheritance diagram for seqan3::aa27:
[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 aa27 ()
 
constexpr aa27 (aa27 const &)=default
 
constexpr aa27 (aa27 &&)=default
 
constexpr aa27operator= (aa27 const &)=default
 
constexpr aa27operator= (aa27 &&)=default
 
 ~aa27 ()=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 aa27assign_char (std::conditional_t< std::Same< char_type, void >, char, char_type > const c) noexcept
 Assign from a character. More...
 
constexpr aa27assign_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.

static aa27 constexpr A
 
static aa27 constexpr B
 
static aa27 constexpr C
 
static aa27 constexpr D
 
static aa27 constexpr E
 
static aa27 constexpr F
 
static aa27 constexpr G
 
static aa27 constexpr H
 
static aa27 constexpr I
 
static aa27 constexpr J
 
static aa27 constexpr K
 
static aa27 constexpr L
 
static aa27 constexpr M
 
static aa27 constexpr N
 
static aa27 constexpr O
 
static aa27 constexpr P
 
static aa27 constexpr Q
 
static aa27 constexpr R
 
static aa27 constexpr S
 
static aa27 constexpr T
 
static aa27 constexpr U
 
static aa27 constexpr V
 
static aa27 constexpr W
 
static aa27 constexpr X
 
static aa27 constexpr Y
 
static aa27 constexpr Z
 
static aa27 constexpr TERMINATOR
 
static aa27 constexpr UNKNOWN
 

Static Protected Attributes

static constexpr std::array< rank_type, 256 > char_to_rank
 Char to value conversion table. More...
 
static constexpr char_type rank_to_char [value_size]
 Value to char conversion table. More...
 

Related Functions

(Note that these are not member functions.)

using aa27_vector = std::vector< aa27 >
 Alias for an std::vector of seqan3::aa27. More...
 
aa27_vector operator""_aa27 (const char *s, std::size_t n)
 aa27 literal 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...
 

Detailed Description

The twenty-seven letter amino acid alphabet.

The alphabet consists of letters A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, *

The alphabet may be brace initialized from the static letter members. Note that you cannot assign the alphabet by using letters of type char, but you instead have to use the function seqan3::aa27::assign_char().

aa27 my_letter{aa27::A};
// doesn't work:
// aa27 my_letter{'A'};
my_letter.assign_char('C'); // <- this does!
my_letter.assign_char('?'); // all unknown characters are converted to aa27::X implicitly
if (my_letter.to_char() == 'X')
debug_stream << "yeah\n"; // "yeah";

Member Function Documentation

◆ assign_char()

constexpr aa27 & seqan3::alphabet_base< aa27 , 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 aa27 & seqan3::alphabet_base< aa27 , 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.

◆ to_char()

constexpr char_type seqan3::alphabet_base< aa27 , 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< aa27 , 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

◆ aa27_vector

using aa27_vector = std::vector<aa27>
related

Alias for an std::vector of seqan3::aa27.

◆ operator""_aa27()

aa27_vector operator""_aa27 ( const char *  s,
std::size_t  n 
)
related

aa27 literal

Returns
seqan3::aa27_vector

You can use this string literal to easily assign to aa27_vector:

// these don't work:
// aa27_vector foo{"ABFUYR"};
// aa27_vector bar = "ABFUYR";
// but these do:
aa27_vector foo{"ABFUYR"_aa27};
aa27_vector bar = "ABFUYR"_aa27;
auto bax = "ABFUYR"_aa27;
Attention
All seqan3 literals are in the namespace seqan3!

Member Data Documentation

◆ char_to_rank

constexpr std::array<rank_type, 256> seqan3::aa27::char_to_rank
staticprotected
Initial value:
{
[] () constexpr
{
std::array<rank_type, 256> ret{};
for (auto & c : ret)
c = 23;
for (rank_type rnk = 0u; rnk < value_size; ++rnk)
{
ret[static_cast<rank_type>( rank_to_char[rnk]) ] = rnk;
ret[static_cast<rank_type>(to_lower(rank_to_char[rnk]))] = rnk;
}
return ret;
}()
}

Char to value conversion table.

◆ rank_to_char

constexpr char_type seqan3::aa27::rank_to_char[value_size]
staticprotected
Initial value:
{
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'*'
}

Value to char conversion table.


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