Python networkx 模块,number_of_nodes() 实例源码

我们从Python开源项目中,提取了以下14个代码示例,用于说明如何使用networkx.number_of_nodes()

项目:phasm    作者:AbeelLab    | 项目源码 | 文件源码
def toplogical_sort(self, g: AssemblyGraph, source: Node):
        n = networkx.number_of_nodes(g)
        visited = set()
        order = n-1
        ordering = deque()

        def _toposort_recurse(source):
            nonlocal g, order, visited

            visited.add(source)

            for neighbour in g.neighbors_iter(source):
                if neighbour not in visited:
                    _toposort_recurse(neighbour)

            ordering.appendleft((source, order))
            order -= 1

        _toposort_recurse(source)
        return ordering
项目:diluvian    作者:aschampion    | 项目源码 | 文件源码
def skeleton_to_swc(skeleton, offset, resolution):
    import networkx as nx

    g = nx.Graph()
    g.add_nodes_from(skeleton.nodes())
    g.add_edges_from((e.u, e.v) for e in skeleton.edges())

    # Find a directed tree for mapping to a skeleton.
    if nx.number_of_nodes(g) > 1:
        # This discards cyclic edges in the graph.
        t = nx.bfs_tree(nx.minimum_spanning_tree(g), g.nodes()[0])
    else:
        t = nx.DiGraph()
        t.add_nodes_from(g)
    # Copy node attributes
    for n in t.nodes_iter():
        loc = skeleton.locations(n)
        # skeletopyze is z, y, x (as it should be).
        loc = np.array(loc)
        loc = np.multiply(loc + offset, resolution)
        t.node[n].update({'x': loc[0],
                          'y': loc[1],
                          'z': loc[2],
                          'radius': skeleton.diameters(n) / 2.0})

    # Set parent node ID
    for n, nbrs in t.adjacency_iter():
        for nbr in nbrs:
            t.node[nbr]['parent_id'] = n
            if 'radius' not in t.node[nbr]:
                t.node[nbr]['radius'] = -1

    return [[
        node_id,
        0,
        n['x'], n['y'], n['z'],
        n['radius'],
        n.get('parent_id', -1)] for node_id, n in t.nodes(data=True)]
项目:ocean    作者:worldoss    | 项目源码 | 文件源码
def create_graph(self):
        path = ""
        data = pd.read_csv(path + '../../worldoss:ocean/Web_Crawler/generated_repo_topic_data.csv', error_bad_lines=False, header=None,
                           sep=",", delimiter='\n')  # pandas ?????? ???? SNA ?? csv ?? ????
        # Creating node list
        node = []
        for i in data.values:
            for j in i[0].split(',')[1:]:
                node.append(j)

        node = list(set(node))

        # Creating edge list
        self.edges = []

        for i in data.values:
            l = i[0].split(',')[1:]
            for j in range(len(l)):
                for k in range(j + 1, len(l)):
                    self.edges.append((l[j], l[k]))

        self.G = nx.Graph()
        self.G.add_nodes_from(node)
        self.G.add_edges_from(self.edges)

        print nx.number_of_nodes(self.G)
        print nx.number_of_edges(self.G)
项目:ocean    作者:worldoss    | 项目源码 | 文件源码
def centrality(self):

        with open('community_test.csv','rU') as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                cluster = row[1:]
                edges = []
                print cluster
                for i in self.edges:
                    for j in cluster:
                        if i[0] == j:
                            for k in cluster:
                                if i[1] == k:
                                    edges.append(i)
                        if i[1] == j:
                            for k in cluster:
                                if i[0] == k:
                                    edges.append(i)

                C = nx.Graph()
                C.add_nodes_from(cluster)
                C.add_edges_from(edges)

                node_count=nx.number_of_nodes(C)
                edge_count=nx.number_of_edges(C)

                print node_count, edge_count

                cent = self.degree_centrality_custom(C)

                print cent

                with open('centrality_test.csv','a') as csvfile:
                    writer = csv.writer(csvfile)
                    writer.writerow(['Community '+row[0],'Node: '+str(node_count),'Edge: '+str(edge_count)])
                    for i,j in cent.items():
                        writer.writerow([i,j])
                print 'Finished Community '+row[0]
项目:PhD    作者:wutaoadeny    | 项目源码 | 文件源码
def Attributes_of_Graph(G):
    print "*Statistic attributes of graphs:"
    print "N", nx.number_of_nodes(G)
    print "M", nx.number_of_edges(G)

    print "C", nx.average_clustering(G)
    #print "<d>", nx.average_shortest_path_length(G)
    print "r", nx.degree_assortativity_coefficient(G)

    degree_list = list(G.degree_iter())
    max_degree = 0
    min_degree = 0
    avg_degree_1 = 0.0
    avg_degree_2 = 0.0
    for node in degree_list:
        avg_degree_1 = avg_degree_1 + node[1]
        avg_degree_2 = avg_degree_2 + node[1]*node[1]
        if node[1] > max_degree:
            max_degree = node[1]
        if node[1] < min_degree:
            min_degree = node[1]
    #end for
    avg_degree = avg_degree_1/len(degree_list)
    avg_degree_square = (avg_degree_2/len(degree_list)) / (avg_degree*avg_degree)
    print "<k>", avg_degree
    print "k_max", max_degree
    print "H", avg_degree_square
    print "DH", float(max_degree-min_degree)/G.number_of_nodes()

#************************************************************************
项目:PhD    作者:wutaoadeny    | 项目源码 | 文件源码
def Attributes_of_Graph(G):
    print "*Statistic attributes of graphs:"
    print "N", nx.number_of_nodes(G)
    print "M", nx.number_of_edges(G)

    print "C", nx.average_clustering(G)
    #print "<d>", nx.average_shortest_path_length(G)
    print "r", nx.degree_assortativity_coefficient(G)

    degree_list = list(G.degree_iter())
    max_degree = 0
    min_degree = 0
    avg_degree_1 = 0.0
    avg_degree_2 = 0.0
    for node in degree_list:
        avg_degree_1 = avg_degree_1 + node[1]
        avg_degree_2 = avg_degree_2 + node[1]*node[1]
        if node[1] > max_degree:
            max_degree = node[1]
        if node[1] < min_degree:
            min_degree = node[1]
    #end for
    avg_degree = avg_degree_1/len(degree_list)
    avg_degree_square = (avg_degree_2/len(degree_list)) / (avg_degree*avg_degree)
    print "<k>", avg_degree
    print "k_max", max_degree
    print "H (degree heterogeneity)", avg_degree_square
    print "S (average span of degree distribution)", float(max_degree-min_degree)/G.number_of_nodes()



#*******************************************************************
项目:PhD    作者:wutaoadeny    | 项目源码 | 文件源码
def Degree_distribution(G):
    Nodes = G.nodes()
    Degree_List = []
    Degree_Dic = {}
    for i in Nodes:
        Degree_List.append(G.degree(i))
    Degree_List = sorted(Degree_List, reverse = False)
    Flag = Degree_List[0]
    Count = 1
    for i in Degree_List[1:]:
        if i !=Flag:
            Degree_Dic[Flag] = Count
            Count = 1
            Flag = i
        else:
            Count = Count + 1
    #end for
    #print Degree_Dic
    n = G.number_of_nodes()
    plt.figure(1)
    ax1 = plt.subplot(111)
    plt.sca(ax1)
    #x = list([(i+1) for i in range(0,len(Degree_List))])
    x = sorted(Degree_Dic.keys(), reverse = False)
    y = []
    for i in x:
        y.append(float(Degree_Dic[i])/n)
    #end for
    plt.plot(x, y, "rs-")
    plt.ylabel("Probability")
    plt.xlabel("Degree K")
    plt.title("Degree distribution of networks")
    plt.show()


#************************************************************************
项目:analyse_website_dns    作者:mrcheng0910    | 项目源码 | 文件源码
def main():
    edges = []   # ???????
    domain_name = 'taobao.com'
    domain_pkts = get_data(domain_name)

    for i in domain_pkts[0]['details']:
        for v in i['answers']:
            edges.append((v['domain_name'],v['dm_data']))

    plt.figure(1, figsize=(10, 8))
    G = nx.Graph()
    G.add_edges_from(edges)

    pos = graphviz_layout(G, prog="fdp") #neato fdp
    C = nx.connected_component_subgraphs(G)  # ?????????????

    for g in C:
        c = [random.random()] * nx.number_of_nodes(g)
        nx.draw(g,
                pos,
                node_size=90,
                node_color=c,
                vmin=0.0,
                vmax=1.0,
                with_labels=False
        )
    plt.savefig('./graph/'+domain_name+"_relation.png", dpi=75)
    plt.show()
