示例#1
0
        public void Create_Filter_w_pass_tag_ignored()
        {
            var filterTags   = new[] { "First", "Second", CanvasFilter.Pass };
            var canvasFilter = CanvasFilter.Create(filterTags);

            Assert.Equal("First;Second", canvasFilter.ToVcfString());
        }
示例#2
0
        public void FormatCnvSizeWithSuffix_10kb_conversion()
        {
            const int size          = 10000;
            var       cnvSizeFilter = CanvasFilter.GetCnvSizeFilter(size);

            Assert.Equal("L10kb", cnvSizeFilter);
        }
示例#3
0
        public void GetRecordLevelFilterFromSampleFiltersOnly_multi_sample_all_pass()
        {
            var sampleLevelFilters = new[] { CanvasFilter.PassFilter, CanvasFilter.PassFilter, CanvasFilter.PassFilter };
            var recordLevelFilter  = CanvasFilter.GetRecordLevelFilterFromSampleFiltersOnly(sampleLevelFilters);

            Assert.Equal("PASS", recordLevelFilter.ToVcfString());
        }
示例#4
0
        public void FormatCnvSizeWithSuffix_500bp_conversion()
        {
            const int size          = 500;
            var       cnvSizeFilter = CanvasFilter.GetCnvSizeFilter(size);

            Assert.Equal("L500bp", cnvSizeFilter);
        }
示例#5
0
        NormalizedCoverageCalculator_OneSegmentPassOneSegmentFiltered_ReturnsBedGraphEntriesNormalizedByPassingSegmentCopyNumber()
        {
            var calculator = new NormalizedBinsCoverageCalculator();
            var segments   = new List <CanvasSegment>
            {
                new CanvasSegment("chr1", 0, 1, new List <SampleGenomicBin>
                {
                    new SampleGenomicBin("chr1", 0, 1, 3f)
                })
                {
                    CopyNumber = 1,
                    Filter     = CanvasFilter.PassFilter
                },
                new CanvasSegment("chr1", 1, 2, new List <SampleGenomicBin>
                {
                    new SampleGenomicBin("chr1", 1, 2, 6f)
                })
                {
                    CopyNumber = 10,
                    Filter     = CanvasFilter.Create(new[] { "Filtered" })
                }
            };

            var results = calculator.Calculate(segments).ToList();

            Assert.Equal(2, results.Count);
            Assert.Equal(1, results[0].Value);
            Assert.Equal(2, results[1].Value);
        }
