예제 #1
0
        public static HistogramBin[] Histogram(this IList <MetaNum> self, int binCount = -1, double binWidth = double.NaN)
        {
            var min = (double)self.Min();
            var max = (double)self.Max();
            HistogramInterval intervals;

            if (!double.IsNaN(binWidth))
            {
                intervals = HistogramHelper.GetHistogramIntervalFromBinWidth(min, max, binWidth);
            }
            else
            {
                if (binCount < 0)
                {
                    binCount = HistogramHelper.GetBinCount(min, max, self.Count);
                }

                intervals = HistogramHelper.GetHistogramIntervalFromBinCount(min, max, binCount);
            }

            var collect = CollectHistogram(self, intervals);
            var counts  = collect.Item1;
            var total   = collect.Item2;

            return(HistogramBin.CreateHistogram(intervals, counts, total));
        }
예제 #2
0
 public override void HandleMouseClick(object sender, MouseEventArgs e)
 {
     if (_selectedData != null && e.Button == MouseButtons.Left)
     {
         HistogramHelper.CreateAndShowFindResults((ZedGraphControl)sender, GraphSummary, _document, _selectedData);
         _selectedData = null;
     }
 }
        public WindowedStreamConsumer([NotNull] WindowedStreamConsumerSettings <T, TKey> settings, [CanBeNull] ILog log)
            : base(settings, log)
        {
            this.settings = settings ?? throw new ArgumentNullException(nameof(settings));
            this.log      = (log ?? LogProvider.Get()).ForContext <WindowedStreamConsumer <T, TKey> >();
            tracer        = settings.Tracer ?? TracerProvider.Get();

            windows = new Dictionary <TKey, Windows <T, TKey> >();

            var applicationMetricContext = settings.ApplicationMetricContext ?? new DevNullMetricContext();

            eventLagMetric = applicationMetricContext.CreateHistogram("eventLag", new HistogramConfig {
                Buckets = HistogramHelper.CreateDefaultBuckets(), Unit = WellKnownUnits.Milliseconds
            });

            var instanceMetricContext = settings.InstanceMetricContext ?? new DevNullMetricContext();

            stateMetric = instanceMetricContext.CreateIntegerGauge("state", "type");

            var settingsOnBatchEnd = settings.OnBatchEnd;

            settings.OnBatchEnd = c =>
            {
                FlushWindows();
                Task.Run(() => settings.LeftCoordinatesStorage.AdvanceAsync(leftCoordinates));
                settingsOnBatchEnd?.Invoke(c);
            };

            var settingsOnEvent = settings.OnEvent;

            settings.OnEvent = (e, c) =>
            {
                AddEvent(e, c);
                settingsOnEvent?.Invoke(e, c);
            };

            var settingsOnRestart = settings.OnRestart;

            settings.OnRestart = c =>
            {
                Restart(c).GetAwaiter().GetResult();
                settingsOnRestart?.Invoke(c);
            };

            var settingsOnStop = settings.OnStop;

            settings.OnStop = c =>
            {
                Stop(c).GetAwaiter().GetResult();
                settingsOnStop?.Invoke(c);
            };
        }
예제 #4
0
 private void padButton_Click(object sender, EventArgs e)
 {
     try
     {
         GraphPane graphPane = histogramControl.GraphPane;
         HistogramHelper.SetPointsList(ref pointsPAD, padPath);
         HistogramHelper.AddPadHistogram(graphPane, histogramControl, pointsPAD);
     }
     catch (Exception)
     {
         MessageBox.Show("Fail to load histogram!");
     }
 }
예제 #5
0
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                HistogramHelper.SetPointsList(ref pointsAC, acPath);
                GraphPane graphPane = histogramControl.GraphPane;
                HistogramHelper.AddAcHistogram(graphPane, histogramControl, pointsAC);

                //HistogramHelper.JoinFiles();
            }
            catch (Exception)
            {
                MessageBox.Show("Fail to load histogram!");
            }
        }
