public bool CalculateCumulativeBatchStatistics() { bool result = false; // Get the cumulative interval counts ProcessCapturePackets pcp = new ProcessCapturePackets(); BindingList<CumulativeInterval> cumulativeIntervals = new BindingList<CumulativeInterval>(); cumulativeIntervals = pcp.GetCumulativeIntervals(); // Get the batch intervals BindingList<BatchIntervalMarked> unmarkedBatchIntervals = new BindingList<BatchIntervalMarked>(); BindingList<BatchIntervalMarked> markedBatchIntervals = new BindingList<BatchIntervalMarked>(); foreach (CumulativeInterval ci in cumulativeIntervals) { if (ci.Marked) { BatchIntervalMarked bim = new BatchIntervalMarked(); bim.BatchIntervalId = 0; bim.CaptureBatchId = 0; bim.IntervalNumber = ci.CumulativeIntervalNumber; bim.Marked = CaptureState.Marked; bim.PacketCount = ci.PacketCount; markedBatchIntervals.Add(bim); } else { BatchIntervalMarked bim = new BatchIntervalMarked(); bim.BatchIntervalId = 0; bim.CaptureBatchId = 0; bim.IntervalNumber = ci.CumulativeIntervalNumber; bim.Marked = CaptureState.Unmarked; bim.PacketCount = ci.PacketCount; unmarkedBatchIntervals.Add(bim); } } BatchStatistics markedCumulativeStats = new BatchStatistics(); BatchStatistics unmarkedCumulativeStats = new BatchStatistics(); //decimal markedMeanOfMeans = 0; //decimal markedStdDevMeanOfMeans = 0; //decimal unmarkedMeanOfMeans = 0; //decimal unmarkedStdDevMeanOfMeans = 0; /******************************************************************************************** * * Note: must have at least two samples to calculate mean of means and mean of means std dev... * * ******************************************************************************************/ /* TO DO: - need to retrieve std dev value for batch for cumulative stats when only one batch * has been processed. * - Have to calculate CumulativeStats first, then update MeanOfMeans and StdDev */ if (_CaptureState == CaptureState.Marked && markedBatchIntervals.Count > 0) { markedCumulativeStats = CalculateBatchStatistics(markedBatchIntervals, CaptureState.Marked, BatchType.Cumulative); } if (_CaptureState == CaptureState.Unmarked && unmarkedBatchIntervals.Count > 0) { unmarkedCumulativeStats = CalculateBatchStatistics(unmarkedBatchIntervals, CaptureState.Unmarked, BatchType.Cumulative); } if (pcp.GetMeanCount() > 1) { if (_CaptureState == CaptureState.Marked && markedBatchIntervals.Count > 0) { //markedMeanOfMeans = pcp.CalculateMeanOfMeans(CaptureState.Marked, AnalysisConfiguration.TrimSmallPackets ? true : false); markedCumulativeStats.MeanOfMeans = pcp.CalculateMeanOfMeans(CaptureState.Marked, AnalysisConfiguration.TrimSmallPackets ? true : false); //markedStdDevMeanOfMeans = pcp.CalculateStdDevForMeanOfMeans(CaptureState.Marked, AnalysisConfiguration.TrimSmallPackets ? true : false); markedCumulativeStats.MeanOfMeansStandardDeviation = pcp.CalculateStdDevForMeanOfMeans(CaptureState.Marked, AnalysisConfiguration.TrimSmallPackets ? true : false); SaveDisplayStatistics(markedCumulativeStats, pcp.GetCaptureBatchId(_CaptureFileName), CaptureState.Marked, BatchType.Cumulative, true); } if (_CaptureState == CaptureState.Unmarked && unmarkedBatchIntervals.Count > 0) { //unmarkedMeanOfMeans = pcp.CalculateMeanOfMeans(CaptureState.Unmarked, AnalysisConfiguration.TrimSmallPackets ? true : false); unmarkedCumulativeStats.MeanOfMeans = pcp.CalculateMeanOfMeans(CaptureState.Unmarked, AnalysisConfiguration.TrimSmallPackets ? true : false); //unmarkedStdDevMeanOfMeans = pcp.CalculateStdDevForMeanOfMeans(CaptureState.Unmarked, AnalysisConfiguration.TrimSmallPackets ? true : false); unmarkedCumulativeStats.MeanOfMeansStandardDeviation = pcp.CalculateStdDevForMeanOfMeans(CaptureState.Unmarked, AnalysisConfiguration.TrimSmallPackets ? true : false); SaveDisplayStatistics(unmarkedCumulativeStats, pcp.GetCaptureBatchId(_CaptureFileName), CaptureState.Unmarked, BatchType.Cumulative, true); } } else { // Only one batch - use the mean and standard deviation from the first batch if (_CaptureState == CaptureState.Marked && markedBatchIntervals.Count > 0) { //markedMeanOfMeans = pcp.GetMean(CaptureState.Marked, _TrimZeroPacketIntervals); //markedMeanOfMeans = markedCumulativeStats.PacketCountMean; markedCumulativeStats.MeanOfMeans = markedCumulativeStats.PacketCountMean; //markedStdDevMeanOfMeans = markedCumulativeStats.PacketCountStandardDeviation; markedCumulativeStats.MeanOfMeansStandardDeviation = markedCumulativeStats.PacketCountStandardDeviation; SaveDisplayStatistics(markedCumulativeStats, pcp.GetCaptureBatchId(_CaptureFileName), CaptureState.Marked, BatchType.Cumulative, true); } if (_CaptureState == CaptureState.Unmarked && unmarkedBatchIntervals.Count > 0) { //unmarkedMeanOfMeans = pcp.GetMean(CaptureState.Unmarked, _TrimZeroPacketIntervals); //unmarkedMeanOfMeans = unmarkedCumulativeStats.PacketCountMean; unmarkedCumulativeStats.MeanOfMeans = unmarkedCumulativeStats.PacketCountMean; //unmarkedStdDevMeanOfMeans = unmarkedCumulativeStats.PacketCountStandardDeviation; unmarkedCumulativeStats.MeanOfMeansStandardDeviation = unmarkedCumulativeStats.PacketCountStandardDeviation; SaveDisplayStatistics(unmarkedCumulativeStats, pcp.GetCaptureBatchId(_CaptureFileName), CaptureState.Unmarked, BatchType.Cumulative, true); } } // public bool GetHypothesisTestResult() // NOTE: use _HypothesisTest variable to determine which test result to return //if (markedBatchIntervals.Count > 0 && unmarkedBatchIntervals.Count > 0) //{ // // Cumulative variance column //} //// Update the K-S statistics object - for display //_KsStatistics.MarkedMean = markedMeanOfMeans; //_KsStatistics.MarkedStdDev = markedStdDevMeanOfMeans; ////_KsStatistics.MarkedMean = markedCumulativeStats.PacketCountMean; ////_KsStatistics.MarkedStdDev = markedCumulativeStats.PacketCountStandardDeviation; //_KsStatistics.MarkedIntervalCount = TrimIntervalsCheckBox.Checked == true ? markedCumulativeStats.IntervalCountTrimmed : markedCumulativeStats.IntervalCount; //_KsStatistics.UnmarkedMean = unmarkedMeanOfMeans; //_KsStatistics.UnmarkedStdDev = unmarkedStdDevMeanOfMeans; ////_KsStatistics.UnmarkedMean = unmarkedCumulativeStats.PacketCountMean; ////_KsStatistics.UnmarkedStdDev = unmarkedCumulativeStats.PacketCountStandardDeviation; //_KsStatistics.UnmarkedIntervalCount = TrimIntervalsCheckBox.Checked == true ? unmarkedCumulativeStats.IntervalCountTrimmed : unmarkedCumulativeStats.IntervalCount; return result; }