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; }
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); }