Exemplo n.º 1
0
        public void ScorePeptideSets(PeakScoringContext context, IList <IPeakFeatureCalculator> detailFeatureCalculators)
        {
            var modelCalcs     = ScoringModel.PeakFeatureCalculators;
            var detailFeatures = new float [detailFeatureCalculators.Count];
            var modelFeatures  = new float [modelCalcs.Count];
            // Here we score both the detailFeatureCalculators (for storage)
            // and the peak calculators of the legacy model (for import-stage peak scoring)
            // This will cause some scores to be calculated multiple times, but score
            // caching should make this fast.
            var allFeatureCalculators = detailFeatureCalculators.Union(modelCalcs);
            // Calculate summary data once for all scores
            var summaryData = new PeptidePeakDataConverter <IDetailedPeakData>(this);

            foreach (var calc in allFeatureCalculators)
            {
                float feature;
                var   summaryCalc = calc as SummaryPeakFeatureCalculator;
                if (summaryCalc != null)
                {
                    feature = summaryCalc.Calculate(context, summaryData);
                }
                else
                {
                    feature = calc.Calculate(context, this);
                }
                int detailIndex = detailFeatureCalculators.IndexOf(calc);
                if (detailIndex != -1)
                {
                    detailFeatures[detailIndex] = feature;
                }
                int modelIndex = modelCalcs.IndexOf(calc);
                if (modelIndex != -1)
                {
                    modelFeatures[modelIndex] = double.IsNaN(feature) ? 0 : feature;
                }
            }
            CombinedScore = ScoringModel.Score(modelFeatures);
            foreach (var peak in this.Where(peak => peak.PeakGroup != null))
            {
                peak.PeakGroup.DetailScores = detailFeatures;
            }
        }
        public void ScoreFeatures(IProgressMonitor progressMonitor = null)
        {
            if (_features == null)
            {
                _features = Document.GetPeakFeatures(_calcs, progressMonitor);
            }
            if (ScoringModel == null)
            {
                return;
            }

            var bestTargetPvalues = new List <double>();
            var targetIds         = new List <PeakTransitionGroupIdKey>();

            foreach (var transitionGroupFeatures in _features)
            {
                var mProphetScoresGroup = new List <double>();
                foreach (var peakGroupFeatures in transitionGroupFeatures.PeakGroupFeatures)
                {
                    mProphetScoresGroup.Add(ScoringModel.Score(peakGroupFeatures.Features));
                }
                var    pValuesGroup = mProphetScoresGroup.Select(score => 1 - Statistics.PNorm(score)).ToList();
                int    bestIndex    = mProphetScoresGroup.IndexOf(mProphetScoresGroup.Max());
                double bestPvalue   = pValuesGroup[bestIndex];
                var    featureStats = new PeakFeatureStatistics(transitionGroupFeatures, mProphetScoresGroup, pValuesGroup, bestIndex, null);
                _featureDictionary.Add(transitionGroupFeatures.Id.Key, featureStats);
                if (!transitionGroupFeatures.Id.NodePep.IsDecoy)
                {
                    bestTargetPvalues.Add(bestPvalue);
                    targetIds.Add(transitionGroupFeatures.Id.Key);
                }
            }
            _qValues = new Statistics(bestTargetPvalues).Qvalues(MProphetPeakScoringModel.DEFAULT_R_LAMBDA, MProphetPeakScoringModel.PI_ZERO_MIN).ToList();
            for (int i = 0; i < _qValues.Count; ++i)
            {
                var newFeatureStats = _featureDictionary[targetIds[i]].SetQValue(_qValues[i]);
                _featureDictionary[targetIds[i]] = newFeatureStats;
            }
        }
