Beispiel #1
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);
        }