public void save_data()
        {
            try
            {
                string fileNameofNet = file;
                string data_name     = String.Format("{0}\\{1}_{2}_{3}_{4}.txt", Path.GetDirectoryName(file),
                                                     Path.GetFileNameWithoutExtension(file),
                                                     X.ToString(),
                                                     Y.ToString(),
                                                     DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"));

                using (StreamWriter file_stream = new StreamWriter(data_name))
                {
                    file_stream.WriteLine("selected X and Y");
                    file_stream.WriteLine("{0}\t{1}", X.ToString(), Y.ToString());

                    file_stream.WriteLine("X selected file");
                    file_stream.WriteLine(scanNamesListSelected[X] + " — " + sampleScanListSelected[X]);

                    file_stream.WriteLine("Y selected file");
                    file_stream.WriteLine(scanNamesListSelected[Y] + " — " + sampleScanListSelected[Y]);

                    file_stream.WriteLine("Threshold value and outliers level");
                    file_stream.WriteLine("{0}\t{1}", threshold.ToString(), threshold_outliers.ToString());

                    file_stream.WriteLine("m/z array values");
                    file_stream.WriteLine(R_matrix.mz_array.ToString <double>().Replace(' ', '\t'));

                    file_stream.WriteLine("scan X included values");
                    file_stream.WriteLine(R_matrix.scan(X).Multiply(mz_id_to_process).ToString <double>().Replace(' ', '\t'));

                    file_stream.WriteLine("scan X excluded values");
                    file_stream.WriteLine(R_matrix.scan(X).Multiply(mz_id_to_process.Multiply(-1).Add(1)).ToString <double>().Replace(' ', '\t'));

                    file_stream.WriteLine("scan Y included values");
                    file_stream.WriteLine(R_matrix.scan(Y).Multiply(mz_id_to_process).ToString <double>().Replace(' ', '\t'));

                    file_stream.WriteLine("scan Y excluded values");
                    file_stream.WriteLine(R_matrix.scan(Y).Multiply(mz_id_to_process.Multiply(-1).Add(1)).ToString <double>().Replace(' ', '\t'));

                    file_stream.WriteLine("Similarity matrix");
                    for (int i = 0; i < R_matrix.matrix.Rows(); i++)
                    {
                        file_stream.WriteLine(R_matrix.matrix.GetRow(i).ToString <double>().Replace(' ', '\t'));
                    }
                    file_stream.Close();
                }
            }
            catch (Exception)
            { }
        }
        public void clicked_pixel(int X, int Y)
        {
            picture_R.Refresh();

            GraphPane plot1 = master.PaneList[0];
            GraphPane plot2 = master.PaneList[1];

            plot1.CurveList.Clear();
            plot2.CurveList.Clear();
            plot1.YAxis.Scale.Min = 0;
            plot2.YAxis.Scale.Min = 0;

            LineItem myCurve1 = plot1.AddCurve("Included in calculations", R_matrix.mz_array, R_matrix.scan(Y).Multiply(mz_id_to_process.Add(-0.5).Multiply(2)), Color.Blue, SymbolType.None);
            LineItem myCurve2 = plot2.AddCurve("", R_matrix.mz_array, R_matrix.scan(X).Multiply(mz_id_to_process.Add(-0.5).Multiply(2)), Color.Blue, SymbolType.None);
            LineItem myCurve3 = plot1.AddCurve("Excluded from calculations", R_matrix.mz_array, R_matrix.scan(Y).Multiply(mz_id_to_process.Add(-0.5).Multiply(-2)), Color.Red, SymbolType.None);
            LineItem myCurve4 = plot2.AddCurve("", R_matrix.mz_array, R_matrix.scan(X).Multiply(mz_id_to_process.Add(-0.5).Multiply(-2)), Color.Red, SymbolType.None);

            plot1.Legend.Position = LegendPos.Float;
            plot1.Legend.Location.CoordinateFrame = CoordType.ChartFraction;
            plot1.Legend.Location.AlignH          = AlignH.Right;
            plot1.Legend.Location.AlignV          = AlignV.Top;
            plot1.Legend.Location.TopLeft         = new PointF(1.0f - 0.02f, 0.02f);

            plot1.XAxis.Title.FontSpec.Size = 20.0f;
            plot2.XAxis.Title.FontSpec.Size = 20.0f;
            plot1.YAxis.Title.FontSpec.Size = 20.0f;
            plot2.YAxis.Title.FontSpec.Size = 20.0f;
            plot1.Title.FontSpec.Size       = 20.0f;
            plot2.Title.FontSpec.Size       = 20.0f;


            plot1.XAxis.Title.Text = "m/z, Th";
            plot2.XAxis.Title.Text = "m/z, Th";
            plot1.YAxis.Title.Text = "intensity";
            plot2.YAxis.Title.Text = "intensity";

            plot1.Title.Text = scanNamesListSelected[Y] + " — " + sampleScanListSelected[Y];

            plot2.Title.Text = scanNamesListSelected[X] + " — " + sampleScanListSelected[X];

            labelR.Text = "R=" + (R_matrix.matrix[X, Y]).ToString();

            zgc.AxisChange();
            zgc.Invalidate();
            zgc.Refresh();
        }