Esempio n. 1
0
        /// <summary>
        /// Gets the interval average of all spectrums.
        /// </summary>
        /// <returns>Interval</returns>
        private double GetAverageInterval()
        {
            double sum   = 0;
            int    count = 0;

            for (int i = 0; i < _param.GetXYDataNum(); i++)
            {
                ClrDataPoints xydata = _param.GetXYData(i);
                if (xydata.getLength() <= 1)
                {
                    continue;
                }

                uint length = xydata.getLength();
                for (uint j = 1; j < length; j++)
                {
                    double distance = Math.Abs(xydata.getX(j) - xydata.getX(j - 1));
                    if (distance == 0)
                    {
                        continue;
                    }
                    sum += distance;
                    count++;
                }
            }
            return(sum / count);
        }
Esempio n. 2
0
        /// <summary>
        /// Subtract Operation
        /// </summary>
        /// <param name="result">ResultResampling Class</param>
        /// <returns>ResultSpectrumCalculation</returns>
        private SpectrumCalculationResult OperationSubtract(ResamplingResult result)
        {
            if (!ValidateResult(result))
            {
                return(null);
            }
            SpectrumCalculationResult spectrumResult = new SpectrumCalculationResult();
            ClrDataPoints             basePts        = result.GetResultData(0);
            List <ClrDataPoints>      subtract       = new List <ClrDataPoints>();

            for (int i = 1; i < result.GetXYDataNum(); i++)
            {
                ClrDataPoints temp = new ClrDataPoints();
                for (uint j = 0; j < basePts.getLength(); j++)
                {
                    if (_stopFlag == true)
                    {
                        return(null);
                    }
                    temp.addPoint(basePts.getX(j),
                                  result.GetResultData(i).getY(j) - basePts.getY(j));
                }
                subtract.Add(temp);
            }
            for (int i = 0; i < subtract.Count; i++)
            {
                if (_stopFlag == true)
                {
                    return(null);
                }
                spectrumResult.AddResult(subtract[i], _specList[i + 1], SPECTRUMNAME_SUBTRACTED);
            }
            return(spectrumResult);
        }
Esempio n. 3
0
        /// <summary>
        /// Create Same array that first spectrum difference.
        /// </summary>
        /// <returns></returns>
        private double[] CreateSameArrayFirstSpectrumDifference()
        {
            ClrDataPoints xydata = _param.GetXYData(0);

            if (xydata == null)
            {
                return(null);
            }
            uint   length = xydata.getLength();
            uint   count  = 0;
            double lower  = GetLowerOutputRange();
            double higher = GetHigherOutputRange();

            for (uint i = 0; i < length; i++)
            {
                if ((xydata.getX(i) < lower) || (higher < xydata.getX(i)))
                {
                    continue;
                }
                if (i == 0)
                {
                    count++;
                }
                else if (xydata.getX(i) != xydata.getX(i - 1))
                {
                    count++;
                }
            }
            if (count == 0)
            {
                return(null);
            }

            double[] result = new double[count];
            uint     index  = 0;

            for (uint i = 0; i < length; i++)
            {
                if ((xydata.getX(i) < lower) || (higher < xydata.getX(i)))
                {
                    continue;
                }
                if ((xydata.getX(i) == 0) ||
                    !result.Contains(xydata.getX(i)))
                {
                    result[index++] = xydata.getX(i);
                }
            }
            return(result);
        }
