public async Task LinearWeightsContextFactoryFacadeTest() { var lwcff = new LinearWeightsContextFactoryFacade <RealValueNodesStub>(new Stub4(), new Stub3()); var cells = new GeoCellTuple[] { new GeoCellTuple() { LatMax = 11.0, LonMin = 13.0, LatMin = 17.0, LonMax = 19.0 } }; var request = new FetchRequest("dummy", FetchDomain.CreateCells(new double[] { 17.0 }, new double[] { 13.0 }, new double[] { 11.0 }, new double[] { 19.0 }, new TimeRegion())); var storage = TestDataStorageFactory.GetStorage("msds:memory"); var requestContext = RequestContextStub.GetStub(storage, request); var lwc = await lwcff.CreateAsync(requestContext, cells); var combs = lwc.Combinations.ToArray(); Assert.AreEqual(1, combs.Length); Assert.AreEqual(cells[0], combs[0].Item1); RealValueNodes nodes = combs[0].Item2; IEnumerable <LinearWeight> weights = combs[0].Item3; var result = weights.Sum(w => w.Weight * nodes.Values[w.DataIndex]); Assert.AreEqual(847.0, result); }
public async Task VariogramCachingTest() { var component = new VarpProvStub(); var factory = new VariogramProviderCachingFactory(component); var variogramfitter = await factory.ConstructAsync(); double[] lats = new double[10], lons = new double[10], vals = new double[10]; Random r = new Random(1); for (int i = 0; i < 10; i++) { lats[i] = r.NextDouble(); lons[i] = r.NextDouble(); vals[i] = 3 * lons[i] + 2 * lats[i]; } RealValueNodes rvn1 = new RealValueNodes(lats, lons, vals); RealValueNodes rvn2 = new RealValueNodes(lats, lons, vals); RealValueNodes rvn3 = new RealValueNodes(lats, lons, lons); var v1 = await variogramfitter.GetSpatialVariogramAsync(rvn1); var v2 = await variogramfitter.GetSpatialVariogramAsync(rvn2); var v3 = await variogramfitter.GetSpatialVariogramAsync(rvn3); Assert.AreEqual(1.0, v1.Nugget); Assert.AreEqual(1.0, v2.Nugget); Assert.AreEqual(2.0, v3.Nugget); }
public async Task LinearCombinationAggregatorTest() { LinearCombinationAggregator lca = new LinearCombinationAggregator(); var nodes = new RealValueNodes(new double[3], new double[3], new double[] { 2.0, 3.0, 5.0 }); var weights = new LinearWeight[] { new LinearWeight(1, 7.0), new LinearWeight(0, 11.0), new LinearWeight(2, 13.0) }; LinearCombinationContext lcc = new LinearCombinationContext(new Tuple <ICellRequest, RealValueNodes, IEnumerable <LinearWeight> >[] { new Tuple <ICellRequest, RealValueNodes, IEnumerable <LinearWeight> >(new RequestStubs(), nodes, (IEnumerable <LinearWeight>)weights) }); double[] result = await lca.AggregateCellsBatchAsync(lcc, new ICellRequest[] { new RequestStubs() }); Assert.AreEqual(1, result.Length); Assert.AreEqual(108, result[0]); }
public async Task LinearWeightsContextFactoryFacadeTest() { var lwcff = new LinearWeightsContextFactoryFacade <RealValueNodesStub>(new Stub4(), new Stub3()); var cells = new ICellRequest[] { new Stub5() }; var lwc = await lwcff.CreateAsync(cells); var combs = lwc.Combinations.ToArray(); Assert.AreEqual(1, combs.Length); Assert.AreEqual(cells[0], combs[0].Item1); RealValueNodes nodes = combs[0].Item2; IEnumerable <LinearWeight> weights = combs[0].Item3; var result = weights.Sum(w => w.Weight * nodes.Values[w.DataIndex]); Assert.AreEqual(847.0, result); }
public async Task <VariogramModule.IVariogram> GetSpatialVariogramAsync(RealValueNodes nodes) { return(new VariogramStub()); }