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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 5
0
 public async Task <VariogramModule.IVariogram> GetSpatialVariogramAsync(RealValueNodes nodes)
 {
     return(new VariogramStub());
 }