Ejemplo n.º 1
0
        private void Start()
        {
            rule       = Rule.Instance;
            model      = PlotViewModel.Instance;
            controller = Controller.Instance;

            this.ObserveEveryValueChanged(_ => controller.CurrentPhase)
            .Subscribe(_ => UpdatePath())
            .AddTo(this);

            model.MovePlots.ObserveReplace()
            .Subscribe(_ => UpdatePath())
            .AddTo(this);

            model.ActionPlots.ObserveReplace()
            .Subscribe(_ => UpdatePath())
            .AddTo(this);

            for (int i = 0; i < rule.CountOfMoment.Value; ++i)
            {
                GameObject instance = Instantiate(pathPrefab);
                instance.transform.SetParent(transform);
                pathes.Add(instance);
            }

            Clear();
        }
Ejemplo n.º 2
0
        private void Start()
        {
            controller = Controller.Instance;
            plotModel  = PlotViewModel.Instance;

            this.ObserveEveryValueChanged(_ => controller.CurrentPhase)
            .Subscribe(p => {
                CanvasGroup cg = GetComponent <CanvasGroup>();
                switch (p)
                {
                case Phase.MovePlot:
                    cg.alpha          = 1.0f;
                    cg.blocksRaycasts = true;
                    UpdateCards();
                    GetComponentsInChildren <DraggableCard>().ForEach(dc => {
                        dc.SetAsMovePlot();
                    });
                    break;

                case Phase.ActionPlot:
                    UpdateCards();
                    GetComponentsInChildren <DraggableCard>().ForEach(dc => {
                        dc.SetAsActionPlot();
                    });
                    break;

                case Phase.Resolve:
                    cg.alpha          = 0.3f;
                    cg.blocksRaycasts = false;
                    break;
                }
            })
            .AddTo(this);
        }
 public PlotWidget()
 {
     InitializeComponent();
     DataContext = this;
     PlotViewModel.CreateXYAxes();
     SetupPlotView();
 }
Ejemplo n.º 4
0
        public virtual ActionResult RosenbrockFunction(PlotViewModel model)
        {
            if (!ModelState.IsValid)
            {
                if (model.Width == 0 && model.Height == 0)
                {
                    ModelState.Clear();
                }
                model = new PlotViewModel()
                {
                    Width         = 400,
                    Height        = 400,
                    ContoursCount = 10,
                    ScalePower    = 0.2,

                    InitialX            = -0.1,
                    InitialY            = 4.5,
                    MinDerivCompMaxMagn = 0.1,
                    MaxIters            = 1024,

                    BasicStep = 0.0005,

                    MomentumStep  = 0.0005,
                    MomentumStart = 0.6,
                    MomentumEnd   = 0.9,
                };
            }

            Logger.LogInfo <PlotController>("Rosenbrock function plot shown.");

            ViewBag.Name       = "Rosenbrock function";
            ViewBag.ViewAction = MVC.Plot.RosenbrockFunctionPlot();

            return(View(Views.Plot, model));
        }
Ejemplo n.º 5
0
        public void BindPlotModel(PlotViewModel model)
        {
            model.MovePlots.ObserveReplace()
            .Subscribe(_ => {
                CanvasGroup cg = GetComponent <CanvasGroup>();
                if (model.MovePlots.Contains(card))
                {
                    cg.alpha          = 0.3f;
                    cg.blocksRaycasts = false;
                }
                else
                {
                    cg.alpha          = 1f;
                    cg.blocksRaycasts = true;
                }
            })
            .AddTo(this);

            model.ActionPlots.ObserveReplace()
            .Subscribe(_ => {
                CanvasGroup cg = GetComponent <CanvasGroup>();
                if (model.ActionPlots.Contains(card))
                {
                    cg.alpha          = 0.3f;
                    cg.blocksRaycasts = false;
                }
                else
                {
                    cg.alpha          = 1f;
                    cg.blocksRaycasts = true;
                }
            })
            .AddTo(this);
        }
        public void verify_ExecuteFluenceSolverCommand_returns_correct_values()
        {
            // WindowViewModel needs to be instantiated for default constructor
            var windowViewModel = new WindowViewModel();
            var viewModel       = windowViewModel.FluenceSolverVM;

            viewModel.ForwardSolverTypeOptionVM.SelectedValue         = ForwardSolverType.PointSourceSDA;
            viewModel.FluenceSolutionDomainTypeOptionVM.SelectedValue = FluenceSolutionDomainType.FluenceOfRhoAndZ;
            var result = viewModel.GetMapData();

            result.Wait();
            // ExecuteForwardSolver default settings
            PlotViewModel plotViewModel = windowViewModel.PlotVM;

            Assert.AreEqual(plotViewModel.Labels.Count, 0);
            Assert.AreEqual(plotViewModel.Title, null);
            TextOutputViewModel textOutputViewModel = windowViewModel.TextOutputVM;
            double d1 = 0.01;
            int    i1 = 1;
            double g  = 0.8;
            double n  = 1.4;
            var    s1 = StringLookup.GetLocalizedString("Label_FluenceSolver") +
                        StringLookup.GetLocalizedString("Label_MuA") + "=" +
                        d1.ToString(CultureInfo.CurrentCulture) + " " +
                        StringLookup.GetLocalizedString("Label_MuSPrime") + "=" +
                        i1.ToString(CultureInfo.CurrentCulture) + " g=" +
                        g.ToString(CultureInfo.CurrentCulture) + " n=" +
                        n.ToString(CultureInfo.CurrentCulture) + "; " +
                        StringLookup.GetLocalizedString("Label_Units") + " = 1/mm\r";

            Assert.AreEqual(textOutputViewModel.Text, s1);
        }
        public MapViewModel GetMapViewModel(string option)
        {
            PlotViewModel relativeModel       = GetRelativeViewModel(option, 0);
            List <MapCountryCodeModel> series = new List <MapCountryCodeModel>();

            foreach (var itemRelative in relativeModel.Series)
            {
                PopulationCountry populationCountry = _countryService.GetCountry(itemRelative.name);
                if ((populationCountry != null) && (itemRelative.data.Count > 0))
                {
                    var itemMapModel = new MapCountryCodeModel
                    {
                        code3 = populationCountry.IsoCode,
                        value = itemRelative.data[itemRelative.data.Count - 1]
                    };
                    series.Add(itemMapModel);
                }
            }

            return(new MapViewModel
            {
                UpdateTime = relativeModel.UpdateTime,
                Data = series
            });
        }
Ejemplo n.º 8
0
 public void BindMoment(int momentIndex, IPlayer player, PlotViewModel model)
 {
     this.ObserveEveryValueChanged(_ => controller.CurrentPhase)
     .Where(phase => phase == Phase.Resolve)
     .Subscribe(_ => {
         if (controller.EnemyPlayer.Plots.GetActionPlot(momentIndex) != null)
         {
             GetComponent <Image>().enabled = true;
             cardImage.sprite = controller.EnemyPlayer.Plots.GetActionPlot(momentIndex).Action.CardImage;
             cardImage.transform.localRotation = Quaternion.Euler(Vector3.zero);
             cardImage.transform.localScale    = new Vector3(1f, 1f, 1f);
         }
         else if (controller.EnemyPlayer.Plots.GetMovePlot(momentIndex) != null)
         {
             GetComponent <Image>().enabled = false;
             cardImage.sprite = arrowSprite;
             cardImage.transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, controller.EnemyPlayer.Plots.GetMovePlot(momentIndex).MoveDirection.ToRotateZ()));
             cardImage.transform.localScale    = new Vector3(-0.75f, -0.75f, 1f);
         }
         else
         {
             GetComponent <Image>().enabled = true;
             cardImage.sprite = null;
             cardImage.transform.localRotation = Quaternion.Euler(Vector3.zero);
             cardImage.transform.localScale    = new Vector3(1f, 1f, 1f);
         }
     })
     .AddTo(this);
 }
Ejemplo n.º 9
0
        private ActionResult plot(IFunctionWithDerivative f, PlotViewModel model)
        {
            List <Tuple <Color, List <Vector <double> > > > points = new List <Tuple <Color, List <Vector <double> > > >();
            double minDeriv = model.MinDerivCompMaxMagn;
            var    result   = new DenseVector(f.DimensionsCount);
            {
                result[0] = model.InitialX;
                result[1] = model.InitialY;
                var ps = new List <Vector <double> >();
                points.Add(new Tuple <Color, List <Vector <double> > >(Color.Lime, ps));
                var sdImpl = new SteepestDescentBasicOptmizer(model.BasicStep, model.MaxIters);
                sdImpl.Optimize(result, f, model.MinDerivCompMaxMagn, (i, pFunc) => ps.Add(pFunc()), CancellationToken.None);
            }
            {
                result[0] = model.InitialX;
                result[1] = model.InitialY;
                var ps = new List <Vector <double> >();
                points.Add(new Tuple <Color, List <Vector <double> > >(Color.Red, ps));
                var sdImpl = new SteepestDescentBasicOptmizer(model.MomentumStep,
                                                              model.MomentumStart, model.MomentumEnd, model.MaxIters);
                sdImpl.Optimize(result, f, model.MinDerivCompMaxMagn, (i, pFunc) => ps.Add(pFunc()), CancellationToken.None);
            }
            {
                result[0] = model.InitialX;
                result[1] = model.InitialY;
                var ps = new List <Vector <double> >();
                points.Add(new Tuple <Color, List <Vector <double> > >(Color.Blue, ps));
                var sdImpl = new SteepestDescentAdvancedOptmizer(model.MomentumStep,
                                                                 model.MomentumStart, model.MomentumEnd, model.MaxIters);
                sdImpl.Optimize(result, f, model.MinDerivCompMaxMagn, (i, pFunc) => ps.Add(pFunc()), CancellationToken.None);
            }
            {
                result[0] = model.InitialX;
                result[1] = model.InitialY;
                var ps = new List <Vector <double> >();
                points.Add(new Tuple <Color, List <Vector <double> > >(Color.Magenta, ps));
                var sdImpl = new RpropPlusOptmizer(model.BasicStep, 10, 1.2, 0.5, model.MaxIters);
                sdImpl.Optimize(result, f, model.MinDerivCompMaxMagn, (i, pFunc) => ps.Add(pFunc()), CancellationToken.None);
            }
            {
                result[0] = model.InitialX;
                result[1] = model.InitialY;
                var ps = new List <Vector <double> >();
                points.Add(new Tuple <Color, List <Vector <double> > >(Color.Cyan, ps));
                var sdImpl = new ImprovedRpropMinusOptmizer(model.BasicStep, 10, 1.2, 0.5, model.MaxIters);
                sdImpl.Optimize(result, f, model.MinDerivCompMaxMagn, (i, pFunc) => ps.Add(pFunc()), CancellationToken.None);
            }

            var fp = new FunctionPlotter();

            var img = fp.AutoContourPlot(f, points, 0.1f, 0, 1, model.Width, model.Height,
                                         model.ContoursCount, model.ScalePower);
            var ms = new MemoryStream();

            img.Save(ms, ImageFormat.Png);
            ms.Seek(0, SeekOrigin.Begin);

            return(File(ms, "image/png"));
        }
 private void PlotViewModel_KeyDown(object sender, OxyKeyEventArgs e)
 {
     if (e.Key == OxyKey.R && e.ModifierKeys == OxyModifierKeys.None)
     {
         AdjustYAxisZoom();
         PlotViewModel.InvalidatePlot(false);
     }
 }
Ejemplo n.º 11
0
 public UserData(PlotViewModel plotViewModel)
 {
     A         = plotViewModel.A;
     B         = plotViewModel.B;
     C         = plotViewModel.C;
     Step      = plotViewModel.Step;
     RangeFrom = plotViewModel.RangeFrom;
     RangeTo   = plotViewModel.RangeTo;
 }
Ejemplo n.º 12
0
        public void verify_SetAxesLabelsCommand_returns_correct_values()
        {
            var viewModel = new PlotViewModel();

            viewModel.SetAxesLabels.Execute(null);
            // the following validation values were determined by prior running of unit test
            Assert.AreEqual(viewModel.CurrentIndependentVariableAxis, IndependentVariableAxis.Rho);
            Assert.AreEqual(viewModel.Title, null);
        }
Ejemplo n.º 13
0
        private void OnPlot(Tuple <ObservableCollection <int>, ObservableCollection <int> > data)
        {
            Log.Info("Received plot message");

            var plotViewModel = new PlotViewModel(data.Item1, data.Item2);

            var orchestraService = GetService <IOrchestraService>();

            orchestraService.ShowDocument(plotViewModel);
        }
Ejemplo n.º 14
0
 public void BindMoment(int momentIndex, IPlayer player, PlotViewModel model)
 {
     model.MovePlots.ObserveReplace()
     .Subscribe(_ => {
         GetComponentsInChildren <ICardBindable>().ForEach(cb => {
             cb.BindCard(model.MovePlots[momentIndex]);
         });
     })
     .AddTo(this);
 }
Ejemplo n.º 15
0
        public void BindMoment(int momentIndex, IPlayer player, PlotViewModel model)
        {
            this.ObserveEveryValueChanged(_ => player.Plots.IsActionPenarized(momentIndex))
            .Subscribe(penarized => {
                cross.SetActive(penarized);
            })
            .AddTo(this);

            cross.SetActive(player.Plots.IsActionPenarized(momentIndex));
        }
Ejemplo n.º 16
0
        void Display(PlotViewModel context)
        {
            var vm = GetViewModel();

            if (vm != null)
            {
                _contexts.Add(context);
                vm.LastPlot = context;
            }
        }
Ejemplo n.º 17
0
        private void Start()
        {
            controller = Controller.Instance;
            plotVM     = PlotViewModel.Instance;

            GetComponent <LongClickFillButton>().onLongClick.AddListener(() => {
                rpcInvoker.InvokeRpcSubmitMovePlot(
                    controller.MyPlayer == controller.Player1,
                    plotVM.MovePlots.Select(c => c != null ? c.Id : -1).ToArray());
            });
        }
Ejemplo n.º 18
0
        public virtual ActionResult RosenbrockFunctionPlot(PlotViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(HttpNotFound());
            }

            var f = new RosenbrockFunction();

            return(plot(f, model));
        }
Ejemplo n.º 19
0
        public virtual ActionResult CrazySinCosFunctionPlot(PlotViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(HttpNotFound());
            }

            var f = new SinCosCrazyFunction();

            return(plot(f, model));
        }
Ejemplo n.º 20
0
 public ApproximationViewModel()
 {
     _approximation        = new Approximation();
     OpenTrainFileClick    = new RelayCommand(OpenTrainFile);
     OpenTestFileClick     = new RelayCommand(OpenTestFile);
     OpenInTextEditorClick = new RelayCommand(OpenInTextEditor,
                                              () => _pathToFile != null && _pathToFile.Any());
     ApproximateClick         = new RelayCommand(AproximateAndPlot);
     DoStuffClick             = new RelayCommand(ShowPlotFromDataWithoutLearning);
     _plotModelViewModel      = new PlotViewModel();
     _errorPlotModelViewModel = new ErrorPlotViewModel();
     GenerateClick            = new RelayCommand(Generate);
 }
Ejemplo n.º 21
0
        public IActionResult Growth(string option)
        {
            PlotViewModel model = _covidService.GetGrowthViewModel();

            ViewData["Title"]           = "Growth";
            ViewData["YLabel"]          = "Deaths per day";
            ViewData["TooltipDecimals"] = 0;
            ViewData["YMin"]            = 0.1;
            ViewData["YType"]           = "linear";
            ViewData["YTickInterval"]   = 100;
            ViewData["XLabel"]          = "Days from death 10";

            return(View("Plot", model));
        }
