2 * This is a fragment, included from multiple places in ebwt_search.cpp.
3 * It implements the logic of the third phase of the 2/3-mismatch
4 * search routine. It is implemented as a code fragment so that it can
5 * be reused in both the half-index-in-memory and full-index-in-memory
10 // Try 2/3 backtracks in the 3' half of the forward read
12 bt3.setReportExacts(false);
13 bt3.setQuery(patsrc->bufa());
19 bool done = bt3.backtrack();
21 // no more 1-mismatch hits are possible after this point
22 if(sink->finishedWithStratum(1)) {
26 // Try a half-and-half on the forward read
28 bthh3.setQuery(patsrc->bufa());
29 // Processing the forward pattern with the forward index;
30 // s3 ("lo") half is on the right
36 done = bthh3.backtrack();
37 if(bthh3.numBacktracks() == bthh3.maxBacktracks()) {
40 bthh3.resetNumBacktracks();
47 // Try a half-and-half on the reverse complement read
50 bthh3.setQuery(patsrc->bufa());
51 // Processing the forward pattern with the forward index;
52 // s5 ("hi") half is on the right
58 bool done = bthh3.backtrack();
59 if(bthh3.numBacktracks() == bthh3.maxBacktracks()) {
62 bthh3.resetNumBacktracks();