private KeyValuePair <TracerFormula, IFoundPeak> FindBestPeak(IEnumerable <CalculatedPeaks> otherPeaks) { TracerChromatograms tracerChromatograms = GetTracerChromatograms(); double bestScore = 0; var bestPeak = new KeyValuePair <TracerFormula, IFoundPeak>(); double bestDistance = double.MaxValue; double firstDetectedTime, lastDetectedTime; GetFirstLastTimes(otherPeaks, out firstDetectedTime, out lastDetectedTime); foreach (var entry in tracerChromatograms.ListPeaks()) { if (entry.Value.TimeIndex <= entry.Value.StartIndex || entry.Value.TimeIndex >= entry.Value.EndIndex) { continue; } double distance; if (firstDetectedTime > lastDetectedTime) { distance = 1; } else { double startTime = tracerChromatograms.ChromatogramSet.Times[entry.Value.StartIndex]; double endTime = tracerChromatograms.ChromatogramSet.Times[entry.Value.EndIndex]; if (startTime > lastDetectedTime) { distance = startTime - lastDetectedTime; } else if (endTime < firstDetectedTime) { distance = firstDetectedTime - endTime; } else { distance = 0; } } double score = tracerChromatograms.GetScore(entry.Value.StartIndex, entry.Value.EndIndex); if (distance < bestDistance || distance == bestDistance && score > bestScore) { bestPeak = entry; bestScore = score; bestDistance = distance; if (distance == 0) { break; } } } if (bestDistance > 0) { IntegrationNote = IntegrationNote.PeakNotFoundAtMs2Id; } else { IntegrationNote = IntegrationNote.Success; } return(bestPeak); }
private TracerChromatograms GetTracerChromatograms() { if (_tracerChromatograms == null) { _tracerChromatograms = PeptideFileAnalysis.GetTracerChromatograms(_smoothChromatograms); } return(_tracerChromatograms); }
public TracerChromatograms GetTracerChromatograms(bool smoothed) { var result = smoothed ? _tracerChromatogramsSmoothed : _tracerChromatograms; if (result == null) { result = new TracerChromatograms(this, ChromatogramSet, smoothed); if (smoothed) { _tracerChromatogramsSmoothed = result; } else { _tracerChromatograms = result; } } return(result); }
private TracerChromatograms GetTracerChromatograms() { if (_tracerChromatograms == null) { _tracerChromatograms = PeptideFileAnalysis.GetTracerChromatograms(_smoothChromatograms); } return _tracerChromatograms; }
public void InvalidatePeaks() { _tracerChromatograms = null; _tracerChromatogramsSmoothed = null; }