示例#1
0
        /// <summary>
        /// Expands charge range to cover all instances of a given sequence
        /// </summary>
        /// <param name="parentTarget"></param>
        /// <param name="referenceTarget"></param>
        private void ExpandChargeRange(TopDownIqTarget parentTarget, ChromPeakIqTarget referenceTarget)
        {
            var childWorkflow = new ChargeStateChildTopDownIqWorkflow(Run, WorkflowParameters);

            var childTargets = parentTarget.ChildTargets().ToArray();

            var fitTolerance         = 0.5;
            var correlationTolerance = 0.95;

            var minCharge = (IqChargeStateTarget)childTargets.First();
            var maxCharge = (IqChargeStateTarget)childTargets.Last();

            if (minCharge.GetResult().IqResultDetail.Chromatogram != null)
            {
                var charge     = minCharge.ChargeState;
                var extendDown = true;
                while (extendDown)
                {
                    var extend = new IqChargeStateTarget(childWorkflow);
                    charge             = charge - 1;
                    extend.ChargeState = charge;
                    parentTarget.AddTarget(extend);
                    extend.RefineTarget();
                    extend.DoWorkflow();
                    extendDown = ChargeExpansionPeakSelection(parentTarget, referenceTarget, extend, correlationTolerance, fitTolerance);
                }
            }

            if (maxCharge.GetResult().IqResultDetail.Chromatogram != null)
            {
                var charge   = maxCharge.ChargeState;
                var extendUp = true;
                while (extendUp)
                {
                    var extend = new IqChargeStateTarget(childWorkflow);
                    charge             = charge + 1;
                    extend.ChargeState = charge;
                    parentTarget.AddTarget(extend);
                    extend.RefineTarget();
                    extend.DoWorkflow();
                    extendUp = ChargeExpansionPeakSelection(parentTarget, referenceTarget, extend, correlationTolerance, fitTolerance);
                }
            }

            parentTarget.SortChildTargetsByCharge();
        }
示例#2
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);
        }