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