Esempio n. 1
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                StreamReader sr = new StreamReader(openFileDialog1.FileName);
                sr.ReadLine();//Title

                Dictionary <string, List <PeaksFromResult> > dictAllPeaks = new Dictionary <string, List <PeaksFromResult> >();
                do
                {
                    string[]        tmpAry   = sr.ReadLine().Split(',');
                    PeaksFromResult PKResult = new PeaksFromResult(Convert.ToSingle(tmpAry[0]),
                                                                   Convert.ToSingle(tmpAry[3]),
                                                                   tmpAry[6]);
                    string GlycanKey = tmpAry[5];

                    if (!dictAllPeaks.ContainsKey(GlycanKey))
                    {
                        dictAllPeaks.Add(GlycanKey, new List <PeaksFromResult>());
                    }
                    dictAllPeaks[GlycanKey].Add(PKResult);
                } while (!sr.EndOfStream);


                foreach (string GKey in dictAllPeaks.Keys)
                {
                    Dictionary <float, float> MergeIntensity = new Dictionary <float, float>();
                    List <float> Time = new List <float>();
                    foreach (PeaksFromResult PKR in dictAllPeaks[GKey])
                    {
                        if (!MergeIntensity.ContainsKey(PKR.Time))
                        {
                            MergeIntensity.Add(PKR.Time, 0);
                        }
                        MergeIntensity[PKR.Time] = MergeIntensity[PKR.Time] + PKR.Intensity;

                        if (!Time.Contains(PKR.Time))
                        {
                            Time.Add(PKR.Time);
                        }
                    }

                    //Merge Intensity
                    Time.Sort();
                    float[] ArryIntesity = new float[Time.Count];
                    float[] ArryTime     = Time.ToArray();
                    for (int i = 0; i < Time.Count; i++)
                    {
                        ArryIntesity[i] = MergeIntensity[Time[i]];
                    }

                    List <float[]> PeaksTime      = new List <float[]>();
                    List <float[]> PeaksIntensity = new List <float[]>();
                    do
                    {
                        //Iter to find peak
                        int MaxIdx    = FindMaxIdx(ArryIntesity);
                        int PeakStart = MaxIdx - 1;
                        if (PeakStart < 0)
                        {
                            PeakStart = 0;
                        }
                        int PeakEnd = MaxIdx + 1;
                        if (PeakEnd > ArryTime.Length - 1)
                        {
                            PeakEnd = ArryTime.Length - 1;
                        }
                        //PeakStartPoint
                        while (PeakStart > 0)
                        {
                            if (ArryTime[PeakStart] - ArryTime[PeakStart - 1] < 0.5 && ArryTime[MaxIdx] - ArryTime[PeakStart] < 5.0)
                            {
                                PeakStart = PeakStart - 1;
                            }
                            else
                            {
                                break;
                            }
                        }

                        //PeakEndPoint
                        while (PeakEnd < ArryTime.Length - 1)
                        {
                            if (ArryTime[PeakEnd + 1] - ArryTime[PeakEnd] < 0.5 && ArryTime[PeakEnd] - ArryTime[MaxIdx] < 5.0)
                            {
                                PeakEnd = PeakEnd + 1;
                            }
                            else
                            {
                                break;
                            }
                        }

                        //Peak Array
                        float[] PeakTime = new float[PeakEnd - PeakStart + 1];
                        float[] PeakInt  = new float[PeakEnd - PeakStart + 1];
                        Array.Copy(ArryTime, PeakStart, PeakTime, 0, PeakEnd - PeakStart + 1);
                        Array.Copy(ArryIntesity, PeakStart, PeakInt, 0, PeakEnd - PeakStart + 1);
                        PeaksTime.Add(PeakTime);
                        PeaksIntensity.Add(PeakInt);


                        //MergeRest
                        int     SizeOfRestArray  = ArryTime.Length - PeakEnd + PeakStart - 1;
                        float[] NewArryTime      = new float[SizeOfRestArray];
                        float[] NewArryIntensity = new float[SizeOfRestArray];
                        Array.Copy(ArryTime, 0, NewArryTime, 0, PeakStart);
                        Array.Copy(ArryTime, PeakEnd + 1, NewArryTime, PeakStart, ArryTime.Length - 1 - PeakEnd);
                        Array.Copy(ArryIntesity, 0, NewArryIntensity, 0, PeakStart);
                        Array.Copy(ArryIntesity, PeakEnd + 1, NewArryIntensity, PeakStart, ArryTime.Length - 1 - PeakEnd);

                        ArryTime     = NewArryTime;
                        ArryIntesity = NewArryIntensity;
                    } while (ArryTime.Length != 0);
                }
            }
        }
