29template <
template <
typename...>
typename container_type,
typename seq_alph_t,
typename... rest_t>
36 template <
typename...>
37 typename allocator_type,
64struct unaligned_seq<t>
216} &&
requires (t
v, detail::unaligned_seq_t<t>
unaligned) {
221 { erase_gap(
v,
std::ranges::begin(
v), std::ranges::end(
v)) } -> std::same_as<std::ranges::iterator_t<t>>;
222 { assign_unaligned(
v,
unaligned) } -> std::same_as<void>;
250template <sequence_container aligned_seq_t>
251 requires detail::is_gapped_alphabet<std::iter_value_t<aligned_seq_t>>
253 typename aligned_seq_t::const_iterator
pos_it)
274template <sequence_container aligned_seq_t>
275 requires detail::is_gapped_alphabet<std::iter_value_t<aligned_seq_t>>
277 typename aligned_seq_t::const_iterator
pos_it,
278 typename aligned_seq_t::size_type size)
302template <sequence_container aligned_seq_t>
303 requires detail::is_gapped_alphabet<std::iter_value_t<aligned_seq_t>>
305 typename aligned_seq_t::const_iterator
pos_it)
308 throw gap_erase_failure(
"The position to be erased does not contain a gap.");
333template <sequence_container aligned_seq_t>
334 requires detail::is_gapped_alphabet<std::iter_value_t<aligned_seq_t>>
336 typename aligned_seq_t::const_iterator first,
337 typename aligned_seq_t::const_iterator last)
339 for (
auto it = first;
it != last; ++
it)
341 throw gap_erase_failure(
"The range to be erased contains at least one non-gap character.");
368template <sequence_container aligned_seq_t, std::ranges::forward_range unaligned_sequence_type>
369 requires detail::is_gapped_alphabet<std::iter_value_t<aligned_seq_t>>
371 std::ranges::range_reference_t<unaligned_sequence_type>>
376 tmp.resize(std::ranges::distance(unaligned_seq));
404template <
typename range_type>
406 v.insert_gap(std::ranges::iterator_t<range_type>{});
407 v.insert_gap(std::ranges::iterator_t<range_type>{},
typename range_type::size_type{});
410 std::ranges::iterator_t<range_type>
const pos_it,
411 typename range_type::size_type
const size = 1)
432template <
typename range_type>
433 requires requires (
range_type v) {
v.erase_gap(std::ranges::iterator_t<range_type>{}); }
457template <
typename range_type>
459 v.erase_gap(std::ranges::iterator_t<range_type>{}, std::ranges::iterator_t<range_type>{});
462 std::ranges::iterator_t<range_type>
const first,
463 std::ranges::iterator_t<range_type>
const last)
465 return rng.erase_gap(first, last);
476template <
typename...
elems>
482template <
typename...
elems>
Includes customized exception types for the alignment module .
A combined alphabet that can hold values of either of its alternatives..
Definition alphabet_variant.hpp:127
The alphabet of a gap character '-'.
Definition gap.hpp:36
aligned_seq_t::iterator insert_gap(aligned_seq_t &aligned_seq, typename aligned_seq_t::const_iterator pos_it, typename aligned_seq_t::size_type size)
An implementation of seqan3::writable_aligned_sequence::insert_gap for sequence containers.
Definition aligned_sequence_concept.hpp:276
void assign_unaligned(aligned_seq_t &aligned_seq, unaligned_sequence_type &&unaligned_seq)
An implementation of seqan3::writable_aligned_sequence::assign_unaligned_sequence for sequence contai...
Definition aligned_sequence_concept.hpp:372
std::ranges::iterator_t< range_type > erase_gap(range_type &rng, std::ranges::iterator_t< range_type > const first, std::ranges::iterator_t< range_type > const last)
An implementation of seqan3::writable_aligned_sequence::erase_gap for ranges with the corresponding m...
Definition aligned_sequence_concept.hpp:461
aligned_seq_t::iterator erase_gap(aligned_seq_t &aligned_seq, typename aligned_seq_t::const_iterator pos_it)
An implementation of seqan3::writable_aligned_sequence::erase_gap for sequence containers.
Definition aligned_sequence_concept.hpp:304
std::ranges::iterator_t< range_type > erase_gap(range_type &rng, std::ranges::iterator_t< range_type > const pos_it)
An implementation of seqan3::writable_aligned_sequence::erase_gap for ranges with the corresponding m...
Definition aligned_sequence_concept.hpp:434
aligned_seq_t::iterator erase_gap(aligned_seq_t &aligned_seq, typename aligned_seq_t::const_iterator first, typename aligned_seq_t::const_iterator last)
An implementation of seqan3::writable_aligned_sequence::erase_gap for sequence containers.
Definition aligned_sequence_concept.hpp:335
std::ranges::iterator_t< range_type > insert_gap(range_type &rng, std::ranges::iterator_t< range_type > const pos_it, typename range_type::size_type const size=1)
An implementation of seqan3::writable_aligned_sequence::insert_gap for ranges with the corresponding ...
Definition aligned_sequence_concept.hpp:409
aligned_seq_t::iterator insert_gap(aligned_seq_t &aligned_seq, typename aligned_seq_t::const_iterator pos_it)
An implementation of seqan3::writable_aligned_sequence::insert_gap for sequence containers.
Definition aligned_sequence_concept.hpp:252
The generic concept for an aligned sequence.
The (most general) container concept as defined by the standard library.
The generic concept for a (biological) sequence.
Resolves to std::is_assignable_v<t>.
The generic concept for an aligned sequence that is writable.
The internal SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
constexpr auto remove_gap_from_value_type(container_type< gapped< seq_alph_t >, rest_t... >) -> container_type< seq_alph_t, rest_t... >
Helper function to deduce the unaligned sequence type from an aligned sequence container.
typename unaligned_seq< t >::type unaligned_seq_t
Helper type that delegates to seqan3::detail::unaligned_seq::type.
Definition aligned_sequence_concept.hpp:71
constexpr bool all_model_aligned_seq
True, if each type models seqan3::aligned_sequence; false otherwise.
Definition aligned_sequence_concept.hpp:477
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:412
Additional non-standard concepts for ranges.
decltype(remove_gap_from_value_type(std::declval< t >())) type
The unaligned sequence type of t.
Definition aligned_sequence_concept.hpp:57
Default transformation trait that shall expose the unaligned sequence type of t when specialised.
Definition aligned_sequence_concept.hpp:48
Type that contains multiple types.
Definition type_list.hpp:26
Adaptations of concepts from the standard library.