Loading...
Searching...
No Matches
seqan3::aminoacid_scoring_scheme< score_type > Class Template Reference
Sequence Alignment » Scoring

A data structure for managing and computing the score of two amino acids. More...

`#include <seqan3/alignment/scoring/aminoacid_scoring_scheme.hpp>`

Inheritance diagram for seqan3::aminoacid_scoring_scheme< score_type >:
[legend]

## Public Member Functions

Constructors, destructor and assignment
constexpr | aminoacid_scoring_scheme () noexcept=default
| The default constructor (delegates to set_hamming_distance()).
template<arithmetic score_arg_t>
constexpr | aminoacid_scoring_scheme (match_score< score_arg_t > const ms, mismatch_score< score_arg_t > const mms)
| Constructor for the simple scheme (delegates to set_simple_scheme()).
constexpr | aminoacid_scoring_scheme (matrix_type const &matrix) noexcept
| Constructor for a custom scheme (delegates to set_custom_matrix()).
constexpr | aminoacid_scoring_scheme (aminoacid_similarity_matrix const matrix_id)
| Construct for seqan3::aminoacid_similarity_matrix.
Scheme selection
constexpr void | set_similarity_matrix (aminoacid_similarity_matrix const matrix_id)
| Set the similarity matrix scheme (e.g. blosum62).
Public Member Functions inherited from seqan3::scoring_scheme_base< aminoacid_scoring_scheme< int8_t >, aa27, int8_t >
constexpr | scoring_scheme_base (scoring_scheme_base const &) noexcept=default
| Defaulted.
constexpr scoring_scheme_base & | operator= (scoring_scheme_base const &) noexcept=default
| Defaulted.
| ~scoring_scheme_base () noexcept=default
| Defaulted.
constexpr void | set_hamming_distance () noexcept
| Set the hamming scheme, a variant of the simple scheme where match is scored 0 and mismatch -1.
constexpr void | set_simple_scheme (match_score< score_arg_t > const ms, mismatch_score< score_arg_t > const mms)
| Set the simple scheme (everything is either match or mismatch).
constexpr void | set_custom_matrix (matrix_type const &matrix) noexcept
| Set a custom scheme by passing a full matrix with arbitrary content.
constexpr score_t & | score (alph1_t const alph1, alph2_t const alph2) noexcept
| Score two letters (either two nucleotids or two amino acids).
constexpr bool | operator== (aminoacid_scoring_scheme< int8_t > const &rhs) const noexcept
| Checks whether *this is equal to rhs.
constexpr bool | operator!= (aminoacid_scoring_scheme< int8_t > const &rhs) const noexcept
| Checks whether *this is not equal to rhs.

## Related Symbols

(Note that these are not member symbols.)
Type deduction guides
| aminoacid_scoring_scheme () -> aminoacid_scoring_scheme< int8_t >
| Default constructed objects deduce to int8_t.
template<arithmetic score_arg_type>
| aminoacid_scoring_scheme (match_score< score_arg_type >, mismatch_score< score_arg_type >) -> aminoacid_scoring_scheme< int8_t >
| Attention: This guide does not actually deduce from the underlying type, but always defaults to int8_t. To use a larger type, specify the template argument manually.
template<arithmetic score_arg_type>
| aminoacid_scoring_scheme (std::array< std::array< score_arg_type, 27 >, 27 >) -> aminoacid_scoring_scheme< score_arg_type >
| Deduce the score type from the provided matrix.
| aminoacid_scoring_scheme (aminoacid_similarity_matrix) -> aminoacid_scoring_scheme< int8_t >
| Attention: This guide does not actually deduce from the underlying type, but always defaults to int8_t. To use a larger type, specify the template argument manually.

## Additional Inherited Members

