This is a class that builds some sample temporal networks that will be used as test cases
Esempio n. 1
0
        public void AbsoluteTimeTest()
        {
            TemporalNetwork test = ExampleData.GetTestNetwork3();

            // Default behavior is relative time
            test.ReduceToTwoPaths();

            Assert.IsTrue(test.TwoPathWeights.ContainsKey("a,c,e") && test.TwoPathWeights["a,c,e"] == 1);

            test = ExampleData.GetTestNetwork3();
            test.ReduceToTwoPaths(false, true);

            Assert.IsFalse(test.TwoPathWeights.ContainsKey("a,c,e"));
        }
        public void GetBetweennessPrefMatrixTest()
        {
            TemporalNetwork          temp_net   = ExampleData.GetTestNetwork();
            Dictionary <string, int> index_pred = null;
            Dictionary <string, int> index_succ = null;

            double[,] actual;
            actual = BetweennessPref.GetBetweennessPrefMatrix(temp_net, "e", out index_pred, out index_succ);

            Assert.IsNotNull(index_pred);
            Assert.IsNotNull(index_succ);
            Assert.IsNotNull(actual);

            // Check whether all entries in the normalized betweenness preference matrix returned match the expected values
            Assert.AreEqual(0d, actual[index_pred["a"], index_succ["b"]]);
            Assert.AreEqual(0d, actual[index_pred["b"], index_succ["b"]]);
            Assert.AreEqual(0d, actual[index_pred["c"], index_succ["b"]]);
            Assert.AreEqual(1d / 10d, actual[index_pred["f"], index_succ["b"]]);
            Assert.AreEqual(0d, actual[index_pred["g"], index_succ["b"]]);

            Assert.AreEqual(actual[index_pred["a"], index_succ["f"]], 0d);
            Assert.AreEqual(actual[index_pred["b"], index_succ["f"]], 0d);
            Assert.AreEqual(actual[index_pred["c"], index_succ["f"]], 11d / 20d);
            Assert.AreEqual(actual[index_pred["f"], index_succ["f"]], 0d);
            Assert.AreEqual(actual[index_pred["g"], index_succ["f"]], 1d / 20d);

            Assert.AreEqual(actual[index_pred["a"], index_succ["g"]], 2d / 10d);
            Assert.AreEqual(actual[index_pred["b"], index_succ["g"]], 1d / 10d);
            Assert.AreEqual(actual[index_pred["c"], index_succ["g"]], 0d);
            Assert.AreEqual(actual[index_pred["f"], index_succ["g"]], 0d);
            Assert.AreEqual(actual[index_pred["g"], index_succ["g"]], 0d);

            Assert.AreEqual(BetweennessPref.GetBetweennessPref(temp_net, "e"), 1.2954618442383219d);

            actual = BetweennessPref.GetBetweennessPrefMatrix(temp_net, "f", out index_pred, out index_succ);

            Assert.IsNotNull(index_pred);
            Assert.IsNotNull(index_succ);
            Assert.IsNotNull(actual);

            Assert.AreEqual(actual[index_pred["e"], index_succ["e"]], 1d);
        }
Esempio n. 3
0
        public void ReduceToTwoPathsTest()
        {
            TemporalNetwork test = ExampleData.GetTestNetwork();

            test.ReduceToTwoPaths();

            // There should be 12 two paths
            Assert.AreEqual(test.TwoPathCount, 12);

            // And 21 edges
            Assert.AreEqual(test.EdgeCount, 21);

            // The stripped network should contain 20 time steps
            Assert.AreEqual(test.Length, 20);

            Assert.AreEqual(test.MaxGranularity, 1);

            Assert.AreEqual(test.MinGranularity, 2);

            // The aggregate network should contain 8 weighted edges with a cumulative weight that matches 2 * twoPathCount
            Assert.AreEqual(test.AggregateNetwork.EdgeCount, 8);
            Assert.AreEqual(test.AggregateNetwork.CumulativeWeight, 22);

            // The second-order aggregate network should countain edges representing 6 different two-paths ...
            Assert.AreEqual(test.SecondOrderAggregateNetwork.EdgeCount, 6);
            // ... with a total weight of 11
            Assert.AreEqual(test.SecondOrderAggregateNetwork.CumulativeWeight, 11);

            Assert.AreEqual(test.SecondOrderAggregateNetwork[new Tuple <string, string>("(c;e)", "(e;f)")], 5.5d);
            Assert.AreEqual(test.SecondOrderAggregateNetwork[new Tuple <string, string>("(g;e)", "(e;f)")], 0.5d);
            Assert.AreEqual(test.SecondOrderAggregateNetwork[new Tuple <string, string>("(e;f)", "(f;e)")], 1d);
            Assert.AreEqual(test.SecondOrderAggregateNetwork[new Tuple <string, string>("(f;e)", "(e;b)")], 1d);
            Assert.AreEqual(test.SecondOrderAggregateNetwork[new Tuple <string, string>("(a;e)", "(e;g)")], 2d);
            Assert.AreEqual(test.SecondOrderAggregateNetwork[new Tuple <string, string>("(b;e)", "(e;g)")], 1d);

            // Check whether all the weights are correctly computed ...
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("e", "f")], 7, "The weight of egde (e,f) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("e", "b")], 1, "The weight of egde (e,b) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("b", "e")], 1, "The weight of egde (b,e) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("g", "e")], 1d / 2d, "The weight of egde (g,e) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("e", "g")], 3, "The weight of egde (e,g) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("f", "e")], 2, "The weight of egde (f,e) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("a", "e")], 2, "The weight of egde (a,e) in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("c", "e")], 5 + 1d / 2d, "The weight of egde (c,e) in the aggregate network is wrong!");

            Assert.AreEqual(test.AggregateNetwork.MaxWeight, 7, "The maximum weight in the aggregate network is wrong!");
            Assert.AreEqual(test.AggregateNetwork.MinWeight, 0.5d, "The minimum weight in the aggregate network is wrong!");

            test = ExampleData.GetTestNetwork2();
            test.ReduceToTwoPaths();

            Assert.AreEqual(test.TwoPathCount, 7);

            Assert.AreEqual(test.Length, 3);

            Assert.AreEqual(test.MaxGranularity, 1);

            Assert.AreEqual(test.MinGranularity, 3);

            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("a", "b")], 1);
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("b", "c")], 1d + 1d / 6d + 1d / 6d + 1d / 6d);
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("d", "c")], 1d / 2d);
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("c", "d")], 1d / 3d);
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("c", "b")], 1d / 3d);
            Assert.AreEqual(test.AggregateNetwork[new Tuple <string, string>("c", "a")], 1d / 3d);
        }
Esempio n. 4
0
        public void AggregateTimeTest()
        {
            TemporalNetwork net = ExampleData.GetTestNetwork3();

            net.AggregateTime(3);
        }