コード例 #1
0
ファイル: ScoringUtils.cs プロジェクト: zrolfs/pwiz
        /// <summary>
        /// This function ranks peaks based on the increasing order of intenstiy.
        /// </summary>
        /// <param name="peaks">Peaks in spectrum</param>
        /// <returns>Ranked peaks</returns>
        public static Set <Peak> rankPeaks(List <Peak> peaks)
        {
            Stack <Peak>      rankedPeaks     = new Stack <Peak>();
            IntensityComparer intensitySorter = new IntensityComparer(SortOrder.ASCENDING);

            peaks.Sort(intensitySorter);
            int peakCount = 1;

            foreach (var peak in peaks)
            {
                Peak newPeak = new Peak(peak);
                newPeak.rankOrIntensity = peakCount;
                if (rankedPeaks.Count > 0)
                {
                    Peak lastPeak = rankedPeaks.Peek();
                    if (lastPeak.rankOrIntensity == newPeak.rankOrIntensity)
                    {
                        newPeak.rankOrIntensity = lastPeak.rankOrIntensity;
                    }
                }
                rankedPeaks.Push(newPeak);
                ++peakCount;
            }
            Set <Peak> retPeaks = new Set <Peak>();

            foreach (var peak in rankedPeaks)
            {
                retPeaks.Add(peak);
            }
            return(retPeaks);
        }
コード例 #2
0
ファイル: ScoringUtils.cs プロジェクト: zrolfs/pwiz
        /// <summary>
        /// This function takes top N intense peaks to meet the target TIC.
        /// </summary>
        /// <param name="peaks">Peaks in the spectrum</param>
        /// <param name="percentTIC">Percentage of total ion current to be retained</param>
        /// <returns></returns>
        public static List <Peak> filterByPercentTIC(List <Peak> peaks, double percentTIC)
        {
            // Compute the total ion current in the spectrum
            double totalTIC = 0.0;

            foreach (var peak in peaks)
            {
                totalTIC += peak.rankOrIntensity;
            }

            // Sort the peaks by descending order of intensity and take as many peaks as
            // possible to meet the target TIC.
            IntensityComparer intensitySorter = new IntensityComparer(SortOrder.DESCENDING);

            peaks.Sort(intensitySorter);
            List <Peak> finalList = new List <Peak>();
            double      TICSoFar  = 0.0;

            foreach (var peak in peaks)
            {
                TICSoFar += peak.rankOrIntensity;
                if ((TICSoFar / totalTIC) >= percentTIC)
                {
                    break;
                }
                finalList.Add(peak);
            }
            MassComparer mzComparer = new MassComparer(SortOrder.ASCENDING);

            finalList.Sort(mzComparer);
            return(finalList);
        }
コード例 #3
0
ファイル: ScoringUtils.cs プロジェクト: zrolfs/pwiz
        // End comparators for Peak

        /// <summary>
        /// This function takes top N intense peaks from each spectrum
        /// </summary>
        /// <param name="peaks">Spectrum peaks</param>
        /// <param name="numPeaks">Number of peaks to be retained</param>
        /// <returns></returns>
        public static List <Peak> filterByPeakCount(List <Peak> peaks, int numPeaks)
        {
            // Sort the peaks by decreasing order of intensity and take numPeaks
            IntensityComparer intensitySorter = new IntensityComparer(SortOrder.DESCENDING);

            peaks.Sort(intensitySorter);
            List <Peak> finalList = new List <Peak>();

            foreach (var peak in peaks)
            {
                if (numPeaks == 0)
                {
                    break;
                }
                --numPeaks;
                finalList.Add(peak);
            }
            MassComparer mzComparer = new MassComparer(SortOrder.ASCENDING);

            finalList.Sort(mzComparer);
            return(finalList);
        }