Commit 13640493 authored by Mikaël Salson's avatar Mikaël Salson

dynprog.cpp: Do full dynamic programming with too many end deletions

See #2767. With genes with large number of end deletions, the designation was
not the correct one due to the banded optimisation.
parent bf3a7423
......@@ -381,6 +381,7 @@ int DynProg::compute(bool onlyBottomTriangle, int onlyBottomTriangleShift)
}
// End. Find best_i and best_j, put FIN keywords where the backtrack should stop
if (mode == Local || mode == LocalEndWithSomeDeletions)
......
......@@ -902,6 +902,14 @@ void align_against_collection(string &read, BioReader &rep, int forbidden_rep_id
#endif
}
if (onlyBottomTriangle && (rep.sequence(box->ref_nb).size() - best_best_j) > BOTTOM_TRIANGLE_SHIFT) {
// Too many deletions, let's do a full DP
align_against_collection(read, rep, forbidden_rep_id, reverse_ref, reverse_both,
local, box, segment_cost, false);
return;
}
sort(score_r.begin(),score_r.end(),comp_pair);
box->ref = rep.sequence(box->ref_nb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment