Exemple #1
0
        public void GenerateiRTChromatogram(Run run)
        {
            foreach (IRTPeak irtpeak in run.IRTPeaks)
            {
                float TotalFWHM    = 0;
                float Totalpeaksym = 0;
                int   count        = 0;
                foreach (var transition in irtpeak.AssociatedTransitions)
                {
                    starttimes  = irtpeak.Spectrum.Where(x => Math.Abs(x.Mz - transition.ProductMz) < run.AnalysisSettings.MassTolerance && Math.Abs(x.RetentionTime - irtpeak.RetentionTime) < run.AnalysisSettings.RtTolerance).Select(x => (double)x.RetentionTime).ToArray();
                    intensities = irtpeak.Spectrum.Where(x => Math.Abs(x.Mz - transition.ProductMz) < run.AnalysisSettings.MassTolerance).Select(x => (double)x.Intensity).ToArray();
                    cPF         = new CrawdadSharp.CrawdadPeakFinder();
                    cPF.SetChromatogram(starttimes, intensities);
                    crawPeaks = cPF.CalcPeaks();
                    foreach (CrawdadSharp.CrawdadPeak crawPeak in crawPeaks)
                    {
                        TotalFWHM += crawPeak.Fwhm;
                        if (crawPeak.Fvalue > 0)
                        {
                            Totalpeaksym += crawPeak.Fwfpct / (crawPeak.Fvalue * 2);
                        }
                        else
                        {
                            Totalpeaksym += crawPeak.Fwfpct;
                        }
                        count++;
                    }
                }

                irtpeak.FWHM    = TotalFWHM / count;    //average fwhm
                irtpeak.Peaksym = Totalpeaksym / count; //Because we have ordered the possible peaks according to their intensities, this value corresponds to their intensity rank
            }
        }
Exemple #2
0
 public void GenerateChromatogram(Run run)
 {
     //Crawdad
     foreach (BasePeak basepeak in run.BasePeaks)
     {
         //for each peak within the spectrum
         for (int yyy = 0; yyy < basepeak.BpkRTs.Count(); yyy++)
         {
             //change these two arrays to be only the spectra surrounding that bpkrt:
             intensities = basepeak.Spectrum.Where(x => Math.Abs(x.RetentionTime - basepeak.BpkRTs[yyy]) < run.AnalysisSettings.RtTolerance).Select(x => (double)x.Intensity).ToArray();
             starttimes  = basepeak.Spectrum.Where(x => Math.Abs(x.RetentionTime - basepeak.BpkRTs[yyy]) < run.AnalysisSettings.RtTolerance).Select(x => (double)x.RetentionTime).ToArray();
             if (intensities.Count() > 1)
             {
                 RTandInt inter = new RTandInt();
                 inter       = Interpolate(starttimes, intensities);
                 starttimes  = inter.starttimes;
                 intensities = inter.intensities;
             }
             cPF = new CrawdadSharp.CrawdadPeakFinder();
             cPF.SetChromatogram(starttimes, intensities);
             crawPeaks = cPF.CalcPeaks();
             double totalFwhm      = 0;
             double totalPeakSym   = 0;
             double totalBaseWidth = 0;
             foreach (CrawdadSharp.CrawdadPeak crawPeak in crawPeaks)
             {
                 double peakTime = starttimes[crawPeak.TimeIndex];
                 double fwhm     = crawPeak.Fwhm;
                 double fvalue   = crawPeak.Fvalue;
                 if (fwhm == 0)
                 {
                     continue;
                 }
                 else if (fvalue != 0)
                 {
                     totalPeakSym += crawPeak.Fwfpct / (2 * crawPeak.Fvalue); //From USP31: General Chapters <621> Chromatography equation for calculating the tailing factor(Available at: http://www.uspbpep.com/usp31/v31261/usp31nf26s1_c621.asp). A high value means that the peak is highly asymmetrical.
                 }
                 totalFwhm += fwhm;
                 if (!float.IsNaN(crawPeak.FwBaseline))
                 {
                     totalBaseWidth += crawPeak.FwBaseline;
                 }
                 else
                 {
                     totalBaseWidth += crawPeak.Fwfpct;
                 }
             }
             if (crawPeaks.Count() > 0)
             {
                 basepeak.FWHMs.Add(totalFwhm / crawPeaks.Count());
                 basepeak.Peaksyms.Add(totalPeakSym / crawPeaks.Count());
                 basepeak.FullWidthBaselines.Add(totalBaseWidth / crawPeaks.Count());
             }
             else
             {
                 basepeak.FWHMs.Add(0);
                 basepeak.FullWidthBaselines.Add(0);
                 basepeak.Peaksyms.Add(0);
             }
         }
     }
 }