public void SemiGlobalAlign() { var scorer = new StringScorer(); var msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "car", "bar", GetChars) { Mode = AlignmentMode.SemiGlobal }; msa.Compute(); Alignment <string, char>[] alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a r |", "| b a r |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.66).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "cart", "bar", GetChars) { Mode = AlignmentMode.SemiGlobal }; msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a r | t", "| b a r | " )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.57).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "cart", "art", GetChars) { Mode = AlignmentMode.SemiGlobal }; msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "c | a r t |", " | a r t |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.86).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "start", "tan", GetChars) { Mode = AlignmentMode.SemiGlobal }; msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "s | t a r | t", " | t a n | " )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.50).Within(0.01)); }
public void GlobalAlign() { var scorer = new StringScorer(); var msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "car", "bar", GetChars); msa.Compute(); Alignment <string, char>[] alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a r |", "| b a r |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.66).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "cart", "bar", GetChars); msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a r t |", "| b a r - |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.25).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "cart", "art", GetChars); msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a r t |", "| - a r t |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.50).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "start", "tan", GetChars); msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(2)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| s t a r t |", "| - t a - n |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.00).Within(0.01)); AssertAlignmentsEqual(alignments[1], CreateAlignment( "| s t a r t |", "| - t a n - |" )); Assert.That(alignments[1].NormalizedScore, Is.EqualTo(0.00).Within(0.01)); }
public void GlobalAlign_EmptySequence() { var scorer = new StringScorer(); var msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "", "", GetChars); msa.Compute(); Alignment <string, char>[] alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "||", "||" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0)); }
public void AlignEmptySequence() { var scorer = new StringScorer(); var msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "car", "", "bar" }, GetChars) { UseInputOrder = true }; msa.Compute(); Alignment <string, char> alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| c a r |", "| - - - |", "| b a r |" )); }
public void AlignLessThanThreeSequences() { var scorer = new StringScorer(); Assert.Throws <ArgumentException>(() => { var msa = new MultipleAlignmentAlgorithm <string, char>(scorer, Enumerable.Empty <string>(), GetChars); }); Assert.Throws <ArgumentException>(() => { var msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "bar" }, GetChars); }); Assert.Throws <ArgumentException>(() => { var msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "car", "bar" }, GetChars); }); }
public void AlignMoreThanTwoSequences() { var scorer = new StringScorer(); var msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "car", "bar", "carp" }, GetChars) { UseInputOrder = true }; msa.Compute(); Alignment <string, char> alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| c a r - |", "| b a r - |", "| c a r p |" )); msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "car", "bar", "star" }, GetChars) { UseInputOrder = true }; msa.Compute(); alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| - c a r |", "| - b a r |", "| s t a r |" )); msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "car", "bar", "stare" }, GetChars) { UseInputOrder = true }; msa.Compute(); alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| - c a r - |", "| - b a r - |", "| s t a r e |" )); msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "scar", "car", "bar", "stare" }, GetChars) { UseInputOrder = true }; msa.Compute(); alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| s c a r - |", "| - c a r - |", "| - b a r - |", "| s t a r e |" )); msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "sane", "scar", "car", "bar", "stare" }, GetChars) { UseInputOrder = true }; msa.Compute(); alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| s - a n e |", "| s c a r - |", "| - c a r - |", "| - b a r - |", "| s t a r e |" )); msa = new MultipleAlignmentAlgorithm <string, char>(scorer, new[] { "sane", "scar", "she", "car", "bar", "stare" }, GetChars) { UseInputOrder = true }; msa.Compute(); alignment = msa.GetAlignment(); AssertAlignmentsEqual(alignment, CreateAlignment( "| s - a n e |", "| s c a r - |", "| s - - h e |", "| - c a r - |", "| - b a r - |", "| s t a r e |" )); }
public void ExpansionCompressionAlign() { var scorer = new StringScorer(); var msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "car", "bar", GetChars) { ExpansionCompressionEnabled = true }; msa.Compute(); Alignment <string, char>[] alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a r |", "| b a r |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.66).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "cart", "bar", GetChars) { ExpansionCompressionEnabled = true }; msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| c a rt |", "| b a r |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.50).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "cart", "art", GetChars) { ExpansionCompressionEnabled = true }; msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(1)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| ca r t |", "| a r t |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.75).Within(0.01)); msa = new PairwiseAlignmentAlgorithm <string, char>(scorer, "start", "tan", GetChars) { ExpansionCompressionEnabled = true }; msa.Compute(); alignments = msa.GetAlignments().ToArray(); Assert.That(alignments.Length, Is.EqualTo(2)); AssertAlignmentsEqual(alignments[0], CreateAlignment( "| st ar t |", "| t a n |" )); Assert.That(alignments[0].NormalizedScore, Is.EqualTo(0.40).Within(0.01)); AssertAlignmentsEqual(alignments[1], CreateAlignment( "| st a rt |", "| t a n |" )); Assert.That(alignments[1].NormalizedScore, Is.EqualTo(0.40).Within(0.01)); }