fn() computeAlignmentStats
Compute alignment statistics.

Defined in <seqan/align.h>
Signature TScoreVal computeAlignmentStats(stats, align, scoringScheme); TScoreVal computeAlignmentStats(stats, row0, row1, scoringScheme);

Parameters

stats The AlignmentStats object to store alignment statistics in.
align The Align object to score.
row0 The first row (Gaps object).
row1 The second row (Gaps object).
score The Score object to use for the scoring scheme.

Return Values

TScoreVal The score value of the alignment, of the same type as the value type of scoringScheme

Detailed Description

Examples

#include <iostream>

#include <seqan/align.h>
#include <seqan/sequence.h>

using namespace seqan2;

int main()
{
    // Create an alignment between subject and query.
    Peptide subject =
        "MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE"
        "DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH"
        "PGDFGADAQGAMNKALELFRKDMASNYK";
    Peptide query =
        "MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHFDLHPGSA"
        "QLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRVDPVNFKLLSHCLLVTLAARF"
        "PADFTAEAHAAWDKFLSVTEKYR";

    Align<Peptide> align;
    resize(rows(align), 2);
    setSource(row(align, 0), subject);
    setSource(row(align, 1), query);

    Blosum62 scoringScheme(-1, -12);
    globalAlignment(align, scoringScheme);

    // Compute the statistics of the alignment.
    AlignmentStats stats;
    computeAlignmentStats(stats, align, scoringScheme);
    std::cout << align
              << "score:               " << stats.alignmentScore << "\n"
              << "gap opens:           " << stats.numGapOpens << "\n"
              << "gap extensions:      " << stats.numGapExtensions << "\n"
              << "num insertions:      " << stats.numInsertions << "\n"
              << "num deletions:       " << stats.numDeletions << "\n"
              << "num matches:         " << stats.numMatches << "\n"
              << "num mismatches:      " << stats.numMismatches << "\n"
              << "num positive scores: " << stats.numPositiveScores << "\n"
              << "num negative scores: " << stats.numNegativeScores << "\n"
              << "percent similarity:  " << stats.alignmentSimilarity << "\n"
              << "percent identity:    " << stats.alignmentIdentity << "\n\n\n";

    // Clip alignment rows and compute score of this view.
    setClippedEndPosition(row(align, 0), 100);
    setClippedEndPosition(row(align, 1), 100);
    setClippedBeginPosition(row(align, 0), 5);
    setClippedBeginPosition(row(align, 1), 5);

    computeAlignmentStats(stats, align, scoringScheme);
    std::cout << "Clipping alignment to (5, 100)\n"
              << align
              << "score:               " << stats.alignmentScore << "\n"
              << "gap opens:           " << stats.numGapOpens << "\n"
              << "gap extensions:      " << stats.numGapExtensions << "\n"
              << "num insertions:      " << stats.numInsertions << "\n"
              << "num deletions:       " << stats.numDeletions << "\n"
              << "num matches:         " << stats.numMatches << "\n"
              << "num mismatches:      " << stats.numMismatches << "\n"
              << "num positive scores: " << stats.numPositiveScores << "\n"
              << "num negative scores: " << stats.numNegativeScores << "\n"
              << "percent similarity:  " << stats.alignmentSimilarity << "\n"
              << "percent identity:    " << stats.alignmentIdentity << "\n";
    return 0;
}

The output is as follows:

      0     .    :    .    :    .    :    .    :    .    : 
        MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHL
        | |   |       | |        | | | |||  || |   |  |   
        MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHF---

     50     .    :    .    :    .    :    .    :    .    : 
        KSEDEMKASEDLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKI
           |    |  |  ||  |  | |   |           |   ||     
        ---DLHPGSAQLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRV

    100     .    :    .    :    .    :    .    :    .    
        PVKYLEFISECIIQVLQSKHPGDFGADAQGAMNKALELFRKDMASNYK
                | |    |    | || | |  |  | |    |     | 
        DPVNFKLLSHCLLVTLAARFPADFTAEAHAAWDKFLSVTEK-----YR


score:               159
gap opens:           2
gap extensions:      9
num insertions:      11
num deletions:       0
num matches:         41
num mismatches:      96
num positive scores: 69
num negative scores: 68
percent similarity:  46.6216
percent identity:    27.7027


Clipping alignment to (5, 100)
      0     .    :    .    :    .    :    .    :    .    : 
        GEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDE
         |       | |        | | | |||  || |   |  |      | 
        TERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHF------DL

     50     .    :    .    :    .    :    .    :    . 
        MKASEDLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKI
           |  |  ||  |  | |   |           |   ||     
        HPGSAQLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRV


score:               99
gap opens:           1
gap extensions:      5
num insertions:      6
num deletions:       0
num matches:         26
num mismatches:      63
num positive scores: 43
num negative scores: 46
percent similarity:  45.2632
percent identity:    27.3684

Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

See Also