Public Types inherited from seqan3::scoring_scheme_base< aminoacid_scoring_scheme< int8_t >, aa27, int8_t >
using | score_type
| Type of the score values.
using | alphabet_type
| Type of the underlying alphabet.
using | matrix_size_type
| Size type that can hold the dimension of the matrix (i.e. size of the alphabet).
using | matrix_type
| Type of the internal matrix (a two-dimensional array).
Static Public Attributes inherited from seqan3::scoring_scheme_base< aminoacid_scoring_scheme< int8_t >, aa27, int8_t >
static constexpr matrix_size_type | matrix_size
| Size of the matrix dimensions (i.e. size of the alphabet).

## Detailed Description

template<arithmetic score_type = int8_t>
class seqan3::aminoacid_scoring_scheme< score_type >

A data structure for managing and computing the score of two amino acids.

You can use an instance of this class to score two amino acids. The amino acids need not be of the same type. Different scoring behaviour can be set via the member functions.

### Example

// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: CC0-1.0
#include <seqan3/alignment/scoring/aminoacid_scoring_scheme.hpp>
#include <seqan3/alphabet/aminoacid/aa27.hpp>
#include <seqan3/alphabet/aminoacid/all.hpp>
#include <seqan3/core/debug_stream.hpp>
#include <seqan3/utility/views/zip.hpp>
int main()
{
using namespace seqan3::literals;
seqan3::aminoacid_scoring_scheme scheme{seqan3::aminoacid_similarity_matrix::blosum62};
// How to score two letters:
seqan3::debug_stream << "blosum62 score for T and S: " << (int)scheme.score('T'_aa27, 'S'_aa27) << "\n"; // == 1
scheme.set_similarity_matrix(seqan3::aminoacid_similarity_matrix::blosum80);
// You can also score aa20 against aa27:
seqan3::debug_stream << "blosum80 score for 'T'_aa27 and 'S'_aa20: " << (int)scheme.score('T'_aa27, 'S'_aa20)
<< "\n"; // == 2
scheme.set_hamming_distance();
seqan3::debug_stream << "Hamming distance between T and S: " << (int)scheme.score('T'_aa27, 'S'_aa20)
<< "\n"; // == -1
seqan3::debug_stream << "Hamming distance between T and T: " << (int)scheme.score('T'_aa27, 'T'_aa20)
<< "\n"; // == 0
seqan3::aminoacid_scoring_scheme scheme2{seqan3::aminoacid_similarity_matrix::blosum80};
// You can "edit" a given matrix directly:
seqan3::debug_stream << "blosum80 score between T and S: " << (int)scheme2.score('T'_aa27, 'S'_aa27)
<< "\n"; // == 2
auto & cell = scheme2.score('T'_aa27, 'S'_aa27);
cell = 3;
seqan3::debug_stream << "New score after editing entry: " << (int)scheme2.score('T'_aa27, 'S'_aa27) << "\n"; // == 3
std::vector<seqan3::aa27> one = "ALIGATOR"_aa27;
std::vector<seqan3::aa27> two = "ANIMATOR"_aa27;
seqan3::aminoacid_scoring_scheme scheme3{seqan3::aminoacid_similarity_matrix::blosum62};
// You can also score two sequences:
int score = 0;
for (auto pair : seqan3::views::zip(one, two))
score += scheme3.score(std::get<0>(pair), std::get<1>(pair));
seqan3::debug_stream << "Score: " << score << "\n"; // 4 + -3 + 4 + -3 + 4 + 5 + -1 + 5 = 15
}
aa27.hpp
Provides seqan3::aa27, container aliases and string literals.
all.hpp
Meta-header for the Alphabet / Aminoacid submodule .
aminoacid_scoring_scheme.hpp
Provides seqan3::aminoacid_scoring_scheme.
seqan3::aminoacid_scoring_scheme
A data structure for managing and computing the score of two amino acids.
Definition aminoacid_scoring_scheme.hpp:72
seqan3::aminoacid_scoring_scheme::set_similarity_matrix
constexpr void set_similarity_matrix(aminoacid_similarity_matrix const matrix_id)
Set the similarity matrix scheme (e.g. blosum62).
Definition aminoacid_scoring_scheme.hpp:118
seqan3::scoring_scheme_base::set_hamming_distance
constexpr void set_hamming_distance() noexcept
Set the hamming scheme, a variant of the simple scheme where match is scored 0 and mismatch -1.
Definition scoring_scheme_base.hpp:163
seqan3::scoring_scheme_base::score
constexpr score_t & score(alph1_t const alph1, alph2_t const alph2) noexcept
Score two letters (either two nucleotids or two amino acids).
Definition scoring_scheme_base.hpp:214
debug_stream.hpp
Provides seqan3::debug_stream and related types.
seqan3::aminoacid_similarity_matrix::blosum80
@ blosum80
The blosum80 matrix for closely related proteins.
Definition aminoacid_scoring_scheme.hpp:54
seqan3::aminoacid_similarity_matrix::blosum62
@ blosum62
The blosum62 matrix recommended for most use-cases.
Definition aminoacid_scoring_scheme.hpp:49
seqan3::debug_stream
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition debug_stream.hpp:38
seqan3::views::zip
seqan::stl::views::zip zip
A view adaptor that takes several views and returns tuple-like values from every i-th element of each...
Definition zip.hpp:24
seqan3::literals
The SeqAn namespace for literals.
std::vector
zip.hpp
Provides seqan3::views::zip.

