Example #1
0
        public AnalysisResult Analyze(Network network, Dictionary <string, string> parameters)
        {
            var errors = ValidateParameters(network, parameters);

            if (errors.Count > 0)
            {
                // TODO: custom exception
                throw new ArgumentException(string.Join('\n', errors));
            }

            var treshold    = int.Parse(parameters["treshold"]);
            var algorithm   = ParseAlgorithm(parameters);
            var communities = Algorithm.Apply(network, algorithm, treshold);

            return(new AnalysisResult
            {
                ActorToCommunity = AnalysisHelper.ActorToCommunity(network.Actors, communities),
                AnalyzedNetworkEdgeList = AnalysisHelper.EdgeList(network),
                CommunityList = AnalysisHelper.CommunityList(network.Actors, communities),
                Exclusivities = AnalysisHelper.Exclusivities(network, communities),
                Homogenities = AnalysisHelper.Homogenities(network, communities),
                Varieties = AnalysisHelper.Varieties(network, communities),
                Performances = AnalysisHelper.Performances(network, communities),
                Coverages = AnalysisHelper.Coverages(network, communities),
                Modularities = AnalysisHelper.Modularities(network, communities)
            });
        }
Example #2
0
        public void TestRandom()
        {
            var random    = new Random();
            var generator = new RandomMultiLayerGenerator();

            for (var i = 8; i < 15; i++)
            {
                var p           = random.Next(6, 10) / 10.0;
                var l           = random.Next(2, 10);
                var n           = generator.Generate(i, l, p);
                var a           = n.Actors;
                var abacus      = new ABACUS();
                var communities = abacus.Apply(n, n => new Louvain().Apply(n), 2);
                var actors      = communities.SelectMany(c => c.Actors).Distinct();

                Assert.Empty(a.Except(actors));
                communities.ForEach(c => Assert.NotEmpty(c.Actors));
            }
        }
Example #3
0
        public void TwoLayerTriangles()
        {
            var N           = NetworkHelper.TwoLayerTriangles();
            var A           = N.Actors;
            var abacus      = new ABACUS();
            var communities = abacus.Apply(N, n => new Louvain().Apply(n), 2);

            Assert.Collection(communities,
                              com => Assert.Collection(com.Actors,
                                                       a => Assert.Equal(A[0], a),
                                                       a => Assert.Equal(A[1], a),
                                                       a => Assert.Equal(A[2], a)
                                                       ),
                              com => Assert.Collection(com.Actors,
                                                       a => Assert.Equal(A[3], a),
                                                       a => Assert.Equal(A[4], a),
                                                       a => Assert.Equal(A[5], a)
                                                       )
                              );
        }