Ejemplo n.º 22
0
        public IActionResult Relative(string option = Covid19DeathsService.NORM_POPULATION)
        {
            PlotViewModel model = _covidService.GetRelativeViewModel(option, Covid19DeathsService.MIN_DEATHS_MILLION);

            ViewData["Title"]           = "Relative";
            ViewData["YLabel"]          = "Deaths / " + option;
            ViewData["TooltipDecimals"] = 2;
            ViewData["YMin"]            = 1;
            ViewData["YType"]           = "linear";
            ViewData["YTickInterval"]   = 1;
            ViewData["XLabel"]          = "Days from 1 death / million";

            return(View("Plot", model));
        }
Ejemplo n.º 23
0
        public void verify_ClearPlotCommand_returns_correct_values()
        {
            var viewModel = new PlotViewModel();

            viewModel.ClearPlotCommand.Execute(null);
            // ClearPlot public settings
            Assert.AreEqual(viewModel.Labels.Count, 0);
            Assert.AreEqual(viewModel.Title, null);
            // UpdatePlotSeries settings
            Assert.AreEqual(viewModel.PlotModel.Series.Count, 0);
            Assert.AreEqual(viewModel.PlotSeriesCollection.Count, 0);
            Assert.IsFalse(viewModel.ShowComplexPlotToggle);
            Assert.IsTrue(viewModel.PlotModel.IsLegendVisible);
        }
Ejemplo n.º 24
0
        private void Start()
        {
            rule       = Rule.Instance;
            controller = Controller.Instance;
            model      = PlotViewModel.Instance;

            this.ObserveEveryValueChanged(_ => controller.CurrentPhase)
            .Where(p => p == Phase.Start)
            .Subscribe(_ => {
                transform.DestroyAllChildren();

                for (int i = 0; i < rule.CountOfMoment.Value; ++i)
                {
                    GameObject moment = Instantiate(momentPrefab);

                    moment.GetComponentsInChildren <IControllerSettable>().ForEach(cs => {
                        cs.SetController(controller);
                    });

                    moment.GetComponentsInChildren <IMomentIndexBindable>().ForEach(mib => {
                        if (isMyPlayer)
                        {
                            mib.BindMoment(i, controller.MyPlayer, model);
                        }
                        else
                        {
                            mib.BindMoment(i, controller.EnemyPlayer, model);
                        }
                    });
                    moment.transform.SetParent(transform, false);
                    moment.GetComponent <RectTransform>().SetAsLastSibling();
                }

                GetComponentsInChildren <Detail>().ForEach(d => {
                    d.DetailRoot = detailRoot;
                });

                GetComponentsInChildren <ICardBindable>().ForEach(cb => {
                    cb.BindCard(null);
                });

                GetComponentsInChildren <DraggableCard>().ForEach(d => {
                    d.DraggingArrowPrefab  = draggingArrowPrefab;
                    d.DraggingActionPrefab = draggingActionPrefab;
                    d.DraggingContainer    = draggingContainer;
                });
            })
            .AddTo(this);
        }
Ejemplo n.º 25
0
        public void verify_default_constructor_sets_properties_correctly()
        {
            var viewModel = new PlotViewModel();

            Assert.IsTrue(viewModel.XAxisSpacingOptionVm != null);
            Assert.IsTrue(viewModel.YAxisSpacingOptionVm != null);
            Assert.IsTrue(viewModel.PlotToggleTypeOptionVm != null);
            Assert.IsTrue(viewModel.PlotNormalizationTypeOptionVm != null);
            Assert.AreEqual("", viewModel.CustomPlotLabel);
            Assert.AreEqual(ReflectancePlotType.ForwardSolver, viewModel.PlotType);
            Assert.AreEqual("", viewModel.PlotModel.Title);
            Assert.AreEqual(viewModel.PlotModel.LegendPlacement, LegendPlacement.Outside);
            // todo: Once the popout bug is fixed and we update OxyPlot, replace the above line with this one:
            //Assert.AreEqual(viewModel.PlotModel.Legends[0].LegendPlacement, LegendPlacement.Outside);
        }
