private static List <ReadPair> GetReadPairs(List <BamAlignment> bamAlignments, Dictionary <BamAlignment, ReadPair> stagedReadPairs, List <BamAlignment> flushableUnpaired, bool skipDups, int?refId = null, int?readLength = null) { var refIdLookup = new Dictionary <string, int>() { { "chr1", 1 } }; var bamReader = new MockBamReader(bamAlignments, refIdLookup); var mockFilter = new Mock <IAlignmentPairFilter>(); mockFilter.Setup(x => x.TryPair(It.IsAny <BamAlignment>(), It.IsAny <PairStatus>())).Returns <BamAlignment, PairStatus>((b, p) => stagedReadPairs[b]); mockFilter.Setup(x => x.GetFlushableUnpairedReads()).Returns(flushableUnpaired); var source = new PairFilterReadPairSource(bamReader, new ReadStatusCounter(), skipDups, mockFilter.Object, refId: refId, expectedFragmentLength: readLength); var readPairs = new List <ReadPair>(); while (true) { var readPair = source.GetNextEntryUntilNull(); if (readPair == null) { break; } readPairs.Add(readPair); } return(readPairs); }
public void GetNextEntryUntilNull_NonMocked() { var readEarly = TestHelpers.CreateBamAlignment(new string('A', 100), 3, 500, 30, false, name: "FarApart", isFirstMate: true); readEarly.FragmentLength = 600; readEarly.SetIsPaired(true); var readLate = TestHelpers.CreateBamAlignment(new string('A', 100), 500, 3, 30, false, name: "FarApart", isFirstMate: true); readLate.FragmentLength = -600; readLate.SetIsPaired(true); var bamAlignments = new List <BamAlignment>() { readEarly, readLate }; var refIdLookup = new Dictionary <string, int>() { { "chr1", 1 } }; var bamReader = new MockBamReader(bamAlignments, refIdLookup); var filter = new StitcherPairFilter(false, false, new AlignmentFlagDuplicateIdentifier(), new ReadStatusCounter(), minMapQuality: 0, treatImproperAsIncomplete: false); var source = new PairFilterReadPairSource(bamReader, new ReadStatusCounter(), false, filter, refId: 1, expectedFragmentLength: 150); // Return far apart reads individually so we don't bog down memory with things that don't act as pairs (stitch, cover same indels) anyway. var nextEntry = source.GetNextEntryUntilNull(); Assert.Equal(2, nextEntry.MinPosition); Assert.Equal(1, nextEntry.NumPrimaryReads); Assert.Equal(PairStatus.LongFragment, nextEntry.PairStatus); nextEntry = source.GetNextEntryUntilNull(); Assert.Equal(499, nextEntry.MinPosition); Assert.Equal(1, nextEntry.NumPrimaryReads); Assert.Equal(PairStatus.LongFragment, nextEntry.PairStatus); }