public CalculatedPeaks AutoSizePeak(TracerFormula tracerFormula, AdjustPeaksMode adjustPeaksMode) { if (tracerFormula.Equals(BasePeakKey)) { return(this); } var result = new CalculatedPeaks(PeptideFileAnalysis) { AutoFindPeak = false, }; var oldBasePeak = _peaks[BasePeakKey]; result.MakeBasePeak(BasePeakKey, oldBasePeak.StartTime, oldBasePeak.EndTime); foreach (var entry in _peaks) { if (entry.Key.Equals(BasePeakKey)) { continue; } Peak?newPeak = null; if (entry.Key.Equals(tracerFormula)) { double width = oldBasePeak.EndTime - oldBasePeak.StartTime; if (adjustPeaksMode == AdjustPeaksMode.Full) { newPeak = result.FindMatchingPeak(tracerFormula); } else if (adjustPeaksMode == AdjustPeaksMode.Overlapping) { newPeak = result.FindMatchingPeak(tracerFormula, entry.Value.StartTime - width, entry.Value.EndTime + width); } else if (adjustPeaksMode == AdjustPeaksMode.Narrow) { newPeak = result.FindMatchingPeak(tracerFormula, Math.Min(entry.Value.StartTime, entry.Value.EndTime - width), Math.Max(entry.Value.EndTime, entry.Value.StartTime + width)); } } if (newPeak == null) { result.MakeSecondaryPeak(entry.Key, entry.Value.StartTime, entry.Value.EndTime); } } result.FinishCalculation(); return(result); }
public CalculatedPeaks AutoSizePeak(TracerFormula tracerFormula, AdjustPeaksMode adjustPeaksMode) { if (tracerFormula.Equals(BasePeakKey)) { return this; } var result = new CalculatedPeaks(PeptideFileAnalysis) { AutoFindPeak = false, }; var oldBasePeak = _peaks[BasePeakKey]; result.MakeBasePeak(BasePeakKey, oldBasePeak.StartTime, oldBasePeak.EndTime); foreach (var entry in _peaks) { if (entry.Key.Equals(BasePeakKey)) { continue; } Peak? newPeak = null; if (entry.Key.Equals(tracerFormula)) { double width = oldBasePeak.EndTime - oldBasePeak.StartTime; if (adjustPeaksMode == AdjustPeaksMode.Full) { newPeak = result.FindMatchingPeak(tracerFormula); } else if (adjustPeaksMode == AdjustPeaksMode.Overlapping) { newPeak = result.FindMatchingPeak(tracerFormula, entry.Value.StartTime - width, entry.Value.EndTime + width); } else if (adjustPeaksMode == AdjustPeaksMode.Narrow) { newPeak = result.FindMatchingPeak(tracerFormula, Math.Min(entry.Value.StartTime, entry.Value.EndTime - width), Math.Max(entry.Value.EndTime, entry.Value.StartTime + width)); } } if (newPeak == null) { result.MakeSecondaryPeak(entry.Key, entry.Value.StartTime, entry.Value.EndTime); } } result.FinishCalculation(); return result; }