Exemple #1
0
        public RetentionTimeProviderData(IRetentionTimeProvider retentionTimes, IEnumerable <DbIrtPeptide> standardPeptides)
        {
            RetentionTimeProvider = retentionTimes;

            Peptides = standardPeptides.Select(standardPeptide => new Peptide(standardPeptide.ModifiedTarget,
                                                                              retentionTimes.GetRetentionTime(standardPeptide.ModifiedTarget), standardPeptide.Irt)).ToList();
            Peptides.Sort((x, y) => x.Irt.CompareTo(y.Irt));

            if (!FilteredPeptides.Any())
            {
                Regression        = null;
                RegressionRefined = null;
                RegressionSuccess = false;
            }

            var filteredRt  = FilteredPeptides.Select(pep => pep.RetentionTime.Value).ToList();
            var filteredIrt = FilteredPeptides.Select(pep => pep.Irt).ToList();
            var statTimes   = new Statistics(filteredRt);
            var statIrts    = new Statistics(filteredIrt);

            Regression = new RegressionLine(statIrts.Slope(statTimes), statIrts.Intercept(statTimes));

            var removed = new List <Tuple <double, double> >();

            RegressionSuccess = RCalcIrt.TryGetRegressionLine(filteredRt, filteredIrt, MinPoints, out _regressionRefined, removed);
            foreach (var remove in removed)
            {
                for (var i = 0; i < Peptides.Count; i++)
                {
                    var peptide = Peptides[i];
                    if (peptide.RetentionTime.Equals(remove.Item1) && peptide.Irt.Equals(remove.Item2))
                    {
                        Peptides[i] = new Peptide(peptide, true);
                    }
                }
            }
        }