コード例 #1
0
ファイル: CalculatedPeaks.cs プロジェクト: zrolfs/pwiz
        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);
        }
コード例 #2
0
ファイル: CalculatedPeaks.cs プロジェクト: zrolfs/pwiz
 private TracerChromatograms GetTracerChromatograms()
 {
     if (_tracerChromatograms == null)
     {
         _tracerChromatograms = PeptideFileAnalysis.GetTracerChromatograms(_smoothChromatograms);
     }
     return(_tracerChromatograms);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
 private TracerChromatograms GetTracerChromatograms()
 {
     if (_tracerChromatograms == null)
     {
         _tracerChromatograms = PeptideFileAnalysis.GetTracerChromatograms(_smoothChromatograms);
     }
     return _tracerChromatograms;
 }
コード例 #5
0
 public void InvalidatePeaks()
 {
     _tracerChromatograms         = null;
     _tracerChromatogramsSmoothed = null;
 }