public PutMatchInfoModule() { Put["/servers/{endpoint}/matches/{timestamp:datetime}"] = parameters => { var matchInfo = this.Bind <MatchInfo>(); for (var i = 0; i < matchInfo.Scoreboard.Length; ++i) { matchInfo.Scoreboard[i].Position = i; } using (var unitOfWork = new UnitOfWork()) { var server = unitOfWork.Servers.FindServer(matchInfo.Endpoint); if (server == null) { return(HttpStatusCode.BadRequest); } var match = unitOfWork.AddNewMatch(matchInfo, server); unitOfWork.Save(); StatisticsProcessor.AddMatchId(match.Id); } return(HttpStatusCode.OK); }; }
private void buttonIntervalRow_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeChild = ActiveMdiChild as FormChild; double[] lefts, rights; int[] counts; StatisticsProcessor.ToIntervals(activeChild.DataAsRow, out lefts, out rights, out counts); int len = counts.Length; uint digits = lab1.Properties.Settings.Default.ShownDigits; string[] heads = new string[len]; for (int i = 0; i < len - 1; i++) { heads[i] = string.Format("[{0}; {1})", Math.Round(lefts[i], (int)digits), Math.Round(rights[i], (int)digits)); } heads[len - 1] = string.Format("[{0}; {1}]", Math.Round(lefts[len - 1], (int)digits), Math.Round(rights[len - 1], (int)digits)); activeChild.AddRow("Интервалы", heads); activeChild.AddRow("Кол-во эл-тов", counts); activeChild.AddRow(null, new char[] { '•' }); } }
private void buttonRange_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeChild = ActiveMdiChild as FormChild; Array ranges = StatisticsProcessor.RangesOf(activeChild.DataAsMatrix); activeChild.AddTable("Ранги", null, ranges); } }
private void buttonCheckZn_Click(object sender, EventArgs e) { FormAskLawSelection fAsk = new FormAskLawSelection(); if (fAsk.ShowDialog() != DialogResult.OK) { return; } if (ActiveMdiChild is FormChild) { FormChild activeMdiChild = ActiveMdiChild as FormChild; try { if (fAsk.Ravn) { fAsk.Ravn = StatisticsProcessor.CheckZn(activeMdiChild.DataAsRow, StatisticsProcessor.Zakon.Ravnom, 0.05f); activeMdiChild.PrintLine("Выборка " + (fAsk.Ravn ? "" : "не ") + "соответствует модели равномерного распределения (α=0,05)."); } } catch (ExceptionTableValuesGet exc) { MessageBox.Show(exc.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } try { if (fAsk.Expon) { fAsk.Expon = StatisticsProcessor.CheckZn(activeMdiChild.DataAsRow, StatisticsProcessor.Zakon.Exponential, 0.05f); activeMdiChild.PrintLine("Выборка " + (fAsk.Expon ? "" : "не ") + "соответствует модели показательного распределения (α=0,05)."); } } catch (ExceptionTableValuesGet exc) { MessageBox.Show(exc.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } try { if (fAsk.Norm) { fAsk.Norm = StatisticsProcessor.CheckZn(activeMdiChild.DataAsRow, StatisticsProcessor.Zakon.Normal, 0.05f); activeMdiChild.PrintLine("Выборка " + (fAsk.Norm ? "" : "не ") + "соответствует модели нормального распределения (α=0,05)."); } } catch (ExceptionTableValuesGet exc) { MessageBox.Show(exc.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } activeMdiChild.PrintLine("Проверка выполнена с помощью критерия согласия Пирсона.", true); } }
private void LoadFiles() { this.Invoke(new Action(() => { splitContainer3.Enabled = false; CloseFiles(); timerLoading.Start(); labelLoading.Visible = true; })); _csvProcessor = new StatisticsProcessor(_filenames, _frameOffset); _csvProcessor.Settings = Settings.Current.DetectionSettings; _csvProcessor.Log += new Action <string>(_csvProcessor_Log); _csvProcessor.Process(); LoadSettings(); _videoFile = new MediaFile(); _videoFile.Resolution = MediaFile.ResolutionOption.Full; _videoFile.OutputYData = true; _videoFile.OutputRGBImage = true; //_videoFile.OutputYImage = true; _videoFile.Open(_filenames.videoFilename); var frameField = _videoFile.GetVideoFrameField(_currentFieldIndex); //if (frameField.Image != null) // frameField.Image.Save(@"D:\temp\image-" + frameField.FieldNumber.ToString("00000") + ".png", System.Drawing.Imaging.ImageFormat.Png); this.Invoke(new Action(() => { timerLoading.Stop(); labelLoading.Visible = false; objectListViewBlocks.SetObjects(_csvProcessor.Data.Blocks); UpdateButtons(); timelineUserControl1.StatisticsProcessor = _csvProcessor; timelineUserControl1.TotalFields = _videoFile.TotalFields; timelineUserControl1.FieldsPerSecond = _videoFile.FieldsPerSecond; var graphsVideoFile = _videoFile.Clone(MediaFile.ResolutionOption.Full); graphsVideoFile.OutputYImage = false; graphsVideoFile.OutputRGBImage = true; graphsUserControl1.StatisticsProcessor = _csvProcessor; graphsUserControl1.VideoMediaFile = graphsVideoFile; graphsUserControl1.SetDirty(); timelineUserControl1.SecondsVisible = graphsUserControl1.SecondsVisible; SetPreviewField(frameField); splitContainer3.Enabled = true; })); }
private void buttonFacAnal_R1_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeMdiChild = ActiveMdiChild as FormChild; bool res = StatisticsProcessor.Analysis_Range_OneFactor_Modifed(activeMdiChild.DataAsMatrix, 0.05f); activeMdiChild.PrintLine("Фактор " + (!res ? "" : "не ") + "влияет на отклик, α=0,05. Использована уточненная статистика Краскала-Уолеса."); } }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { StatisticsProcessor.Start(); pipelines.BeforeRequest += ctx => { ctx.Request.Headers.Accept = new[] { Tuple.Create("application/json", 1m) }; ctx.Request.Headers.ContentType = "application/json"; return(null); }; }
private void buttonGroup_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeChild = ActiveMdiChild as FormChild; int[] counts; double[] values; StatisticsProcessor.Groups(activeChild.DataAsRow, out counts, out values); activeChild.AddRow("Эл-тов в группе", counts); activeChild.AddRow("Значения", values); activeChild.AddRow(null, new char[] { '•' }); } }
private void buttonCheckRndUpDownSeries_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeMdiChild = ActiveMdiChild as FormChild; char[] signs; int v, t; bool res = StatisticsProcessor.CheckRndUpDownSeries(activeMdiChild.DataAsRow, out signs, out v, out t); activeMdiChild.PrintLine("Выборка " + (res ? "" : "не") + "случайна, α=0,05. " + string.Format( "Серий: {0}, длина длинной: {1}", v, t), true); activeMdiChild.AddRow("Знаки", signs); } }
private void buttonDrawEmpFn_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeChild = ActiveMdiChild as FormChild; double[] means = StatisticsProcessor.EmpVals(activeChild.DataAsRow); FormDiagram fDiag = new FormDiagram(DataProc.Diagram.KindOfDiagram.LeftArrows, means); fDiag.Size = new Size(400, 300); fDiag.Show(); } }
private void buttonCorelation_Click(object sender, EventArgs e) { FormAskDocuments form = new FormAskDocuments(this); if (form.ShowDialog() != DialogResult.OK) { return; } if (form.forms.Length != 2) { MessageBox.Show("Необходимо указать две выборки.", "Ошибка"); return; } double correl; try { correl = StatisticsProcessor.Correlation( form.forms[0].DataAsRow, form.forms[1].DataAsRow); } catch (ArithmeticException exc) { MessageBox.Show(exc.Message, "Ошибка вычисления корреляции!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } string reportik; if (double.IsNaN(correl)) { reportik = "Выборки равны."; } else { reportik = string.Format("Корреляция выборок: {0};", correl); } form.forms[0].PrintLine(reportik); form.forms[1].PrintLine(reportik); MessageBox.Show(reportik, "Коэффициент корреляции", MessageBoxButtons.OK, MessageBoxIcon.Information); }
/// <summary> /// 处理并计算统计数据 /// </summary> /// <param name="sd"></param> /// <param name="period"></param> /// <returns></returns> private async Task<bool> ProcessStatistics(SensorData sd, int period) { var key = StatisticsProcessor.GetStatisticsKey(sd.Time, period, sd.DeviceCode); var sts = _redisClient.HashGet<DeviceTimeSharingStatisticsDto>(RedisKeyString.DeviceTimeSharingStatistics, key, RedisSerializeType.DataType); if (sts == null) { sts = new DeviceTimeSharingStatisticsDto { DeviceSerialnum = sd.DeviceCode, Serialnum = key, TimeSharing = period }; sts.MaxValue = sts.MinValue = sts.StartValue = sts.EndValue = sts.AvgValue = sd.Value; sts.CreateTime = DateTime.Now; } else { if (sd.Value > sts.MaxValue) sts.MaxValue = sd.Value; if (sd.Value < sts.MinValue) sts.MinValue = sd.Value; sts.EndValue = sd.Value; sts.AvgValue = (sts.AvgValue + sd.Value) / 2; } sts.Count++; sts.UpdateTime = sd.Time; //取上下限 var deviceExceptionSetService = AhnqIotContainer.Container.Resolve<IDeviceExceptionSetService>(); var set = await deviceExceptionSetService.GetDeviceExceptionSetByDeviceIdAsny(sd.DeviceCode); if (set == null) return _redisClient.HashSetFieldValue(RedisKeyString.DeviceTimeSharingStatistics, key, sts, RedisSerializeType.DataType) > 0; sts.Max = set.Max; sts.Min = set.Min; if (sd.Value > set.Max || sd.Value < set.Min) { sts.ExceptionCount++; } return _redisClient.HashSetFieldValue(RedisKeyString.DeviceTimeSharingStatistics, key, sts, RedisSerializeType.DataType) > 0; }
private void buttonNumCharacteristics_Click(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeChild = ActiveMdiChild as FormChild; #region Среднее double srednee = StatisticsProcessor.Srednee(activeChild.DataAsRow); activeChild.PrintLine("Выборочное среднее: " + srednee.ToString() + ";"); #endregion #region Дисперсия double sigma2 = StatisticsProcessor.Dispersion(activeChild.DataAsRow); activeChild.PrintLine("Дисперсия: " + sigma2.ToString() + " (с.к.о.: " + Math.Sqrt(sigma2).ToString() + ");"); #endregion #region Эксцесс double excess = StatisticsProcessor.Excess(activeChild.DataAsRow); activeChild.PrintLine("Эксцесс: " + excess.ToString() + ";"); #endregion #region Асимметрия double asym = StatisticsProcessor.Asymetry(activeChild.DataAsRow); activeChild.PrintLine("Асимметрия: " + asym.ToString() + ";", true); #endregion } }
private void toolRavnomZn_Click(object sender, EventArgs e) { FormAskZnSelection fAskParams = new FormAskZnSelection(); if (fAskParams.ShowDialog() != DialogResult.OK) { return; } FormChild childForm = new FormChild( StatisticsProcessor.GenerateRavnom( fAskParams.a, fAskParams.b, fAskParams.n)); childForm.MdiParent = this; childForm.WindowState = FormWindowState.Maximized; childForm.Text = "Равномерный " + childFormNumber.ToString(); childFormNumber++; childForm.Show(); }
private void toolNormZn_Click(object sender, EventArgs e) { FormAskNormalParams fAskParams = new FormAskNormalParams(); if (fAskParams.ShowDialog() != DialogResult.OK) { return; } FormChild childForm = new FormChild( StatisticsProcessor.GenerateNormal( fAskParams.a, fAskParams.σ, fAskParams.n)); childForm.MdiParent = this; childForm.WindowState = FormWindowState.Maximized; childForm.Text = "Нормальный " + childFormNumber.ToString(); childFormNumber++; childForm.Show(); }
private void CloseFiles() { this.Invoke(new Action(() => { SetPreviewField(null); objectListViewBlocks.SetObjects(null); UpdateButtons(); timelineUserControl1.CloseFiles(); graphsUserControl1.CloseFiles(); _csvProcessor = null; if (_videoFile != null) { _videoFile.Dispose(); _videoFile = null; } })); }
private void buttonCheckOutstanding(object sender, EventArgs e) { if (ActiveMdiChild is FormChild) { FormChild activeMdiChild = ActiveMdiChild as FormChild; double[] clearData; double[] worthless = StatisticsProcessor.CheckOutstanding(activeMdiChild.DataAsRow, out clearData, 0.05f); if (worthless != null) { if (worthless.Length > 1) { activeMdiChild.PrintLine("Обнаружены резковыделяющиеся значения.", true); } else { activeMdiChild.PrintLine("Обнаружено резковыделяющееся значение: " + worthless[0].ToString(), true); } activeMdiChild.AddRow("Резковыделяющиеся значения:", worthless); DialogResult dlgResult = MessageBox.Show("Отдельно?", "Выделить значимые элементы в новую выборку?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (dlgResult == DialogResult.Yes) { FormChild formChild = new FormChild(clearData); formChild.MdiParent = this; formChild.Text = string.Format("{0} ~ {1}", activeMdiChild.Text, childFormNumber++); formChild.Show(); } } else { activeMdiChild.PrintLine("Выборка не засорена резковыделяющимися значениями.", true); } } }
public StatisticsController(StatisticsProcessor statisticsProcessor) { _statisticsProcessor = statisticsProcessor; }
void dfSFConst_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { if (ActiveMdiChild is FormChild) { FormChild activeMdiChild = ActiveMdiChild as FormChild; (sender as Form).Close(); int last_i1; last_i1 = (int)(sender as DekartForm).MouseMathLocation.X; //MessageBox.Show(last_i1.ToString()); double[] data = activeMdiChild.DataAsRow; double[] data1 = new double[last_i1 + 1]; double[] data2 = new double[data.Length - data1.Length]; for (int i = 0; i <= last_i1; i++) { data1[i] = data[i]; } for (int i = last_i1 + 1; i < data.Length; i++) { data2[i - (last_i1 + 1)] = data[i]; } PointF[] pts = new PointF[data.Length]; PointF[] pts0 = new PointF[2]; PointF[] pts1 = new PointF[2]; PointF[] pts2 = new PointF[2]; for (int i = 0; i < pts.Length; i++) { pts[i].X = i; pts[i].Y = (float)data[i]; } float m0 = (float)StatisticsProcessor.Srednee(data); float m1 = (float)StatisticsProcessor.Srednee(data1); float m2 = (float)StatisticsProcessor.Srednee(data2); float oneThird = 1f / 3f; pts0[0].X = 0 - oneThird; pts0[0].Y = m0; pts0[1].X = pts.Length - 1 + oneThird; pts0[1].Y = m0; pts1[0].X = 0 - oneThird; pts1[0].Y = m1; pts1[1].X = last_i1 + oneThird; pts1[1].Y = m1; pts2[0].X = last_i1 + 1 - oneThird; pts2[0].Y = m2; pts2[1].X = data.Length - 1 + oneThird; pts2[1].Y = m2; DekartForm df = new DekartForm(30, 30, 100, 150); df.AddPolygon(Color.Green, 3f, DrawModes.DrawPoints, pts); df.AddPolygon(Color.Pink, 2f, DrawModes.DrawLines, pts0); df.AddPolygon(Color.Red, 2f, DrawModes.DrawLines, pts1); df.AddPolygon(Color.Red, 2f, DrawModes.DrawLines, pts2); df.Use_IsVisible = false; df.MouseClick += new MouseEventHandler(dfSFConst_MouseClick); df.Show(); df.Update2(); } } }