예제 #1
0
        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));
        }
예제 #2
0
        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);
            }
        }