예제 #6
0
        private void AddLabels(Graphics g)
        {
            if (_areaCVGraphData == null)
            {
                Title.Text = Resources.AreaCVHistogramGraphPane_AddLabels_Calculating____;
            }
            else if (!_areaCVGraphData.IsValid)
            {
                Title.Text = Resources.AreaCVHistogramGraphPane_AddLabels_Not_enough_data;
            }
            else
            {
                Title.Text = string.Empty;

                var unit   = _percentage ? @"%" : string.Empty;
                var factor = _percentage ? 100.0 : 1.0;

                var scaleFactor = CalcScaleFactor();
                var fontHeight  = GraphSummary.CreateFontSpec(Color.Black).GetHeight(scaleFactor);
                var height      = PaneHeightToYValue(fontHeight);
                // Anchor labels at top of graph pane
                var y = Math.Min(PaneHeightToYValue(Rect.Height - TitleGap * Title.FontSpec.GetHeight(scaleFactor) - fontHeight * _stickItems.Count), _areaCVGraphData.MaxFrequency + height);

                var index = 0;
                if (Settings.Default.AreaCVShowMedianCV)
                {
                    _stickItems[index++].Points[1].Y = y;
                    string text = string.Format(Resources.AreaCVHistogramGraphPane_AddLabels_Median___0_,
                                                HistogramHelper.FormatDouble(_areaCVGraphData.MedianCV * factor, _decimals) + unit);
                    GraphObjList.Add(AddLabel(text, _areaCVGraphData.MedianCV * factor, y, Color.Blue));
                    y += height;
                }

                if (Settings.Default.AreaCVShowCVCutoff)
                {
                    _stickItems[index++].Points[1].Y = y;
                    string text = string.Format(Resources.AreaCVHistogramGraphPane_UpdateGraph_Below__0____1_,
                                                Settings.Default.AreaCVCVCutoff + unit, HistogramHelper.FormatDouble(_areaCVGraphData.BelowCVCutoff * factor, _decimals) + unit);
                    GraphObjList.Add(AddLabel(text, Settings.Default.AreaCVCVCutoff, y, Color.Red));
                }
            }
        }
        private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var combobox     = (ComboBox)sender;
            var selectedItem = (ComboBoxItem)combobox.SelectedItem;

            if (selectedItem == null || HistogramPolygon == null)
            {
                return;
            }

            switch (selectedItem.Content.ToString())
            {
            default:
            case "Czerwony":
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(_histogram.HistogramR);
                HistogramPolygon.Fill   = new SolidColorBrush(Colors.Red);
                HistogramType           = HistogramType.Red;
                break;

            case "Zielony":
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(_histogram.HistogramG);
                HistogramPolygon.Fill   = new SolidColorBrush(Colors.Green);
                HistogramType           = HistogramType.Green;
                break;

            case "Niebieski":
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(_histogram.HistogramB);
                HistogramPolygon.Fill   = new SolidColorBrush(Colors.Blue);
                HistogramType           = HistogramType.Blue;
                break;

            case "Uśredniony":
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(_histogram.HistogramAv);
                HistogramPolygon.Fill   = new SolidColorBrush(Colors.Gray);
                HistogramType           = HistogramType.Average;
                break;
            }
        }
        private void UpdateHistogram()
        {
            var tempHistogram = new Histogram((ImageBrush)PreviewImage.Background);

            switch (HistogramType)
            {
            default:
            case HistogramType.Red:
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(tempHistogram.HistogramR);
                break;

            case HistogramType.Green:
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(tempHistogram.HistogramG);
                break;

            case HistogramType.Blue:
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(tempHistogram.HistogramB);
                break;

            case HistogramType.Average:
                HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(tempHistogram.HistogramAv);
                break;
            }
        }
