1 //![include]
2 #include <iostream>
3 #include <seqan/stream.h>
4 #include <seqan/journaled_string_tree.h>
5 //![include]
6
7 //![match_printer]
8 template <typename TTraverser>
9 struct MatchPrinter
10 {
11 TTraverser & trav;
12
MatchPrinterMatchPrinter13 MatchPrinter(TTraverser & _trav) : trav(_trav)
14 {}
15
16 void
operator ()MatchPrinter17 operator()()
18 {
19 auto pos = position(trav);
20 for (auto p : pos)
21 {
22 std::cout << "Seq: " << p.i1 << " Pos: " << p.i2 << std::endl;
23 }
24 }
25 };
26 //![match_printer]
27
28 //![typedef]
29 using namespace seqan;
30
main()31 int main()
32 {
33 typedef JournaledStringTree<DnaString> TJst;
34 typedef Pattern<DnaString, Horspool> TPattern;
35 typedef Traverser<TJst>::Type TTraverser;
36 //![typedef]
37
38 //![init]
39 DnaString seq = "AGATCGAGCGAGCTAGCGACTCAG";
40 TJst jst(seq, 10);
41
42 insert(jst, 1, 3, std::vector<unsigned>{1, 3, 5, 6, 7}, DeltaTypeDel());
43 insert(jst, 8, "CGTA", std::vector<unsigned>{1, 2}, DeltaTypeIns());
44 insert(jst, 10, 'C', std::vector<unsigned>{4, 9}, DeltaTypeSnp());
45 insert(jst, 15, 2, std::vector<unsigned>{0, 4, 7}, DeltaTypeDel());
46 insert(jst, 20, 'A', std::vector<unsigned>{0, 9}, DeltaTypeSnp());
47 insert(jst, 20, Pair<unsigned, DnaString>(1, "CTC"), std::vector<unsigned>{1, 2, 3, 7}, DeltaTypeSV());
48 //![init]
49
50 //![prepare_search]
51 DnaString ndl = "AGCGT";
52 TTraverser trav(jst, length(ndl));
53
54 TPattern pat(ndl);
55 JstExtension<TPattern> ext(pat);
56 //![prepare_search]
57
58 //![search]
59 MatchPrinter<TTraverser> delegate(trav);
60 find(trav, ext, delegate);
61
62 return 0;
63 }
64 //![search]
65