刚保研华科,老板布置的第一个任务,第一次接触,水平有限外加英文不好,还有外国网站被屏蔽原因,鼓捣了三天才弄好。其中参考了一篇博客,。

SNAP,全称StandfordNetwork Analysis Project,是斯坦福大学提供的一个功能非常强大的开源工具。这个工具主要用于复杂网络领域的研究工作,它的出现实为科研人员的福音。

安装步骤

    1、进入SNAP的官方主页      英语好的的同学可以直接按照官网的说明进行配置,下面的内容就不用看了。如果你懒得看英文,那么就按照下面的步骤操作就可以了,本文也就是为了这个目的而写的。     3、下载SNAP相关的三个插件                     Gnuplot  一个绘图的插件,在SNAP中会调用它来绘制一个复杂网络的相关属性的统计图,支持2D和3D。                 点击进入Gnuplot官网下载安装包      Graphviz  同样是绘图的插件,在SNAP中调用它来绘制带有节点和边的复杂网络图。   点击进入Graphviz官网下载安装包    NodeXL  Office的插件,这个的确非常给力,直接可以做图,再也不用编程画图了。   点击进入NodeXL官网下载安装包

 

 

上面几个文件我已上传云盘,也可以在里面下载,http://yunpan.cn/c327N7unitrfY 访问密码 d56f其中snap文件是snap-2.3版本。

 

 

    4、安装必要软件      (1)Gnuplot和Graphviz是必须安装的,至于NodeXL,对于SNAP的编译和运行没有影响。Gnuplot和Graphviz的安装非常简单,一路都是下一步就行了。   (2)我用的是Windows+Visual Studio 2010(貌似2012版也可以)的环境,Linux+GCC的环境还没用过,以后再说吧(官方文档有说明),这里只介绍前者环境下的安装。   (3)安装好Visual Studio 2010之后第一次进入是需要选择编译环境,选择VisualC++。如果你以前就安装过Visual Studio2010,用它做的C#或Web开发,那么这时需    要更改一下编译环境。具体操作如下:工具->导入和导出设置向导->重置所有设置->否,仅重置设置,从而覆盖我的当前设置->Visual C++开发设置->完成。         5、设置系统环境变量           我的系统的Windows 7 x64 旗舰版,一下步骤请大家参考,不同的Windows系统略有差异,但是问题不大。          (1)右键单击计算机属性   

    (2)点击高级系统设置

斯坦福ios讲视图的 斯坦福snap_SNAP

    (3)点击环境变量

斯坦福ios讲视图的 斯坦福snap_斯坦福ios讲视图的_02

 

   (4)在系统变量中找到Path,单击编辑

斯坦福ios讲视图的 斯坦福snap_SNAP_03

   (5)在最后加上两个路径:(我装在E盘了)              E:\Program Files (x86)\gnuplot\bin       E:\Program Files (x86)\Graphviz 2.28\bin              这里注意最后一个路径之前,任意两个路径之间需要用分号";"来分割,而且是英文输入法状态下的,最后一个路径后面没有分号";"。完成保存即可。 6、Visual Studio 2010的相关配置     (1)解压下载好的Snap文件,可以看到内部组成如下:

斯坦福ios讲视图的 斯坦福snap_Standford Network An_04

        这里简单说明一下这篇文章用到的文件夹和对应的功能。examples文件夹是一个Visual Studio的解决方案,里面包括和SNAP的功能例子,虽然都是控制台应用程序,但是足够强大了。glib-core、snap-adv、snap-core这三个文件夹是类库,需要引入到工程中,具体引入方法在后面会具体说明。

 

    (2)打开examples文件夹

    (3)打开解决方案

找到SnapExamples-VS10.sln文件用vs2010打开。

    (4)这里有很多工程,随便点击一个工程,每个工程对应着NSAP的一个功能。这里以motifs工程为例说明一下配置操作。       首先,选中motifs工程,项目->属性->配置属性->常规->项目默认值->字符集->选择“使用多字节字符集”,点击确定完成。这个操作,对每个工程都要操作一遍。

     其次,工具->选项->项目和解决方案->VC++目录->在“显示一下内容的目录”处选择“包含文件”(这里千万不要忽略,导致包含目录出错)->分别增加snap-core、      snap-adv和glib-core三个文件夹的目录。这个操作只要做一次就可以了。

斯坦福ios讲视图的 斯坦福snap_复杂网络_05

 

    最后,编译运行这个工程就可以了。

7、功能测试     (1)在命令行中手都执行程序     在编译运行之后会发现控制台应用一闪而过,这是因为这些控制台应用都是需要使用参数来运行的。这里采用在命令行中用手动的方式调用控制台应用,这样的好处    是不用担心控制台会关闭,而且程序执行过程的记录容易查看。下面是步骤:     首先,在Snap-2.3/examples/Debug(如果你编译的时候选的是Release,这里就是Release)里面找到motifs.exe、motifs.ilk和motifs.pdb三个文件。然后将Snap/examples下的as20graph.txt,也拷贝到motifs文件夹中。 

其次,cmd打开命令行:进入F: \snap\Snap-2.3\examples\Debug文件夹

输入 motifs.exe回车

会自动生成文件

斯坦福ios讲视图的 斯坦福snap_SNAP_06

或者也可以输入 motifs.exe -i:as20graph.txt -m:3 -d:T -o:syx

(syx 是输出结果的名字)在看motifs文件夹,生成了许多文件:

斯坦福ios讲视图的 斯坦福snap_Standford Network An_07

 

这个功能是用来查找整个复杂网络中的子图的,每个子图结构有两个文件。随便打开一个gif文件可以在浏览器中看到