File: interval_tree_example.cpp

package info (click to toggle)
seqan2 2.4.0%2Bdfsg-16
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 224,180 kB
  • sloc: cpp: 256,886; ansic: 91,672; python: 8,330; sh: 995; xml: 570; makefile: 252; awk: 51; javascript: 21
file content (29 lines) | stat: -rw-r--r-- 906 bytes parent folder | download | duplicates (7)
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
#include <iostream>
#include <seqan/misc/interval_tree.h>

using namespace seqan;

int main()
{
    // fill a string of intervals and keys
    typedef IntervalAndCargo<int, CharString> TInterval;
    String<TInterval> intervals;
    appendValue(intervals, TInterval(100, 1000, "gene"));
    appendValue(intervals, TInterval(100, 300, "exon1"));
    appendValue(intervals, TInterval(150, 250, "coding1"));
    appendValue(intervals, TInterval(500, 800, "exon2"));
    appendValue(intervals, TInterval(600, 700, "coding2"));

    // create IntervalTree of that string
    IntervalTree<int, CharString> tree(intervals);

    // find intervals that overlap the query interval [550,900)
    String<CharString> results;
    findIntervals(results, tree, 550, 900);

    // output corresponding keys
    for (unsigned i = 0; i < length(results); ++i)
        std::cout << results[i] << std::endl;

    return 0;
}