Commit 41d08568 authored by Mathieu Giraud's avatar Mathieu Giraud

core/segment.cpp: detecting several D

When a D segment has been detected, we now try to detect an additional D between V/D or between D/J,
possibly detecting VDDJ (or even some VDDDJ) recombinations.

Note that this detection is not optimal. A chaining algorithm would be preferable here.
Moreover, statistics should be refined, as now the only filter is done before check_and_remove_overlap.
parent de307152
......@@ -925,9 +925,36 @@ void FineSegmenter::FineSegmentD(Germline *germline, double evalue_threshold, in
if (!dSegmented)
return ;
AlignBox *box_D1 = new AlignBox();
AlignBox *box_D2 = new AlignBox();
#define DD_MIN_SEARCH 5
vector <AlignBox*> boxes ;
boxes.push_back(box_V);
if (box_D->start - box_V->end >= DD_MIN_SEARCH)
{
bool d1 = FineSegmentD(germline,
box_V, box_D1, box_D,
evalue_threshold, multiplier);
if (d1)
boxes.push_back(box_D1);
}
boxes.push_back(box_D);
if (box_J->start - box_D->end >= DD_MIN_SEARCH)
{
bool d2 = FineSegmentD(germline,
box_D, box_D2, box_J,
evalue_threshold, multiplier);
if (d2)
boxes.push_back(box_D2);
}
boxes.push_back(box_J);
code = codeFromBoxes(boxes, sequence_or_rc);
......
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