示例#1
0
        public PrecursorQuantificationResult GetPrecursorQuantificationResult(int replicateIndex, TransitionGroupDocNode transitionGroupDocNode)
        {
            PrecursorQuantificationResult result = null;

            if (IsotopologResponseCurve)
            {
                result = new PrecursorQuantificationResult();
                var calibrationPoint = new CalibrationPoint(replicateIndex, transitionGroupDocNode.LabelType);
                CalibrationCurve calibrationCurve = GetCalibrationCurve();
                result = (PrecursorQuantificationResult)result.ChangeNormalizedArea(GetNormalizedPeakArea(calibrationPoint));
                if (HasExternalStandards() || HasInternalStandardConcentration())
                {
                    double?calculatedConcentration = GetCalculatedConcentration(calibrationCurve, calibrationPoint);
                    result = (PrecursorQuantificationResult)result.ChangeCalculatedConcentration(calculatedConcentration);
                    double?expectedConcentration = transitionGroupDocNode.PrecursorConcentration;
                    result = (PrecursorQuantificationResult)result.ChangeAccuracy(calculatedConcentration / expectedConcentration);
                    result = (PrecursorQuantificationResult)result.ChangeUnits(QuantificationSettings.Units);
                }
            }

            var targetIonRatio = GetTargetIonRatio(transitionGroupDocNode);
            var ionRatio       = PeptideQuantifier.GetQualitativeIonRatio(SrmSettings, transitionGroupDocNode, replicateIndex);

            if (targetIonRatio.HasValue || ionRatio.HasValue)
            {
                result = result ?? new PrecursorQuantificationResult();
                var status = ValueStatus.GetStatus(ionRatio, GetTargetIonRatio(transitionGroupDocNode),
                                                   SrmSettings.PeptideSettings.Quantification.QualitativeIonRatioThreshold / 100);
                result = result.ChangeIonRatio(targetIonRatio, ionRatio, status);
            }
            return(result);
        }
示例#2
0
        public double?GetSpecifiedXValue(CalibrationPoint calibrationPoint)
        {
            var chromatogramSet = GetChromatogramSet(calibrationPoint.ReplicateIndex);

            if (chromatogramSet == null)
            {
                return(null);
            }
            if (null != calibrationPoint.LabelType)
            {
                var transitionGroup = PeptideQuantifier.PeptideDocNode.TransitionGroups.FirstOrDefault(tg =>
                                                                                                       Equals(tg.LabelType, calibrationPoint.LabelType) && tg.PrecursorConcentration.HasValue);
                if (transitionGroup != null)
                {
                    return(transitionGroup.PrecursorConcentration / chromatogramSet.SampleDilutionFactor);
                }
                return(null);
            }

            double?peptideConcentration = GetPeptideConcentration(chromatogramSet);

            if (peptideConcentration.HasValue)
            {
                if (HasExternalStandards() && HasInternalStandardConcentration())
                {
                    return(peptideConcentration / PeptideQuantifier.PeptideDocNode.InternalStandardConcentration);
                }
                return(peptideConcentration);
            }
            return(null);
        }
示例#3
0
 public double?GetCalculatedConcentration(CalibrationCurve calibrationCurve, CalibrationPoint calibrationPoint)
 {
     if (!HasExternalStandards() && !HasInternalStandardConcentration())
     {
         return(null);
     }
     return(GetConcentrationFromXValue(GetCalculatedXValue(calibrationCurve, calibrationPoint) * GetDilutionFactor(calibrationPoint.ReplicateIndex)));
 }
示例#4
0
        public SampleType GetSampleType(CalibrationPoint calibrationPoint)
        {
            if (null == calibrationPoint.LabelType)
            {
                ChromatogramSet chromatogramSet = SrmSettings.MeasuredResults.Chromatograms[calibrationPoint.ReplicateIndex];
                return(chromatogramSet.SampleType);
            }

            return(GetSpecifiedXValue(calibrationPoint).HasValue ? SampleType.STANDARD : SampleType.UNKNOWN);
        }
示例#5
0
        public QuantificationResult GetPrecursorQuantificationResult(int replicateIndex, TransitionGroupDocNode transitionGroupDocNode)
        {
            QuantificationResult result       = new QuantificationResult();
            var calibrationPoint              = new CalibrationPoint(replicateIndex, transitionGroupDocNode.LabelType);
            CalibrationCurve calibrationCurve = GetCalibrationCurve();

            result = result.ChangeNormalizedArea(GetNormalizedPeakArea(calibrationPoint));
            if (HasExternalStandards() || HasInternalStandardConcentration())
            {
                double?calculatedConcentration = GetCalculatedConcentration(calibrationCurve, calibrationPoint);
                result = result.ChangeCalculatedConcentration(calculatedConcentration);
                double?expectedConcentration = transitionGroupDocNode.PrecursorConcentration;
                result = result.ChangeAccuracy(calculatedConcentration / expectedConcentration);
                result = result.ChangeUnits(SrmSettings.PeptideSettings.Quantification.Units);
            }
            return(result);
        }
