Exemple #1
0
        public void Calculate(IIdentifiedProteinGroup proteinGroup, Func <IIdentifiedSpectrum, bool> validFunc)
        {
            List <IIdentifiedSpectrum> spectra = (from s in proteinGroup[0].GetSpectra()
                                                  where s.GetRatioEnabled() && validFunc(s)
                                                  select s).ToList();

            QuantificationItem item;

            if (spectra.Count == 1)
            {
                item = spectra[0].GetQuantificationItem();
            }
            else if (spectra.Count > 1)
            {
                var sampleIntensities = new List <double>();
                var refIntensities    = new List <double>();

                spectra.ForEach(m =>
                {
                    sampleIntensities.Add(m.GetQuantificationItem().SampleIntensity);
                    refIntensities.Add(m.GetQuantificationItem().ReferenceIntensity);
                });

                var intensities = new double[2][];
                intensities[0] = refIntensities.ToArray();
                intensities[1] = sampleIntensities.ToArray();
                LinearRegressionRatioResult lrrr = LinearRegressionRatioCalculator.CalculateRatio(intensities);

                item             = new QuantificationItem();
                item.Ratio       = lrrr.Ratio;
                item.Correlation = lrrr.RSquare;

                double sampleIntensity, refIntensity;
                if (lrrr.Ratio > 1)
                {
                    sampleIntensity = sampleIntensities.Max();
                    refIntensity    = sampleIntensity / lrrr.Ratio;
                }
                else
                {
                    refIntensity    = refIntensities.Max();
                    sampleIntensity = refIntensity * lrrr.Ratio;
                }

                item.SampleIntensity    = sampleIntensity;
                item.ReferenceIntensity = refIntensity;
                item.Enabled            = true;
            }
            else
            {
                item         = new QuantificationItem();
                item.Enabled = false;
            }

            foreach (IIdentifiedProtein protein in proteinGroup)
            {
                protein.SetQuantificationItem(item);
            }
        }
        public static LinearRegressionRatioResult GetRegression(this PointPairList pplTotal)
        {
            double[][] intensities = new double[2][];

            intensities[0] = (from ppl in pplTotal
                              select ppl.X).ToArray();

            intensities[1] = (from ppl in pplTotal
                              select ppl.Y).ToArray();

            return(LinearRegressionRatioCalculator.CalculateRatio(intensities));
        }
        private void CalculateRatio()
        {
            double[][] intensities = GetIntensityArray();

            if (intensities[0].Length <= 1)
            {
                Ratio    = 1;
                Distance = 0;
                RegressionCorrelation = 0;
                return;
            }

            if (intensities[0].Distinct().Count() == 1 || intensities[1].Distinct().Count() == 1)
            {
                var avea = intensities[0].Average();
                var aveb = intensities[1].Average();
                if (avea == 0.0 || aveb == 0.0)
                {
                    Ratio    = 1;
                    Distance = 0;
                    RegressionCorrelation = 0;
                    return;
                }

                Ratio    = aveb / avea;
                Distance = 0;
                RegressionCorrelation = 0;
                return;
            }

            LinearRegressionRatioResult lrrr;

            if (_deductBaseLine)
            {
                lrrr = LinearRegressionRatioCalculator.CalculateRatio(intensities);
            }
            else
            {
                lrrr = LinearRegressionRatioCalculator.CalculateRatioDistance(intensities);
            }

            Ratio    = lrrr.Ratio;
            Distance = lrrr.Distance;
            RegressionCorrelation = lrrr.RSquare;
        }
Exemple #4
0
        public void CalculateRatio()
        {
            double[][] intensities = GetIntensityArray();

            if (intensities[0].Length > 0)
            {
                LinearRegressionRatioResult lrrr = LinearRegressionRatioCalculator.CalculateRatio(intensities);
                Ratio = lrrr.Ratio;
                RegressionCorrelation = lrrr.RSquare;
            }
            else
            {
                Ratio = 1.0;
                RegressionCorrelation = 0.0;
            }

            InitAbundanceFromEnvelopes();
        }
