《巴拉巴西网络科学》学习
相关图表数据的生成代码以及数据 - -python代码
文章主要目的
- 本文主要是对于巴拉巴西网络科学一书P37表格中相关数据的计算代码
- 其中的十个经典网络得原始数据来源于巴拉巴西网络科学一书的在线资源
代码
##巴拉巴西网络科学课本p37 -- python
import networkx as nx
import os
from networkx.algorithms.centrality.degree_alg import in_degree_centrality
from networkx.algorithms.connectivity import edge_augmentation
import numpy as np
import re
##输入数据名,且选择网络是否为有向图
network_name = input('请输入要分析的网络名称:')
is_direct = input('是否为有向图(y/n):')
file_address =".." + os.sep + network_name + '.edgelist.txt'
#构造网络
if is_direct == "y":
g = nx.read_edgelist(file_address, create_using=nx.DiGraph())
print(network_name + "是否是有向图:",nx.is_directed(g))
#统计量
print(network_name + '节点数:',g.number_of_nodes()) #网络节点数
print(network_name + '边数:',g.number_of_edges()) #网络边数
in_degree_list = []
for se in g.in_degree:
in_degree_list.append(se[1])
print(network_name + '平均入度:',sum(in_degree_list)/g.number_of_nodes()) #网络平均
else:
g = nx.read_edgelist(file_address)
print(network_name + "是否是有向图:",nx.is_directed(g))
#统计量
print(network_name + '节点数:',g.number_of_nodes()) #网络节点数
print(network_name + '边数:',g.number_of_edges()) #网络边数
degree_list = []
for se in g.degree:
degree_list.append(se[1])
print(network_name + '平均入度:',sum(degree_list)/g.number_of_nodes()) #网络平均
代码使用说明
- 首先代码为python代码
- 其次代码需要原数据集,数据集及代码链接(点击此处)
- 运行时需要输入要计算的网络名称(eg:protein,metabolic,数据集文件的文件名),和其是否为有向图(eg:y,n)