项目:maple    作者:Zhengzi    | 项目源码 | 文件源码
def merge_node(path,new_path):
    g = nx.read_gml(path)
    nodes = [n for n,d in g.out_degree().items() if d==1]
    for node in nodes:
        if not node in g.nodes():
            continue

        if g.in_degree(node) != 1:
            continue    
        p = g.successors(node)
        #print p
        #dict = g.in_degree(p)
        #print dict[p]
        #print g.in_degree(p)[p[0]]
        if g.in_degree(p)[p[0]] == 1:
            text1 = g.node[node]["text"]
            text1 = remove_last_jump(text1)
            text2 = g.node[p[0]]["text"]

            #print text1
            #print text2

            new_text = text1 + ',' + text2
            #print new_text

            nns = g.successors(p[0])
            g.node[node]["text"] = new_text

            for n in nns:
                g.add_edge(node, n)
            g.remove_node(p[0])
    nx.write_gml(g, new_path)
    return nx.number_of_nodes(g)
项目:SoS    作者:vatlab    | 项目源码 | 文件源码
def num_nodes(self):
        return nx.number_of_nodes(self)
项目:rce-ml    作者:vadimkotov    | 项目源码 | 文件源码
def get_paths(self):
        # If there's only one node
        if nx.number_of_nodes(self.graph) == 1:
            self.shortest_path = self.longest_path = [self.function_start]
            return [[self.function_start]]

        # If there aren't any obvious exit blocks
        if len(self.exit_blocks) == 0:
            return

        # We need to go through all the possible paths from
        # function start to each of exit blocks
        all_paths = []

        longest_path_len = 0
        shortest_path_len = None

        for ret in self.exit_blocks:
            paths = (nx.all_simple_paths(self.graph, source = self.function_start, target = ret))

            for path in paths:
                if len(path) > longest_path_len:
                    longest_path_len = len(path)
                    self.longest_path = path

                if not shortest_path_len or len(path) < shortest_path_len:
                    shortest_path_len = len(path)
                    self.shortest_path = path

            all_paths.extend(paths)

        return all_paths
项目:Networks    作者:dencesun    | 项目源码 | 文件源码
def motif_m7(g):
    n = nx.number_of_nodes(g)
    W = np.zeros((n, n), dtype=float)
    W = np.mat(W)

    # nei = set(nx.all_neighbors(g, 2))
    # print('all_neighbors: ', nei)
    for u in range(1, n+1):
        u_neighbors = set(nx.all_neighbors(g, u))
        # sorted(u_neighbors)
        # print(u, u_neighbors)
        for v in u_neighbors:
            if v < u:
                continue
            v_neighbors = set(nx.all_neighbors(g, v))
            # sorted(v_neighbors)
            for w in v_neighbors:
                if w < u or w < v:
                    continue
                if g.has_edge(u, v) and g.has_edge(v, u) and g.has_edge(u, w) and g.has_edge(v, w):
                    W[u - 1, w - 1] = W[u - 1, w - 1] + 1
                    W[w - 1, u - 1] = W[w - 1, u - 1] + 1
                    W[u - 1, v - 1] = W[u - 1, v - 1] + 1
                    W[v - 1, u - 1] = W[v - 1, u - 1] + 1
                    W[v - 1, w - 1] = W[v - 1, w - 1] + 1
                    W[w - 1, v - 1] = W[w - 1, v - 1] + 1
                    continue
                if g.has_edge(u, w) and g.has_edge(w, u) and g.has_edge(u, v) and g.has_edge(w, v):
                    W[u - 1, w - 1] = W[u - 1, w - 1] + 1
                    W[w - 1, u - 1] = W[w - 1, u - 1] + 1
                    W[u - 1, v - 1] = W[u - 1, v - 1] + 1
                    W[v - 1, u - 1] = W[v - 1, u - 1] + 1
                    W[v - 1, w - 1] = W[v - 1, w - 1] + 1
                    W[w - 1, v - 1] = W[w - 1, v - 1] + 1
                    continue
                if g.has_edge(v, w) and g.has_edge(w, v) and g.has_edge(w, u) and g.has_edge(v, u):
                    W[u - 1, w - 1] = W[u - 1, w - 1] + 1
                    W[w - 1, u - 1] = W[w - 1, u - 1] + 1
                    W[u - 1, v - 1] = W[u - 1, v - 1] + 1
                    W[v - 1, u - 1] = W[v - 1, u - 1] + 1
                    W[v - 1, w - 1] = W[v - 1, w - 1] + 1
                    W[w - 1, v - 1] = W[w - 1, v - 1] + 1
                    continue
    # print(W)
    # print(type(W))

    return W
