public override void ValidateResult(DeconTools.Backend.Core.ResultCollection resultColl, DeconTools.Backend.Core.IsosResult currentResult)
        {
            if (currentResult.IsotopicProfile == null)
            {
                return;
            }

            Check.Require(currentResult != null, String.Format("{0} failed. CurrentResult has not been defined.", this.Name));
            if (resultColl.Run.PeakList == null || resultColl.Run.PeakList.Count == 0)
            {
                currentResult.InterferenceScore = -1;
                return;
            }


            var monoPeak = currentResult.IsotopicProfile.getMonoPeak();
            var lastPeak = currentResult.IsotopicProfile.Peaklist[currentResult.IsotopicProfile.Peaklist.Count - 1];

            var leftMZBoundary  = monoPeak.XValue - 1.1;
            var rightMZBoundary = lastPeak.XValue + lastPeak.Width / 2.35 * 2;      // 2 sigma

            double interferenceVal = -1;

            if (UsePeakBasedInterferenceValue)
            {
                var scanPeaks = resultColl.Run.PeakList.Select <Peak, MSPeak>(i => (MSPeak)i).ToList();
                interferenceVal = m_scorer.GetInterferenceScore(scanPeaks, currentResult.IsotopicProfile.Peaklist, leftMZBoundary, rightMZBoundary);
            }
            else
            {
                var startIndexOfXYData = MathUtils.BinarySearchWithTolerance(resultColl.Run.XYData.Xvalues, monoPeak.XValue - 3, 0, (resultColl.Run.XYData.Xvalues.Length - 1), 2);
                if (startIndexOfXYData < 0)
                {
                    startIndexOfXYData = 0;
                }

                interferenceVal = m_scorer.GetInterferenceScore(resultColl.Run.XYData, currentResult.IsotopicProfile.Peaklist, leftMZBoundary, rightMZBoundary, startIndexOfXYData);
            }



            currentResult.InterferenceScore = interferenceVal;
        }
Example #2
0
        private double getIScore(List <MSPeak> peakList, IsotopicProfile iso)
        {
            var monoPeak = iso.getMonoPeak();
            var lastPeak = iso.Peaklist[iso.Peaklist.Count - 1];

            var leftMZBoundary  = monoPeak.XValue - 1.1;
            var rightMZBoundary = lastPeak.XValue + lastPeak.Width / 2.35 * 2;      // 2 sigma

            var interferenceVal = iScorer.GetInterferenceScore(peakList, iso.Peaklist, leftMZBoundary, rightMZBoundary);

            return(interferenceVal);
        }