Esempio n. 4
0
        /// <summary>
        /// Gets the interval minimum of all spectrums.
        /// </summary>
        /// <returns>Interval</returns>
        private double GetMinimumInterval()
        {
            double result = double.MaxValue;

            for (int i = 0; i < _param.GetXYDataNum(); i++)
            {
                ClrDataPoints xydata = _param.GetXYData(i);
                uint          length = xydata.getLength();
                for (uint j = 1; j < length; j++)
                {
                    double distance = Math.Abs(xydata.getX(j) - xydata.getX(j - 1));
                    if (distance == 0)
                    {
                        continue;
                    }
                    result = Math.Min(distance, result);
                }
            }

            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Divide Operation
        /// </summary>
        /// <param name="result">ResultResampling Class</param>
        /// <returns>ResultSpectrumCalculation</returns>
        private SpectrumCalculationResult OperationDivide(ResamplingResult result)
        {
            if (!ValidateResult(result))
            {
                return(null);
            }
            SpectrumCalculationResult spectrumResult = new SpectrumCalculationResult();
            ClrDataPoints             basePts        = new ClrDataPoints();
            ClrDataPoints             firstPts       = result.GetResultData(0);
            double threshold = firstPts.getMaxY() * Math.Pow(10, -6);

            for (uint i = 0; i < firstPts.getLength(); i++)
            {
                if (_stopFlag == true)
                {
                    return(null);
                }
                double value = Math.Max(firstPts.getY(i), threshold);
                basePts.addPoint(firstPts.getX(i), value);
            }

            List <ClrDataPoints> subtract = new List <ClrDataPoints>();

            for (int i = 1; i < result.GetXYDataNum(); i++)
            {
                ClrDataPoints temp = new ClrDataPoints();
                for (uint j = 0; j < basePts.getLength(); j++)
                {
                    if (_stopFlag == true)
                    {
                        return(null);
                    }
                    temp.addPoint(basePts.getX(j),
                                  result.GetResultData(i).getY(j) / basePts.getY(j));
                }
                subtract.Add(temp);
            }
            //2013/11/26 - del
            //spectrumResult.AddResult(basePts, _specList[0], SPECTRUMNAME_DIVIDED);
            //enddel
            for (int i = 0; i < subtract.Count; i++)
            {
                if (_stopFlag == true)
                {
                    return(null);
                }
                spectrumResult.AddResult(subtract[i], _specList[i + 1], SPECTRUMNAME_DIVIDED);
            }
            return(spectrumResult);
        }
Esempio n. 6
0
        /// <summary>
        /// Calculate Sum of Data Points
        /// </summary>
        /// <param name="result">ResultResampling Class</param>
        /// <returns>ClrDataPoints</returns>
        private ClrDataPoints CalculateDataPointsSum(ResamplingResult result)
        {
            ClrDataPoints sum = result.GetResultData(0);
            ClrDataPoints temp;

            for (int i = 1; i < result.GetXYDataNum(); i++)
            {
                temp = sum;
                sum  = new ClrDataPoints();
                ClrDataPoints data = result.GetResultData(i);

                for (uint j = 0; j < data.getLength(); j++)
                {
                    if (_stopFlag == true)
                    {
                        return(null);
                    }
                    sum.addPoint(data.getX(j), data.getY(j) + temp.getY(j));
                }
            }
            return(sum);
        }
Esempio n. 7
0
        /// <summary>
        /// Average Operation
        /// </summary>
        /// <param name="result">ResultResampling Class</param>
        /// <returns>ResultSpectrumCalculation</returns>
        private SpectrumCalculationResult OperationAverage(ResamplingResult result)
        {
            if (!ValidateResult(result))
            {
                return(null);
            }
            SpectrumCalculationResult spectrumResult = new SpectrumCalculationResult();
            ClrDataPoints             sum            = CalculateDataPointsSum(result);
            ClrDataPoints             average        = new ClrDataPoints();

            for (uint i = 0; i < sum.getLength(); i++)
            {
                if (_stopFlag == true)
                {
                    return(null);
                }
                average.addPoint(
                    sum.getX(i),
                    sum.getY(i) / result.GetXYDataNum());
            }
            spectrumResult.AddResult(average, _specList[0], SPECTRUMNAME_AVERAGED);
            return(spectrumResult);
        }
Esempio n. 8
0
        private bool CreateBaselineSubtractedXIC(
            PluginFunctionItemWrapper pfiw,
            List <ClrDataPoints> resamplingList,
            List <SpectrumWrapper> ms1List,
            SettingParameterValuesWrapper spvw,
            ref ClrDataPoints[] subtractLowerXICList,
            ref ClrDataPoints[] subtractHigherXICList,
            ref ClrDataPoints subtractHighestXICList
            )
        {
            uint resamplingLength = resamplingList[0].getLength();

            int lowerIndex  = (resamplingLength < int.MaxValue) ? (int)resamplingLength : int.MaxValue;
            int higherIndex = (0 < (int)(resamplingLength - lowerIndex))? (int)(resamplingLength - lowerIndex) : 0;

            subtractLowerXICList  = new ClrDataPoints[lowerIndex];
            subtractHigherXICList = new ClrDataPoints[higherIndex];

            for (uint i = 0; i < resamplingLength; i++)
            {
                //Update message.
                if (UpdateProgress != null)
                {
                    UpdateProgress(
                        PROGRESS_REMOVECONTAMINANT_PHASE.REMOVE_CONTAMINANT_PEAK,
                        (int)i, (int)resamplingLength);
                }

                //Cancel.
                if (StopFlag)
                {
                    break;
                }

                //Create XIC.
                ClrDataPoints pts = new ClrDataPoints();
                for (int j = 0; j < resamplingList.Count; j++)
                {
                    //Cancel.
                    if (StopFlag)
                    {
                        break;
                    }
                    pts.addPoint(ms1List[j].getRt(), resamplingList[j].getY(i));
                }
                //Cancel.
                if (StopFlag)
                {
                    pts.clearPoints();
                    pts.Dispose();
                    break;
                }

                //Baseline Subtraction
                ClrParameters param    = new ClrParameters();
                ClrDataPoints baseline = new ClrDataPoints();
                ClrPluginCallTool.setXYData(param, pts);
                ClrPluginCallTool.setBaseline(param, baseline);
                ClrPluginCallTool.setSettingValues(param, spvw);
                pfiw.getCall().invoke(param);

                //Cancel.
                if (StopFlag)
                {
                    param.Dispose();
                    baseline.clearPoints();
                    baseline.Dispose();
                }

                //Resampling baseline.
                ClrDataPoints         subtracted      = new ClrDataPoints();
                ResamplingParameter   resamplingParam = new ResamplingParameter();
                ResamplingCalculation resamplingCalc  = new ResamplingCalculation(resamplingParam);
                resamplingParam.ResamplingMode = ResamplingParameter.SamplingMode.FIRST;
                resamplingParam.Interpolation  = _resamplingParam.Interpolation;
                resamplingParam.AddXYData(pts);
                resamplingParam.AddXYData(baseline);
                resamplingCalc.Execute();
                ClrDataPoints resampledBaseline = resamplingCalc.Result.getResultData(1);

                for (uint j = 0; j < resampledBaseline.getLength(); j++)
                {
                    double intensity = Math.Max(pts.getY(j) - resampledBaseline.getY(j), 0);
                    subtracted.addPoint(pts.getX(j), intensity);
                }

                // Countermeasure to OutOfBoundsException.
                if (i < int.MaxValue)
                {
                    subtractLowerXICList[i] = subtracted;
                }
                else if (int.MaxValue < i && i < (uint)int.MaxValue * 2)
                {
                    subtractHigherXICList[i - int.MaxValue] = subtracted;
                }
                else
                {
                    subtractHighestXICList = subtracted;
                }
                resamplingParam.ClearXYDataList();
                resamplingCalc.Result.ClearXYDataList();
            }
            return(!StopFlag);
        }
Esempio n. 9
0
        /// <summary>
        /// add xySetData to XYDataWrapper class
        /// add data that set before calling this method to XYDataWrapper class
        /// between min and max
        /// </summary>
        /// <param name="xyData">add to class</param>
        /// <param name="minX">min(if this argument is below 0,min is not checked)</param>
        /// <param name="maxX">max(if this argument is below 0,max is not checked)</param>
        public override void onGetXYData(XYDataWrapper xyData, double minX, double maxX)
        {
            uint num;

            if (_pts == null)
            {
                return;
            }
            xyData.clearPoints();
            num = _pts.getLength();
            xyData.reserve(num);
            for (uint n = 0; n < num; n++)
            {
                if (((minX < 0) || (minX <= _pts.getX(n))) && ((maxX < 0) || (_pts.getX(n) <= maxX)))
                {
                    xyData.addPoint(_pts.getX(n), _pts.getY(n));
                }
            }
        }