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);
        }
示例#3
0
        /// <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);
        }