Mise à jour terminée. Pour connaître les apports de la version 13.8.4 par rapport à notre ancienne version vous pouvez lire les "Release Notes" suivantes :
https://about.gitlab.com/releases/2021/02/11/security-release-gitlab-13-8-4-released/
https://about.gitlab.com/releases/2021/02/05/gitlab-13-8-3-released/

Commit d14d4f25 authored by Mathieu Giraud's avatar Mathieu Giraud

core/segment.cpp, MAX12: KmerSegment a read with the two most frequent KmerAffects

The special germline PSEUDO_GERMLINE_MAX12 uses the usual KmerSegmenter,
but launches computeSegmentation() on the two most frequent KmerAffects of the read.

The 'strand' detection is also more flexible here and purely indicative, as
we could even segment chimera reads.
parent fe5fef49
......@@ -26,6 +26,7 @@
#include "tools.h"
#include "affectanalyser.h"
#include <sstream>
#include <cstring>
#include <string>
Segmenter::~Segmenter() {}
......@@ -196,6 +197,7 @@ KmerSegmenter::KmerSegmenter(Sequence seq, Germline *germline)
sequence = seq.sequence ;
info = "" ;
info_extra = "seed";
detected = false ;
segmented = false;
segmented_germline = germline ;
reversed = false;
......@@ -233,6 +235,26 @@ KmerSegmenter::KmerSegmenter(Sequence seq, Germline *germline)
KmerAffect before, after;
if (!strcmp(germline->code.c_str(), PSEUDO_GERMLINE_MAX12))
{ // Pseudo-germline, max12
set<KmerAffect> forbidden;
forbidden.insert(KmerAffect::getAmbiguous());
forbidden.insert(KmerAffect::getUnknown());
CountKmerAffectAnalyser ckaa(*(germline->index), sequence);
pair <KmerAffect, KmerAffect> max12 = ckaa.max12(forbidden);
strand = nb_strand[0] > nb_strand[1] ? -1 : 1 ;
computeSegmentation(strand, max12.first, max12.second);
// The pseudo-germline should never take precedence over the regular germlines
score = 1 ;
}
else
{ // Regular germline
// Test on which strand we are, select the before and after KmerAffects
if (nb_strand[0] == 0 && nb_strand[1] == 0) {
because = UNSEG_TOO_FEW_ZERO ;
......@@ -252,9 +274,11 @@ KmerSegmenter::KmerSegmenter(Sequence seq, Germline *germline)
return ;
}
detected = false ;
computeSegmentation(strand, before, after);
} // endif Pseudo-germline
if (! because)
{
// Now we check the delta between Vend and right
......
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