예제 #1
0
        public void CalculateSummaryData()
        {
            if (isPopulatedFromResultsFile)
            {
                return;
            }

            TotalIntensitySum = Transitions.Sum(x => x.IntensitySum);

            if (TotalIntensitySum.Equals(0))
            {
                // Avoid divide by zero
                return;
            }

            PassesIntensity = TotalIntensitySum >= IntensityThreshold;

            foreach (var transition in Transitions)
            {
                transition.CalculateStats(TotalIntensitySum, EdgeNETThresholdMinutes);
            }

            var maxIntTrans = Transitions.OrderByDescending(x => x.MaxIntensity).First();

            MaxIntensity    = maxIntTrans.MaxIntensity;
            MaxIntensityNet = maxIntTrans.MaxIntensityNET;
            PassesNET       = maxIntTrans.PassesNET;

            var minTimePeak = Transitions.OrderBy(x => x.MaxIntensityTime).First();
            var maxTimePeak = Transitions.OrderBy(x => x.MaxIntensityTime).Last();

            PassesElutionConcurrence     = maxTimePeak.MaxIntensityTime - minTimePeak.MaxIntensityTime <= ElutionConcurrenceThresholdMinutes;
            PassesSignalToNoiseHeuristic = Transitions.All(x => x.MaxIntensityVsMedian >= SignalToNoiseHeuristicThreshold);
            PassesAllThresholds          = PassesIntensity && PassesNET && PassesElutionConcurrence && PassesSignalToNoiseHeuristic;

            MedianIntensity = maxIntTrans.MedianIntensity;

            IntensityRatioMaxVsMedian = maxIntTrans.MaxIntensityVsMedian;
            if (double.IsInfinity(IntensityRatioMaxVsMedian) || IntensityRatioMaxVsMedian > MaxIntensity)
            {
                //System.Console.WriteLine("InfinityEncountered!: {0} MaxInt: {1} Median {2}");
                IntensityRatioMaxVsMedian = MaxIntensity;
            }
        }