Esempio n. 2
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {

                StreamReader sr = new StreamReader(openFileDialog1.FileName);
                sr.ReadLine();//Title

                Dictionary<string, List<PeaksFromResult>> dictAllPeaks = new Dictionary<string, List<PeaksFromResult>>();
                do
                {
                    string[] tmpAry = sr.ReadLine().Split(',');
                    PeaksFromResult PKResult = new PeaksFromResult(Convert.ToSingle(tmpAry[0]),
                                                                                                               Convert.ToSingle(tmpAry[3]),
                                                                                                               tmpAry[6]);
                    string GlycanKey = tmpAry[5];

                    if (!dictAllPeaks.ContainsKey(GlycanKey))
                    {
                        dictAllPeaks.Add(GlycanKey, new List<PeaksFromResult>());
                    }
                    dictAllPeaks[GlycanKey].Add(PKResult);

                } while (!sr.EndOfStream);

                foreach (string GKey in dictAllPeaks.Keys)
                {

                    Dictionary<float, float> MergeIntensity = new Dictionary<float, float>();
                    List<float> Time = new List<float>();
                    foreach (PeaksFromResult PKR in dictAllPeaks[GKey])
                    {

                        if (!MergeIntensity.ContainsKey(PKR.Time))
                        {
                            MergeIntensity.Add(PKR.Time, 0);
                        }
                        MergeIntensity[PKR.Time] = MergeIntensity[PKR.Time] + PKR.Intensity;

                        if (!Time.Contains(PKR.Time))
                        {
                            Time.Add(PKR.Time);
                        }
                    }

                    //Merge Intensity
                    Time.Sort();
                    float[] ArryIntesity = new float[Time.Count];
                    float[] ArryTime = Time.ToArray();
                    for (int i = 0; i < Time.Count; i++)
                    {
                        ArryIntesity[i] = MergeIntensity[Time[i]];
                    }

                    List<float[]> PeaksTime = new List<float[]>();
                    List<float[]> PeaksIntensity = new List<float[]>();
                    do
                    {
                        //Iter to find peak
                        int MaxIdx = FindMaxIdx(ArryIntesity);
                        int PeakStart = MaxIdx - 1;
                        if (PeakStart < 0)
                        {
                            PeakStart = 0;
                        }
                        int PeakEnd = MaxIdx + 1;
                        if (PeakEnd > ArryTime .Length- 1)
                        {
                            PeakEnd = ArryTime.Length - 1;
                        }
                        //PeakStartPoint
                        while (PeakStart>0)
                        {
                            if (ArryTime[PeakStart] - ArryTime[PeakStart - 1] < 0.5 && ArryTime[MaxIdx] - ArryTime[PeakStart] < 5.0)
                            {
                                PeakStart = PeakStart - 1;
                            }
                            else
                            {
                                break;
                            }
                        }

                        //PeakEndPoint
                        while (PeakEnd < ArryTime.Length - 1)
                        {
                            if (ArryTime[PeakEnd + 1] - ArryTime[PeakEnd] < 0.5 && ArryTime[PeakEnd] - ArryTime[MaxIdx] < 5.0)
                            {
                                PeakEnd = PeakEnd + 1;
                            }
                            else
                            {
                                break;
                            }
                        }

                        //Peak Array
                        float[] PeakTime = new float[PeakEnd - PeakStart + 1];
                        float[] PeakInt = new float[PeakEnd - PeakStart + 1];
                        Array.Copy(ArryTime, PeakStart, PeakTime, 0,PeakEnd - PeakStart + 1);
                        Array.Copy(ArryIntesity, PeakStart, PeakInt, 0, PeakEnd - PeakStart + 1);
                        PeaksTime.Add(PeakTime);
                        PeaksIntensity.Add(PeakInt);

                        //MergeRest
                        int SizeOfRestArray = ArryTime.Length - PeakEnd + PeakStart - 1;
                        float[] NewArryTime = new float[SizeOfRestArray];
                        float[] NewArryIntensity = new float[SizeOfRestArray];
                        Array.Copy(ArryTime, 0, NewArryTime, 0, PeakStart);
                        Array.Copy(ArryTime, PeakEnd+1, NewArryTime, PeakStart, ArryTime.Length-1-  PeakEnd );
                        Array.Copy(ArryIntesity, 0, NewArryIntensity, 0, PeakStart);
                        Array.Copy(ArryIntesity, PeakEnd+1, NewArryIntensity, PeakStart, ArryTime.Length - 1 - PeakEnd);

                        ArryTime = NewArryTime;
                        ArryIntesity = NewArryIntensity;

                    } while (ArryTime.Length!=0);
                }
            }
        }