/// <summary> /// Draws a sequence statistic chart for the FastqComponent_Details handle within this class /// </summary> public void DrawSequenceStatistics() { Console.WriteLine("Drawing new sequence length distribution!"); FqPerBaseSatistics[] perBaseStatistics = componentDetails.perBaseStatistics; double[] x = new double[perBaseStatistics.Length]; PointPairList boxList = new PointPairList(); PointPairList lowerWhisker = new PointPairList(); PointPairList upperWhisker = new PointPairList(); PointPairList medians = new PointPairList(); int count = 1; for (int i = 0; i < x.Length; i++) { x[i] = count; boxList.Add((double)x[i], (double)perBaseStatistics[i].ThirdQuartile, (double)perBaseStatistics[i].FirstQuartile); medians.Add((double)x[i], (double)perBaseStatistics[i].Median); upperWhisker.Add((double)x[i], (double)perBaseStatistics[i].UpperThreshold); lowerWhisker.Add((double)x[i], (double)perBaseStatistics[i].LowerThreshold); count++; } Size size = graphControl.ClientSize; Rectangle rect = new Rectangle(); rect.Size = size; graphControl.GraphPane = new GraphPane(); graphControl.GraphPane.CurveList.Clear(); graphControl.GraphPane.Rect = rect; GraphPane myPane = graphControl.GraphPane; myPane.Title.Text = "Per Base Statistics " + componentDetails.getGraphName(); // set X and Y axis titles myPane.XAxis.Title.Text = "Base Position"; myPane.YAxis.Title.Text = "Qualities"; CurveItem median = myPane.AddCurve("Median", medians, Color.Green, SymbolType.None); LineItem myLine = (LineItem)median; myLine.Line.IsVisible = true; myLine.Line.IsAntiAlias = true; myLine.Symbol.Fill.Type = FillType.Solid; myLine.Symbol.Size = 1; HiLowBarItem myCurve = myPane.AddHiLowBar("Quartiles", boxList, Color.Black); myCurve.Bar.Fill.Type = FillType.Solid; myCurve.Bar.Fill.Color = Color.Yellow; myCurve.Bar.Border.Color = Color.Yellow; CurveItem lthresholds = myPane.AddCurve("Lower Threshold", lowerWhisker, Color.Red, SymbolType.HDash); LineItem lthreshline = (LineItem)lthresholds; lthreshline.Line.IsVisible = false; lthreshline.Symbol.Fill.Type = FillType.Solid; lthreshline.Symbol.Size = 1; lthreshline.Symbol.Fill.Color = Color.Red; CurveItem uppthesh = myPane.AddCurve("Upper Threshold", upperWhisker, Color.Red, SymbolType.HDash); LineItem uthreshline = (LineItem)uppthesh; uthreshline.Line.IsVisible = false; uthreshline.Symbol.Fill.Type = FillType.Solid; uthreshline.Symbol.Size = 1; uthreshline.Symbol.Fill.Color = Color.Red; graphControl.Focus(); graphControl.AxisChange(); graphControl.Invalidate(); graphControl.Refresh(); }