예제 #1
0
        //assumes peaks are sorted by peakrt
        void mark_overlaps_by_peak_rt(IList <PeaksUsedOrNot> peaks, PeakCoordSet peak_set, PeaksUsedOrNot p)
        {
            var overlap_bounds = peak_set.find_overlap_bounds_by_peak_rt_idx(p.p);

            for (int i = overlap_bounds.leftmost; i <= overlap_bounds.rightmost; i++)
            {
                peaks[i].used = true;
            }
        }
예제 #2
0
        ///this takes the set of peaks and extends them, based on potential shoulder peaks which have odd alignments
        void extend_peak_set(IList <SlimCrawPeak> in_peaks, IList <SlimCrawPeak> out_peaks, bool start_at_peak = false)
        {
            if (in_peaks.Count == 0)
            {
                return;
            }

            List <SlimCrawPeak> peak_ptrs_by_rt = new List <SlimCrawPeak>(in_peaks);

            peak_ptrs_by_rt.Sort(crawutils.CompByPeakRTIdx);
            List <PeaksUsedOrNot> peaks_by_rt = new List <PeaksUsedOrNot>(peak_ptrs_by_rt.Select(p => new PeaksUsedOrNot(p)));
            List <PeaksUsedOrNot> peaks_by_I  = new List <PeaksUsedOrNot>(peaks_by_rt);

            peaks_by_I.Sort(crawutils.CompByPeakRawHeight);
            PeakCoordSet peak_coords     = new PeakCoordSet(peak_ptrs_by_rt);
            int          intensity_index = peaks_by_I.Count - 1;

            do
            {
                intensity_index--;
                PeaksUsedOrNot here = peaks_by_I[intensity_index];
                if (!here.used)
                {
                    //extend peak
                    extend_to_1d_zero(here.p, pf.method.extend_from_peak_rt);
                    if (pf.method.ratchet_back_to_frac_maxval > -1)
                    {
                        ratchet_back_to_frac_maxval(here.p, pf.method.ratchet_back_to_frac_maxval);
                    }
                    //exclude overlappers -- find peaks from my start to my end
                    //TODO -- deal with overlappers... or convert to linear walk algorithm
                    //safe, since push_back will copy the dereferenced SlimCrawPeakPtr
                    if (pf.method.exclude_extension_overlaps_by_peakrt)
                    {
                        mark_overlaps_by_peak_rt(peaks_by_rt, peak_coords, here);
                    }

                    out_peaks.Add(here.p);
                    here.used = true;
                }
            } while (intensity_index > 0);
        }