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))
Ejemplo n.º 4
0
#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))