//public IObservable<Tuple<KeyValuePair<DateTime, double>[], IEnumerable<KeyValuePair<DateTime, Tuple<double, double>[]>>>> LastPredictions { get; } public PredictionService2(IObservable <KeyValuePair <DateTime, double> > series, IScheduler scheduler) { List <KeyValuePair <DateTime, double> > lst = new List <KeyValuePair <DateTime, double> >(); series.SubscribeOn(scheduler).Subscribe(_ => lst.Add(_), () => Console.WriteLine("finished")); var y = ObservableFactory.Build(() => Helper.Trim(lst), TimeSpan.FromSeconds(1), scheduler) .Where(_ => _ != null).Distinct() .TakeUntil(series.Delay(TimeSpan.FromSeconds(0)).GetAwaiter()); Predictions = Filter.Optimisation.BGWorker.GetOptimisedGPPredictions(y, 1) /*.Take(TimeSpan.FromSeconds(15))*/; }
//public IObservable<Tuple<KeyValuePair<DateTime, double>[], IEnumerable<KeyValuePair<DateTime, Tuple<double, double>[]>>>> LastPredictions { get; } public PredictionService4(IObservable <KeyValuePair <DateTime, Tuple <double, double> > > series, IScheduler scheduler) { List <KeyValuePair <DateTime, Tuple <double, double> > > lst = new List <KeyValuePair <DateTime, Tuple <double, double> > >(); series.SubscribeOn(scheduler).Subscribe(_ => lst.Add(_), () => Console.WriteLine("finished")); var y = ObservableFactory.Build(() => Helper.Trim(lst), TimeSpan.FromSeconds(3), scheduler) .Where(_ => _ != null); //.TakeUntil(series.Delay(TimeSpan.FromSeconds(0)).GetAwaiter()); var prs1 = Filter.Optimisation.BGWorker.GetOptimisedKFPredictions(y.Select(_ => _.Select(_d => new KeyValuePair <DateTime, double>(_d.Key, _d.Value.Item1)).ToArray()), 5).Select(_ => _.Output); /*.Take(TimeSpan.FromSeconds(15))*/; var prs2 = Filter.Optimisation.BGWorker.GetOptimisedKFPredictions(y.Select(_ => _.Select(_d => new KeyValuePair <DateTime, double>(_d.Key, _d.Value.Item2)).ToArray()), 5).Select(_ => _.Output); Predictions = prs1.Zip(prs2, (c, d) => c.Zip(d, (e, f) => new KeyValuePair <DateTime, Tuple <double, double>[]>(f.Key, Combine(e.Value, f.Value)))); }