示例#6
0
        public IDictionary <CalibrationPoint, double> GetStandardConcentrations()
        {
            Dictionary <CalibrationPoint, double> result = new Dictionary <CalibrationPoint, double>();
            var measuredResults = SrmSettings.MeasuredResults;

            if (null == measuredResults)
            {
                return(result);
            }
            if (IsotopologResponseCurve)
            {
                foreach (var precursor in PeptideQuantifier.PeptideDocNode.TransitionGroups)
                {
                    if (precursor.PrecursorConcentration.HasValue)
                    {
                        foreach (var replicateIndex in EnumerateReplicates())
                        {
                            var standardIdentifier = new CalibrationPoint(replicateIndex, precursor.LabelType);
                            result[standardIdentifier] = precursor.PrecursorConcentration.Value / measuredResults.Chromatograms[replicateIndex].SampleDilutionFactor;
                        }
                    }
                }
            }
            else
            {
                foreach (int replicateIndex in EnumerateReplicates())
                {
                    var chromatogramSet = measuredResults.Chromatograms[replicateIndex];
                    if (!SampleType.STANDARD.Equals(chromatogramSet.SampleType))
                    {
                        continue;
                    }
                    if (PeptideQuantifier.PeptideDocNode.IsExcludeFromCalibration(replicateIndex))
                    {
                        continue;
                    }
                    double?concentration = GetPeptideConcentration(chromatogramSet);
                    if (concentration.HasValue)
                    {
                        result.Add(new CalibrationPoint(replicateIndex, null), concentration.Value);
                    }
                }
            }
            return(result);
        }
示例#7
0
        public double?GetPeptideConcentration(CalibrationPoint calibrationPoint)
        {
            var chromatogramSet = GetChromatogramSet(calibrationPoint.ReplicateIndex);

            if (chromatogramSet == null)
            {
                return(null);
            }
            if (calibrationPoint.LabelType != null)
            {
                var transitionGroup = PeptideQuantifier.PeptideDocNode.TransitionGroups.FirstOrDefault(tg =>
                                                                                                       Equals(tg.LabelType, calibrationPoint.LabelType) && tg.PrecursorConcentration.HasValue);
                if (transitionGroup == null)
                {
                    return(null);
                }
                return(transitionGroup.PrecursorConcentration / chromatogramSet.SampleDilutionFactor);
            }
            return(GetPeptideConcentration(chromatogramSet));
        }
示例#8
0
        public double?GetNormalizedPeakArea(CalibrationPoint calibrationPoint)
        {
            var allTransitionQuantities = GetTransitionQuantities(calibrationPoint);
            ICollection <PeptideQuantifier.Quantity> quantitiesToSum;

            if (!IsAllowMissingTransitions())
            {
                var completeTransitionSet = GetTransitionsToQuantifyOn();
                quantitiesToSum = allTransitionQuantities
                                  .Where(entry => completeTransitionSet.Contains(entry.Key))
                                  .Select(entry => entry.Value)
                                  .ToArray();
                if (quantitiesToSum.Count != completeTransitionSet.Count)
                {
                    return(null);
                }
            }
            else
            {
                quantitiesToSum = allTransitionQuantities.Values;
            }
            return(PeptideQuantifier.SumQuantities(quantitiesToSum, PeptideQuantifier.NormalizationMethod));
        }
示例#9
0
        public IDictionary <IdentityPath, PeptideQuantifier.Quantity> GetTransitionQuantities(CalibrationPoint calibrationPoint)
        {
            IDictionary <IdentityPath, PeptideQuantifier.Quantity> result;

            if (!_replicateQuantities.TryGetValue(calibrationPoint, out result))
            {
                if (calibrationPoint.LabelType == null)
                {
                    result = PeptideQuantifier.GetTransitionIntensities(SrmSettings, calibrationPoint.ReplicateIndex, false);
                }
                else
                {
                    result = new Dictionary <IdentityPath, PeptideQuantifier.Quantity>
                    {
                        {
                            IdentityPath.ROOT,
                            new PeptideQuantifier.Quantity(PeptideQuantifier.GetIsotopologArea(SrmSettings, calibrationPoint.ReplicateIndex,
                                                                                               calibrationPoint.LabelType), 1)
                        }
                    };
                }
                _replicateQuantities.Add(calibrationPoint, result);
            }
            return(result);
        }
示例#10
0
 public double?GetYValue(CalibrationPoint calibrationPoint)
 {
     return(GetNormalizedPeakArea(calibrationPoint));
 }
示例#11
0
 public double?GetCalculatedXValue(CalibrationCurve calibrationCurve, CalibrationPoint calibrationPoint)
 {
     return(calibrationCurve.GetX(GetYValue(calibrationPoint)));
 }