예제 #9
0
        public override void UpdateGraph(bool selectionChanged)
        {
            if (!GraphSummary.DocumentUIContainer.DocumentUI.Settings.HasResults)
            {
                _areaCVGraphData = null;
                return;
            }

            var settings = new AreaCVGraphData.AreaCVGraphSettings(GraphSummary.Type);

            _document   = GraphSummary.DocumentUIContainer.DocumentUI;
            _percentage = !Settings.Default.AreaCVShowDecimals;
            _decimals   = _percentage ? 1 : 3;

            CurveList.Clear();

            var gotData = _cache.TryGet(_document, settings, DataCallback, out _areaCVGraphData);

            if (!gotData)
            {
                Title.Text = Resources.AreaCVHistogram2DGraphPane_UpdateGraph_Calculating____;
                return;
            }

            if (!_areaCVGraphData.IsValid)
            {
                Title.Text = Resources.AreaCVHistogram2DGraphPane_Draw_Not_enough_data;
                return;
            }

            var factor = AreaGraphController.GetAreaCVFactorToDecimal();

            Title.Text = string.Empty;

            YAxis.Title.Text = Resources.AreaCVHistogram2DGraphPane_UpdateGraph_CV + (_percentage ? @" (%)" : string.Empty);
            XAxis.Title.Text = Resources.AreaCvHistogram2DGraphPane_UpdateGraph_Log10_Mean_Area;

            XAxis.Scale.MinAuto = XAxis.Scale.MinAuto = XAxis.Scale.MaxAuto = YAxis.Scale.MaxAuto = false;
            XAxis.Scale.Min     = Math.Max(0, double.IsNaN(Settings.Default.AreaCVMinLog10Area) ? _areaCVGraphData.MinMeanArea : Settings.Default.AreaCVMinLog10Area);
            XAxis.Scale.Max     = double.IsNaN(Settings.Default.AreaCVMaxLog10Area) ? _areaCVGraphData.MaxMeanArea : Settings.Default.AreaCVMaxLog10Area;
            YAxis.Scale.Min     = 0.0;
            YAxis.Scale.Max     = double.IsNaN(Settings.Default.AreaCVMaxCV) ? _areaCVGraphData.MaxCV * factor : Settings.Default.AreaCVMaxCV;

            AxisChange();

            var points = _areaCVGraphData.Data
                         .Select(d => new HeatMapData.TaggedPoint3D(new Point3D(d.MeanArea, d.CV * factor, d.Frequency), d))
                         .ToList();

            Items = points.Count; // Because heatmaps can't be trusted to have a consistent number of points on all monitors
            var heatMapData = new HeatMapData(points);

            HeatMapGraphPane.GraphHeatMap(this, heatMapData, 17, 2, (float)(_areaCVGraphData.MinCV * factor), (float)(_areaCVGraphData.MaxCV * factor), Settings.Default.AreaCVLogScale, 0);

            var unit = _percentage ? @"%" : string.Empty;

            if (Settings.Default.AreaCVShowMedianCV)
            {
                string text = string.Format(Resources.AreaCVHistogram2DGraphPane_UpdateGraph_Median___0_, HistogramHelper.FormatDouble(_areaCVGraphData.MedianCV * factor, _decimals) + unit);
                _lineItems[0] = AddLineItem(text, XAxis.Scale.Min, XAxis.Scale.Max, _areaCVGraphData.MedianCV * factor, _areaCVGraphData.MedianCV * factor, Color.Blue);
                CurveList.Insert(0, _lineItems[0]);
            }

            if (Settings.Default.AreaCVShowCVCutoff)
            {
                string text = string.Format(Resources.AreaCVHistogramGraphPane_UpdateGraph_Below__0____1_, Settings.Default.AreaCVCVCutoff + unit,
                                            HistogramHelper.FormatDouble(_areaCVGraphData.BelowCVCutoff * factor, _decimals) +
                                            unit);
                _lineItems[1] = AddLineItem(text, XAxis.Scale.Min, XAxis.Scale.Max, Settings.Default.AreaCVCVCutoff, Settings.Default.AreaCVCVCutoff, Color.Red);
                CurveList.Insert(0, _lineItems[1]);
            }
        }
예제 #10
0
 private double[] GetBuckets(string id) =>
 HistogramHelper.GetBuckets(_config.Histograms, id);
 private void InitializeHistogram()
 {
     HistogramPolygon.Points = HistogramHelper.ConvertToPointCollection(_histogram.HistogramR);
     HistogramPolygon.Fill   = new SolidColorBrush(Colors.Red);
 }
 private async Task UpdatePreviewImage(int min, int max)
 {
     Lut = HistogramHelper.GetLutStretching(min, max);
     PreviewImage.Background = await HistogramHelper.StretchHistogram(_origin, Lut, HistogramType);
 }
