Skip to content
Snippets Groups Projects
Commit 23c9e81b authored by Marco Biasini's avatar Marco Biasini
Browse files

fix MergePairwiseAlignments for reference sequences with trailing gaps

parent 08db1371
No related branches found
No related tags found
No related merge requests found
...@@ -141,9 +141,13 @@ AlignmentHandle MergePairwiseAlignments(const AlignmentList& pairwise_alns, ...@@ -141,9 +141,13 @@ AlignmentHandle MergePairwiseAlignments(const AlignmentList& pairwise_alns,
AlignmentHandle merged=CreateAlignment(); AlignmentHandle merged=CreateAlignment();
merged.AddSequence(shift_reference(ref_seq, shifts)); merged.AddSequence(shift_reference(ref_seq, shifts));
size_t ref_len=merged.GetSequence(0).GetLength();
for (AlignmentList::const_iterator i=pairwise_alns.begin(), for (AlignmentList::const_iterator i=pairwise_alns.begin(),
e=pairwise_alns.end(); i!=e; ++i) { e=pairwise_alns.end(); i!=e; ++i) {
SequenceHandle new_seq=realign_sequence(*i, shifts); SequenceHandle new_seq=realign_sequence(*i, shifts);
for (size_t j=new_seq.GetLength(); j<ref_len; ++j) {
new_seq.Append('-');
}
merged.AddSequence(new_seq); merged.AddSequence(new_seq);
} }
return merged; return merged;
......
...@@ -107,4 +107,30 @@ BOOST_AUTO_TEST_CASE(merge_pairwise_alignments_three) ...@@ -107,4 +107,30 @@ BOOST_AUTO_TEST_CASE(merge_pairwise_alignments_three)
BOOST_CHECK_EQUAL(seqs[1].GetString(), "xyabcdefghijk"); BOOST_CHECK_EQUAL(seqs[1].GetString(), "xyabcdefghijk");
BOOST_CHECK_EQUAL(seqs[2].GetString(), "-zabcdefghijk"); BOOST_CHECK_EQUAL(seqs[2].GetString(), "-zabcdefghijk");
} }
BOOST_AUTO_TEST_CASE(merge_pairwise_alignments_four)
{
SequenceHandle ref=CreateSequence("REF", "abcdefghijk");
SequenceHandle s1=CreateSequence("S1", "abcdefghijk--");
SequenceHandle s2=CreateSequence("S2", "abcdefghijkxy");
AlignmentHandle aln1=CreateAlignment();
aln1.AddSequence(s1);
aln1.AddSequence(s2);
SequenceHandle s3=CreateSequence("S1", "-abcdefghijk");
SequenceHandle s4=CreateSequence("S2", "zabcdefghijk");
AlignmentHandle aln2=CreateAlignment();
aln2.AddSequence(s3);
aln2.AddSequence(s4);
AlignmentList l;
l.push_back(aln1);
l.push_back(aln2);
AlignmentHandle m=alg::MergePairwiseAlignments(l, ref);
ConstSequenceList seqs=m.GetSequences();
BOOST_CHECK_EQUAL(seqs[0].GetString(), "-abcdefghijk--");
BOOST_CHECK_EQUAL(seqs[1].GetString(), "-abcdefghijkxy");
BOOST_CHECK_EQUAL(seqs[2].GetString(), "zabcdefghijk--");
}
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment