SeqAn3  3.2.0-rc.1
The Modern C++ library for sequence analysis.
phred94.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2022, Knut Reinert & MPI für molekulare Genetik
4 // This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5 // shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6 // -----------------------------------------------------------------------------------------------------
7 
13 #pragma once
14 
16 
17 namespace seqan3
18 {
19 
43 class phred94 : public phred_base<phred94, 94>
44 {
45 private:
48 
50  friend base_t;
52  friend base_t::base_t;
54 
55 public:
59  constexpr phred94() noexcept = default;
60  constexpr phred94(phred94 const &) noexcept = default;
61  constexpr phred94(phred94 &&) noexcept = default;
62  constexpr phred94 & operator=(phred94 const &) noexcept = default;
63  constexpr phred94 & operator=(phred94 &&) noexcept = default;
64  ~phred94() noexcept = default;
65 
66  // Inherit converting constructor
67  using base_t::base_t;
69 
77  static constexpr phred_type offset_phred{0};
78 
83  static constexpr char_type offset_char{'!'};
85 };
86 
87 inline namespace literals
88 {
89 
103 constexpr phred94 operator""_phred94(char const c) noexcept
104 {
105  return phred94{}.assign_char(c);
106 }
107 
119 inline std::vector<phred94> operator""_phred94(char const * s, std::size_t n)
120 {
122  r.resize(n);
123 
124  for (size_t i = 0; i < n; ++i)
125  r[i].assign_char(s[i]);
126 
127  return r;
128 }
130 
131 } // namespace literals
132 
133 } // namespace seqan3
A CRTP-base that makes defining a custom alphabet easier.
Definition: alphabet_base.hpp:57
constexpr derived_type & assign_char(char_type const chr) noexcept requires(!std
Assign from a character, implicitly converts invalid characters.
Definition: alphabet_base.hpp:163
Quality type for PacBio Phred scores of HiFi reads.
Definition: phred94.hpp:44
static constexpr char_type offset_char
The projection offset between char and rank score representation.
Definition: phred94.hpp:83
static constexpr phred_type offset_phred
The projection offset between Phred and rank score representation.
Definition: phred94.hpp:77
constexpr phred94() noexcept=default
Defaulted.
A CRTP-base that refines seqan3::alphabet_base and is used by the quality alphabets.
Definition: phred_base.hpp:31
int8_t phred_type
The integer representation of the quality score.
Definition: phred_base.hpp:40
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Provides seqan3::phred42 quality scores.
T resize(T... args)