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); } } } }