Ejemplo n.º 26
0
        public IActionResult GrowthRelative(string option)
        {
            PlotViewModel model = _covidService.GetRelativeGrowthViewModel(option,
                                                                           Covid19DeathsService.MIN_DEATHS_MILLION);

            ViewData["Title"]           = "Growth relative";
            ViewData["YLabel"]          = "Deaths per day / million";
            ViewData["TooltipDecimals"] = 1;
            ViewData["YMin"]            = 0;
            ViewData["YType"]           = "linear";
            ViewData["YTickInterval"]   = 10;
            ViewData["XLabel"]          = "Days from death 10";

            return(View("Plot", model));
        }
        private void SetupPlotVerify(Models.IsotopeModel isotope)
        {
            double halfLife = ElementViewModel.GetHalfLife(isotope);

            if (halfLife <= 0)
            {
                Assert.IsInstanceOfType(mainViewModel.PlotViewModel.Effect,
                                        typeof(BlurEffect));
                Assert.AreEqual((halfLife, " ", 10),
                                (mainViewModel.PlotViewModel.UnitHalfLife, mainViewModel.PlotViewModel.Unit, mainViewModel.PlotViewModel.MaximumTime));
                return;
            }

            Assert.AreEqual((null, PlotViewModel.ConvertToAppropriateUnit(ref halfLife), halfLife, 998),
                            (mainViewModel.PlotViewModel.Effect, mainViewModel.PlotViewModel.Unit, mainViewModel.PlotViewModel.UnitHalfLife, mainViewModel.PlotViewModel.DataPoints.Count));
        }
Ejemplo n.º 28
0
        public IActionResult Growth(string metric, string option)
        {
            PlotViewModel model = _covidService.GetGrowthViewModel(metric);

            ViewData["Metric"]          = metric;
            ViewData["Method"]          = System.Reflection.MethodBase.GetCurrentMethod().Name;
            ViewData["Title"]           = "Growth";
            ViewData["YLabel"]          = metric + " per day";
            ViewData["TooltipDecimals"] = 0;
            ViewData["YMin"]            = 0.1;
            ViewData["YType"]           = "linear";
            ViewData["YTickInterval"]   = 100;
            ViewData["XLabel"]          = "Days from 10 " + metric;

            return(View("Plot", model));
        }
Ejemplo n.º 29
0
        public IActionResult Relative(string metric, string option = ViewModelService.NORM_POPULATION)
        {
            PlotViewModel model = _covidService.GetRelativeViewModel(metric, option, ViewModelService.MIN_DEATHS_MILLION);

            ViewData["Metric"]          = metric;
            ViewData["Method"]          = System.Reflection.MethodBase.GetCurrentMethod().Name;
            ViewData["Title"]           = "Relative";
            ViewData["YLabel"]          = metric + " / " + option;
            ViewData["TooltipDecimals"] = 2;
            ViewData["YMin"]            = 1;
            ViewData["YType"]           = "linear";
            ViewData["YTickInterval"]   = 1;
            ViewData["XLabel"]          = $"Days from 1 {metric} / million";

            return(View("Plot", model));
        }
Ejemplo n.º 30
0
        public IActionResult GrowthRelative(string metric, string option)
        {
            PlotViewModel model = _covidService.GetRelativeGrowthViewModel(metric, option,
                                                                           ViewModelService.MIN_DEATHS_MILLION);

            ViewData["Metric"]          = metric;
            ViewData["Method"]          = System.Reflection.MethodBase.GetCurrentMethod().Name;
            ViewData["Title"]           = "Growth relative";
            ViewData["YLabel"]          = metric + " per day / million";
            ViewData["TooltipDecimals"] = 1;
            ViewData["YMin"]            = 0;
            ViewData["YType"]           = "linear";
            ViewData["YTickInterval"]   = 10;
            ViewData["XLabel"]          = "Days from 10 " + metric;

            return(View("Plot", model));
        }