示例#1
0
文件: PeakFinder.cs 项目: zrolfs/pwiz
        public IList <IFoundPeak> CalcPeaks(int max, int[] idIndices)
        {
            PeakAndValleyFinder peakAndValleyFinder = GetPeakAndValleyFinder();
            var allPeaks = new List <FoundPeak>();

            foreach (var startEnd in peakAndValleyFinder.FindPeaks())
            {
                if (startEnd.Key < _intensities.Count - 1 && startEnd.Value > 0)
                {
                    var    peak    = new FoundPeak(peakAndValleyFinder._widthDataWings, _intensities, _baselineIntensity, startEnd.Key, startEnd.Value);
                    double rheight = peak.Height / peak.RawHeight;
                    double rarea   = peak.Area / peak.RawArea;
                    if (rheight > 0.02 && rarea > 0.02)
                    {
                        peak.Identified = idIndices.Any(idx => idx >= peak.StartIndex && idx <= peak.EndIndex);
                        allPeaks.Add(peak);
                    }
                }
            }
            if (max == -1)
            {
                return(allPeaks.Cast <IFoundPeak>().ToArray());
            }
            allPeaks.Sort(ComparePeakIdentifiedArea);
            return(allPeaks.Take(max).Cast <IFoundPeak>().ToArray());
        }
示例#2
0
文件: PeakFinder.cs 项目: zrolfs/pwiz
 private int ComparePeakIdentifiedArea(FoundPeak peak1, FoundPeak peak2)
 {
     if (peak1.Identified)
     {
         if (!peak2.Identified)
         {
             return(-1);
         }
     }
     else if (peak2.Identified)
     {
         return(1);
     }
     return(-peak1.Area.CompareTo(peak2.Area));
 }