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);
            };
        }
예제 #2
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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[] { '•' });
            }
        }
예제 #3
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
 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);
     }
 }
예제 #4
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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);
            }
        }
예제 #5
0
파일: MainForm.cs 프로젝트: rvs76/Maranate
        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;
            }));
        }
예제 #6
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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. Использована уточненная статистика Краскала-Уолеса.");
            }
        }
예제 #7
0
        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);
            };
        }
예제 #8
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
 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[] { '•' });
     }
 }
예제 #9
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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);
            }
        }
예제 #10
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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();
            }
        }
예제 #11
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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);
        }
예제 #12
0
        /// <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;
        }
예제 #13
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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
            }
        }
예제 #14
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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();
        }
예제 #15
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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();
        }
예제 #16
0
파일: MainForm.cs 프로젝트: rvs76/Maranate
        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;
                }
            }));
        }
예제 #17
0
파일: MDIParent.cs 프로젝트: a-27m/vssdb
        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);
                }
            }
        }
예제 #18
0
 public StatisticsController(StatisticsProcessor statisticsProcessor)
 {
     _statisticsProcessor = statisticsProcessor;
 }
예제 #19
0
        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();
                }
            }
        }