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); }
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); }
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); }