Debug swcsa
[SXSI/TextCollection.git] / Query.cpp
1 #include "Query.h"
2 #include <cstring>
3
4 namespace SXSI
5 {
6
7 const char Query::ALPHABET_DNA[] = {'A', 'C', 'G', 'T', 'N'};
8
9
10 Query::Query(TextCollection const *tc_)
11     : pat(0), patlen(0), tc(tc_), debug(false), klimit(0), 
12       textlen(tc->getLength()), ALPHABET(ALPHABET_DNA)
13 { }
14
15
16 /*void reverse()
17 {
18     uchar c;
19     for (int i = 0; i < patlen / 2; ++i) {
20         c = pat[i];
21         pat[i] = pat[patlen - i - 1];
22         pat[patlen - i - 1] = c;
23     }
24 }
25
26 void revcmp()
27 {
28     reverse();
29     for (int i = 0; i < patlen; ++i)
30         switch (pat[i]) 
31         {
32         case('A'): pat[i] = 'T'; break;
33         case('C'): pat[i] = 'G'; break;
34         case('G'): pat[i] = 'C'; break;
35         case('T'): pat[i] = 'A'; break;                
36         case('a'): pat[i] = 't'; break;                
37         case('c'): pat[i] = 'g'; break;
38         case('g'): pat[i] = 'c'; break;                
39         case('a'): pat[i] = 't'; break;                
40         case('N'): pat[i] = 'N'; break;                
41         case('n'): pat[i] = 'n'; break;                
42         default:
43             std::cerr << "Query::align(): invalid alphabet ("<< pat[i] << ") given!" << std::endl;
44             std::exit(1);
45             break;
46         }
47         }*/
48
49 TextCollection::document_result Query::align(uchar const *p, unsigned k)
50 {
51     result.clear();
52     this->pat = p;
53     this->patlen = std::strlen((char const *)p);
54     this->klimit = k;
55
56     while (!smin.empty()) smin.pop();
57     while (!smax.empty()) smax.pop();
58     smin.push(0);
59     smax.push(textlen-1);
60     match.clear();
61         
62     firstStep();
63
64     // Search reverse complemented?
65 /*    {
66         revcmp();
67         this->pat = p->c_str();
68         while (!smin.empty()) smin.pop();
69         while (!smax.empty()) smax.pop();
70         smin.push(0);
71         smax.push(textlen-1);
72         match.clear();
73         
74         firstStep();
75
76         revcmp(); // Restore orig string
77         }*/
78
79     TextCollection::document_result dr(result.begin(), result.end());
80     return dr;
81 }
82
83 } // namespace