Loading...
Searching...
No Matches
Aligned Sequence
Sequence Alignment

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...
struct | seqan3::alignment_printer< alignment_t >
| The printer for alignment. More...
interface | writable_aligned_sequence
| The generic concept for an aligned sequence that is writable. 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> requires requires (range_type v) { v.insert_gap(std::ranges::iterator_t<range_type>{}); v.insert_gap(std::ranges::iterator_t<range_type>{}, typename range_type::size_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::writable_aligned_sequence::insert_gap for ranges with the corresponding member function insert_gap(it, size).
template<typename range_type> requires requires (range_type v) { v.erase_gap(std::ranges::iterator_t<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::writable_aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(it).
template<typename range_type> requires requires (range_type v) { v.erase_gap(std::ranges::iterator_t<range_type>{}, std::ranges::iterator_t<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::writable_aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(first, last).

## 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.

## 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_t | Type of the container to reassign; must model seqan3::sequence_container; the value type must be a seqan3::gapped alphabet.
  unaligned_seq_t | Type of the container to assign from; must model std::ranges::forward_range.

Parameters

  [in,out] | aligned_seq | The gapped sequence container to assign to.
  [in,out] | unaligned_seq | The 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<typename range_type>
requires requires (range_type v) { v.erase_gap(std::ranges::iterator_t<range_type>{}, std::ranges::iterator_t<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::writable_aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(first, last).

Template Parameters

  range_type | Type of the range to modify; must have an erase_gap(first, last) member function.

Parameters

  [in,out] | rng | The range to modify.
  [in] | first | The iterator pointing to the position where to start erasing gaps.
  [in] | last | The 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_failure | if 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() [2/4]

template<typename range_type>
requires requires (range_type v) { v.erase_gap(std::ranges::iterator_t<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::writable_aligned_sequence::erase_gap for ranges with the corresponding member function erase_gap(it).

Template Parameters

  range_type | Type of the range to modify; must have an erase_gap(it) member function.

Parameters

  [in,out] | rng | The range to modify.
  [in] | pos_it | The 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() [3/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_t | Type of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.

Parameters

  [in,out] | aligned_seq | The aligned container to modify.
  [in] | first | The iterator pointing to the position where to start erasing gaps.
  [in] | last | The 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_failure | if 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() [4/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_t | Type of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.

Parameters

  [in,out] | aligned_seq | The aligned container to modify.
  [in] | pos_it | The 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_failure | if 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.

## insert_gap() [1/3]

template<typename range_type>
requires requires (range_type v) { v.insert_gap(std::ranges::iterator_t<range_type>{}); v.insert_gap(std::ranges::iterator_t<range_type>{}, typename range_type::size_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::writable_aligned_sequence::insert_gap for ranges with the corresponding member function insert_gap(it, size).

Template Parameters

  range_type | Type of the range to modify; must have an insert_gap(it, size) member function.

Parameters

  [in,out] | rng | The range to modify.
  [in] | pos_it | The iterator pointing to the position where to start inserting gaps.
  [in] | size | The 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.

## 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 )

related

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

Template Parameters

  aligned_seq_t | Type of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.

Parameters

  [in,out] | aligned_seq | The aligned container to modify.
  [in] | pos_it | The 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() [3/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_t | Type of the container to modify; must model seqan3::sequence_container; The value type must be a seqan3::gapped alphabet.

Parameters

  [in,out] | aligned_seq | The aligned container to modify.
  [in] | pos_it | The iterator pointing to the position where to insert gaps.
  [in] | size | The 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.

Hide me