示例#6
0
        //static void Main(string[] args)
        //{
        //    //GameOfLifeSource golSrc = new GameOfLifeSource(1680, 1050);
        //    GameOfLifeSource golSrc = new GameOfLifeSource(840, 525); // 1680 x 1050 / 2
        //    //GameOfLifeSource golSrc = new GameOfLifeSource(560, 350); // 1680 x 1050 / 3
        //    //GameOfLifeSource golSrc = new GameOfLifeSource(336, 210); // 1680 x 1050 / 5
        //    GenericDelay<Image> delayFilt = new GenericDelay<Image>(new TimeSpan(0, 0, 0, 0, 100));
        //    //WallpaperFilter wpFilt = new WallpaperFilter();
        //    DisplayFilter displayFilt = new DisplayFilter();

        //    golSrc.OutputPin.AttachTo(delayFilt.InputPin);
        //    delayFilt.OutputPin.AttachTo(displayFilt.InputPin);
        //    displayFilt.OutputPin.AttachTo(golSrc.InputPin);

        //    PinOut<Image> golSrcOut = new PinOut<Image>();
        //    golSrcOut.AttachTo(golSrc.InputPin);
        //    golSrcOut.Send(null);
        //    //golSrcOut.Send(null);
        //    //golSrcOut.Send(null);
        //    //golSrcOut.Send(null);
        //    Console.ReadLine();
        //}

        static void Main(string[] args)
        {
            RedditSource          redditSource = new RedditSource("http://www.reddit.com/r/pics/.json");
            GenericFilter <Image> sizeFilt     = new GenericFilter <Image>(img => 100 < img.Width && img.Width < 1000 && 100 < img.Height && img.Height < 800);
            BorderFilter          brdInnerFilt = new BorderFilter(Color.Black, 1);
            BorderFilter          brdOuterFilt = new BorderFilter(Color.White, 9);
            RotateFilter          rotFilt      = new RotateFilter(-30, 30);
            CanvasFilter          cvsFilt      = new CanvasFilter();
            GenericDelay <Image>  delayFilt    = new GenericDelay <Image>(new TimeSpan(0, 0, 30));
            WallpaperFilter       wpFilt       = new WallpaperFilter();

            redditSource.OutputPin.AttachTo(sizeFilt.InputPin);
            sizeFilt.SuccessPin.AttachTo(brdInnerFilt.InputPin);
            sizeFilt.FailurePin.AttachTo(redditSource.InputPin);
            brdInnerFilt.OutputPin.AttachTo(brdOuterFilt.InputPin);
            brdOuterFilt.OutputPin.AttachTo(rotFilt.InputPin);
            rotFilt.OutputPin.AttachTo(cvsFilt.PictureInputPin);
            cvsFilt.OutputPin.AttachTo(delayFilt.InputPin);
            cvsFilt.OutputPin.AttachTo(cvsFilt.CanvasInputPin);
            delayFilt.OutputPin.AttachTo(wpFilt.InputPin);
            wpFilt.OutputPin.AttachTo(redditSource.InputPin);

            /* prime canvas */
            PinOut <Image> canvasOut = new PinOut <Image>();

            canvasOut.AttachTo(cvsFilt.CanvasInputPin);
            Image canvas;

            try
            {
                int          bytesRead;
                byte[]       buf = new byte[1024];
                FileStream   fs  = new FileStream(Path.Combine(Environment.CurrentDirectory, "wall.bmp"), FileMode.Open);
                MemoryStream ms  = new MemoryStream();
                while ((bytesRead = fs.Read(buf, 0, 1024)) > 0)
                {
                    ms.Write(buf, 0, bytesRead);
                }
                ms.Seek(0, SeekOrigin.Begin);
                fs.Close();
                canvas = Image.FromStream(ms);
            }
            catch (FileNotFoundException)
            {
                Size monitorSize = SystemInformation.PrimaryMonitorSize;
                canvas = new Bitmap(monitorSize.Width, monitorSize.Height);
            }
            canvasOut.Send(canvas);

            PinOut <Image> ljSrcOut = new PinOut <Image>();

            ljSrcOut.AttachTo(redditSource.InputPin);
            ljSrcOut.Send(null); /* only need a signal to kick off the source */
            ljSrcOut.Send(null); /* put two images in the loop to test multithreading */
            //ljSrcOut.Send(null); /* hell, why not three? */
            //ljSrcOut.Send(null); /* we are approaching levels of insanity heretofore untold */
            Console.ReadLine();
        }
示例#7
0
        public void GetRecordLevelFilter_multi_sample_failed_common_filter()
        {
            var sampleLevelFilters = new[]
            {
                CanvasFilter.Create(new [] { "Failed1" }),
                CanvasFilter.Create(new [] { "Failed1", "Failed2" }),
                CanvasFilter.Create(new [] { "Failed1", "Failed3" })
            };
            var recordLevelFilter = CanvasFilter.GetRecordLevelFilterFromSampleFiltersOnly(sampleLevelFilters);

            Assert.Equal("FailedFT", recordLevelFilter.ToVcfString());
        }
示例#8
0
        public void GetRecordLevelFilterFromSampleFiltersOnly_multi_sample_one_pass()
        {
            var sampleLevelFilters = new[]
            {
                CanvasFilter.PassFilter,
                CanvasFilter.Create(new [] { "Failed1" }),
                CanvasFilter.Create(new [] { "Failed2" }),
            };
            var recordLevelFilter = CanvasFilter.GetRecordLevelFilterFromSampleFiltersOnly(sampleLevelFilters);

            Assert.Equal("PASS", recordLevelFilter.ToVcfString());
        }
