def testScalaraStatistics(self): numVertices = 10 graph = DictGraph(numVertices) graph.addEdge(0, 1) growthStatistics = GraphStatistics() statsArray = growthStatistics.scalarStatistics(graph, False)
def testScalarStatistics(self): numFeatures = 1 numVertices = 10 vList = VertexList(numVertices, numFeatures) graph = SparseGraph(vList) graph.addEdge(0, 1) growthStatistics = GraphStatistics() statsArray = growthStatistics.scalarStatistics(graph) #logging.debug(statsArray) self.assertTrue(statsArray[growthStatistics.numVerticesIndex] == 10.0) self.assertTrue(statsArray[growthStatistics.numEdgesIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.maxComponentSizeIndex] == 2.0) self.assertTrue(statsArray[growthStatistics.maxComponentEdgesIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.numComponentsIndex] == 9.0) self.assertEquals(statsArray[growthStatistics.meanComponentSizeIndex], 10.0/9.0) self.assertTrue(statsArray[growthStatistics.meanDegreeIndex] == 0.2) self.assertTrue(statsArray[growthStatistics.diameterIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.effectiveDiameterIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.densityIndex] == 1.0/45) self.assertEquals(statsArray[growthStatistics.geodesicDistanceIndex], 1.0/55) self.assertEquals(statsArray[growthStatistics.harmonicGeoDistanceIndex], 55.0) self.assertEquals(statsArray[growthStatistics.geodesicDistMaxCompIndex], 1.0/3) self.assertEquals(statsArray[growthStatistics.numNonSingletonComponentsIndex], 1.0) self.assertEquals(statsArray[growthStatistics.numTriOrMoreComponentsIndex], 0.0) self.assertEquals(statsArray[growthStatistics.secondComponentSizeIndex], 1.0) self.assertEquals(statsArray[growthStatistics.maxCompMeanDegreeIndex], 1.0) graph.addEdge(0, 2) graph.addEdge(3,4) graph.addEdge(3,5) graph.addEdge(3,6) graph.addEdge(7,8) statsArray = growthStatistics.scalarStatistics(graph) self.assertEquals(statsArray[growthStatistics.numNonSingletonComponentsIndex], 3.0) self.assertEquals(statsArray[growthStatistics.numTriOrMoreComponentsIndex], 2.0) self.assertEquals(statsArray[growthStatistics.secondComponentSizeIndex], 3.0) self.assertEquals(statsArray[growthStatistics.maxCompMeanDegreeIndex], 1.5) #Test on a directed graph graph = SparseGraph(vList, False) graph.addEdge(0, 1) statsArray = growthStatistics.scalarStatistics(graph, treeStats=True) self.assertTrue(statsArray[growthStatistics.numVerticesIndex] == 10.0) self.assertTrue(statsArray[growthStatistics.numEdgesIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.maxComponentSizeIndex] == -1) self.assertTrue(statsArray[growthStatistics.maxComponentEdgesIndex] == -1) self.assertTrue(statsArray[growthStatistics.numComponentsIndex] == -1) self.assertTrue(statsArray[growthStatistics.meanComponentSizeIndex] == -1) self.assertEquals(statsArray[growthStatistics.meanDegreeIndex], 0.1) self.assertTrue(statsArray[growthStatistics.diameterIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.effectiveDiameterIndex] == 1.0) self.assertTrue(statsArray[growthStatistics.densityIndex] == 1.0/90) self.assertEquals(statsArray[growthStatistics.geodesicDistanceIndex], 1.0/100) self.assertEquals(statsArray[growthStatistics.harmonicGeoDistanceIndex], 100) self.assertEquals(statsArray[growthStatistics.meanTreeSizeIndex], 10.0/9) self.assertEquals(statsArray[growthStatistics.meanTreeDepthIndex], 1.0/9) self.assertEquals(statsArray[growthStatistics.maxTreeSizeIndex], 2.0) self.assertEquals(statsArray[growthStatistics.maxTreeDepthIndex], 1.0) self.assertEquals(statsArray[growthStatistics.numTreesIndex], 9.0) self.assertEquals(statsArray[growthStatistics.numNonSingletonTreesIndex], 1.0) #Test that the max tree is decribed correctly graph.addEdge(2, 3) graph.addEdge(2, 4) graph.addEdge(3, 5) graph.addEdge(3, 6) statsArray = growthStatistics.scalarStatistics(graph, treeStats=True) self.assertEquals(statsArray[growthStatistics.maxTreeSizeIndex], 5.0) self.assertEquals(statsArray[growthStatistics.maxTreeDepthIndex], 2.0) self.assertEquals(statsArray[growthStatistics.secondTreeSizeIndex], 2.0) self.assertEquals(statsArray[growthStatistics.secondTreeDepthIndex], 1.0) self.assertEquals(statsArray[growthStatistics.numTreesIndex], 5.0) self.assertEquals(statsArray[growthStatistics.numNonSingletonTreesIndex], 2.0) #Try a zero size graph numFeatures = 0 numVertices = 0 vList = VertexList(numVertices, numFeatures) graph = SparseGraph(vList) statsArray = growthStatistics.scalarStatistics(graph) self.assertEquals(statsArray[growthStatistics.numVerticesIndex], 0) self.assertEquals(statsArray[growthStatistics.numEdgesIndex], 0) self.assertEquals(statsArray[growthStatistics.maxComponentSizeIndex], 0) self.assertTrue(statsArray[growthStatistics.maxComponentEdgesIndex] == 0) self.assertEquals(statsArray[growthStatistics.numComponentsIndex], 0) self.assertEquals(statsArray[growthStatistics.meanComponentSizeIndex], 0) self.assertEquals(statsArray[growthStatistics.meanDegreeIndex], 0) self.assertEquals(statsArray[growthStatistics.diameterIndex], 0) self.assertEquals(statsArray[growthStatistics.effectiveDiameterIndex], 0) self.assertEquals(statsArray[growthStatistics.densityIndex], 0) self.assertEquals(statsArray[growthStatistics.geodesicDistanceIndex], 0.0) self.assertEquals(statsArray[growthStatistics.harmonicGeoDistanceIndex], 0.0) self.assertEquals(statsArray[growthStatistics.geodesicDistMaxCompIndex], 0.0) self.assertEquals(statsArray[growthStatistics.numNonSingletonComponentsIndex], 0.0) graph = SparseGraph(vList, False) statsArray = growthStatistics.scalarStatistics(graph) self.assertEquals(statsArray[growthStatistics.numVerticesIndex], 0) self.assertEquals(statsArray[growthStatistics.numEdgesIndex], 0) self.assertEquals(statsArray[growthStatistics.maxComponentSizeIndex], -1) self.assertEquals(statsArray[growthStatistics.numComponentsIndex], -1) self.assertEquals(statsArray[growthStatistics.meanComponentSizeIndex], -1) self.assertEquals(statsArray[growthStatistics.maxComponentEdgesIndex], -1) self.assertEquals(statsArray[growthStatistics.meanDegreeIndex], 0) self.assertEquals(statsArray[growthStatistics.diameterIndex], 0) self.assertEquals(statsArray[growthStatistics.effectiveDiameterIndex], 0) self.assertEquals(statsArray[growthStatistics.densityIndex], 0) self.assertEquals(statsArray[growthStatistics.geodesicDistanceIndex], 0.0) self.assertEquals(statsArray[growthStatistics.harmonicGeoDistanceIndex], 0.0) self.assertEquals(statsArray[growthStatistics.geodesicDistMaxCompIndex], -1) self.assertEquals(statsArray[growthStatistics.meanTreeSizeIndex], -1) self.assertEquals(statsArray[growthStatistics.meanTreeDepthIndex], -1) self.assertEquals(statsArray[growthStatistics.numNonSingletonComponentsIndex], -1) self.assertEquals(statsArray[growthStatistics.numTreesIndex], -1) self.assertEquals(statsArray[growthStatistics.numNonSingletonTreesIndex], -1)