public SequenceAnalysisViewModel()
 {
     MovementPlotModel   = PlotModelHelper.CreateScatterPlot();
     DiameterPlotModel   = PlotModelHelper.CreateScatterPlot();
     OpenSequenceCommand = new DelegateCommand(OpenSequenceHandler);
     HotZoneRadius       = 1500;
 }
示例#2
0
        public void OnDialogOpened(IDialogParameters parameters)
        {
            PatternA = JsonSerializer.Deserialize <List <Point> >(parameters.GetValue <string>("patternA"));
            PatternB = JsonSerializer.Deserialize <List <Point> >(parameters.GetValue <string>("patternB"));

            var distance = Histogram.Distance(PatternA, PatternB);
            var histoSet = Histogram.CreateBins(distance, 50);

            PulseTableA = GetWrongPulses(PatternA, distance, 500);
            PulseTableB = GetWrongPulses(PatternB, distance, 500);

            HistoTable = histoSet.ToObservableCollection();

            PlotModelPatternA.Series.Add(GenerateScatterSeries(PatternA, distance));
            PlotModelPatternB.Series.Add(GenerateScatterSeries(PatternB, distance));

            PlotModelPatternA.InvalidatePlot(true);
            PlotModelPatternB.InvalidatePlot(true);

            PlotModelHisto.Series.Clear();
            PlotModelHisto.Series.Add(PlotModelHelper.CreateBarSeries(ConvertToDataPoint(histoSet)));
            PlotModelHisto.Axes.Add(new CategoryAxis {
                Position = AxisPosition.Bottom, Key = "y", Angle = 90, ItemsSource = histoSet, LabelField = "X"
            });
            PlotModelHisto.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, MinimumPadding = 0, MaximumPadding = 0.06, AbsoluteMinimum = 0, Key = "x"
            });
            PlotModelHisto.InvalidatePlot(true);
        }
        private void UpdatePatternHandler()
        {
            Shape.Generate();

            PlotModel.Series.Clear();
            PlotModel.Series.Add(PlotModelHelper.CreateScatterSerie(Shape.Points.ToList()));
            PlotModel.InvalidatePlot(true);
        }
示例#4
0
        public PatternCompareDialogViewModel()
        {
            CloseDialogCommand = new DelegateCommand(CloseDialog);

            PlotModelPatternA = PlotModelHelper.CreateScatterPlotInvX();
            PlotModelPatternB = PlotModelHelper.CreateScatterPlotInvX();
            PlotModelHisto    = PlotModelHelper.CreateHistogramm();
        }
示例#5
0
 private void Recalculate(double mean, double stdDev)
 {
     Task.Run(() =>
     {
         Accord.Statistics.Distributions.Univariate.NormalDistribution normalDistribution = new Accord.Statistics.Distributions.Univariate.NormalDistribution(mean, stdDev);
         var limit         = Math.Abs(normalDistribution.Mean + 2 * normalDistribution.StandardDeviation);
         DoubleRange range = new Accord.DoubleRange(-limit, limit);
         double[] x        = Accord.Math.Vector.Range(-limit, limit, 0.1);
         double[] y        = x.Apply(normalDistribution.ProbabilityDensityFunction);
         return(PlotModelHelper.Create(range, "", x, y, false));
     }).ContinueWith(a => this.Dispatcher.InvokeAsync(async() => PlotModel = await a, System.Windows.Threading.DispatcherPriority.Background));
 }
示例#6
0
        private void OpenDataSetHandler()
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() == true)
            {
                PatternList.Add(new Pattern(openFileDialog.FileName));

                var series = PlotModelHelper.CreateScatterSerie(PatternList.Last().Points, PatternList.Last().Color);

                PlotModelPattern.Series.Add(series);
                PlotModelPattern.InvalidatePlot(true);
            }
        }
示例#7
0
        private void TransformMatrixHandler()
        {
            CalibMatrix = AffineMatrix.CalculateMatrix(SelectedA, SelectedB);

            DecomposeMatrix = AffineMatrix.Decompose(CalibMatrix);

            PatternList.Add(new Pattern("None"));

            PatternList.Last().Points = AffineMatrix.CalculateBack(SelectedA.Points, CalibMatrix);

            var series = PlotModelHelper.CreateScatterSerie(PatternList.Last().Points, PatternList.Last().Color);

            PlotModelPattern.Series.Add(series);
            PlotModelPattern.InvalidatePlot(true);
        }
