Example #1
0
        public void TryStitch_NoXC_Stitchable()
        {
            //Reads without XC tags that do overlap should be added as one merged read in basic stitcher
            var basicStitcher = StitcherTestHelpers.GetStitcher(10);
            var alignmentSet  = StitcherTestHelpers.GetOverlappingReadSet();

            basicStitcher.TryStitch(alignmentSet);
            Assert.Equal(1, alignmentSet.ReadsForProcessing.Count);
        }
Example #2
0
        public void TryStitch_NoXC_Stitchable()
        {
            var xcStitcherXcRequired = GetXCStitcher();

            //Reads without XC tags that do overlap should be added separately in XC stitcher when xc is required
            var alignmentSet = StitcherTestHelpers.GetOverlappingReadSet();

            StitcherTestHelpers.TryStitchAndAssertFailed(xcStitcherXcRequired, alignmentSet);
        }
Example #3
0
        public void TryStitch_WithXCTag()
        {
            const string xcTagDiffFromCalculated = "4M2I4M";
            const string expectedCalculatedCigar = "10M";

            var xcRequiredStitcher = GetXCStitcher();

            // -----------------------------------------------
            // XC tag is available, and matching between R1 and R2, and expected length,
            // but is different from the cigar string we would have calculated
            // -----------------------------------------------

            // [If require XC]
            // XC tag should be taken
            var alignmentSet = StitcherTestHelpers.GetOverlappingReadSet();

            alignmentSet.PartnerRead1.StitchedCigar = new CigarAlignment(xcTagDiffFromCalculated);
            alignmentSet.PartnerRead2.StitchedCigar = new CigarAlignment(xcTagDiffFromCalculated);
            xcRequiredStitcher.TryStitch(alignmentSet);

            Assert.Equal(1, alignmentSet.ReadsForProcessing.Count);
            var mergedRead = alignmentSet.ReadsForProcessing.First();

            Assert.Equal(xcTagDiffFromCalculated, mergedRead.CigarData.ToString());

            // -----------------------------------------------
            // XC tag is there, and matching between R1 and R2, but not expected length
            // -----------------------------------------------
            // [If not require XC]
            //bounce back to processing separately?
            //alignmentSet = GetOverlappingReadSet();
            //alignmentSet.PartnerRead1.StitchedCigarString = "8M";
            //alignmentSet.PartnerRead2.StitchedCigarString = "8M";
            //stitcher.TryStitch(alignmentSet);
            //Assert.Equal(2, alignmentSet.ReadsForProcessing.Count);
            // [If require XC]
            //???

            // -----------------------------------------------
            // XC tag is there on one read but not the other
            // -----------------------------------------------

            // [If require XC]
            // should bounce back to separate processing
            alignmentSet = StitcherTestHelpers.GetOverlappingReadSet();
            alignmentSet.PartnerRead1.StitchedCigar = new CigarAlignment("4M2I4M");
            alignmentSet.PartnerRead2.StitchedCigar = null;

            StitcherTestHelpers.TryStitchAndAssertFailed(xcRequiredStitcher, alignmentSet);

            alignmentSet = StitcherTestHelpers.GetOverlappingReadSet();
            alignmentSet.PartnerRead1.StitchedCigar = null;
            alignmentSet.PartnerRead2.StitchedCigar = new CigarAlignment("4M2I4M");

            StitcherTestHelpers.TryStitchAndAssertFailed(xcRequiredStitcher, alignmentSet);

            // -----------------------------------------------
            // XC tag is not there
            // -----------------------------------------------

            // [If require XC]
            // should bounce back to separate processing
            alignmentSet = StitcherTestHelpers.GetOverlappingReadSet();
            alignmentSet.PartnerRead1.StitchedCigar = null;
            alignmentSet.PartnerRead2.StitchedCigar = null;

            StitcherTestHelpers.TryStitchAndAssertFailed(xcRequiredStitcher, alignmentSet);

            // -----------------------------------------------
            // XC tag does not match between read1 and read2
            // -----------------------------------------------

            // [If require XC]
            // should bounce back to separate processing
            alignmentSet = StitcherTestHelpers.GetOverlappingReadSet();
            alignmentSet.PartnerRead1.StitchedCigar = new CigarAlignment("4M2I4M");
            alignmentSet.PartnerRead2.StitchedCigar = new CigarAlignment("9M1I");

            StitcherTestHelpers.TryStitchAndAssertFailed(xcRequiredStitcher, alignmentSet);
        }