@@ -523,10 +523,10 @@ void msa::alignment_helper::fallback2cpu(std::vector<int>& fallbackPairs, NodeP
523523 std::sort (fallbackPairs.begin (), fallbackPairs.end ());
524524 for (int i = 0 ; i < fallbackPairs.size (); ++i) {
525525 int nIdx = fallbackPairs[i];
526- int32_t refNum = nodes[nIdx].first ->seqsIncluded . size () ;
527- int32_t qryNum = nodes[nIdx].second ->seqsIncluded . size () ;
528- bool lowQ_r = (refNum == 1 && database->sequences [nodes[nIdx].first ->seqsIncluded [0 ]]->lowQuality );
529- bool lowQ_q = (qryNum == 1 && database->sequences [nodes[nIdx].second ->seqsIncluded [0 ]]->lowQuality );
526+ int32_t refNum = nodes[nIdx].first ->alnNum ;
527+ int32_t qryNum = nodes[nIdx].second ->alnNum ;
528+ bool lowQ_r = (refNum > 1 ) ? false : ( database->sequences [nodes[nIdx].first ->seqsIncluded [0 ]]->lowQuality );
529+ bool lowQ_q = (qryNum > 1 ) ? false : ( database->sequences [nodes[nIdx].second ->seqsIncluded [0 ]]->lowQuality );
530530 if ((refNum < qryNum) || lowQ_r) {
531531 bool fallback = (!filtering) || (!lowQ_r);
532532 if (fallback) {
@@ -536,8 +536,14 @@ void msa::alignment_helper::fallback2cpu(std::vector<int>& fallbackPairs, NodeP
536536 // swap reference and query
537537 int32_t refLen = nodes[nIdx].first ->alnLen ;
538538 int32_t qryLen = nodes[nIdx].second ->alnLen ;
539+ float refWeight = nodes[nIdx].first ->alnWeight ;
540+ float qryWeight = nodes[nIdx].second ->alnWeight ;
539541 nodes[nIdx].second ->alnLen = refLen;
540542 nodes[nIdx].first ->alnLen = qryLen;
543+ nodes[nIdx].second ->alnNum = refNum;
544+ nodes[nIdx].first ->alnNum = qryNum;
545+ nodes[nIdx].second ->alnWeight = refWeight;
546+ nodes[nIdx].first ->alnWeight = qryWeight;
541547 auto temp = nodes[nIdx].second ->seqsIncluded ;
542548 nodes[nIdx].second ->seqsIncluded = nodes[nIdx].first ->seqsIncluded ;
543549 nodes[nIdx].first ->seqsIncluded = temp;
0 commit comments