示例#9
0
        //static void Main(string[] args)
        //{
        //    //GameOfLifeSource golSrc = new GameOfLifeSource(1680, 1050);
        //    GameOfLifeSource golSrc = new GameOfLifeSource(840, 525); // 1680 x 1050 / 2
        //    //GameOfLifeSource golSrc = new GameOfLifeSource(560, 350); // 1680 x 1050 / 3
        //    //GameOfLifeSource golSrc = new GameOfLifeSource(336, 210); // 1680 x 1050 / 5
        //    GenericDelay<Image> delayFilt = new GenericDelay<Image>(new TimeSpan(0, 0, 0, 0, 100));
        //    //WallpaperFilter wpFilt = new WallpaperFilter();
        //    DisplayFilter displayFilt = new DisplayFilter();
        //    golSrc.OutputPin.AttachTo(delayFilt.InputPin);
        //    delayFilt.OutputPin.AttachTo(displayFilt.InputPin);
        //    displayFilt.OutputPin.AttachTo(golSrc.InputPin);
        //    PinOut<Image> golSrcOut = new PinOut<Image>();
        //    golSrcOut.AttachTo(golSrc.InputPin);
        //    golSrcOut.Send(null);
        //    //golSrcOut.Send(null);
        //    //golSrcOut.Send(null);
        //    //golSrcOut.Send(null);
        //    Console.ReadLine();
        //}
        static void Main(string[] args)
        {
            RedditSource redditSource = new RedditSource("http://www.reddit.com/r/pics/.json");
            GenericFilter<Image> sizeFilt = new GenericFilter<Image>(img => 100 < img.Width && img.Width < 1000 && 100 < img.Height && img.Height < 800);
            BorderFilter brdInnerFilt = new BorderFilter(Color.Black, 1);
            BorderFilter brdOuterFilt = new BorderFilter(Color.White, 9);
            RotateFilter rotFilt = new RotateFilter(-30, 30);
            CanvasFilter cvsFilt = new CanvasFilter();
            GenericDelay<Image> delayFilt = new GenericDelay<Image>(new TimeSpan(0, 0, 30));
            WallpaperFilter wpFilt = new WallpaperFilter();

            redditSource.OutputPin.AttachTo(sizeFilt.InputPin);
            sizeFilt.SuccessPin.AttachTo(brdInnerFilt.InputPin);
            sizeFilt.FailurePin.AttachTo(redditSource.InputPin);
            brdInnerFilt.OutputPin.AttachTo(brdOuterFilt.InputPin);
            brdOuterFilt.OutputPin.AttachTo(rotFilt.InputPin);
            rotFilt.OutputPin.AttachTo(cvsFilt.PictureInputPin);
            cvsFilt.OutputPin.AttachTo(delayFilt.InputPin);
            cvsFilt.OutputPin.AttachTo(cvsFilt.CanvasInputPin);
            delayFilt.OutputPin.AttachTo(wpFilt.InputPin);
            wpFilt.OutputPin.AttachTo(redditSource.InputPin);

            /* prime canvas */
            PinOut<Image> canvasOut = new PinOut<Image>();
            canvasOut.AttachTo(cvsFilt.CanvasInputPin);
            Image canvas;
            try
            {
                int bytesRead;
                byte[] buf = new byte[1024];
                FileStream fs = new FileStream(Path.Combine(Environment.CurrentDirectory, "wall.bmp"), FileMode.Open);
                MemoryStream ms = new MemoryStream();
                while ((bytesRead = fs.Read(buf, 0, 1024)) > 0)
                    ms.Write(buf, 0, bytesRead);
                ms.Seek(0, SeekOrigin.Begin);
                fs.Close();
                canvas = Image.FromStream(ms);
            }
            catch (FileNotFoundException)
            {
                Size monitorSize = SystemInformation.PrimaryMonitorSize;
                canvas = new Bitmap(monitorSize.Width, monitorSize.Height);
            }
            canvasOut.Send(canvas);

            PinOut<Image> ljSrcOut = new PinOut<Image>();
            ljSrcOut.AttachTo(redditSource.InputPin);
            ljSrcOut.Send(null); /* only need a signal to kick off the source */
            ljSrcOut.Send(null); /* put two images in the loop to test multithreading */
            //ljSrcOut.Send(null); /* hell, why not three? */
            //ljSrcOut.Send(null); /* we are approaching levels of insanity heretofore untold */
            Console.ReadLine();
        }
