SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
Aligned Sequence

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

+ Collaboration diagram for Aligned Sequence:

Classes

interface  aligned_sequence
 The generic concept for an aligned sequence. More...
 
interface  writable_aligned_sequence
 The generic concept for an aligned sequence that is writable. More...
 

Functions

template<typename char_t , typename alignment_t >
requires (detail::debug_streamable_tuple<alignment_t> && detail::all_model_aligned_seq<detail::tuple_type_list_t<std::remove_cvref_t<alignment_t>>>)
debug_stream_type< char_t > & seqan3::operator<< (debug_stream_type< char_t > &stream, alignment_t &&alignment)
 Stream operator for alignments, which are represented as tuples of aligned sequences.
 

Aligned sequence interface for containers over the seqan3::gapped alphabet

Enables containers to model seqan3::writable_aligned_sequence if they model seqan3::sequence_container and have a value type of the seqan3::gapped alphabet.

template<sequence_container aligned_seq_t>
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.
 
template<sequence_container aligned_seq_t>
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.
 
template<sequence_container aligned_seq_t>
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.
 
template<sequence_container aligned_seq_t>
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.
 
template<sequence_container aligned_seq_t, std::ranges::forward_range unaligned_sequence_type>
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 containers.
 

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 > 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 member function insert_gap(it, size).
 
template<typename range_type >
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 member function erase_gap(it).
 
template<typename range_type >
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 member function erase_gap(first, last).
 

Detailed Description

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

See also
Sequence Alignment

The seqan3::aligned_sequence concept can be used to describe a sequence that is augmented with gaps, e.g. a sequence that is part of an alignment.

The data structure that we use most often to model seqan3::aligned_sequence is the seqan3::gap_decorator. It is a lightweight data structure that only holds a view on the sequence (no copy is made) and on top can hold seqan3::gaps.

E.g. AC-GA is a aligned sequences where - represents a gap.

See also
Pairwise Alignments

Function Documentation

◆ assign_unaligned()

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

An implementation of seqan3::writable_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 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::writable_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() [2/4]

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

An implementation of seqan3::writable_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() [3/4]

template<typename range_type >
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 
)
related

An implementation of seqan3::writable_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.

◆ erase_gap() [4/4]

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

An implementation of seqan3::writable_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.

◆ insert_gap() [1/3]

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

An implementation of seqan3::writable_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 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::writable_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 > insert_gap ( range_type &  rng,
std::ranges::iterator_t< range_type > const  pos_it,
typename range_type::size_type const  size = 1 
)
related

An implementation of seqan3::writable_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<typename char_t , typename alignment_t >
requires (detail::debug_streamable_tuple<alignment_t> && detail::all_model_aligned_seq<detail::tuple_type_list_t<std::remove_cvref_t<alignment_t>>>)
debug_stream_type< char_t > & seqan3::operator<< ( debug_stream_type< char_t > &  stream,
alignment_t &&  alignment 
)
inline

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

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