Esempio n. 1
0
        private O18QuanEnvelope GetCorrespondingEnvelope(IRawFile rawFile, double theoreticalMz, int charge, double mzTolerance, int scan)
        {
            PeakList <Peak> pkl = rawFile.GetPeakList(scan);

            if (pkl.ScanTimes.Count == 0)
            {
                pkl.ScanTimes.Add(new ScanTime(scan, rawFile.ScanToRetentionTime(scan)));
            }

            PeakList <Peak> O16 = pkl.FindEnvelopeDirectly(theoreticalMz, charge, mzTolerance, 4, () => new Peak());

            PeakList <Peak> O181 = pkl.FindEnvelopeDirectly(theoreticalMz + chargeGapMap1[charge], charge, mzTolerance, 2, () => new Peak());

            for (int i = 2; i < 4; i++)
            {
                if (O16[i].Intensity < O181[i - 2].Intensity)
                {
                    O16[i].Mz        = O181[i - 2].Mz;
                    O16[i].Intensity = O181[i - 2].Intensity;
                }
            }

            PeakList <Peak> O182 = pkl.FindEnvelopeDirectly(theoreticalMz + chargeGapMap2[charge], charge, mzTolerance, 2, () => new Peak());

            O16.AddRange(O182);

            return(new O18QuanEnvelope(O16));
        }
Esempio n. 2
0
 private static void MergeTogether(double mzTolerance, PeakList <Peak> mergedEnvelopes, PeakList <Peak> envelope)
 {
     if (mergedEnvelopes.Count < envelope.Count)
     {
         PeakList <Peak> tmp = new PeakList <Peak>(mergedEnvelopes);
         mergedEnvelopes.Clear();
         mergedEnvelopes.AddRange(envelope);
         mergedEnvelopes.AddToCurrentPeakListIntensity(tmp, mzTolerance);
     }
     else
     {
         mergedEnvelopes.AddToCurrentPeakListIntensity(envelope, mzTolerance);
     }
 }
Esempio n. 3
0
        public PeakList <T> Process(PeakList <T> t)
        {
            if (!t.Any(m => m.Charge > 0))
            {
                return(t);
            }

            List <T> kept = (from p in t
                             where p.Charge == 0
                             select p).ToList();

            t.RemoveAll(m => m.Charge == 0);

            while (t.Count > 0)
            {
                var curPeaks = FindEnvelope(t, t[0], PrecursorUtils.ppm2mz(t[0].Mz, this.ppmTolerance));
                t.RemoveAll(m => curPeaks.Contains(m));

                if (curPeaks.Count == 1 || curPeaks[0].Intensity >= curPeaks[1].Intensity)
                {
                    kept.Add(curPeaks[0]);
                    continue;
                }

                var mass = curPeaks[0].Mz * curPeaks[0].Charge - Atom.H.MonoMass;
                if (mass > 1800)
                {
                    kept.Add(curPeaks[0]);
                    continue;
                }

                kept.Add(curPeaks[0]);
                kept.Add(curPeaks[1]);
            }

            t.AddRange(kept);
            t.Sort((m1, m2) => m1.Mz.CompareTo(m2.Mz));

            return(t);
        }