Пример #1
0
        private async void OnPropertyChanged(HistogramMethod method, string target, string observation)
        {
            hmethod = method;
            var data = Data;

            var io = await Task.Run(() => GetInputOutput(data, observation, target));

            if (io != null)
            {
                await Update(io.Item1.Zip(io.Item2, (a, b) => Tuple.Create(a, b)).ToArray(), BinCount, BinSize, method)
                .ContinueWith(async(xx) =>
                              await this.Dispatcher.InvokeAsync(async() =>
                {
                    var points = await xx;
                    if (points != null)
                    {
                        this.SetValue(PointsProperty, points);
                    }
                }, System.Windows.Threading.DispatcherPriority.Background, default(System.Threading.CancellationToken)));

                //subject.OnNext(data.ToList());
            }
        }
Пример #2
0
        private static Dictionary <Tuple <double, double>, double> GetHistogram(IEnumerable <Tuple <double, double> > data, HistogramMethod method, int bincount, double binsize)
        {
            switch (method)
            {
            case (HistogramMethod.Count):
                return(UtilityMath.Histogram.ToHistogramByBinCount((data), bincount).ToDictionary(_ => _.Key, _ => _.Value));

            case (HistogramMethod.Size):
                return(UtilityMath.Histogram.ToHistogram((data), binsize));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #3
0
        private static async Task <dynamic> Update(IEnumerable <Tuple <double, double> > data, double bincount, double binsize, HistogramMethod method)
        {
            if (data != null)
            {
                if (data.Count() > 0)
                {
                    return(await Task.Run(() =>
                    {
                        var his = GetHistogram(data, method, Convert.ToInt16(bincount), (double)binsize);
                        return his.SelectMany(_ => new[] { Tuple.Create(_.Key.Item1, _.Value), Tuple.Create(_.Key.Item2, _.Value) }).ToList();
                    }));
                }
            }

            return(null);
        }