File: do_search.cpp

package info (click to toggle)
seqan2 2.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 228,748 kB
  • sloc: cpp: 257,602; ansic: 91,967; python: 8,326; sh: 1,056; xml: 570; makefile: 229; awk: 51; javascript: 21
file content (52 lines) | stat: -rw-r--r-- 1,463 bytes parent folder | download | duplicates (2)
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
#include <cmath>
#include <cstdio>
#include <fstream>
#include <iostream>
#include <map>

#include <seqan/basic.h>
#include <seqan/find.h>
#include <seqan/modifier.h>
#include <seqan/sequence.h>
#include <seqan/store.h>

#include "curve_smoothing.h"
#include "find_myers_ukkonen_reads.h"

using namespace seqan2;

int main(int argc, char ** argv)
{
    if (argc != 3)
        return 1;

    Dna5String contig = argv[1];
    Dna5String read = argv[2];

    Finder<Dna5String> finder(contig);
    Pattern<Dna5String, MyersUkkonenReads> pattern(read, -static_cast<int>(length(read)));

    EditDistanceScore scoring;

    while (find(finder, pattern))
    {
        if (endPosition(finder) < length(read))
            continue;
        if (endPosition(finder) > length(contig))
            continue;
        while (findBegin(finder, pattern, getScore(pattern)))
            continue;

        std::cout << "end = " << endPosition(finder) << ", begin = " << beginPosition(finder) << ", last = " << endPosition(finder) - 1 << ", score = " << getScore(pattern) << std::endl;
        Align<Dna5String> ali;
        resize(rows(ali), 2);
        assignSource(row(ali, 0), infix(finder));
        assignSource(row(ali, 1), infix(read, 0, length(read)));
        int scoreValue = globalAlignment(ali, scoring, NeedlemanWunsch());
        std::cout << "Global alignment with score " << scoreValue << std::endl;
        std::cout << ali << std::endl;

    }

    return 0;
}