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); }
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); } }
public PeakPoint(IPeak peak) { MZ = peak.GetMZ(); Intensity = peak.GetIntensity(); }
public double GetIntensity() { return(peak.GetIntensity()); }