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