public static void TestExceptionThrownForUnclippedAlignment() { var refseq = "ACAATATA"; var queryseq = "ACAATAT-"; var r = new Sequence(DnaAlphabet.Instance, refseq); var q = new Sequence(DnaAlphabet.Instance, queryseq); var aln = new PairwiseSequenceAlignment(r, q); var pas = new PairwiseAlignedSequence(); pas.FirstSequence = r; pas.SecondSequence = q; aln.Add(pas); Assert.Throws <FormatException> (() => VariantCaller.LeftAlignIndelsAndCallVariants(aln, true)); refseq = "AAACAATATA"; queryseq = "AA-CAATATA"; r = new Sequence(DnaAlphabet.Instance, refseq); q = new Sequence(DnaAlphabet.Instance, queryseq); aln = new PairwiseSequenceAlignment(r, q); pas = new PairwiseAlignedSequence(); pas.FirstSequence = r; pas.SecondSequence = q; aln.Add(pas); Assert.Throws <FormatException> (() => VariantCaller.LeftAlignIndelsAndCallVariants(aln, true)); }
public static void TestLeftAlignmentStep() { var refseq = "ACAATAAAAGCGCGCGCGCGTTACGTATAT--ATGGATAT"; var queryseq = "ACAATAA-AGC--GCGC--GTTACGTATATATATGGATAT"; var r = new Sequence(DnaAlphabet.Instance, refseq); var q = new Sequence(DnaAlphabet.Instance, queryseq); var aln = new PairwiseSequenceAlignment(r, q); var pas = new PairwiseAlignedSequence(); pas.FirstSequence = r; pas.SecondSequence = q; aln.Add(pas); var tpl = VariantCaller.LeftAlignIndelsAndCallVariants(aln, true); // Check the left alignment aln = tpl.Item1 as PairwiseSequenceAlignment; var lar = aln.PairwiseAlignedSequences [0].FirstSequence.ConvertToString(); var laq = aln.PairwiseAlignedSequences [0].SecondSequence.ConvertToString(); var exprefseq = "ACAATAAAAGCGCGCGCGCGTTACG--TATATATGGATAT"; var expqueryseq = "ACAAT-AAA----GCGCGCGTTACGTATATATATGGATAT"; Assert.AreEqual(exprefseq, lar); Assert.AreEqual(expqueryseq, laq); // And it's hard, so we might as well check the variants var variants = tpl.Item2; Assert.AreEqual(3, variants.Count); string[] bases = new string[] { "A", "GCGC", "TA" }; char[] hpbases = new char[] { 'A', 'G', 'T' }; bool[] inHp = new bool[] { true, false, false }; int[] lengths = new int[] { 1, 4, 2 }; int[] starts = new int[] { 4, 8, 24 }; IndelType[] types = new IndelType[] { IndelType.Deletion, IndelType.Deletion, IndelType.Insertion }; for (int i = 0; i < 3; i++) { Assert.AreEqual(VariantType.INDEL, variants [i].Type); var vi = variants [i] as IndelVariant; Assert.AreEqual(hpbases[i], vi.HomopolymerBase); Assert.AreEqual(starts [i], vi.StartPosition); Assert.AreEqual(lengths [i], vi.Length); Assert.AreEqual(bases [i], vi.InsertedOrDeletedBases); Assert.AreEqual(inHp [i], vi.InHomopolymer); Assert.AreEqual(types [i], vi.InsertionOrDeletion); } }