예제 #13
0
        public override void UpdateGraph(bool selectionChanged)
        {
            if (!GraphSummary.DocumentUIContainer.DocumentUI.Settings.HasResults)
            {
                _areaCVGraphData = null;
                return;
            }

            var settings = new AreaCVGraphData.AreaCVGraphSettings(GraphSummary.Type);

            _document = GraphSummary.DocumentUIContainer.DocumentUI;

            var factor = AreaGraphController.GetAreaCVFactorToDecimal();

            BarSettings.Type = BarType.SortedOverlay;
            BarSettings.ClusterScaleWidth = Settings.Default.AreaCVHistogramBinWidth;
            BarSettings.MinClusterGap     = 0.0f;

            _percentage = !Settings.Default.AreaCVShowDecimals;
            _decimals   = _percentage ? 1 : 3;

            GraphObjList.Clear();
            CurveList.Clear();
            _stickItems.Clear();

            var gotData = _cache.TryGet(_document, settings, DataCallback, out _areaCVGraphData);

            if (!gotData || !_areaCVGraphData.IsValid)
            {
                return;
            }

            var fontHeight = GraphSummary.CreateFontSpec(Color.Black).GetHeight(CalcScaleFactor());
            var height     = PaneHeightToYValue(fontHeight);

            var heightFactor = 1;

            if (Settings.Default.AreaCVShowMedianCV)
            {
                var stick = AddStickItem(_areaCVGraphData.MedianCV * factor, _areaCVGraphData.MedianCV * factor, 0.0, _areaCVGraphData.MaxFrequency + heightFactor++ *height, Color.Blue);
                CurveList.Add(stick);
                _stickItems.Add(stick);
            }

            if (Settings.Default.AreaCVShowCVCutoff)
            {
                var stick = AddStickItem(Settings.Default.AreaCVCVCutoff, Settings.Default.AreaCVCVCutoff, 0.0, _areaCVGraphData.MaxFrequency + heightFactor++ *height, Color.Red);
                CurveList.Add(stick);
                _stickItems.Add(stick);
            }

            var selected = HistogramHelper.GetSelectedPeptides(GraphSummary).NodePeps.OrderBy(p => p.Id.GlobalIndex).ToList();
            var comparer = Comparer <PeptideDocNode> .Create((a, b) => a.Id.GlobalIndex.CompareTo(b.Id.GlobalIndex));

            var selectedPoints  = new PointPairList();
            var selectedPoints2 = new PointPairList();
            var otherPoints     = new PointPairList();

            foreach (var d in _areaCVGraphData.Data)
            {
                int frequency;
                var x = d.CV * factor + Settings.Default.AreaCVHistogramBinWidth / 2.0f;

                var pt = new PointPair(x, d.Frequency)
                {
                    Tag = d
                };
                if (Settings.Default.ShowReplicateSelection &&
                    (frequency = d.PeptideAnnotationPairs.Count(pair => selected.BinarySearch(pair.Peptide, comparer) >= 0)) > 0)
                {
                    selectedPoints.Add(pt);
                    selectedPoints2.Add(new PointPair(x, frequency)
                    {
                        Tag = d
                    });
                }
                else
                {
                    otherPoints.Add(pt);
                }
            }

            CurveList.Insert(0, MakeBarItem(selectedPoints2, Color.Red));
            CurveList.Insert(1, MakeBarItem(selectedPoints, Color.FromArgb(Color.Red.ToArgb() & 0x7FFFFFFF)));
            CurveList.Insert(2, MakeBarItem(otherPoints, Color.FromArgb(180, 220, 255)));

            XAxis.Title.Text = Resources.AreaCVHistogramGraphPane_UpdateGraph_CV + (_percentage ? @" (%)" : string.Empty);
            YAxis.Title.Text = Resources.AreaCVHistogramGraphPane_UpdateGraph_Frequency;

            XAxis.Scale.Min     = YAxis.Scale.Min = 0;
            XAxis.Scale.MinAuto = XAxis.Scale.MaxAuto = YAxis.Scale.MinAuto = YAxis.Scale.MaxAuto = false;

            if (!double.IsNaN(Settings.Default.AreaCVMaxCV))
            {
                XAxis.Scale.Max = Settings.Default.AreaCVMaxCV;
            }
            else
            {
                XAxis.Scale.Max = _areaCVGraphData.MaxCV * factor + Settings.Default.AreaCVHistogramBinWidth;
            }

            if (!double.IsNaN(Settings.Default.AreaCVMaxFrequency))
            {
                YAxis.Scale.Max = Settings.Default.AreaCVMaxFrequency;
            }
            else
            {
                YAxis.Scale.Max = _areaCVGraphData.MaxFrequency + heightFactor * height;
            }

            AxisChange();
        }
예제 #14
0
 public virtual bool EvalSegment(Mat comparePiece)
 {
     return(HistogramHelper.IsImageWhite(comparePiece));
 }
예제 #15
0
        public override bool EvalSegment(Mat comparePiece)
        {
            float compareDiff = (COLS > 10 || ROWS > 10) ? 0.92f : 0.6f;//increase precision if lots of segments,

            return(HistogramHelper.IsImageWhite(comparePiece, compareDiff));
        }
예제 #16
0
 public HistogramWindow()
 {
     InitializeComponent();
     _histogram = new HistogramHelper();
 }