/// <summary> /// Returns the ReplicateGroupOp based on the current value of Settings.Default.GroupByReplicateAnnotation, /// and the specified AggregateOp. Note that if the ReplicateGroupOp is not grouping on an annotation, /// the AggregateOp will be override with the value MEAN. /// </summary> public static ReplicateGroupOp FromCurrentSettings(SrmDocument document, GraphValues.AggregateOp aggregateOp) { ReplicateValue replicateValue = null; string annotationName = Settings.Default.GroupByReplicateAnnotation; if (null != annotationName) { replicateValue = ReplicateValue.GetGroupableReplicateValues(document) .FirstOrDefault(value => value.ToPersistedString() == annotationName); } if (null == replicateValue) { aggregateOp = GraphValues.AggregateOp.MEAN; } return(new ReplicateGroupOp(replicateValue, aggregateOp)); }
private void UpdateAxes(bool resetAxes, GraphValues.AggregateOp aggregateOp, AreaNormalizeToData normalizeData, AreaNormalizeToView areaView, IsotopeLabelType standardType) { if (resetAxes) { XAxis.Scale.MaxAuto = XAxis.Scale.MinAuto = true; YAxis.Scale.MaxAuto = true; } if (BarSettings.Type == BarType.PercentStack) { YAxis.Scale.Max = 100; YAxis.Scale.MaxAuto = false; YAxis.Title.Text = aggregateOp.AnnotateTitle(Resources.AreaReplicateGraphPane_UpdateGraph_Peak_Area_Percentage); YAxis.Type = AxisType.Linear; YAxis.Scale.MinAuto = false; FixedYMin = YAxis.Scale.Min = 0; } else { if (normalizeData == AreaNormalizeToData.optimization) { // If currently log scale or normalized to max, reset the y-axis max if (YAxis.Type == AxisType.Log || YAxis.Scale.Max == 1) { YAxis.Scale.MaxAuto = true; } YAxis.Title.Text = aggregateOp.AnnotateTitle(Resources.AreaReplicateGraphPane_UpdateGraph_Percent_of_Regression_Peak_Area); YAxis.Type = AxisType.Linear; YAxis.Scale.MinAuto = false; FixedYMin = YAxis.Scale.Min = 0; } else if (areaView == AreaNormalizeToView.area_maximum_view) { YAxis.Scale.Max = 1; if (IsDotProductVisible) { // Make YAxis Scale Max a little higher to accommodate for the dot products YAxis.Scale.Max = 1.1; } YAxis.Scale.MaxAuto = false; YAxis.Title.Text = aggregateOp.AnnotateTitle(Resources.AreaReplicateGraphPane_UpdateGraph_Peak_Area_Normalized); YAxis.Type = AxisType.Linear; YAxis.Scale.MinAuto = false; FixedYMin = YAxis.Scale.Min = 0; } else if (Settings.Default.AreaLogScale) { // If currently not log scale, reset the y-axis max if (YAxis.Type != AxisType.Log) { YAxis.Scale.MaxAuto = true; } if (Settings.Default.PeakAreaMaxArea != 0) { YAxis.Scale.MaxAuto = false; YAxis.Scale.Max = Settings.Default.PeakAreaMaxArea; } YAxis.Type = AxisType.Log; YAxis.Title.Text = GraphValues.AnnotateLogAxisTitle(aggregateOp.AnnotateTitle( Resources.AreaReplicateGraphPane_UpdateGraph_Peak_Area)); YAxis.Scale.MinAuto = false; FixedYMin = YAxis.Scale.Min = 1; } else { // If currently log scale, reset the y-axis max if (YAxis.Type == AxisType.Log) { YAxis.Scale.MaxAuto = true; } if (Settings.Default.PeakAreaMaxArea != 0) { YAxis.Scale.MaxAuto = false; YAxis.Scale.Max = Settings.Default.PeakAreaMaxArea; } else if (!YAxis.Scale.MaxAuto) { YAxis.Scale.MaxAuto = true; } string yTitle = Resources.AreaReplicateGraphPane_UpdateGraph_Peak_Area; switch (areaView) { case AreaNormalizeToView.area_ratio_view: yTitle = string.Format(Resources.AreaReplicateGraphPane_UpdateGraph_Peak_Area_Ratio_To__0_, standardType.Title); break; case AreaNormalizeToView.area_global_standard_view: yTitle = Resources.AreaReplicateGraphPane_UpdateGraph_Peak_Area_Ratio_To_Global_Standards; break; } YAxis.Title.Text = aggregateOp.AnnotateTitle(yTitle); YAxis.Type = AxisType.Linear; YAxis.Scale.MinAuto = false; FixedYMin = YAxis.Scale.Min = 0; } // Handle a switch from percent stack if (!YAxis.Scale.MaxAuto && YAxis.Scale.Max == 100) { YAxis.Scale.MaxAuto = true; } } Legend.IsVisible = Settings.Default.ShowPeakAreaLegend; AxisChange(); // Reformat Y-Axis for labels and whiskers var maxY = GraphHelper.GetMaxY(CurveList, this); if (IsDotProductVisible) { var extraSpace = _lableHeight * (maxY / (Chart.Rect.Height - _lableHeight * 2)) * 2; maxY += extraSpace; } GraphHelper.ReformatYAxis(this, maxY > 0 ? maxY : 0.1); // Avoid same min and max, since it blanks the entire graph pane }
private ReplicateGroupOp(ReplicateValue groupByValue, GraphValues.AggregateOp aggregateOp) { GroupByValue = groupByValue; AggregateOp = aggregateOp; }