private void SetMSChart(MatchedData MatchData, string sFileName) { double[] expX = MatchData.MatchedMsDataExp.Select(md => md.Mass).ToArray <double>(); double[] expY = MatchData.MatchedMsDataExp.Select(md => md.IntensityPercentage * 100).ToArray <double>(); double[] theoX = MatchData.MatchedMsDataTheo.Select(md => md.Mass).ToArray <double>(); double[] theoY = MatchData.MatchedMsDataTheo.Select(md => md.Intensity * 100).ToArray <double>(); double[] iPAD = MatchData.MatchedMsDataExp.Select(md => md.IPAD_R).ToArray <double>(); double[] iPMD = MatchData.MatchedMsDataExp.Select(md => md.IPMD_R).ToArray <double>(); double minexpX = 0d; double maxexpX = 0d; double mintheoX = 0d; double maxtheoX = 0d; if (MatchData.MatchedMsDataExp.Count != 0) { minexpX = MatchData.MatchedMsDataExp.Min(md => SetMinValue(md.Mass)); maxexpX = MatchData.MatchedMsDataExp.Max(md => SetMaxValue(md.Mass)); } if (MatchData.MatchedMsDataTheo.Count != 0) { mintheoX = MatchData.MatchedMsDataTheo.Min(md => SetMinValue(md.Mass)); maxtheoX = MatchData.MatchedMsDataTheo.Max(md => SetMaxValue(md.Mass)); } if (minexpX == 0) { minexpX = mintheoX; } ChartCommon chart = new ChartCommon(); if (iPAD.Length != 0) { string chartAreasTopName = "chartAreasTop"; chart.CreateChartAreas(chartAreasTopName); chart.SetChartAreasSetting(chartAreasTopName); chart.SetChartAreasX(chartAreasTopName, Math.Min(minexpX, mintheoX), Math.Max(maxexpX, maxtheoX)); chart.SetChartAreasYInterval(chartAreasTopName, 100); chart.SetChartAreasXInterval(chartAreasTopName, 0.5); chart.ChartE.ChartAreas[chartAreasTopName].Position.Height = 20; chart.ChartE.ChartAreas[chartAreasTopName].Position.Width = 100; chart.ChartE.ChartAreas[chartAreasTopName].Position.X = 0; chart.ChartE.ChartAreas[chartAreasTopName].Position.Y = 0; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.MajorGrid.Enabled = true; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.MajorGrid.LineColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.MajorTickMark.Enabled = true; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.MajorTickMark.LineColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.LabelStyle.Enabled = true; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.LineColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisX.LabelStyle.ForeColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.MajorGrid.Enabled = true; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.MajorGrid.LineColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.MajorTickMark.Enabled = true; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.MajorTickMark.LineColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.LabelStyle.Enabled = true; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.LineColor = Color.Transparent; chart.ChartE.ChartAreas[chartAreasTopName].AxisY.LabelStyle.ForeColor = Color.Transparent; chart.SetChartAreasYTitle(chartAreasTopName, "Relative Abundance (%)"); chart.ChartE.ChartAreas[chartAreasTopName].AxisY.TitleForeColor = Color.Transparent; string seriesNamePMD_PAD = "iPMD_iPAD"; chart.CreateSeries(seriesNamePMD_PAD, chartAreasTopName, SeriesChartType.Spline, "", Color.Red); chart.ChartE.Series[seriesNamePMD_PAD].IsVisibleInLegend = false; chart.ChartE.Series[seriesNamePMD_PAD].Color = Color.Transparent; if (theoX.Length > 1) { chart.ChartE.Series[seriesNamePMD_PAD].Points.AddXY(theoX[0] - (theoX[1] - theoX[0]), 0); chart.ChartE.Series[seriesNamePMD_PAD].Points[0].Label = "IPAD" + "\n" + "IPMD"; } else { chart.ChartE.Series[seriesNamePMD_PAD].Points.AddXY(theoX[0] - 5, 0); chart.ChartE.Series[seriesNamePMD_PAD].Points[0].Label = "IPAD" + "\n" + "IPMD"; } for (int x = 0; x < theoX.Length; x++) { chart.ChartE.Series[seriesNamePMD_PAD].Points.AddXY(theoX[x], 0); if (iPMD[x] > -10000) { chart.ChartE.Series[seriesNamePMD_PAD].Points[x + 1].Label = ((int)iPAD[x]).ToString() + "\n" + ((int)iPMD[x]).ToString(); } else { chart.ChartE.Series[seriesNamePMD_PAD].Points[x + 1].Label = "".ToString() + "\n" + "".ToString(); } } } string chartAreasName = "chartAreas"; chart.CreateChartAreas(chartAreasName); chart.SetChartAreasSetting(chartAreasName); if (MatchData.MatchedMsDataExp.Count != 0) { chart.SetChartAreasX(chartAreasName, Math.Min(minexpX, mintheoX), Math.Max(maxexpX, maxtheoX)); } else { chart.SetChartAreasX(chartAreasName, mintheoX, maxtheoX); } chart.SetChartAreasY(chartAreasName, 0, 100); chart.SetChartAreasSetting(chartAreasName); chart.SetChartAreasXInterval(chartAreasName, 0.5); chart.SetChartAreasYInterval(chartAreasName, 20); chart.SetChartAreasXTitle(chartAreasName, "m/z"); chart.SetChartAreasYTitle(chartAreasName, "Relative Abundance (%)"); chart.SetChartAreasXMajorTickMark(chartAreasName, true); chart.SetChartAreasYMajorTickMark(chartAreasName, true); chart.ChartE.ChartAreas[chartAreasName].Position.Height = 80; chart.ChartE.ChartAreas[chartAreasName].Position.Width = 100; chart.ChartE.ChartAreas[chartAreasName].Position.Y = 20; string legendName = "legend"; chart.CreateLegend(legendName); if (MatchData.MatchedMsDataExp.Count != 0) { string seriesNameExp = "exp"; chart.CreateSeries(seriesNameExp, chartAreasName, SeriesChartType.Candlestick, legendName, Color.Black); chart.SetSeriesAddPoint(seriesNameExp, expX, expY); chart.SetSeriesAddLegendText(seriesNameExp, "Experimental"); } if (MatchData.MatchedMsDataTheo.Count != 0) { string seriesNameTheo = "theo"; chart.CreateSeries(seriesNameTheo, chartAreasName, SeriesChartType.Point, legendName, Color.Red); chart.SetSeriesAddPoint(seriesNameTheo, theoX, theoY); chart.SetSeriesAddLegendText(seriesNameTheo, "Theoretical"); } chart.ChartE.Size = size; chart.ChartE.SaveImage(sFileName, ChartImageFormat.Jpeg); }
public void ExcelOut(List <MatchedData> lst, string sFileName) { System.Reflection.Missing miss = System.Reflection.Missing.Value; MatchedData matchecdData = new MatchedData(); Excel.Application excelApplication = new Excel.Application(); Excel.Workbook excelWorkbook = excelApplication.Workbooks.Add(); excelApplication.UserControl = true; excelApplication.Application.DisplayAlerts = false; Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorkbook.Sheets.Add(miss, miss, miss, miss); excelWorksheet.Name = "Protein"; int iRow = 0; try { for (int i = excelWorkbook.Sheets.Count; i >= 1; i--) { Excel.Worksheet excelWorksheetTemp = excelWorkbook.Sheets[i]; if (excelWorksheetTemp.Name != "Protein") { excelWorksheetTemp.Delete(); } } //Header iRow = 1; excelWorksheet.Cells[iRow, 1] = "Index"; excelWorksheet.Cells[iRow, 2] = "ID"; excelWorksheet.Cells[iRow, 3] = "MOD_RES"; excelWorksheet.Cells[iRow, 4] = "PTM_Score"; excelWorksheet.Cells[iRow, 5] = "TotalPTM_Score"; excelWorksheet.Cells[iRow, 6] = "Z"; excelWorksheet.Cells[iRow, 7] = "DatasetFile"; excelWorksheet.Cells[iRow, 8] = "Database"; excelWorksheet.Cells[iRow, 9] = "Repository"; excelWorksheet.Cells[iRow, 10] = "ScreeningApproach"; excelWorksheet.Cells[iRow, 11] = "ExpMZ"; excelWorksheet.Cells[iRow, 12] = "TheoMZ"; excelWorksheet.Cells[iRow, 13] = "Error_PPM"; excelWorksheet.Cells[iRow, 14] = "AccessionNumber"; excelWorksheet.Cells[iRow, 15] = "ProteinName"; excelWorksheet.Cells[iRow, 16] = "Length"; excelWorksheet.Cells[iRow, 17] = "Function"; excelWorksheet.Cells[iRow, 18] = "Sequence"; excelWorksheet.Cells[iRow, 19] = "NMFs"; excelWorksheet.Cells[iRow, 20] = "Actual_PMFs"; //Value iRow = 2; for (int i = 0; i < lst.Count; i++) { matchecdData = lst[i]; excelWorksheet.Cells[iRow, 1] = matchecdData.Index; excelWorksheet.Cells[iRow, 2] = matchecdData.ID; excelWorksheet.Cells[iRow, 3] = matchecdData.MOD_RES.Replace(";", "").Replace(",", ""); excelWorksheet.Cells[iRow, 4] = matchecdData.DataBase_PTM_SCORE; excelWorksheet.Cells[iRow, 5] = matchecdData.Total_PTM_Score; excelWorksheet.Cells[iRow, 6] = matchecdData.Z; excelWorksheet.Cells[iRow, 7] = matchecdData.DatasetFile; excelWorksheet.Cells[iRow, 8] = matchecdData.Database; excelWorksheet.Cells[iRow, 9] = matchecdData.Repository; excelWorksheet.Cells[iRow, 10] = matchecdData.ScreeningApproach; excelWorksheet.Cells[iRow, 11] = matchecdData.ExpMZ; excelWorksheet.Cells[iRow, 12] = matchecdData.TheoMZ; excelWorksheet.Cells[iRow, 13] = matchecdData.Error_PPM; excelWorksheet.Cells[iRow, 14] = matchecdData.AccessionNumber; excelWorksheet.Cells[iRow, 15] = matchecdData.ProteinName; excelWorksheet.Cells[iRow, 16] = matchecdData.Length; excelWorksheet.Cells[iRow, 17] = matchecdData.Function; excelWorksheet.Cells[iRow, 18] = matchecdData.Sequence; excelWorksheet.Cells[iRow, 19] = matchecdData.NMFS; excelWorksheet.Cells[iRow, 20] = matchecdData.Actualpmfs; iRow++; } excelWorkbook.SaveAs(sFileName, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss); excelWorkbook.Close(false, miss, miss); } catch (Exception ex) { throw ex; } finally { matchecdData = null; if (excelApplication != null) { excelApplication.Workbooks.Close(); excelApplication.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication.Workbooks); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication); System.GC.Collect(); } if (excelApplication != null) { IntPtr t = new IntPtr(excelApplication.Hwnd); int k = 0; GetWindowThreadProcessId(t, out k); System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); p.Kill(); } excelApplication = null; GC.Collect(); } }