graph-tool网络分析工具是一个高效的基于c++ boost的分析工具。
可以进行多种可视化分析,上几张图:
图K-core decomposition of a network of network scientists
图Adjacency matrix spectrum for the political blog network.
确实是一个非常强大的复杂网络图分析工具,貌似还能够进行社区发现等,稍后进行发掘。
这里先介绍怎么安装,graph-tool的编译安装非常麻烦,依赖的c++库很多。下载 这里是用ubuntu14.04和python2.7进行的安装。
1.GCC, version 4.8 or above (version 4.9 is recommended). For MacOS X, the clang compiler is required. gcc不必说,ubuntu本就自带了。
2.The Boost libraries, version 1.54 or above. boost的安装比较麻烦,先从官网下载包。
boost依赖mpi库,支持正则表达式的UNICODE字符集,libbz
apt-get install mpi-default-dev
apt-get install libicu-dev
apt-get install libbz2-dev
tar -jxvf boost_1_54_0.tar.bz2
cd boost_1_54_0
./bootstrap.sh --prefix=/usr/local #这里prefix是指定安装目录,也可以没有,没有的话指定安装为/usr/local/include 库路径为/usr/local/lib/boost
sudo ./b2 install
可以写个cpp文件测试
#include
#include
using namespace std;
using namespace boost;
int fun(int x,int y){
return x*y;
}
int main(){
int m=1;int n=2;
cout<return 0;
}
如果编译运行通过,那么成功安装。
g++ test.cpp -o test
./test
结果输出为3,参考自这里
3.The expat library. 下载
tar zxvf expat-2.0.1.tar.gz
cd expat-2.0.1
./configure
sudo make install
4.SciPy和Numpy都比较普遍,可以自行找到
5.CGAL
sudo apt-get install libcgal-dev # install the CGAL library
6.sparsehash 可选不需要功能的话可以用参数忽略
7.The GTK+ 3, cairomm, pycairo and matplotlib libraries, used for graph drawing (optional)
GTK+3可以自行查找,需要的东西比较多,但是写的人也挺多
cairomm1.0和pycairo都在这里可以下载 ,安装过程比较简单,和上面很多个包差不多,在INSTALL文件里说明得很清楚。
8.Graphviz 包,可选,网上很多教程可以自行参照
之后就可以编译运行啦!!
./configure #如果没有error的话就可以进行下一步,否则根据提示进行补装或重装
make #过程很长
sudo ./make install
终端输入python,输入以下代码看是否成功:
from graph_tool.all import *
如果没有错误的话,证明是成功了,有错的话,可能是安装错误。
注意了,如果提示的是以下错误是因为用的是python2.7如果用python3的话,没有任何问题
Traceback (most recent call last):
File "" , line 1, in
File "/usr/lib/python2.7/dist-packages/graph_tool/all.py", line 35, in
from graph_tool.draw import *
File "/usr/lib/python2.7/dist-packages/graph_tool/draw/__init__.py", line 797, in
from .cairo_draw import graph_draw, cairo_draw, get_hierarchy_control_points, default_cm
File "/usr/lib/python2.7/dist-packages/graph_tool/draw/cairo_draw.py", line 1855, in
from .. community import get_hierarchy_tree, NestedBlockState, BlockState, OverlapBlockState
File "/usr/lib/python2.7/dist-packages/graph_tool/community/__init__.py", line 128, in
from . blockmodel import minimize_blockmodel_dl, BlockState, mcmc_sweep, \
File "/usr/lib/python2.7/dist-packages/graph_tool/community/blockmodel.py", line 2832, in
from . covariate_blockmodel import *
File "/usr/lib/python2.7/dist-packages/graph_tool/community/covariate_blockmodel.py", line 269
def context_wrapper(*args, revert=False):
^
SyntaxError: invalid syntax
改正参考 官方给出的:
修改/src/graph_tool/community/covariate_blockmodel.py
sudo vim /src/graph_tool/community/covariate_blockmodel.py
保存即可
def __merge_decorator(func):
@contextlib.contextmanager
#这里改
def context_wrapper(*args, revert=False):
return func(*args, revert=revert)
#改为
def context_wrapper(self, l_src, l_tgt, revert=False):
return func(self, l_src, l_tgt, revert=revert)
#这里改
def wrapper(*args, revert=False):
gen = context_wrapper(*args, revert=revert)
#改为
def wrapper(self, l_src, l_tgt, revert=False):
gen = context_wrapper(self, l_src, l_tgt, revert=revert)
#之后正常
if revert:
return gen
else:
好了接下来就可以使用了,官方参考文档有使用方法
下面介绍简单方法(可能功能不全):
1.修改/etc/apt/sources.list
deb http://downloads.skewed.de/apt/trusty trusty universe
deb-src http://downloads.skewed.de/apt/trusty trusty universe
打开软件中心,添加apt-key文件
之后apt-get update,这样需要的Pre-compiled Packages就基本可以下下来,之后:
python2
apt-get install python-graph-tool
python3
apt-get install python3-graph-tool
如果发现import不成功,再进行编译安装也会少很多步骤。依然会出现python2的问题,参照上面自行修改文件即可。