From 8459b6b30e6eb5bf373ccb10f84672cb724aa5c3 Mon Sep 17 00:00:00 2001 From: Annika Jochheim Date: Wed, 26 Jul 2023 23:51:58 +0200 Subject: [PATCH] disable wrapped scoring when target sequence is shorter --- src/alignment/BandedNucleotideAligner.cpp | 9 +++++++-- src/alignment/rescorediagonal.cpp | 20 ++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/alignment/BandedNucleotideAligner.cpp b/src/alignment/BandedNucleotideAligner.cpp index fa6c27d86..904ac810e 100644 --- a/src/alignment/BandedNucleotideAligner.cpp +++ b/src/alignment/BandedNucleotideAligner.cpp @@ -98,10 +98,15 @@ s_align BandedNucleotideAligner::align(Sequence * targetSeqObj, int queryLen = querySeqObj->L; int origQueryLen = queryLen; if (wrappedScoring) { - alignment = DistanceCalculator::computeUngappedWrappedAlignment( + if (querySeqObj->L >= targetSeqObj->L * 2) + alignment = DistanceCalculator::computeUngappedWrappedAlignment( queryCharSeqAlign, querySeqObj->L, targetSeqObj->getSeqData(), targetSeqObj->L, diagonal, fastMatrix.matrix, Parameters::RESCORE_MODE_ALIGNMENT); - origQueryLen = queryLen/2; + else + alignment = DistanceCalculator::computeUngappedAlignment( + queryCharSeqAlign, querySeqObj->L / 2, targetSeqObj->getSeqData(), targetSeqObj->L, + diagonal, fastMatrix.matrix, Parameters::RESCORE_MODE_ALIGNMENT); + origQueryLen = queryLen / 2; } else { alignment = DistanceCalculator::computeUngappedAlignment( diff --git a/src/alignment/rescorediagonal.cpp b/src/alignment/rescorediagonal.cpp index e64aff57b..f5325d5f9 100644 --- a/src/alignment/rescorediagonal.cpp +++ b/src/alignment/rescorediagonal.cpp @@ -213,15 +213,23 @@ int doRescorediagonal(Parameters &par, } DistanceCalculator::LocalAlignment alignment; if (par.wrappedScoring) { + /* if (dbLen > origQueryLen) { - Debug(Debug::WARNING) << "WARNING: target sequence " << targetId - << " is skipped, no valid wrapped scoring possible\n"; - continue; - } - - alignment = DistanceCalculator::computeUngappedWrappedAlignment( + Debug(Debug::WARNING) << "WARNING: target sequence " << targetId + << " is skipped, no valid wrapped scoring possible\n"; + continue; + } + */ + if (dbLen <= origQueryLen) { + alignment = DistanceCalculator::computeUngappedWrappedAlignment( querySeqToAlign, queryLen, targetSeq, targetLength, results[entryIdx].diagonal, fastMatrix.matrix, par.rescoreMode); + } + else{ + alignment = DistanceCalculator::computeUngappedAlignment( + querySeqToAlign, origQueryLen, targetSeq, targetLength, + results[entryIdx].diagonal, fastMatrix.matrix, par.rescoreMode); + } } else { alignment = DistanceCalculator::computeUngappedAlignment(