private static RegressionLine CalcConversion(IList <TimeScorePair> listPepCorr, int minCount) { var listTime = listPepCorr.Select(p => p.Time).ToList(); var listScore = listPepCorr.Select(p => p.Score).ToList(); RegressionLine line; return(RCalcIrt.TryGetRegressionLine(listScore, listTime, minCount, out line) ? line : null); }
private static RegressionLine CalcConversion(IList <TimeScorePair> listPepCorr, int minCount) { var listTime = listPepCorr.Select(p => p.Time).ToList(); var listScore = listPepCorr.Select(p => p.Score).ToList(); RegressionLine line; if (RCalcIrt.TryGetRegressionLine(listScore, listTime, minCount, out line)) { return(line); } // TODO: Figure out something better here var statTime = new Statistics(listTime); var statScore = new Statistics(listScore); return(new RegressionLine(statTime.Slope(statScore), statTime.Intercept(statScore))); }
private bool TryGetCirtRegression(int count, out RegressionLine regression, out List <ScoredPeptide> peptides) { peptides = new List <ScoredPeptide>(_cirtPeptides); var rts = _cirtPeptides.Select(pep => pep.Peptide.RetentionTime).ToList(); var irts = _cirtPeptides.Select(pep => _cirtAll[pep.Peptide.Target]).ToList(); var removedValues = new List <Tuple <double, double> >(); if (!RCalcIrt.TryGetRegressionLine(rts, irts, count, out regression, removedValues)) { return(false); } for (var i = peptides.Count - 1; i >= 0; i--) { if (removedValues.Contains(Tuple.Create(rts[i], irts[i]))) { peptides.RemoveAt(i); } } return(peptides.Count >= count); }
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); } } } }
public RetentionTimeProviderData(IRetentionTimeProvider retentionTimes, IEnumerable <DbIrtPeptide> standardPeptides) { RetentionTimeProvider = retentionTimes; // Attempt to get regression based on standards var listPeptides = new List <Target>(); var listTimes = new List <double>(); var listIrts = new List <double>(); foreach (var standardPeptide in standardPeptides) { listPeptides.Add(standardPeptide.ModifiedTarget); listTimes.Add(retentionTimes.GetRetentionTime(standardPeptide.ModifiedTarget) ?? double.MaxValue); listIrts.Add(standardPeptide.Irt); } var arrayTimes = listTimes.ToArray(); // var libraryTimes = retentionTimes as LibraryRetentionTimes; // if (libraryTimes != null) // Trace.WriteLine(libraryTimes.Name); // Trace.WriteLine(string.Format("times = {0}", string.Join(", ", arrayTimes.Select(t => string.Format("{0:F02}", t))))); Peptides = listPeptides.ToArray(); Times = arrayTimes; Irts = listIrts.ToArray(); MissingIndices = new HashSet <int>(); for (var i = 0; i < Times.Length; i++) { if (Times[i] == double.MaxValue) { MissingIndices.Add(i); } } TimesFiltered = Times.Where((v, i) => !MissingIndices.Contains(i)).ToArray(); IrtsFiltered = Irts.Where((v, i) => !MissingIndices.Contains(i)).ToArray(); OutlierIndices = new HashSet <int>(); if (TimesFiltered.Any()) { var statTimes = new Statistics(TimesFiltered); var statIrts = new Statistics(IrtsFiltered); Regression = new RegressionLine(statIrts.Slope(statTimes), statIrts.Intercept(statTimes)); var removed = new List <Tuple <double, double> >(); RegressionSuccess = RCalcIrt.TryGetRegressionLine(TimesFiltered.ToList(), IrtsFiltered.ToList(), MinPoints, out _regressionRefined, removed); foreach (var remove in removed) { for (var i = 0; i < Times.Length && i < Irts.Length; i++) { if (Times[i] == remove.Item1 && Irts[i] == remove.Item2) { OutlierIndices.Add(i); } } } } else { Regression = null; RegressionRefined = null; RegressionSuccess = false; } }