public double PearsonCorrelation(Peak[] spectrum1, Peak[] spectrum2,FilteredProteinMassBinning comparer)
        {
            
            var spec1Bar = 0d;
            var spec2Bar = 0d;

            spectrum1 = GuassianFilter(spectrum1, .5);
            spectrum2 = GuassianFilter(spectrum2, .5);
            var vectorLength = comparer.GetBinNumber(10000.0); 

            spec1Bar = spectrum1.Sum(x => x.Intensity)/vectorLength;
            spec2Bar = spectrum1.Sum(y => y.Intensity)/vectorLength;


            var intensityVector1 = ConvertToFullIntensityVector(spectrum1, vectorLength, comparer);
            var intensityVector2 = ConvertToFullIntensityVector(spectrum2, vectorLength, comparer);

            var cov = 0.0;
            var s1 = 0.0;
            var s2 = 0.0;

            for (var i = 0; i < vectorLength; i++)
            {
                var d1 = intensityVector1[i] - spec1Bar;
                var d2 = intensityVector2[i] - spec2Bar;
                cov += d1*d2;
                s1 += d1*d1;
                s2 += d2*d2;
            }

            if (s1 <= 0 || s2 <= 0) return 0;
            return cov < 0 ? 0f : cov/Math.Sqrt(s1*s2);
        }
        public double RootMeanSquareDeviation(Peak[] spectrum1, Peak[] spectrum2, FilteredProteinMassBinning comparer)
        {

            spectrum1 = GuassianFilter(spectrum1, .5);
            spectrum2 = GuassianFilter(spectrum2, .5);
            var vectorLength = comparer.GetBinNumber(10000.0);
            var intensityVector1 = ConvertToFullIntensityVector(spectrum1, vectorLength, comparer);
            var intensityVector2 = ConvertToFullIntensityVector(spectrum2, vectorLength, comparer);
            var mean1 = spectrum1.Sum(p => p.Intensity)/spectrum1.Length;
            var mean2 = spectrum1.Sum(p => p.Intensity)/spectrum2.Length;

            var sum = 0d;
            for (int i = 0; i < vectorLength; i++)
            {
                var diff = intensityVector1[i] - intensityVector2[i];
                sum += diff*diff;
            }

            return Math.Sqrt(sum/vectorLength);
        }
Example #3
0
 public static double GetRefIntensity(Peak[] peaks)
 {
     return peaks.Sum(p => p.Intensity);
 }
 public double GetRegressionIntercept(Peak[] spectrum, double b)
 {
     var n = spectrum.Length;
     var sumX = spectrum.Sum(p => p.Mz);
     var sumY = spectrum.Sum(p => p.Intensity);
     return (sumY - b*sumX)/n;
 }
        public double GetRegressionSlope(Peak[] spectrum)
        {
            var n = spectrum.Length;
            var sumXY = spectrum.Sum(p => p.Mz*p.Intensity);
            var sumX = spectrum.Sum(p => p.Mz);
            var sumY = spectrum.Sum(p => p.Intensity);
            var sumXSquared = spectrum.Sum(p => p.Mz*p.Mz);

            return (n*sumXY - sumX*sumY)/(n*sumXSquared - sumX*sumX);
        }