示例#8
0
        public PatternAnalysisViewModel(IEventAggregator eventAggregator, IDialogService dialogService)
        {
            _dialogService   = dialogService;
            _eventAggregator = eventAggregator;

            PlotModelPattern = PlotModelHelper.CreateScatterPlotInvX();

            PatternList = new ObservableCollection <IPattern>();

            OpenDataSetCommand     = new DelegateCommand(OpenDataSetHandler);
            TransformMatrixCommand = new DelegateCommand(TransformMatrixHandler);
            SendCommand            = new DelegateCommand(SendHandler);
            CompareCommand         = new DelegateCommand(CompareHandler);
            DeleteCommand          = new DelegateCommand <int?>(DeleteHandler);
            MovementCommand        = new DelegateCommand(MovementHandler);
        }
        public void OnDialogOpened(IDialogParameters parameters)
        {
            var refPattern  = JsonSerializer.Deserialize <List <Point> >(parameters.GetValue <string>("patternA"));
            var movePattern = JsonSerializer.Deserialize <List <Point> >(parameters.GetValue <string>("patternB"));

            var centers = new List <Point>();

            for (var i = 1; i < refPattern.Count; i++)
            {
                centers.Add((Point)(refPattern[i] - movePattern[i]));
            }

            PlotModelPatternA.Series.Add(PlotModelHelper.CreateScatterSerie(centers));
            PlotModelPatternA.Series.Add(PlotModelHelper.CreateHotZone(centers[0], 1500, OxyColors.Red));
            PlotModelPatternA.InvalidatePlot(true);
        }
        private void OpenSequenceHandler()
        {
            var openFolder = new CommonOpenFileDialog
            {
                AllowNonFileSystemItems = true,
                Multiselect             = true,
                IsFolderPicker          = true,
                Title = "Select folders with a sequence"
            };

            if (openFolder.ShowDialog() != CommonFileDialogResult.Ok)
            {
                MessageBox.Show("No Folder selected");
                return;
            }

            // get all the directories in selected dirctory
            var dir = openFolder.FileName;

            SeqFolderName = dir.Split("\\").Last();

            List <Frame> frames = new List <Frame>();

            foreach (string fileName in Directory.GetFiles(dir, "*.json"))
            {
                var jsonString = File.ReadAllText(fileName);
                var frame      = JsonSerializer.Deserialize <Frame>(jsonString);
                frames.Add(frame);
            }

            var Centers = frames.Where(frame => frame.HasCorrespondingImage == true).Select(frame => new Point(frame.Limbus.X, frame.Limbus.Y)).ToList <Point>();
            var Sizes   = frames.Where(frame => frame.HasCorrespondingImage == true).Select(frame => new Point(frame.Limbus.Height, frame.Limbus.Width)).ToList <Point>();

            var test = frames.Where(frame => frame.HasCorrespondingImage == true).Select(frame => frame).Min(frame => frame.Limbus.X);

            MovementPlotModel.Series.Clear();
            MovementPlotModel.Series.Add(PlotModelHelper.CreateScatterSerie(Centers));
            MovementPlotModel.Series.Add(PlotModelHelper.CreateHotZone(Centers[0], HotZoneRadius, OxyColors.Red));
            MovementPlotModel.InvalidatePlot(true);

            DiameterPlotModel.Series.Clear();
            DiameterPlotModel.Series.Add(PlotModelHelper.CreateScatterSerie(Sizes));
            DiameterPlotModel.Series.Add(PlotModelHelper.CreateHotZone(Sizes[0], HotZoneRadius / 3, OxyColors.Blue));
            DiameterPlotModel.InvalidatePlot(true);
        }
        public PatternGeneratorViewModel()
        {
            PlotModel = PlotModelHelper.CreateScatterPlotInvX();

            ShapeList = new List <IShape>
            {
                new Circle(),
                new Spiral(),
                new DotMatrix(),
                new Cross()
            };

            Shape = ShapeList.First();
            UpdatePatternHandler();

            RepeatValue           = 10;
            SpotDistributionTypes = SpotDistributionTypes.Random;

            UpdatePatternCommand = new DelegateCommand(UpdatePatternHandler);
            SaveFileCommand      = new DelegateCommand(SaveFileHandler);
        }
示例#12
0
        private static ScatterSeries GenerateScatterSeries(List <Point> points, List <double> dist)
        {
            var series = PlotModelHelper.CreateScatterSerie(points, dist);

            return(series);
        }
        public MovementDialogViewModel()
        {
            CloseDialogCommand = new DelegateCommand(CloseDialog);

            PlotModelPatternA = PlotModelHelper.CreateScatterPlotInvX();
        }