SeqAn3  3.0.2
The Modern C++ library for sequence analysis.
Aligned Sequence

Provides seqan3::aligned_sequence, as well as various ranges that model it. More...

+ Collaboration diagram for Aligned Sequence:

Classes

interface  seqan3::aligned_sequence
 The generic concept for an aligned sequence.This concept describes the requirements a sequence must fulfil in order to be used inside of the alignment algorithm to store the final alignment. More...
 

Functions

template<tuple_like tuple_t, typename char_t >
debug_stream_type< char_t > & seqan3::operator<< (debug_stream_type< char_t > &stream, tuple_t const &alignment)
 Stream operator for alignments, which are represented as tuples of aligned sequences. More...
 

Aligned sequence interface for ranges that have the corresponding member functions.

Enables ranges to model seqan3::aligned_sequence if they have the member functions insert_gap() and erase_gap().

template<typename range_type >
std::ranges::iterator_t< range_type > seqan3::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::aligned_sequence::insert_gap for ranges with the corresponding member function insert_gap(it, size). More...
 
template<typename range_type >
std::ranges::iterator_t< range_type > seqan3::erase_gap (range_type &rng, std::ranges::iterator_t< range_type > const pos_it)
 An implementation of seqan3::aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(it). More...
 
template<typename range_type >
std::ranges::iterator_t< range_type > seqan3::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::aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(first, last). More...
 

Detailed Description

Provides seqan3::aligned_sequence, as well as various ranges that model it.

Function Documentation

◆ assign_unaligned()

template<sequence_container aligned_seq_t, std::ranges::forward_range unaligned_sequence_type>
void seqan3::assign_unaligned ( aligned_seq_t &  aligned_seq,
unaligned_sequence_type &&  unaligned_seq 
)
related

An implementation of seqan3::aligned_sequence::assign_unaligned_sequence for sequence containers.

Template Parameters
aligned_seq_tType of the container to reassign; must model seqan3::sequence_container; the value type must be a seqan3::gapped alphabet.
unaligned_seq_tType of the container to assign from; must model std::ranges::forward_range.
Parameters
[in,out]aligned_seqThe gapped sequence container to assign to.
[in,out]unaligned_seqThe unaligned sequence container to assign from.

This function clears the content of the gapped container and reassigns the content of the unaligned container by using std::copy.

Performance

Linear in the size of unaligned_seq.

Exceptions

Strong exception guarantee.

◆ erase_gap() [1/4]

template<sequence_container aligned_seq_t>
aligned_seq_t::iterator seqan3::erase_gap ( aligned_seq_t &  aligned_seq,
typename aligned_seq_t::const_iterator  pos_it 
)
related

An implementation of seqan3::aligned_sequence::erase_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.
Parameters
[in,out]aligned_seqThe aligned container to modify.
[in]pos_itThe iterator pointing to the position where to erase a gap.
Returns
An iterator following the removed element. If the iterator pos_it refers to the last element, the std::ranges::end() iterator is returned.
Exceptions
seqan3::gap_erase_failureif there is no seqan3::gap at pos_it.

This function delegates to the member function erase(iterator) of the container. Before delegating, the function checks if the position pointed to by pos_it is an actual seqan3::gap and throws an exception if not.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ erase_gap() [2/4]

template<sequence_container aligned_seq_t>
aligned_seq_t::iterator seqan3::erase_gap ( aligned_seq_t &  aligned_seq,
typename aligned_seq_t::const_iterator  first,
typename aligned_seq_t::const_iterator  last 
)
related

An implementation of seqan3::aligned_sequence::erase_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.
Parameters
[in,out]aligned_seqThe aligned container to modify.
[in]firstThe iterator pointing to the position where to start erasing gaps.
[in]lastThe iterator pointing to the position where to stop erasing gaps.
Returns
An iterator following the last removed element. If the iterator last refers to the last element, the std::ranges::end() iterator is returned.
Exceptions
seqan3::gap_erase_failureif one of the characters in [first, last) no seqan3::gap.

