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

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

+ Collaboration diagram for Aligned Sequence:

Classes

interface  seqan3::AlignedSequence
 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<TupleLike tuple_t>
debug_stream_typeseqan3::operator<< (debug_stream_type &stream, tuple_t const &alignment)
 Streaming 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::AlignedSequence if they have the member functions insert_gap() and erase_gap().

template<typename range_type >
range_type::iterator seqan3::insert_gap (range_type &rng, typename range_type::iterator const it, typename range_type::size_type const size=1)
 An implementation of seqan3::AlignedSequence::insert_gap for ranges with the corresponding member function insert_gap(it, size). More...
 
template<typename range_type >
range_type::iterator seqan3::erase_gap (range_type &rng, typename range_type::iterator const it)
 An implementation of seqan3::AlignedSequence::erase_gap for ranges with the corresponding member function erase_gap(it). More...
 
template<typename range_type >
range_type::iterator seqan3::erase_gap (range_type &rng, typename range_type::iterator const first, typename range_type::iterator const last)
 An implementation of seqan3::AlignedSequence::erase_gap for ranges with the corresponding member function erase_gap(first, last). More...
 

Detailed Description

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

Function Documentation

◆ assign_unaligned()

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

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

Template Parameters
aligned_seq_tType of the container to reassign; must model seqan3::SequenceContainer; the value type must be a seqan3::gapped alphabet.
unaligned_seq_tType of the container to assign from; must model std::ranges::ForwardRange.
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<SequenceContainer 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::AlignedSequence::erase_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::SequenceContainer; 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.
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.

◆ erase_gap() [2/4]

template<SequenceContainer 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::AlignedSequence::erase_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::SequenceContainer; 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.
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.

◆ erase_gap() [3/4]

template<typename range_type >
range_type::iterator seqan3::erase_gap ( range_type &  rng,
typename range_type::iterator const  it 
)

An implementation of seqan3::AlignedSequence::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]itThe iterator pointing to the position where to erase one gap.

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

◆ erase_gap() [4/4]

template<typename range_type >
range_type::iterator seqan3::erase_gap ( range_type &  rng,
typename range_type::iterator const  first,
typename range_type::iterator const  last 
)

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

◆ insert_gap() [1/3]

template<SequenceContainer 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::AlignedSequence::insert_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::SequenceContainer; 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.

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

◆ insert_gap() [2/3]

template<SequenceContainer 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::AlignedSequence::insert_gap for sequence containers.

Template Parameters
aligned_seq_tType of the container to modify; must model seqan3::SequenceContainer; 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).

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

◆ insert_gap() [3/3]

template<typename range_type >
range_type::iterator seqan3::insert_gap ( range_type &  rng,
typename range_type::iterator const  it,
typename range_type::size_type const  size = 1 
)

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

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

◆ operator<<()

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

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

Template Parameters
tuple_tThe alignment type, must satisfy TupleLike 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.