File: configurations.cpp

package info (click to toggle)
seqan3 3.4.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,580 kB
  • sloc: cpp: 145,192; sh: 307; xml: 264; javascript: 95; makefile: 70; perl: 29; php: 15
file content (102 lines) | stat: -rw-r--r-- 3,647 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// 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]
#include <seqan3/alignment/configuration/all.hpp>
//! [include]

//! [include_scoring_scheme]
#include <seqan3/alignment/scoring/aminoacid_scoring_scheme.hpp>
#include <seqan3/alignment/scoring/hamming_scoring_scheme.hpp>
#include <seqan3/alignment/scoring/nucleotide_scoring_scheme.hpp>
//! [include_scoring_scheme]

//! [include_gap_cost_affine]
#include <seqan3/alignment/configuration/align_config_gap_cost_affine.hpp>
//! [include_gap_cost_affine]

//! [include_method]
#include <seqan3/alignment/configuration/align_config_method.hpp>
//! [include_method]

//! [include_output]
#include <seqan3/alignment/configuration/align_config_output.hpp>
//! [include_output]

//! [include_band]
#include <seqan3/alignment/configuration/align_config_band.hpp>
//! [include_band]

//! [include_edit]
#include <seqan3/alignment/configuration/align_config_edit.hpp>
//! [include_edit]

#include <seqan3/alphabet/aminoacid/all.hpp>
#include <seqan3/alphabet/nucleotide/all.hpp>

int main()
{
    {
        //! [method_global_free_end_gaps]
        // Example of a semi-global alignment where leading and trailing gaps in the
        // second sequence are not penalised:
        auto config = seqan3::align_cfg::method_global{seqan3::align_cfg::free_end_gaps_sequence1_leading{false},
                                                       seqan3::align_cfg::free_end_gaps_sequence2_leading{true},
                                                       seqan3::align_cfg::free_end_gaps_sequence1_trailing{false},
                                                       seqan3::align_cfg::free_end_gaps_sequence2_trailing{true}};
        //! [method_global_free_end_gaps]
    }

    {
        //! [scoring_scheme]
        using namespace seqan3::literals;

        // Define a simple scoring scheme with match and mismatch cost and get the score.
        seqan3::nucleotide_scoring_scheme nc_scheme{seqan3::match_score{4}, seqan3::mismatch_score{-5}};
        auto sc_nc = nc_scheme.score('A'_dna4, 'C'_dna4); // sc_nc == -5.

        // Define a amino acid similarity matrix and get the score.
        seqan3::aminoacid_scoring_scheme aa_scheme{};
        aa_scheme.set_similarity_matrix(seqan3::aminoacid_similarity_matrix::blosum30);
        auto sc_aa = aa_scheme.score('M'_aa27, 'K'_aa27); // sc_aa == 2.
        //! [scoring_scheme]
    }

    {
        //! [gap_cost_affine]

        // Define a gap scheme with custom gap scores.
        seqan3::align_cfg::gap_cost_affine affine_scheme{seqan3::align_cfg::open_score{-10},
                                                         seqan3::align_cfg::extension_score{-1}};

        int open_score = affine_scheme.open_score;           // == -10
        int extension_score = affine_scheme.extension_score; // == -1
        //! [gap_cost_affine]
    }

    {
        //! [output]

        // Configure the alignment to only compute the score.
        auto cfg = seqan3::align_cfg::output_score{};
        //! [output]
    }

    {
        //! [band]

        // Configure a banded alignment.
        auto cfg = seqan3::align_cfg::band_fixed_size{seqan3::align_cfg::lower_diagonal{-4},
                                                      seqan3::align_cfg::upper_diagonal{4}};
        //! [band]
    }

    {
        //! [edit]

        // Configure an edit distance alignment.
        auto cfg = seqan3::align_cfg::method_global{} | seqan3::align_cfg::edit_scheme;
        //! [edit]
    }
}