diff --git a/pkg/obialign/fastlcsegf.go b/pkg/obialign/fastlcsegf.go index e441134..fc51ca5 100644 --- a/pkg/obialign/fastlcsegf.go +++ b/pkg/obialign/fastlcsegf.go @@ -49,6 +49,10 @@ func FastLCSEGFScoreByte(bA, bB []byte, maxError int, endgapfree bool, buffer *[ delta := lA - lB + if endgapfree { + maxError += delta + } + // The difference of length is larger the maximum allowed errors if delta > maxError { return -1, -1 @@ -170,6 +174,9 @@ func FastLCSEGFScoreByte(bA, bB []byte, maxError int, endgapfree bool, buffer *[ // score = _setout(score) // } + if x == 0 || x == (even-1) { + score = _setout(score) + } // // BEGINNING OF DEBUG CODE // // if i < 2 && j < 5 { // log.Debugf("[%d,%d]\n",i,j) diff --git a/pkg/obiapat/pattern.go b/pkg/obiapat/pattern.go index efbf08b..1e6fcc4 100644 --- a/pkg/obiapat/pattern.go +++ b/pkg/obiapat/pattern.go @@ -370,10 +370,11 @@ func (pattern ApatPattern) BestMatch(sequence ApatSequence, begin, length int) ( score, lali := obialign.FastLCSEGFScoreByte( (*cseq)[start:end], (*cpattern)[0:int(pattern.pointer.pointer.patlen)], - nerr*2, true, &buffer) + nerr, true, &buffer) nerr = lali - score start = best[0] + int(pattern.pointer.pointer.patlen) - lali + end = start + lali log.Println("results", score, lali, start, nerr) return } diff --git a/pkg/obingslibrary/match.go b/pkg/obingslibrary/match.go index 3785d42..78a389b 100644 --- a/pkg/obingslibrary/match.go +++ b/pkg/obingslibrary/match.go @@ -199,7 +199,7 @@ func (marker *Marker) Match(sequence *obiseq.BioSequence) *DemultiplexMatch { m.ForwardMatch = direct.String() m.ForwardTag = sftag - m.ReverseMismatches = nerr + m.ForwardMismatches = nerr m.BarcodeEnd = start sample, ok := marker.samples[TagPair{sftag, rtag}]