Exemple #5
0
        public QuantificationItem Calculate(IIdentifiedProteinGroup proteinGroup, Func <IIdentifiedSpectrum, bool> validFunc)
        {
            List <IIdentifiedSpectrum> spectra = (from s in proteinGroup[0].GetSpectra()
                                                  where s.IsEnabled(true) && validFunc(s)
                                                  select s).ToList();

            if (spectra.Count == 1)
            {
                var item = spectra[0].GetQuantificationItem();
                return(new QuantificationItem()
                {
                    Enabled = true,
                    Ratio = item.Ratio,
                    Correlation = item.Correlation,
                    SampleIntensity = item.SampleIntensity,
                    ReferenceIntensity = item.ReferenceIntensity
                });
            }

            if (spectra.Count > 1)
            {
                var sampleIntensities = new List <double>();
                var refIntensities    = new List <double>();

                spectra.ForEach(m =>
                {
                    sampleIntensities.Add(m.GetQuantificationItem().SampleIntensity);
                    refIntensities.Add(m.GetQuantificationItem().ReferenceIntensity);
                });

                var intensities = new double[2][];
                intensities[0] = refIntensities.ToArray();
                intensities[1] = sampleIntensities.ToArray();
                LinearRegressionRatioResult lrrr = LinearRegressionRatioCalculator.CalculateRatio(intensities);

                double sampleIntensity, refIntensity;
                if (lrrr.Ratio > 1)
                {
                    sampleIntensities.Sort();
                    sampleIntensity = sampleIntensities[sampleIntensities.Count - 1];
                    refIntensity    = sampleIntensity / lrrr.Ratio;
                }
                else
                {
                    refIntensities.Sort();
                    refIntensity    = refIntensities[refIntensities.Count - 1];
                    sampleIntensity = refIntensity * lrrr.Ratio;
                }

                return(new QuantificationItem()
                {
                    Enabled = true,
                    Ratio = lrrr.Ratio,
                    Correlation = lrrr.RSquare,
                    SampleIntensity = sampleIntensity,
                    ReferenceIntensity = refIntensity
                });
            }

            return(new QuantificationItem()
            {
                Enabled = false
            });
        }
Exemple #6
0
        public void Calculate(IIdentifiedProteinGroup proteinGroup, Func <IIdentifiedSpectrum, bool> validFunc)
        {
            List <IIdentifiedSpectrum> spectra = (from s in proteinGroup[0].GetSpectra()
                                                  where validFunc(s) && s.IsEnabled(true) && HasPeptideRatio(s)
                                                  select s).ToList();

            if (spectra.Count == 1)
            {
                var r = CalculatePeptideRatio(spectra[0]);
                foreach (var protein in proteinGroup)
                {
                    protein.SetEnabled(true);

                    protein.Annotations[O18QuantificationConstants.O18_RATIO] = new LinearRegressionRatioResult(r, 0.0)
                    {
                        PointCount = 1, TValue = 0, PValue = 1
                    };
                    protein.Annotations[this.intensityFunc.ReferenceKey] = spectra[0].Annotations[this.intensityFunc.ReferenceKey];
                    protein.Annotations[this.intensityFunc.SampleKey]    = spectra[0].Annotations[this.intensityFunc.SampleKey];
                }
            }
            else if (spectra.Count > 1)
            {
                var intensities = this.intensityFunc.ConvertToArray(spectra);

                double maxA = intensities[0].Max();
                double maxB = intensities[1].Max();

                LinearRegressionRatioResult ratioResult;

                if (maxA == 0.0)
                {
                    ratioResult = new LinearRegressionRatioResult(20, 0.0)
                    {
                        PointCount = intensities.Count(), TValue = 0, PValue = 0
                    };
                    maxA = maxB / ratioResult.Ratio;
                }
                else
                {
                    if (maxB == 0.0)
                    {
                        ratioResult = new LinearRegressionRatioResult(0.05, 0.0)
                        {
                            PointCount = intensities.Count(), TValue = 0, PValue = 0
                        };
                    }
                    else
                    {
                        ratioResult = LinearRegressionRatioCalculator.CalculateRatio(intensities);
                    }
                    maxB = maxA * ratioResult.Ratio;
                }

                foreach (IIdentifiedProtein protein in proteinGroup)
                {
                    protein.SetEnabled(true);

                    protein.Annotations[O18QuantificationConstants.O18_RATIO] = ratioResult;
                    protein.Annotations[this.intensityFunc.ReferenceKey]      = maxA;
                    protein.Annotations[this.intensityFunc.SampleKey]         = maxB;
                }
            }
            else
            {
                foreach (IIdentifiedProtein protein in proteinGroup)
                {
                    protein.SetEnabled(false);
                    protein.Annotations.Remove(O18QuantificationConstants.O18_RATIO);
                    protein.Annotations.Remove(this.intensityFunc.ReferenceKey);
                    protein.Annotations.Remove(this.intensityFunc.SampleKey);
                }
            }
        }