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

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

Public Types

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

Public Member Functions

Read functions
constexpr phred_type to_phred () const noexcept
 Return the alphabet's value in Phred score representation.
 
Write functions
constexpr derived_typeassign_phred (phred_type const p) noexcept
 Assign from the numeric Phred score value.
 
- 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.
 
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.
 

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.
 
static constexpr char_type rank_to_char (rank_type const rank)
 Returns the character representation of rank.
 

Private Attributes

friend base_t
 Befriend the base type so it can access seqan3::alphabet_base::char_to_rank and seqan3::alphabet_base::rank_to_char.
 

Static Private Attributes

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

Constructors, destructor and assignment

friend derived_type
 Befriend the derived_type so it can instantiate.
 
constexpr phred_base () noexcept=default
 Defaulted.
 
constexpr phred_base (phred_base const &) noexcept=default
 Defaulted.
 
constexpr phred_base (phred_base &&) noexcept=default
 Defaulted.
 
constexpr phred_baseoperator= (phred_base const &) noexcept=default
 Defaulted.
 
constexpr phred_baseoperator= (phred_base &&) noexcept=default
 Defaulted.
 
 ~phred_base () noexcept=default
 Defaulted.
 
template<typename other_qual_type >
requires (!std::same_as<phred_base, other_qual_type>) && (!std::same_as<derived_type, other_qual_type>) && quality_alphabet<other_qual_type>
constexpr phred_base (other_qual_type const &other) noexcept
 Allow explicit construction from any other quality type by means of the Phred score representation.
 

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.
 
- 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.
 
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()).
 

Detailed Description

template<typename derived_type, size_t size>
class seqan3::phred_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 , size_t size>
using seqan3::phred_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

◆ phred_base()

template<typename derived_type , size_t size>
template<typename other_qual_type >
requires (!std::same_as<phred_base, other_qual_type>) && (!std::same_as<derived_type, other_qual_type>) && quality_alphabet<other_qual_type>
constexpr seqan3::phred_base< derived_type, size >::phred_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 , size_t size>
constexpr derived_type & seqan3::phred_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 , size_t size>
static constexpr rank_type seqan3::phred_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 , size_t size>
static constexpr char_type seqan3::phred_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 , size_t size>
constexpr phred_type seqan3::phred_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 , size_t size>
constexpr std::array<rank_type, 256> seqan3::phred_base< derived_type, size >::phred_to_rank
staticconstexprprivate
Initial value:
{
[]() constexpr {
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;
}()
}
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:196

Phred to rank conversion table.

◆ rank_to_phred

template<typename derived_type , size_t size>
constexpr std::array<phred_type, alphabet_size> seqan3::phred_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:
Hide me