This function delegates to the member function erase(iterator, iterator) of the container. Before delegating, the function checks if the range [first, last) contains only seqan3::gap symbols.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ erase_gap() [3/4]

template<typename range_type >
std::ranges::iterator_t<range_type> seqan3::erase_gap ( range_type &  rng,
std::ranges::iterator_t< range_type > const  pos_it 
)

An implementation of seqan3::aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(it).

Template Parameters
range_typeType of the range to modify; must have an erase_gap(it) member function.
Parameters
[in,out]rngThe range to modify.
[in]pos_itThe iterator pointing to the position where to erase one gap.
Returns
An iterator following the removed element. If the iterator pos_it refers to the last element, the std::ranges::end() iterator is returned.

This function delegates to the member function erase(it) of the range.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ erase_gap() [4/4]

template<typename range_type >
std::ranges::iterator_t<range_type> seqan3::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::aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(first, last).

Template Parameters
range_typeType of the range to modify; must have an erase_gap(first, last) member function.
Parameters
[in,out]rngThe range to modify.
[in]firstThe iterator pointing to the position where to start erasing gaps.
[in]lastThe iterator pointing to the position where to stop erasing gaps.
Returns
An iterator following the last removed element. If the iterator last refers to the last element, the std::ranges::end() iterator is returned.
Exceptions
seqan3::gap_erase_failureif one of the characters in [first, last) is no seqan3::gap.

This function delegates to the member function erase(first, last) of the range.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ insert_gap() [1/3]

template<sequence_container aligned_seq_t>
aligned_seq_t::iterator seqan3::insert_gap ( aligned_seq_t &  aligned_seq,
typename aligned_seq_t::const_iterator  pos_it 
)
related

An implementation of seqan3::aligned_sequence::insert_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.
Parameters
[in,out]aligned_seqThe aligned container to modify.
[in]pos_itThe iterator pointing to the position where to insert a gap.
Returns
An iterator pointing to the inserted gap.

This function delegates to the member function insert(iterator, value) of the container.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ insert_gap() [2/3]

template<sequence_container aligned_seq_t>
aligned_seq_t::iterator seqan3::insert_gap ( aligned_seq_t &  aligned_seq,
typename aligned_seq_t::const_iterator  pos_it,
typename aligned_seq_t::size_type  size 
)
related

An implementation of seqan3::aligned_sequence::insert_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.
Parameters
[in,out]aligned_seqThe aligned container to modify.
[in]pos_itThe iterator pointing to the position where to insert gaps.
[in]sizeThe number of gap symbols to insert (will result in a gap of length size).
Returns
An iterator pointing to the first inserted gap or pos_it if size == 0.

This function delegates to the member function insert(iterator,size,value) of the container.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ insert_gap() [3/3]

template<typename range_type >
std::ranges::iterator_t<range_type> seqan3::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::aligned_sequence::insert_gap for ranges with the corresponding member function insert_gap(it, size).

Template Parameters
range_typeType of the range to modify; must have an insert_gap(it, size) member function.
Parameters
[in,out]rngThe range to modify.
[in]pos_itThe iterator pointing to the position where to start inserting gaps.
[in]sizeThe number of gaps to insert as an optional argument, default is 1.
Returns
An iterator pointing to the first inserted gap or pos_it if size == 0.

This function delegates to the member function insert(iterator, size) of the range.

Note
This may cause reallocations and thus invalidates all iterators and references. Use the returned iterator.

◆ operator<<()

template<tuple_like tuple_t, typename char_t >
debug_stream_type<char_t>& seqan3::operator<< ( debug_stream_type< char_t > &  stream,
tuple_t const &  alignment 
)
inline

Stream operator for alignments, which are represented as tuples of aligned sequences.

Template Parameters
tuple_tThe alignment type, must satisfy tuple_like and its size must be at least 2.
Parameters
streamThe target stream for the formatted output.
alignmentThe alignment that shall be formatted. All sequences must be equally long.
Returns
The given stream to which the alignment representation is appended.