Exemplo n.º 3
0
        public void ScoreFeatures(IProgressMonitor progressMonitor = null, bool releaseRawFeatures = false, TextWriter output = null)
        {
            if (_features == null)
            {
                _features = Document.GetPeakFeatures(_calcs, progressMonitor);
            }
            if (ScoringModel == null)
            {
                return;
            }

            var bestTargetPvalues = new List <double>(_features.TargetCount);
            var targetIds         = new List <PeakTransitionGroupIdKey>(_features.TargetCount);

            foreach (var transitionGroupFeatures in _features.Features)
            {
                int           bestIndex = 0;
                float         bestScore = float.MinValue;
                float         bestPvalue = float.NaN;
                var           peakGroupFeatures = transitionGroupFeatures.PeakGroupFeatures;
                IList <float> mProphetScoresGroup = null, pvalues = null;
                if (!releaseRawFeatures)
                {
                    mProphetScoresGroup = new float[peakGroupFeatures.Count];
                }
                if (!releaseRawFeatures)
                {
                    pvalues = new float[peakGroupFeatures.Count];
                }

                for (int i = 0; i < peakGroupFeatures.Count; i++)
                {
                    double score = ScoringModel.Score(peakGroupFeatures[i].Features);
                    if (double.IsNaN(bestScore) || score > bestScore)
                    {
                        bestIndex  = i;
                        bestScore  = (float)score;
                        bestPvalue = (float)(1 - Statistics.PNorm(score));
                    }
                    if (mProphetScoresGroup != null)
                    {
                        mProphetScoresGroup[i] = (float)score;
                    }
                    if (pvalues != null)
                    {
                        pvalues[i] = (float)(1 - Statistics.PNorm(score));
                    }
                }
                if (bestScore == float.MinValue)
                {
                    bestScore = float.NaN;
                }

                var featureStats = new PeakFeatureStatistics(transitionGroupFeatures,
                                                             mProphetScoresGroup, pvalues, bestIndex, bestScore, null);
                _featureDictionary.Add(transitionGroupFeatures.Key, featureStats);
                if (!transitionGroupFeatures.IsDecoy)
                {
                    bestTargetPvalues.Add(bestPvalue);
                    targetIds.Add(transitionGroupFeatures.Key);
                }
            }
            _qValues = new Statistics(bestTargetPvalues).Qvalues(MProphetPeakScoringModel.DEFAULT_R_LAMBDA, MProphetPeakScoringModel.PI_ZERO_MIN);
            for (int i = 0; i < _qValues.Length; ++i)
            {
                _featureDictionary[targetIds[i]].QValue = (float)_qValues[i];
            }
            if (releaseRawFeatures)
            {
                _features = null;   // Done with this memory
            }
        }
Exemplo n.º 4
0
        public ScoringModel Score_Driving_Of_User(IList <User_Driving_Events> eventList, string SessionId)
        {
            foreach (var evnt in eventList)
            {
                if (evnt.Event_Type_Id == (int)(EventType.Agressive_Lane_Change))
                {
                    LaneChangeCount++;
                }
                else if (evnt.Event_Type_Id == (int)(EventType.Agressive_Turning))
                {
                    AggressiveTurningCount++;
                }
                else if (evnt.Event_Type_Id == (int)(EventType.Sudden_Braking))
                {
                    SuddenBrakingCount++;
                }
                else if (evnt.Event_Type_Id == (int)(EventType.Sudden_Acceleration))
                {
                    SuddenAccelerationCount++;
                }
                else if (evnt.Event_Type_Id == (int)(EventType.Speeding_Event))
                {
                    SpeedingCount++;
                }
            }
            SpeedingAndAccelerationCount = SuddenBrakingCount + SuddenAccelerationCount + SpeedingCount;
            if (LaneChangeCount > 0)
            {
                score = "High Risk";
            }
            else if (AggressiveTurningCount > 0)
            {
                score = "Medium Risk";
            }
            else if (SpeedingAndAccelerationCount > 0)
            {
                score = "Moderate Risk";
            }
            else
            {
                score = "No Risk";
            }
            var scoringModel = new ScoringModel();

            scoringModel.Agressive_Lane_Change_Count = LaneChangeCount;
            scoringModel.Agressive_Turning_Count     = AggressiveTurningCount;
            scoringModel.Sudden_Acceleration_Count   = SuddenAccelerationCount;
            scoringModel.Sudden_Braking_Count        = SuddenBrakingCount;
            scoringModel.Speeding_Event_Count        = SpeedingCount;
            scoringModel.Session_Score = score;

            if (!eventList.Equals(null))
            {
                var factory        = new DbConnectionFactory("testDatabase");
                var context        = new DbContext(factory);
                var repo           = new Session_HistoryRepository(context);
                var sessionHistory = new Session_History();
                sessionHistory.Agressive_Lane_Change_Count = LaneChangeCount;
                sessionHistory.Agressive_Turning_Count     = AggressiveTurningCount;
                sessionHistory.Sudden_Acceleration_Count   = SuddenAccelerationCount;
                sessionHistory.Sudden_Braking_Count        = SuddenBrakingCount;
                sessionHistory.Speeding_Event_Count        = SpeedingCount;
                sessionHistory.Session_Score = score;
                sessionHistory.Session_Id    = SessionId;
                repo.UpdateWithScores(sessionHistory);
            }
            return(scoringModel);
        }