Skip to content

Commit

Permalink
Fix block-aligner rev block
Browse files Browse the repository at this point in the history
  • Loading branch information
milot-mirdita committed Jun 27, 2023
1 parent c760a33 commit 7c65be3
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/commons/BlockAligner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ BlockAligner::BlockAligner(size_t maxSequenceLength,
targetSeqRev = static_cast<char *>(calloc(maxSequenceLength + 1, sizeof(char)));
querySeqRev = static_cast<char *>(calloc(maxSequenceLength + 1, sizeof(char)));
block = block_new_aa_trace_xdrop(maxSequenceLength + 1, maxSequenceLength + 1, range.max);
blockRev = block_new_aa_trace_xdrop(maxSequenceLength + 1, maxSequenceLength + 1, range.max);
}

BlockAligner::~BlockAligner() {
Expand All @@ -25,6 +26,7 @@ BlockAligner::~BlockAligner() {
free(querySeqRev);
free(targetSeqRev);
block_free_aa_trace_xdrop(block);
block_free_aa_trace_xdrop(blockRev);
}

void BlockAligner::initQuery(Sequence *query) {
Expand Down Expand Up @@ -132,12 +134,12 @@ BlockAligner::align(Sequence *targetSeqObj,
}

if (useProfile) {
block_align_profile_aa_trace_xdrop(block, queryRevPadded, targetRevProfile, range, xdrop);
block_align_profile_aa_trace_xdrop(blockRev, queryRevPadded, targetRevProfile, range, xdrop);
} else {
block_align_aa_trace_xdrop(block, queryRevPadded, targetRevPadded, &BLOSUM62, gaps, range, xdrop);
block_align_aa_trace_xdrop(blockRev, queryRevPadded, targetRevPadded, &BLOSUM62, gaps, range, xdrop);
}

AlignResult resRev = block_res_aa_trace_xdrop(block);
AlignResult resRev = block_res_aa_trace_xdrop(blockRev);

unsigned int qStartPos = querySeqLen - (qStartRev + resRev.query_idx);
unsigned int qEndPosAlign = querySeqLen;
Expand Down Expand Up @@ -177,13 +179,13 @@ BlockAligner::align(Sequence *targetSeqObj,
bool reverseCigar = false;

if (resRev.query_idx > res.query_idx && resRev.reference_idx > res.reference_idx) {
res = block_res_aa_trace_xdrop(block);
res = block_res_aa_trace_xdrop(blockRev);
reverseCigar = true;
}

Cigar *cigar = block_new_cigar(res.query_idx, res.reference_idx);
if (reverseCigar) {
block_cigar_aa_trace_xdrop(block, res.query_idx, res.reference_idx, cigar);
block_cigar_aa_trace_xdrop(blockRev, res.query_idx, res.reference_idx, cigar);
} else {
block_cigar_aa_trace_xdrop(block, res.query_idx, res.reference_idx, cigar);
}
Expand Down
1 change: 1 addition & 0 deletions src/commons/BlockAligner.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class BlockAligner {
SizeRange range;
Gaps gaps{};
BlockHandle block;
BlockHandle blockRev;
const char PSSMAlphabet[20] = {'A', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'K', 'L',
'M', 'N', 'P', 'Q', 'R',
Expand Down

0 comments on commit 7c65be3

Please sign in to comment.