SeqAn3  3.0.3
The Modern C++ library for sequence analysis.
seqan3::quality_base< derived_type, size > Class Template Reference

A CRTP-base that refines seqan3::alphabet_base and is used by the quality alphabets. More...

#include <seqan3/alphabet/quality/quality_base.hpp>

+ Inheritance diagram for seqan3::quality_base< derived_type, size >:

Public Types

Member types
using phred_type = int8_t
 The integer representation of the quality score. More...
 

Public Member Functions

Read functions
constexpr phred_type to_phred () const noexcept
 Return the alphabet's value in Phred score representation. More...
 
Write functions
constexpr derived_typeassign_phred (phred_type const p) noexcept
 Assign from the numeric Phred score value. More...
 
- Public Member Functions inherited from seqan3::alphabet_base< derived_type, size, char >
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. More...
 
constexpr rank_type to_rank () const noexcept
 Return the letter's numeric value (rank in the alphabet). More...
 
constexpr derived_type & assign_char (char_type const chr) noexcept
 Assign from a character, implicitly converts invalid characters. More...
 
constexpr derived_type & assign_rank (rank_type const c) noexcept
 Assign from a numeric value. More...
 

Private Types

using base_t = alphabet_base< derived_type, size, char >
 The base type.
 

Static Private Member Functions

static constexpr rank_type char_to_rank (char_type const chr)
 Returns the rank representation of character. More...
 
static constexpr char_type rank_to_char (rank_type const rank)
 Returns the character representation of rank. More...
 

Private Attributes

friend base_t
 Befriend the base type so it can access char_to_rank and rank_to_char.
 
friend derived_type
 Befriend the derived_type so it can instantiate.
 

Static Private Attributes

static constexpr std::array< rank_type, 256 > phred_to_rank
 Phred to rank conversion table. More...
 
static constexpr std::array< phred_type, alphabet_sizerank_to_phred
 Rank to phred conversion table. More...
 

Constructors, destructor and assignment

constexpr quality_base () noexcept=default
 Defaulted.
 
constexpr quality_base (quality_base const &) noexcept=default
 Defaulted.
 
constexpr quality_base (quality_base &&) noexcept=default
 Defaulted.
 
constexpr quality_baseoperator= (quality_base const &) noexcept=default
 Defaulted.
 
constexpr quality_baseoperator= (quality_base &&) noexcept=default
 Defaulted.
 
 ~quality_base () noexcept=default
 Defaulted.
 
constexpr quality_base (phred_type const p) noexcept
 Allow construction from the Phred score value.
 
template<typename other_qual_type >
constexpr quality_base (other_qual_type const &other) noexcept
 Allow explicit construction from any other quality type by means of the Phred score representation. More...
 

Additional Inherited Members

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

Detailed Description

template<typename derived_type, auto size>
class seqan3::quality_base< derived_type, size >

A CRTP-base that refines seqan3::alphabet_base and is used by the quality alphabets.

Template Parameters
derived_typeThe CRTP parameter type.
sizeThe size of the alphabet.

This entity is stable. Since version 3.1.

Member Typedef Documentation

◆ phred_type

template<typename derived_type , auto size>
using seqan3::quality_base< derived_type, size >::phred_type = int8_t

The integer representation of the quality score.

This entity is stable. Since version 3.1.

Constructor & Destructor Documentation

◆ quality_base()

template<typename derived_type , auto size>
template<typename other_qual_type >
constexpr seqan3::quality_base< derived_type, size >::quality_base ( other_qual_type const &  other)
inlineexplicitconstexprnoexcept

Allow explicit construction from any other quality type by means of the Phred score representation.

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

Member Function Documentation

◆ assign_phred()

template<typename derived_type , auto size>
constexpr derived_type& seqan3::quality_base< derived_type, size >::assign_phred ( phred_type const  p)
inlineconstexprnoexcept

Assign from the numeric Phred score value.

Satisfies the seqan3::writable_quality_alphabet requirement via the seqan3::assign_rank_to() wrapper.

See also
Quality

Complexity

Constant.

This entity is stable. Since version 3.1.

◆ char_to_rank()

template<typename derived_type , auto size>
static constexpr rank_type seqan3::quality_base< derived_type, size >::char_to_rank ( char_type const  chr)
inlinestaticconstexprprivate

Returns the rank representation of character.

This function is required by seqan3::alphabet_base.

◆ rank_to_char()

template<typename derived_type , auto size>
static constexpr char_type seqan3::quality_base< derived_type, size >::rank_to_char ( rank_type const  rank)
inlinestaticconstexprprivate

Returns the character representation of rank.

This function is required by seqan3::alphabet_base.

◆ to_phred()

template<typename derived_type , auto size>
constexpr phred_type seqan3::quality_base< derived_type, size >::to_phred ( ) const
inlineconstexprnoexcept

Return the alphabet's value in Phred score representation.

See also
Quality

This entity is stable. Since version 3.1.

Member Data Documentation

◆ phred_to_rank

template<typename derived_type , auto size>
constexpr std::array<rank_type, 256> seqan3::quality_base< derived_type, size >::phred_to_rank
staticconstexprprivate
Initial value:
{
[] () constexpr
{
for (int64_t i = std::numeric_limits<phred_type>::lowest(); i <= std::numeric_limits<phred_type>::max(); ++i)
{
if (i < derived_type::offset_phred)
ret[static_cast<rank_type>(i)] = 0;
else if (i >= derived_type::offset_phred + alphabet_size)
ret[static_cast<rank_type>(i)] = alphabet_size - 1;
else
ret[static_cast<rank_type>(i)] = i - derived_type::offset_phred;
}
return ret;
}()
}
detail::min_viable_uint_t< size - 1 > rank_type
The type of the alphabet when represented as a number (e.g. via to_rank()).
Definition: alphabet_base.hpp:104
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.
Definition: alphabet_base.hpp:276

Phred to rank conversion table.

◆ rank_to_phred

template<typename derived_type , auto size>
constexpr std::array<phred_type, alphabet_size> seqan3::quality_base< derived_type, size >::rank_to_phred
staticconstexprprivate
Initial value:
{
[] () constexpr
{
for (size_t i = 0; i < alphabet_size; ++i)
ret[i] = i + derived_type::offset_phred;
return ret;
}()
}

Rank to phred conversion table.


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