Beispiel #1
0
        public bool CalcRegressionWith(IRetentionTimeProvider retentionTimes, IEnumerable <DbIrtPeptide> standardPeptideList, DbIrtPeptide[] items)
        {
            if (items.Any())
            {
                // Attempt to get a regression based on shared peptides
                var calculator    = new CurrentCalculator(standardPeptideList, items);
                var peptidesTimes = retentionTimes.PeptideRetentionTimes.ToArray();
                var regression    = RetentionTimeRegression.FindThreshold(RCalcIrt.MIN_IRT_TO_TIME_CORRELATION,
                                                                          RetentionTimeRegression.ThresholdPrecision,
                                                                          peptidesTimes,
                                                                          new MeasuredRetentionTime[0],
                                                                          peptidesTimes, null,
                                                                          calculator,
                                                                          RegressionMethodRT.linear,
                                                                          () => false);

                var startingCount   = peptidesTimes.Length;
                var regressionCount = regression != null ? regression.PeptideTimes.Count : 0;
                if (regression != null && RCalcIrt.IsAcceptableStandardCount(startingCount, regressionCount))
                {
                    // Finally must recalculate the regression, because it is transposed from what
                    // we want.
                    var statTimes = new Statistics(regression.PeptideTimes.Select(pt => pt.RetentionTime));
                    var statIrts  = new Statistics(regression.PeptideTimes.Select(pt =>
                                                                                  calculator.ScoreSequence(pt.PeptideSequence) ?? calculator.UnknownScore));

                    RegressionRefined = new RegressionLine(statIrts.Slope(statTimes), statIrts.Intercept(statTimes));
                    RegressionSuccess = true;
                    return(true);
                }
            }
            return(false);
        }
Beispiel #2
0
        public override IEnumerable <Target> ChooseRegressionPeptides(IEnumerable <Target> peptides, out int minCount)
        {
            var returnStandard = peptides.Where(_dictStandards.ContainsKey).ToArray();
            var returnCount    = returnStandard.Length;
            var standardsCount = _dictStandards.Count;

            if (!RCalcIrt.IsAcceptableStandardCount(standardsCount, returnCount))
            {
                throw new IncompleteStandardException(this);
            }

            minCount = RCalcIrt.MinStandardCount(standardsCount);
            return(returnStandard);
        }