示例#1
0
        public static XYData GetTheorPeakData(double centerXValue, double peakHeight, double peakWidth, int numPointsPerPeak)
        {
            var xydata = new XYData();
            var one_over_sqrt_of_2_pi = 0.3989423;
            var sigma        = peakWidth / 2.35; //   width@half-height =  2.35σ   (Gaussian peak theory)
            var sixsigma     = 3 * peakWidth;
            var mz_per_point = sixsigma / (double)(numPointsPerPeak - 1);

            var startPoint = 0 - (numPointsPerPeak - 1) / 2;
            var stopPoint  = 0 + (numPointsPerPeak - 1) / 2;

            xydata.Xvalues = new double[numPointsPerPeak];
            xydata.Yvalues = new double[numPointsPerPeak];

            var counter = 0;

            for (var i = startPoint; i <= stopPoint; i++)
            {
                var mz     = centerXValue + mz_per_point * (i);
                var intens = (1 / sigma) * one_over_sqrt_of_2_pi * Math.Exp(-1 * ((mz - centerXValue) * (mz - centerXValue)) / (2 * sigma * sigma));

                xydata.Xvalues[counter] = mz;
                xydata.Yvalues[counter] = intens;
                counter++;
            }

            xydata.NormalizeYData();


            for (var i = 0; i < xydata.Yvalues.Length; i++)
            {
                xydata.Yvalues[i] = xydata.Yvalues[i] * peakHeight;
            }
            return(xydata);
        }
示例#2
0
        private bool AlignAndFillArraysToCorrelate(XYData chromxydataPeak1, XYData chromxydataPeak2, out double[] arrayToCorrelatePeak1, out double[] arrayToCorrelatePeak2)
        {
            arrayToCorrelatePeak1 = null;
            arrayToCorrelatePeak2 = null;

            chromxydataPeak1.NormalizeYData();
            chromxydataPeak2.NormalizeYData();
            //Console.WriteLine("chromxydataPeak1");
            //chromxydataPeak1.Display();
            //Console.WriteLine("chromxydataPeak2");
            //chromxydataPeak2.Display();
            var lowestFramePeak1  = chromxydataPeak1.Xvalues.Min();
            var lowestFramePeak2  = chromxydataPeak2.Xvalues.Min();
            var highestFramePeak1 = chromxydataPeak1.Xvalues.Max();
            var highestFramePeak2 = chromxydataPeak2.Xvalues.Max();
            var minX    = Math.Max(lowestFramePeak1, lowestFramePeak2);
            var maxX    = Math.Min(highestFramePeak1, highestFramePeak2);
            var Overlap = (minX < maxX);

            if (!Overlap)
            {
                return(false);
            }
            var chromPeak1StartIndex = chromxydataPeak1.GetClosestXVal(minX);
            var chromPeak2StartIndex = chromxydataPeak2.GetClosestXVal(minX);
            var chromPeak1StopIndex  = chromxydataPeak1.GetClosestXVal(maxX);
            var chromPeak2StopIndex  = chromxydataPeak2.GetClosestXVal(maxX);

            arrayToCorrelatePeak1 = new double[chromPeak1StopIndex - chromPeak1StartIndex + 1];
            arrayToCorrelatePeak2 = new double[chromPeak2StopIndex - chromPeak2StartIndex + 1];

            for (int i = chromPeak1StartIndex, j = 0; i <= chromPeak1StopIndex; i++, j++)
            {
                arrayToCorrelatePeak1[j] = chromxydataPeak1.Yvalues[i];
            }
            for (int i = chromPeak2StartIndex, j = 0; i <= chromPeak2StopIndex; i++, j++)
            {
                arrayToCorrelatePeak2[j] = chromxydataPeak2.Yvalues[i];
            }

            if (arrayToCorrelatePeak1.Length < 5 || arrayToCorrelatePeak2.Length < 5)
            {
                return(false);
            }

            return(true);
        }