def create_graph_kronecker(objects, properties): #uses alpha-beta method to build kron initEdges = properties['init_edges'] alpha = properties['alpha'] beta = properties['beta'] k = properties['kron_interations'] tryAgain = True init = InitMatrix(properties['kron_seed_nodes']) init.make() init.addSelfEdges() for i in range(len(initEdges)): pos = initEdges[i] index1 = pos[0] index2 = pos[1] if (index1 > properties['kron_seed_nodes'] or index2 > properties['kron_seed_nodes']): raise IOError("init_edges are out of range of seed matrix size") else: init.addEdge(index1, index2) if (properties['kron_seed_self_loops_stochastic'] == False): init.makeStochasticAB(alpha, beta, False) else: init.makeStochasticAB(alpha, beta) while ( tryAgain == True ): #loop to make sure we are connected, should there be a limit to this? final = KroneckerGenerator.generateStochasticKron(init, k, True) is_conn = nx.is_connected(final) if (is_conn == False): print "Graph was not connected, trying again..." tryAgain = True else: tryAgain = False stats = create_graph_stats(final) conn = nx.Graph() for (i, j) in final.edges(): inode = objects[i] jnode = objects[j] conn.add_edge(inode, jnode) return conn, stats
def create_graph_kronecker(objects, properties): # uses alpha-beta method to build kron initEdges = properties["init_edges"] alpha = properties["alpha"] beta = properties["beta"] k = properties["kron_interations"] tryAgain = True init = InitMatrix(properties["kron_seed_nodes"]) init.make() init.addSelfEdges() for i in range(len(initEdges)): pos = initEdges[i] index1 = pos[0] index2 = pos[1] if index1 > properties["kron_seed_nodes"] or index2 > properties["kron_seed_nodes"]: raise IOError("init_edges are out of range of seed matrix size") else: init.addEdge(index1, index2) if properties["kron_seed_self_loops_stochastic"] == False: init.makeStochasticAB(alpha, beta, False) else: init.makeStochasticAB(alpha, beta) while tryAgain == True: # loop to make sure we are connected, should there be a limit to this? final = KroneckerGenerator.generateStochasticKron(init, k, True) is_conn = nx.is_connected(final) if is_conn == False: print "Graph was not connected, trying again..." tryAgain = True else: tryAgain = False stats = create_graph_stats(final) conn = nx.Graph() for (i, j) in final.edges(): inode = objects[i] jnode = objects[j] conn.add_edge(inode, jnode) return conn, stats
#Networkx Graph Gen as Seed Testing, not Stochastic after #G = nx.watts_strogatz_graph(5, 3, 0.1) #G = nx.hypercube_graph(3) #nx.draw(G) #plt.show() # if you want to visualize your seed graph first #init = InitMatrix(nodes) #init = init.makeFromNetworkxGraph(G) #init.addSelfEdges() # if you want to ensure self edges for Kronecker k = 5 print "Seed Matrix Nodes:" print nodes print "Kronecker Iterations:" print k nxgraph = KroneckerGenerator.generateStochasticKron(init, k, True) #for line in nx.generate_edgelist(nxgraph, data=False): # print(line) print "Done Creating Network!" is_bipart = nx.is_bipartite(nxgraph) print "is_bipart:" print is_bipart is_conn = nx.is_connected(nxgraph) print "is_conn:" print is_conn #test #print "Exporting to GML File" #nx.write_gml(nxgraph,"KronSeed1_75a5b.gml") #export to gml file for gephi #nx.draw(nxgraph, pos=nx.spring_layout(nxgraph))
#Networkx Graph Gen as Seed Testing, not Stochastic after #G = nx.watts_strogatz_graph(5, 3, 0.1) #G = nx.hypercube_graph(3) #nx.draw(G) #plt.show() # if you want to visualize your seed graph first #init = InitMatrix(nodes) #init = init.makeFromNetworkxGraph(G) #init.addSelfEdges() # if you want to ensure self edges for Kronecker k = 5 print ("Seed Matrix Nodes:") print (nodes) print ("Kronecker Iterations:") print (k) nxgraph = KroneckerGenerator.generateStochasticKron(init, k, True) #for line in nx.generate_edgelist(nxgraph, data=False): # print(line) print ("Done Creating Network!") is_bipart = nx.is_bipartite(nxgraph) print ("is_bipart:") print (is_bipart) is_conn = nx.is_connected(nxgraph) print ("is_conn:") print (is_conn) #test #print "Exporting to GML File" #nx.write_gml(nxgraph,"KronSeed1_75a5b.gml") #export to gml file for gephi #nx.draw(nxgraph, pos=nx.spring_layout(nxgraph))