Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
            }
        }