示例#10
0
        public void UpdateRecordLevelFilter_w_MinQual()
        {
            var sampleLevelFilters = new[]
            {
                CanvasFilter.Create(new [] { "Failed1" }),
                CanvasFilter.Create(new [] { "Failed1", "Failed2" }),
                CanvasFilter.Create(new [] { "Failed1", "Failed3" })
            };
            var recordLevelFitler        = CanvasFilter.Create(new[] { "MinQual" });
            var updatedrecordLevelFilter = CanvasFilter.UpdateRecordLevelFilter(recordLevelFitler, sampleLevelFilters);

            Assert.Equal("MinQual;FailedFT", updatedrecordLevelFilter.ToVcfString());
        }
示例#11
0
        /// <summary>
        /// For each segment shorter than 10kb, flag it as filtered.
        /// </summary>
        private void FilterExcessivelyShortSegments(ISampleMap <List <CanvasSegment> > segments)
        {
            string sizeFilter = CanvasFilter.GetCnvSizeFilter(CanvasFilter.SegmentSizeCutoff);

            foreach (var segmentList in segments.Values)
            {
                foreach (var segment in segmentList)
                {
                    if (segment.Length >= CanvasFilter.SegmentSizeCutoff)
                    {
                        continue;
                    }
                    segment.Filter = segment.Filter.AddFilter(sizeFilter);
                }
            }
        }
示例#12
0
 private void EstimateQScores(ISampleMap <CanvasSegment> canvasSegments, ISampleMap <SampleMetrics> pedigreeMembersInfo,
                              PedigreeInfo pedigreeInfo, ISampleMap <Dictionary <Genotype, double> > singleSampleLikelihoods, JointLikelihoods copyNumberLikelihoods, ISampleMap <Genotype> copyNumbers)
 {
     foreach (var sampleId in canvasSegments.SampleIds)
     {
         canvasSegments[sampleId].QScore     = GetSingleSampleQualityScore(singleSampleLikelihoods[sampleId], copyNumbers[sampleId]);
         canvasSegments[sampleId].CopyNumber = copyNumbers[sampleId].TotalCopyNumber;
         if (canvasSegments[sampleId].QScore < _qualityFilterThreshold)
         {
             canvasSegments[sampleId].Filter = CanvasFilter.Create(new[] { $"q{_qualityFilterThreshold}" });
         }
     }
     if (pedigreeInfo.HasFullPedigree())
     {
         SetDenovoQualityScores(canvasSegments, pedigreeMembersInfo, pedigreeInfo.ParentsIds, pedigreeInfo.OffspringIds, copyNumberLikelihoods);
     }
 }
        public void FiltersNonPassSegments()
        {
            var calculator = new CopyNumberBedGraphCalculator();
            var segments   = new List <CanvasSegment>
            {
                new CanvasSegment("chr1", 0, 1, new List <SampleGenomicBin>
                {
                    new SampleGenomicBin("chr1", 0, 1, 3f)
                })
                {
                    CopyNumber = 0,
                    Filter     = CanvasFilter.Create("NonPass".Yield())
                }
            };
            var ploidyInfo = new PloidyInfo();

            var results = calculator.Calculate(segments, ploidyInfo);

            Assert.Empty(results);
        }
示例#14
0
        public void ToVcfString_test()
        {
            var canvasFilter = CanvasFilter.Create(new[] { "First", "Second", "Third" });

            Assert.Equal("First;Second;Third", canvasFilter.ToVcfString());
        }