示例#1
0
        /// <summary>
        /// Aligns fragments observed Mz values
        /// </summary>
        /// <param name="result"></param>
        /// <param name="allPSMs"></param>
        public static void AlignProductsByDiff(Result result, PeptideSpectrumMatches allPSMs)
        {
            List <double> observedDiff = new List <double>();
            List <double> observedMz   = new List <double>();

            //Precursors and Tracks
            foreach (Precursor precursor in result.matchedPrecursors)//.ComputeAtFDR(result.dbOptions.maximumFalseDiscoveryRate, false))
            {
                PeptideSpectrumMatch psm = precursor.OptimizedBestPsm();
                if (psm.Target)
                {
                    foreach (ProductMatch fragment in psm.AllProductMatches)
                    {
                        observedMz.Add(fragment.obsMz);
                        observedDiff.Add(fragment.mass_diff);
                    }
                }
            }
            PolynominalRegression pr = new PolynominalRegression(observedMz, observedDiff, 2);

            foreach (PeptideSpectrumMatch psm in allPSMs)
            {
                foreach (ProductMatch match in psm.AllProductMatches)
                {
                    match.obsMz    += pr.Calculate(match.obsMz);
                    match.mass_diff = match.theoMz - match.obsMz;
                }
                psm.Initialize(result.dbOptions, psm.AllProductMatches);

                foreach (MsMsPeak peak in psm.Query.spectrum.Peaks)
                {
                    peak.MZ += pr.Calculate(peak.MZ);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Aligns precursors observed Mz values
        /// </summary>
        /// <param name="result"></param>
        /// <param name="allPSMs"></param>
        public static void AlignPrecursorsByDiff(Result result, PeptideSpectrumMatches allPSMs)
        {
            List <double> observedDiff = new List <double>();
            List <double> observedMz   = new List <double>();

            //Precursors and Tracks
            foreach (Precursor precursor in result.matchedPrecursors)//.ComputeAtFDR(result.dbOptions.maximumFalseDiscoveryRate, false))
            {
                PeptideSpectrumMatch psm = precursor.OptimizedBestPsm();
                if (psm.Target)
                {
                    observedMz.Add(precursor.Track.MZ);
                    observedDiff.Add(Numerics.MZFromMass(psm.Peptide.MonoisotopicMass, precursor.Charge) - precursor.Track.MZ);
                }
            }
            PolynominalRegression pr = new PolynominalRegression(observedMz, observedDiff, 2);

            foreach (Query query in result.queries)
            {
                query.precursor.Track.MZ += pr.Calculate(query.precursor.Track.MZ);
                query.precursor.Mass      = Numerics.MassFromMZ(query.precursor.Track.MZ, query.precursor.Charge);
                foreach (Precursor precursor in query.precursor.Isotopes)
                {
                    precursor.Track.MZ += pr.Calculate(precursor.Track.MZ);
                    precursor.Mass      = Numerics.MassFromMZ(precursor.Track.MZ, precursor.Charge);
                }
                foreach (Precursor precursor in query.precursor.OtherCharges)
                {
                    precursor.Track.MZ += pr.Calculate(precursor.Track.MZ);
                    precursor.Mass      = Numerics.MassFromMZ(precursor.Track.MZ, precursor.Charge);
                }

                query.spectrum.PrecursorMZ  += pr.Calculate(query.spectrum.PrecursorMZ);
                query.spectrum.PrecursorMass = Numerics.MassFromMZ(query.spectrum.PrecursorMZ, query.spectrum.PrecursorCharge);
            }
            foreach (PeptideSpectrumMatch psm in allPSMs)
            {
                psm.UpdatePrecursor(result.dbOptions);
            }
        }
        private void Draw(int iterationCount, double[] yData, string methodName, GraphPane graphPane, Color color)
        {
            double[] xData = Enumerable.Range(0, iterationCount).Select(iter => (double)iter).ToArray();

            if (cbPrecise.Checked)
            {
                graphPane.AddCurve(methodName,
                                   xData,
                                   yData,
                                   color, ZedGraph.SymbolType.None);
            }

            if (cbApprox.Checked)
            {
                var regression = new PolynominalRegression(yData, (int)udApproxPolygonPow.Value);

                var curve = graphPane.AddCurve(methodName + " (approx)",
                                               xData,
                                               xData.Select(x => regression.Calculate(x)).ToArray(),
                                               color, ZedGraph.SymbolType.None);
                curve.Line.Width = 3;
            }
        }