27namespace seqan3::detail
31struct view_equality_fn
34 template <std::ranges::forward_range rng1_type, std::ranges::forward_range rng2_type>
35 constexpr bool operator()(rng1_type && rng1, rng2_type && rng2)
const
37 return std::ranges::equal(rng1, rng2);
48inline void update_alignment_lengths(int32_t & ref_length,
50 char const cigar_operation,
51 uint32_t
const cigar_count)
53 switch (cigar_operation)
58 ref_length += cigar_count, seq_length += cigar_count;
62 ref_length += cigar_count;
65 seq_length += cigar_count;
72 throw format_error{
"Illegal cigar operation: " + std::string{cigar_operation}};
89 std::vector<seqan3::cigar> cigar_vector{};
94 uint32_t cigar_count{};
95 char const * ptr = cigar_str.
data();
96 char const *
const end = ptr + cigar_str.
size();
102 if (res.ec != std::errc{})
103 throw format_error{
"Corrupted cigar string."};
118[[nodiscard]]
inline std::string get_cigar_string(std::vector<cigar>
const & cigar_vector)
120 std::string result{};
121 std::ranges::for_each(cigar_vector,
122 [&result](
auto & cig)
124 result.
append(
static_cast<std::string_view
>(cig.to_string()));
162template <seqan3::aligned_sequence ref_seq_type, seqan3::aligned_sequence query_seq_type>
163[[nodiscard]]
inline std::string get_cigar_string(ref_seq_type &&
ref_seq,
164 query_seq_type && query_seq,
165 uint32_t
const query_start_pos = 0,
166 uint32_t
const query_end_pos = 0,
167 bool const extended_cigar =
false)
169 return get_cigar_string(
std::tie(
ref_seq, query_seq), query_start_pos, query_end_pos, extended_cigar);
174struct access_restrictor_fn
177 template <
typename chr_t>
178 [[noreturn]] chr_t operator()(chr_t)
const
180 throw std::logic_error{
"Access is not allowed because there is no sequence information."};
Provides the seqan3::cigar alphabet.
The <charconv> header from C++17's standard library.
exposition_only::cigar_operation operation
The (extended) cigar operation alphabet of M,D,I,H,N,P,S,X,=.
Definition alphabet/cigar/cigar.hpp:93
T emplace_back(T... args)
constexpr auto assign_char_strictly_to
Assign a character to an alphabet object, throw if the character is not valid.
Definition alphabet/concept.hpp:721
@ ref_seq
The (reference) "sequence" information, usually a range of nucleotides or amino acids.
Definition record.hpp:80
from_chars_result from_chars(char const *first, char const *last, floating_point_type &value, chars_format fmt=chars_format::general) noexcept
Parse a char sequence into an floating point value.
Definition charconv:252
Provides seqan3::detail::pairwise_alignment and seqan3::detail::writable_pairwise_alignment.
Provides character predicates for tokenisation.
Provides seqan3::views::take_until and seqan3::views::take_until_or_throw.
Auxiliary for pretty printing of exception messages.
Provides seqan3::tuple_like.
Provides seqan3::views::zip.