コード例 #1
0
        public void NormalizedSegmentsCoverageCalculator_NoBins_ReturnsNoBedGraphEntries()
        {
            var calculator = new NormalizedSegmentsCoverageCalculator();
            var segments   = Enumerable.Empty <CanvasSegment>().ToList();

            var results = calculator.Calculate(segments);

            Assert.Empty(results);
        }
コード例 #2
0
        public void NormalizedSegmentsCoverageCalculator_TestMedianCoverages()
        {
            var calculator = new NormalizedSegmentsCoverageCalculator();
            var segments   = new List <CanvasSegment>();

            // Median of 10 = 10
            var segment1 = GetSegment("chr1", 20, 30);

            AddBin(segment1, "chr1", 20, 30, 10);
            segments.Add(segment1);

            // Median of 20,30,50 = 30
            var segment2 = GetSegment("chr1", 40, 70);

            AddBin(segment2, "chr1", 40, 50, 20);
            AddBin(segment2, "chr1", 51, 60, 30);
            AddBin(segment2, "chr1", 61, 70, 50);

            segments.Add(segment2);

            // Median of 60,80 = 70
            var segment3 = GetSegment("chr2", 20, 50);

            AddBin(segment3, "chr2", 20, 30, 60);
            AddBin(segment3, "chr2", 40, 50, 80);
            segments.Add(segment3);

            var segment4 = GetSegment("chr3", 20, 50);

            AddBin(segment4, "chr3", 20, 30, 0);
            AddBin(segment4, "chr3", 40, 50, 0);
            segments.Add(segment4);

            var entries = calculator.Calculate(segments, 1).ToList();

            Assert.Equal(4, entries.Count());
            CheckBedEntry(entries[0], 20, 30, "chr1", 10);
            CheckBedEntry(entries[1], 40, 70, "chr1", 30);
            CheckBedEntry(entries[2], 20, 50, "chr2", 70);
            CheckBedEntry(entries[3], 20, 50, "chr3", 0);

            entries = calculator.Calculate(segments, 0.5).ToList();
            Assert.Equal(4, entries.Count());
            CheckBedEntry(entries[0], 20, 30, "chr1", 5);
            CheckBedEntry(entries[1], 40, 70, "chr1", 15);
            CheckBedEntry(entries[2], 20, 50, "chr2", 35);
            CheckBedEntry(entries[3], 20, 50, "chr3", 0);
        }
コード例 #3
0
        public void NormalizedSegmentsCoverageCalculator_OneSegmentOneBinCopyNumberZero_ReturnsBedGraphEntryWithZeroCoverage()
        {
            var calculator = new NormalizedSegmentsCoverageCalculator();
            var segments   = new List <CanvasSegment>
            {
                new CanvasSegment("chr1", 0, 1, new List <SampleGenomicBin>
                {
                    new SampleGenomicBin("chr1", 0, 1, 3f)
                })
                {
                    CopyNumber = 0,
                    Filter     = CanvasFilter.PassFilter
                }
            };

            var result = calculator.Calculate(segments).Single();

            Assert.Equal("chr1", result.Chromosome);
            Assert.Equal(0, result.Interval.Start);
            Assert.Equal(1, result.Interval.End);
            Assert.Equal(0, result.Value);
        }