graph-tool的编译安装

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的问题,参照上面自行修改文件即可。


你可能感兴趣的:(graph-tool)