private ChromCorrelationDataItem GetChromCorrDataItem(Run run, int startScan, int stopScan, XYData baseXYData, double correlatedMZValue) { bool chromDataIsOK; var chromPeakXYData = GetCorrelatedChromPeakXYData(run, startScan, stopScan, baseXYData, correlatedMZValue); chromDataIsOK = chromPeakXYData != null && chromPeakXYData.Xvalues != null && chromPeakXYData.Xvalues.Length > 3; ChromCorrelationDataItem dataItem; if (chromDataIsOK) { double slope; double intercept; double rsquaredVal; chromPeakXYData = FillInAnyMissingValuesInChromatogram(baseXYData, chromPeakXYData); GetElutionCorrelationData(baseXYData, chromPeakXYData, out slope, out intercept, out rsquaredVal); dataItem = new ChromCorrelationDataItem(slope, intercept, rsquaredVal); } else { dataItem = new ChromCorrelationDataItem(); } return(dataItem); }
public ChromCorrelationData CorrelateO16O18Profiles(Run run, IsotopicProfile iso, int startScan, int stopScan) { var correlationData = new ChromCorrelationData(); var indexO16MonoPeak = 0; var indexO18SingleLabelPeak = 2; var indexO18DoubleLabelPeak = 4; var baseMZValue = iso.Peaklist[indexO16MonoPeak].XValue; bool baseChromDataIsOK; var basePeakChromXYData = GetBaseChromXYData(run, startScan, stopScan, baseMZValue); baseChromDataIsOK = basePeakChromXYData != null && basePeakChromXYData.Xvalues != null && basePeakChromXYData.Xvalues.Length > 3; if (!baseChromDataIsOK) { return(new ChromCorrelationData()); } ChromCorrelationDataItem o18SingleLabelChromCorrDataItem; if (indexO18SingleLabelPeak >= iso.Peaklist.Count) { o18SingleLabelChromCorrDataItem = new ChromCorrelationDataItem(); } else { var correlatedO18SingleLabelMzValue = iso.Peaklist[indexO18SingleLabelPeak].XValue; o18SingleLabelChromCorrDataItem = GetChromCorrDataItem(run, startScan, stopScan, basePeakChromXYData, correlatedO18SingleLabelMzValue); } ChromCorrelationDataItem o18DoubleLabelChromCorrDataItem; if (indexO18DoubleLabelPeak >= iso.Peaklist.Count) { o18DoubleLabelChromCorrDataItem = new ChromCorrelationDataItem(); } else { var correlatedO18DoubleLabelMzValue = iso.Peaklist[indexO18DoubleLabelPeak].XValue; o18DoubleLabelChromCorrDataItem = GetChromCorrDataItem(run, startScan, stopScan, basePeakChromXYData, correlatedO18DoubleLabelMzValue); } correlationData.AddCorrelationData(o18SingleLabelChromCorrDataItem); correlationData.AddCorrelationData(o18DoubleLabelChromCorrDataItem); return(correlationData); }
/// <summary> /// Selects a peak that correlates with the reference target and returns a bool to continue extending the charge range /// </summary> /// <param name="parentTarget"></param> /// <param name="referenceTarget"></param> /// <param name="chargeTarget"></param> /// <param name="correlationCutoff"></param> /// <param name="fitCutoff"></param> /// <returns></returns> private bool ChargeExpansionPeakSelection(TopDownIqTarget parentTarget, ChromPeakIqTarget referenceTarget, IqChargeStateTarget chargeTarget, double correlationCutoff, double fitCutoff) { var iqChargeCorrelator = ChromatogramCorrelator as IqChargeCorrelator; var peakTargets = chargeTarget.ChildTargets(); var sortedPeakTargets = peakTargets.OrderBy(x => x.GetResult().FitScore); foreach (ChromPeakIqTarget target in sortedPeakTargets) { if (referenceTarget.ChromPeak != null) { var minScan = referenceTarget.ChromPeak.XValue - (0.5 * referenceTarget.ChromPeak.Width); var maxScan = referenceTarget.ChromPeak.XValue + (0.5 * +referenceTarget.ChromPeak.Width); if ((target.ChromPeak.XValue > minScan) && (target.ChromPeak.XValue < maxScan)) { var correlation = iqChargeCorrelator.PairWiseChargeCorrelation(referenceTarget, target, Run, 3); if (correlation > correlationCutoff && target.GetResult().FitScore < fitCutoff) { UpdateSelection(target); var parentResult = parentTarget.GetResult() as TopDownIqResult; foreach (var item in parentResult.ChargeCorrelationData.CorrelationData) { if (referenceTarget == item.ReferenceTarget) { var corrItem = new ChromCorrelationDataItem(0, 0, correlation); var corr = new ChromCorrelationData(); corr.AddCorrelationData(corrItem); item.PeakCorrelationData.Add(target, corr); } } return(true); } } } } return(false); }
public ChromCorrelationData CorrelatePeaksWithinIsotopicProfile(Run run, IsotopicProfile iso, int startScan, int stopScan) { var correlationData = new ChromCorrelationData(); var indexMostAbundantPeak = iso.GetIndexOfMostIntensePeak(); var baseMZValue = iso.Peaklist[indexMostAbundantPeak].XValue; bool baseChromDataIsOK; var basePeakChromXYData = GetBaseChromXYData(run, startScan, stopScan, baseMZValue); baseChromDataIsOK = basePeakChromXYData != null && basePeakChromXYData.Xvalues != null; //&&basePeakChromXYData.Xvalues.Length > 3; var minIntensity = iso.Peaklist[indexMostAbundantPeak].Height * MinimumRelativeIntensityForChromCorr; for (var i = 0; i < iso.Peaklist.Count; i++) { if (!baseChromDataIsOK) { var defaultChromCorrDataItem = new ChromCorrelationDataItem(); correlationData.AddCorrelationData(defaultChromCorrDataItem); break; } if (i == indexMostAbundantPeak) { //peak is being correlated to itself correlationData.AddCorrelationData(1.0, 0, 1); } else if (iso.Peaklist[i].Height >= minIntensity) { var correlatedMZValue = iso.Peaklist[i].XValue; bool chromDataIsOK; var chromPeakXYData = GetCorrelatedChromPeakXYData(run, startScan, stopScan, basePeakChromXYData, correlatedMZValue); chromDataIsOK = chromPeakXYData != null && chromPeakXYData.Xvalues != null; //&&chromPeakXYData.Xvalues.Length > 3; if (chromDataIsOK) { double slope; double intercept; double rsquaredVal; chromPeakXYData = FillInAnyMissingValuesInChromatogram(basePeakChromXYData, chromPeakXYData); GetElutionCorrelationData(basePeakChromXYData, chromPeakXYData, out slope, out intercept, out rsquaredVal); correlationData.AddCorrelationData(slope, intercept, rsquaredVal); } else { var defaultChromCorrDataItem = new ChromCorrelationDataItem(); correlationData.AddCorrelationData(defaultChromCorrDataItem); } } else { var defaultChromCorrDataItem = new ChromCorrelationDataItem(); correlationData.AddCorrelationData(defaultChromCorrDataItem); } } return(correlationData); }