public void CalculateCumulativeProbabilityDistribution(CaptureState captureState) { // Note: cumulative histogram intervals must have previously been calculated in order to calculate cumulative probabilities //SortedDictionary<int, decimal> _CumulativeMarkedProbabilities = new SortedDictionary<int, decimal>(); //SortedDictionary<int, decimal> _CumulativeUnmarkedProbabilities = new SortedDictionary<int, decimal>(); //_CumulativeMarkedProbabilities = new CalculateProbability(batchIntervals).GetProbabilityByPacketRange(_TrimZeroPacketIntervals, histogramBinSize); // Get the batch intervals BindingList<BatchIntervalMarked> unmarkedBatchIntervals = new BindingList<BatchIntervalMarked>(); BindingList<BatchIntervalMarked> markedBatchIntervals = new BindingList<BatchIntervalMarked>(); BindingList<CumulativeProbabilityDistribution> distribution = new BindingList<CumulativeProbabilityDistribution>(); //CumulativeProbabilityDistributionData cumProbDistData = new CumulativeProbabilityDistributionData(); using (var uow = new UnitOfWorkCumulativeProbability()) { //using (var cpdRepository = new CumulativeProbabilityDistributionRepository(new UnitOfWorkCumulativeProbability())) using (var cpdRepository = new CumulativeProbabilityDistributionRepository(uow)) { //// Delete any existing cumulative probability distribution data for the captureState //cumProbDistData.DeleteCumulativeProbabilityDistribution(captureState); cpdRepository.DeleteBatch(captureState); // Add the newly calculated cumulative probability distribution switch (captureState) { case CaptureState.Marked: if (_CumulativeMarkedProbabilities != null) { SortedDictionary<int, decimal> markedProbabilities = new CalculateProbability(markedBatchIntervals).GetCumulativeProbabilityDistribution(_CumulativeMarkedProbabilities); // Convert to CumulativeProbabilityDistribution type foreach (KeyValuePair<int, decimal> item in markedProbabilities) { CumulativeProbabilityDistribution cpd = new CumulativeProbabilityDistribution(); cpd.CaptureState = (int)CaptureState.Marked; cpd.Interval = item.Key; cpd.Probability = Math.Round(item.Value, 10); //distribution.Add(cpd); cpdRepository.InsertOrUpdate(cpd); uow.Save(); } } //// Save to database //cumProbDistData.InsertCumulativeProbabilityDistribution(distribution); break; case CaptureState.Unmarked: if (_CumulativeUnmarkedProbabilities != null) { SortedDictionary<int, decimal> unmarkedProbabilities = new CalculateProbability(unmarkedBatchIntervals).GetCumulativeProbabilityDistribution(_CumulativeUnmarkedProbabilities); // Convert to CumulativeProbabilityDistribution type foreach (KeyValuePair<int, decimal> item in unmarkedProbabilities) { CumulativeProbabilityDistribution cpd = new CumulativeProbabilityDistribution(); cpd.CaptureState = (int)CaptureState.Unmarked; cpd.Interval = item.Key; //cpd.Probability = Convert.ToDecimal(String.Format("{0,10}", item.Value.ToString("D"))); cpd.Probability = Math.Round(item.Value, 10); //distribution.Add(cpd); cpdRepository.InsertOrUpdate(cpd); uow.Save(); } } //// Save to database //cumProbDistData.InsertCumulativeProbabilityDistribution(distribution); break; } } } }
public void InsertOrUpdate(CumulativeProbabilityDistribution cumulativeprobabilitydistribution) { if (cumulativeprobabilitydistribution.CumulativeProbabilityDistributionId == default(int)) { // New entity context.CumulativeProbabilityDistributions.Add(cumulativeprobabilitydistribution); } else { // Existing entity context.Entry(cumulativeprobabilitydistribution).State = System.Data.Entity.EntityState.Modified; } }