项目:Networks    作者:dencesun    | 项目源码 | 文件源码
def count_motif(g):
    count_number = list([0])*13
    n = nx.number_of_nodes(g)
    node_set = set()

    for u in range(1, n+1):
        if not g.has_node(u):
            continue
        for v in range(u+1, n+1):
            if not g.has_node(v):
                continue
            u_neighbors = list(set(nx.all_neighbors(g, u)))
            v_neighbors = list(set(nx.all_neighbors(g, v)))
            for i in u_neighbors:
                if i > v and i > u:
                    node_set.add(i)
            for i in v_neighbors:
                if i > v and i > u:
                    node_set.add(i)
            if len(node_set) <= 0:
                continue
            print(u, v, node_set)
            for w in node_set:
                if count_m1(g, u, v, w):
                    count_number[0] += 1
                elif count_m2(g, u, v, w):
                    count_number[1] += 1
                elif count_m3(g, u, v, w):
                    count_number[2] += 1
                elif count_m4(g, u, v, w):
                    count_number[3] += 1
                elif count_m5(g, u, v, w):
                    count_number[4] += 1
                elif count_m6(g, u, v, w):
                    count_number[5] += 1
                elif count_m7(g, u, v, w):
                    count_number[6] += 1
                elif count_m8(g, u, v, w):
                    count_number[7] += 1
                elif count_m9(g, u, v, w):
                    count_number[8] += 1
                elif count_m10(g, u, v, w):
                    count_number[9] += 1
                elif count_m11(g, u, v, w):
                    count_number[10] += 1
                elif count_m12(g, u, v, w):
                    count_number[11] += 1
                elif count_m13(g, u, v, w):
                    count_number[12] += 1

            node_set.clear()

    print(count_number)
项目:HRG    作者:nddsg    | 项目源码 | 文件源码
def bfs_eff_diam(G, NTestNodes, P):
    EffDiam = -1
    FullDiam = -1
    AvgSPL = -1

    DistToCntH = {}

    NodeIdV = nx.nodes(G)
    random.shuffle(NodeIdV)

    for tries in range(0, min(NTestNodes, nx.number_of_nodes(G))):
        NId = NodeIdV[tries]
        b = nx.bfs_successors(G, NId)
        for l, h in hops(b, NId):
            if h is 0: continue
            if not l + 1 in DistToCntH:
                DistToCntH[l + 1] = h
            else:
                DistToCntH[l + 1] += h

    DistNbrsPdfV = {}
    SumPathL = 0.0
    PathCnt = 0.0
    for i in DistToCntH.keys():
        DistNbrsPdfV[i] = DistToCntH[i]
        SumPathL += i * DistToCntH[i]
        PathCnt += DistToCntH[i]

    oDistNbrsPdfV = collections.OrderedDict(sorted(DistNbrsPdfV.items()))

    CdfV = oDistNbrsPdfV
    for i in range(1, len(CdfV)):
        if not i + 1 in CdfV:
            CdfV[i + 1] = 0
        CdfV[i + 1] = CdfV[i] + CdfV[i + 1]

    EffPairs = P * CdfV[next(reversed(CdfV))]

    for ValN in CdfV.keys():
        if CdfV[ValN] > EffPairs: break

    if ValN >= len(CdfV): return next(reversed(CdfV))
    if ValN is 0: return 1
    # interpolate
    DeltaNbrs = CdfV[ValN] - CdfV[ValN - 1];
    if DeltaNbrs is 0: return ValN;
    return ValN - 1 + (EffPairs - CdfV[ValN - 1]) / DeltaNbrs