本文整理汇总了Python中apgl.graph.SparseGraph.SparseGraph.outDegreeSequence方法的典型用法代码示例。如果您正苦于以下问题:Python SparseGraph.outDegreeSequence方法的具体用法?Python SparseGraph.outDegreeSequence怎么用?Python SparseGraph.outDegreeSequence使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类apgl.graph.SparseGraph.SparseGraph
的用法示例。
在下文中一共展示了SparseGraph.outDegreeSequence方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testDegreeDistribution
# 需要导入模块: from apgl.graph.SparseGraph import SparseGraph [as 别名]
# 或者: from apgl.graph.SparseGraph.SparseGraph import outDegreeSequence [as 别名]
def testDegreeDistribution(self):
#We want to see how the degree distribution changes with kronecker powers
numVertices = 3
numFeatures = 0
vList = VertexList(numVertices, numFeatures)
initialGraph = SparseGraph(vList)
initialGraph.addEdge(0, 1)
initialGraph.addEdge(1, 2)
for i in range(numVertices):
initialGraph.addEdge(i, i)
logging.debug((initialGraph.outDegreeSequence()))
logging.debug((initialGraph.degreeDistribution()))
k = 2
generator = StochasticKroneckerGenerator(initialGraph, k)
graph = generator.generateGraph()
logging.debug((graph.outDegreeSequence()))
logging.debug((graph.degreeDistribution()))
k = 3
generator = StochasticKroneckerGenerator(initialGraph, k)
graph = generator.generateGraph()
logging.debug((graph.degreeDistribution()))
示例2: testGenerate2
# 需要导入模块: from apgl.graph.SparseGraph import SparseGraph [as 别名]
# 或者: from apgl.graph.SparseGraph.SparseGraph import outDegreeSequence [as 别名]
def testGenerate2(self):
"""
Make sure that the generated degree is less than or equal to the given degree
"""
numVertices = 10
for i in range(10):
degSequence = numpy.random.randint(0, 3, numVertices)
generator = ConfigModelGenerator(degSequence)
graph = SparseGraph(GeneralVertexList(numVertices))
graph = generator.generate(graph)
self.assertTrue((graph.outDegreeSequence()<=degSequence).all())
#We try to match an evolving degree sequence
degSequence1 = numpy.array([0,0,1,1,1,2,2,2,3, 4])
degSequence2 = numpy.array([2,0,3,1,2,2,2,2,3, 4])
degSequence3 = numpy.array([2,1,4,1,2,2,2,2,3, 6])
generator = ConfigModelGenerator(degSequence1)
graph = SparseGraph(GeneralVertexList(numVertices))
graph = generator.generate(graph)
self.assertTrue((degSequence1>= graph.outDegreeSequence()).all())
deltaSequence = degSequence2 - graph.outDegreeSequence()
generator = ConfigModelGenerator(deltaSequence)
graph = generator.generate(graph, False)
self.assertTrue((degSequence2>= graph.outDegreeSequence()).all())
deltaSequence = degSequence3 - graph.outDegreeSequence()
generator = ConfigModelGenerator(deltaSequence)
graph = generator.generate(graph, False)
self.assertTrue((degSequence3>= graph.outDegreeSequence()).all())
示例3: testGenerateGraph
# 需要导入模块: from apgl.graph.SparseGraph import SparseGraph [as 别名]
# 或者: from apgl.graph.SparseGraph.SparseGraph import outDegreeSequence [as 别名]
def testGenerateGraph(self):
k = 2
numVertices = 3
numFeatures = 0
vList = VertexList(numVertices, numFeatures)
initialGraph = SparseGraph(vList)
initialGraph.addEdge(0, 1)
initialGraph.addEdge(1, 2)
for i in range(numVertices):
initialGraph.addEdge(i, i)
d = initialGraph.diameter()
degreeSequence = initialGraph.outDegreeSequence()
generator = StochasticKroneckerGenerator(initialGraph, k)
graph = generator.generateGraph()
d2 = graph.diameter()
degreeSequence2 = graph.outDegreeSequence()
self.assertTrue((numpy.kron(degreeSequence, degreeSequence) == degreeSequence2).all())
self.assertTrue(graph.getNumVertices() == numVertices**k)
self.assertTrue(graph.getNumDirEdges() == initialGraph.getNumDirEdges()**k)
self.assertEquals(d, d2)
#Try different k
k = 3
generator.setK(k)
graph = generator.generateGraph()
d3 = graph.diameter()
degreeSequence3 = graph.outDegreeSequence()
self.assertTrue((numpy.kron(degreeSequence, degreeSequence2) == degreeSequence3).all())
self.assertTrue(graph.getNumVertices() == numVertices**k)
self.assertTrue(graph.getNumDirEdges() == initialGraph.getNumDirEdges()**k)
self.assertEquals(d, d3)
#Test the multinomial degree distribution
logging.debug(degreeSequence)
logging.debug(degreeSequence2)
logging.debug(degreeSequence3)
示例4: testGenerate
# 需要导入模块: from apgl.graph.SparseGraph import SparseGraph [as 别名]
# 或者: from apgl.graph.SparseGraph.SparseGraph import outDegreeSequence [as 别名]
def testGenerate(self):
degSequence = numpy.array([2, 1, 3, 0, 0, 0, 0, 0, 0, 1])
generator = ConfigModelGenerator(degSequence)
numVertices = 10
graph = SparseGraph(GeneralVertexList(numVertices))
graph = generator.generate(graph)
tol = 3
self.assertTrue(numpy.linalg.norm(degSequence - graph.degreeSequence()) < tol)
degSequence = numpy.array([2, 1, 3, 0, 2, 1, 4, 0, 0, 1])
generator.setOutDegSequence(degSequence)
graph.removeAllEdges()
graph = generator.generate(graph)
self.assertTrue(numpy.linalg.norm(degSequence - graph.degreeSequence()) < tol)
#Test using a non-empty graph
degSequence = numpy.array([0, 0, 0, 2, 0, 0, 0, 1, 1, 0])
generator.setOutDegSequence(degSequence)
oldDegSequence = graph.degreeSequence()
self.assertRaises(ValueError, generator.generate, graph, True)
graph = generator.generate(graph, False)
diffSequence = graph.degreeSequence() - oldDegSequence
self.assertTrue(numpy.linalg.norm(degSequence - diffSequence) < tol)
#Test the case where we also have an in-degree sequence
degSequence = numpy.array([2, 1, 3, 0, 0, 0, 0, 0, 0, 1])
inDegSequence = numpy.array([1, 1, 1, 1, 1, 1, 1, 0, 0, 0])
generator = ConfigModelGenerator(degSequence, inDegSequence)
graph = SparseGraph(GeneralVertexList(numVertices))
self.assertRaises(ValueError, generator.generate, graph)
graph = SparseGraph(GeneralVertexList(numVertices), False)
graph = generator.generate(graph)
self.assertTrue(numpy.linalg.norm(degSequence - graph.outDegreeSequence()) < tol)
self.assertTrue(numpy.linalg.norm(inDegSequence - graph.inDegreeSequence()) < tol)
outDegSequence = numpy.array([2, 1, 3, 0, 2, 1, 4, 0, 0, 1])
inDegSequence = numpy.array([1, 2, 1, 1, 2, 1, 2, 1, 2, 1])
generator.setOutDegSequence(outDegSequence)
generator.setInDegSequence(inDegSequence)
graph.removeAllEdges()
graph = generator.generate(graph)
self.assertTrue(numpy.linalg.norm(outDegSequence - graph.outDegreeSequence()) < tol)
self.assertTrue(numpy.linalg.norm(inDegSequence - graph.inDegreeSequence()) < tol)
#In the case that the in-degree sequence sum larger than that of the out-degree it is
#not satisfied, but the out-degree should be.
inDegSequence = numpy.array([1, 2, 1, 1, 2, 1, 2, 1, 5, 6])
generator.setInDegSequence(inDegSequence)
graph.removeAllEdges()
graph = generator.generate(graph)
self.assertTrue(numpy.linalg.norm(outDegSequence - graph.outDegreeSequence()) < tol)
#Now try the other way around
generator.setOutDegSequence(inDegSequence)
generator.setInDegSequence(outDegSequence)
graph.removeAllEdges()
graph = generator.generate(graph)
self.assertTrue(numpy.linalg.norm(outDegSequence - graph.inDegreeSequence()) < tol)
#Test growing graph
outDegSequence = numpy.array([2, 1, 3, 0, 2, 1, 4, 0, 0, 1])
inDegSequence = numpy.array([1, 2, 1, 1, 2, 1, 2, 1, 2, 1])
generator.setOutDegSequence(outDegSequence)
generator.setInDegSequence(inDegSequence)
graph.removeAllEdges()
graph = generator.generate(graph)
newOutDegreeSequence = numpy.array([2, 1, 3, 5, 2, 1, 4, 0, 0, 1])
newInDegreeSequence = numpy.array([2, 3, 2, 2, 3, 1, 2, 1, 2, 1])
diffOutSequence = newOutDegreeSequence - graph.outDegreeSequence()
diffInSequence = newInDegreeSequence - graph.inDegreeSequence()
generator.setOutDegSequence(diffOutSequence)
generator.setInDegSequence(diffInSequence)
graph = generator.generate(graph, False)
self.assertTrue(numpy.linalg.norm(newOutDegreeSequence - graph.outDegreeSequence()) < tol)
self.assertTrue(numpy.linalg.norm(newInDegreeSequence - graph.inDegreeSequence()) < tol)