## Constructor & Destructor Documentation

## aminoacid_scoring_scheme() [1/4]

template<arithmetic score_type = int8_t>

seqan3::aminoacid_scoring_scheme< score_type >::aminoacid_scoring_scheme | ( |  | ) |

constexpr default noexcept

The default constructor (delegates to set_hamming_distance()).

## aminoacid_scoring_scheme() [2/4]

template<arithmetic score_type = int8_t>
template<arithmetic score_arg_t>

seqan3::aminoacid_scoring_scheme< score_type >::aminoacid_scoring_scheme | ( | match_score< score_arg_t > const | ms,
|  | mismatch_score< score_arg_t > const | mms )

inline constexpr

Constructor for the simple scheme (delegates to set_simple_scheme()).

Template Parameters

  score_arg_t | The underlying type of the arguments.

Parameters

  [in] | ms | Matches shall be given this value (of type seqan3::match_score).
  [in] | mms | Mismatches shall be given this value (of type seqan3::mismatch_score).

Exceptions

  std::invalid_argument | Thrown if you pass a value that is to large/low to be represented by score_t.

## aminoacid_scoring_scheme() [3/4]

template<arithmetic score_type = int8_t>

seqan3::aminoacid_scoring_scheme< score_type >::aminoacid_scoring_scheme | ( | matrix_type const & | matrix | ) |

inline constexpr noexcept

Constructor for a custom scheme (delegates to set_custom_matrix()).

Parameters

  [in] | matrix | A full matrix that is copied into the scheme.

## aminoacid_scoring_scheme() [4/4]

template<arithmetic score_type = int8_t>

seqan3::aminoacid_scoring_scheme< score_type >::aminoacid_scoring_scheme | ( | aminoacid_similarity_matrix const | matrix_id | ) |

inline constexpr

Construct for seqan3::aminoacid_similarity_matrix.

Parameters

  [in] | matrix_id | The enum ID of the matrix, see seqan3::aminoacid_similarity_matrix.

Exceptions

  std::invalid_argument | If there is no matrix data for the given ID (usually a BUG).

## Member Function Documentation

## set_similarity_matrix()

template<arithmetic score_type = int8_t>

void seqan3::aminoacid_scoring_scheme< score_type >::set_similarity_matrix | ( | aminoacid_similarity_matrix const | matrix_id | ) |

inline constexpr

Set the similarity matrix scheme (e.g. blosum62).

Parameters

  [in] | matrix_id | The enum ID of the matrix, see seqan3::aminoacid_similarity_matrix.

Exceptions

  std::invalid_argument | If there is no matrix data for the given ID (usually a BUG).

The documentation for this class was generated from the following file:

- aminoacid_scoring_scheme.hpp

Hide me