public SequenceAnalysisViewModel() { MovementPlotModel = PlotModelHelper.CreateScatterPlot(); DiameterPlotModel = PlotModelHelper.CreateScatterPlot(); OpenSequenceCommand = new DelegateCommand(OpenSequenceHandler); HotZoneRadius = 1500; }
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); }
public PatternCompareDialogViewModel() { CloseDialogCommand = new DelegateCommand(CloseDialog); PlotModelPatternA = PlotModelHelper.CreateScatterPlotInvX(); PlotModelPatternB = PlotModelHelper.CreateScatterPlotInvX(); PlotModelHisto = PlotModelHelper.CreateHistogramm(); }
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)); }
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); } }
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); }
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); }
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(); }