Exemple #1
0
        private IDictionary <int, Tuple <double, bool> > CalculateProteinAbundances()
        {
            var allTransitionIdentityPaths = new HashSet <IdentityPath>();
            var quantifiers    = Peptides.Select(peptide => peptide.GetPeptideQuantifier()).ToList();
            int replicateCount = SrmDocument.Settings.HasResults
                ? SrmDocument.Settings.MeasuredResults.Chromatograms.Count : 0;
            var  abundances              = new Dictionary <int, Tuple <double, int> >();
            var  srmSettings             = SrmDocument.Settings;
            bool allowMissingTransitions =
                srmSettings.PeptideSettings.Quantification.NormalizationMethod is NormalizationMethod.RatioToLabel;

            for (int iReplicate = 0; iReplicate < replicateCount; iReplicate++)
            {
                double totalNumerator   = 0;
                double totalDenomicator = 0;
                int    transitionCount  = 0;
                foreach (var peptideQuantifier in quantifiers)
                {
                    foreach (var entry in peptideQuantifier.GetTransitionIntensities(SrmDocument.Settings, iReplicate,
                                                                                     false))
                    {
                        totalNumerator   += Math.Max(entry.Value.Intensity, 1.0);
                        totalDenomicator += Math.Max(entry.Value.Denominator, 1.0);
                        allTransitionIdentityPaths.Add(entry.Key);
                        transitionCount++;
                    }
                }

                if (transitionCount != 0)
                {
                    var abundance = totalNumerator / totalDenomicator;
                    abundances.Add(iReplicate, Tuple.Create(abundance, transitionCount));
                }
            }

            var proteinAbundanceRecords = new Dictionary <int, Tuple <double, bool> >();

            foreach (var entry in abundances)
            {
                bool incomplete;
                if (allowMissingTransitions)
                {
                    incomplete = true;
                }
                else
                {
                    incomplete = entry.Value.Item2 != allTransitionIdentityPaths.Count;
                }
                proteinAbundanceRecords.Add(entry.Key, Tuple.Create(entry.Value.Item1, incomplete));
            }

            return(proteinAbundanceRecords);
        }