IPeak Average(IPeak target, List <IPeak> peaks)
        {
            double weighted       = peaks.Select(p => p.GetMZ() * p.GetIntensity()).Sum();
            double intensity_sums = peaks.Select(p => p.GetIntensity()).Sum();

            return(new GeneralPeak(
                       Math.Round(weighted / intensity_sums, mzRound),
                       Math.Round(target.GetIntensity(), peakRound)));
        }
        List <IPeak> NeighborPeaks(IPeak target, List <IPeak> peaks)
        {
            List <IPeak> neighbors = new List <IPeak>();
            int          index     = peaks.BinarySearch(target);
            int          curr      = index;

            while (curr >= 0)
            {
                if (peaks[curr].GetIntensity() < target.GetIntensity() * percent)
                {
                    break;
                }
                else if (peaks[curr].GetMZ() + precision < target.GetMZ())
                {
                    break;
                }
                neighbors.Add(peaks[curr]);

                if (curr > 0 && peaks[curr - 1].GetIntensity() > peaks[curr].GetIntensity())
                {
                    break;
                }
                curr--;
            }
            curr = index + 1;
            while (curr < peaks.Count)
            {
                if (peaks[curr].GetIntensity() > peaks[curr - 1].GetIntensity())
                {
                    break;
                }
                else if (peaks[curr].GetIntensity() < target.GetIntensity() * percent)
                {
                    break;
                }
                else if (peaks[curr].GetMZ() - precision > target.GetMZ())
                {
                    break;
                }
                neighbors.Add(peaks[curr]);
                curr++;
            }
            return(neighbors);
        }
示例#3
0
        private void AddScoreWithType(IPeak peak, MassType type)
        {
            if (!matches.ContainsKey(type))
            {
                matches[type] = new List <double>();
            }

            double mz = peak.GetMZ();

            if (!peakInclude.Contains(mz))
            {
                peakInclude.Add(mz);
                matches[type].Add(alpha * peak.GetIntensity() + beta);
            }
        }
示例#4
0
 public PeakPoint(IPeak peak)
 {
     MZ        = peak.GetMZ();
     Intensity = peak.GetIntensity();
 }
 public double GetIntensity()
 {
     return(peak.GetIntensity());
 }