1. 程式人生 > >SNAP(Standford Network Analysis Project)執行環境的搭建與配置

SNAP(Standford Network Analysis Project)執行環境的搭建與配置

    因為我女朋友的研究方向是複雜網路(Complex Network),所以我有時也關注一下這個領域的相關知識,更重要的是要幫女朋友做論文的實驗。雖然對複雜網路瞭解不是很深入,但是其對於資料和實驗結果的依賴是非常嚴重的事實我還是非常明瞭的,這個領域的論文特點就是通篇貫穿實驗資料,通過實驗資料來說明模型的優劣。反觀我研究的信念修正領域,基本上都是數學證明。對於我這樣一個數學功底十分薄弱的人來說,無疑是難上加難。閒話少說,切入本文的主題。SNAP,全稱Standford Network Analysis Project,是斯坦福大學提供的一個功能非常強大的開源工具。這個工具主要用於複雜網路領域的研究工作,它的出現實為科研人員的福音。如果讀者您程式設計能力極佳,且英文非常給力,那麼本篇博文就不要看了,這篇文章是寫給像我這樣的初學者屌絲,高富帥們請繞行。

    1、進入SNAP的官方主頁
  
  英語好的的同學可以直接按照官網的說明進行配置,下面的內容就不用看了。如果你懶得看英文,那麼就按照下面的步驟操作就可以了,本文也就是為了這個目的而寫的。

          

點選進入SNAP官方主頁
    
    2、下載SNAP的原始碼

          點選進入下載SNAP原始碼

    3、下載SNAP相關的三個外掛
         
          Gnuplot  一個繪圖的外掛,在SNAP中會呼叫它來繪製一個複雜網路的相關屬性的統計圖,支援2D和3D。
    
           點選進入Gnuplot官網下載安裝包
  
  Graphviz  同樣是繪圖的外掛,在SNAP中呼叫它來繪製帶有節點和邊的複雜網路圖。

  點選進入Graphviz官網下載安裝包 

  NodeXL  Office的外掛,這個的確非常給力,直接可以做圖,再也不用程式設計畫圖了。

  
點選進入NodeXL官網下載安裝包


    4、安裝必要軟體
  
  (1)Gnuplot和Graphviz是必須安裝的,至於NodeXL,對於SNAP的編譯和執行沒有影響。Gnuplot和Graphviz的安裝非常簡單,一路都是下一步就行了。

  (2)作為一名技術屌絲,我用的是Windows+Visual Studio 2008的環境,使用Linux+GCC的高富帥們請繞行(官方文件有說明),這裡只介紹前者環境下的安裝。如果    你沒有安裝Visual Studio 2008,那麼請自行下載安裝吧,這裡就不給出下載地址了。

  (3)安裝好Visual Studio 2008之後第一次進入是需要選擇編譯環境,選擇Visual C++。如果你以前就安裝過Visual Studio 2008,用它做的C#或Web開發,那麼這時需    要更改一下編譯環境。具體操作如下:工具->匯入和匯出設定嚮導->重置所有設定->否,僅重置設定,從而覆蓋我的當前設定->Visual C++開發設定->完成。

    5、設定系統環境變數

          我的系統的Windows 7 x64 旗艦版,一下步驟請大家參考,不同的Windows系統略有差異,但是問題不大。
    
  (1)右鍵單擊計算機

    

    (2)點選高階系統設定



    (3)點選環境變數


    (4)在系統變數中找到Path,單擊編輯



    (5)在最後加上兩個路徑:
      
      C:\Program Files (x86)\gnuplot\bin
      C:\Program Files (x86)\Graphviz 2.28\bin
      
      這裡注意最後一個路徑之前,任意兩個路徑之間需要用分號";"來分割,而且是英文輸入法狀態下的,最後一個路徑後面沒有分號";"。完成儲存即可。

6、Visual Studio 2008的相關配置

    (1)解壓下載好的Snap-1.10檔案,可以看到內部組成如下:



        這裡簡單說明一下這篇文章用到的資料夾和對應的功能。examples資料夾是一個Visual Studio的解決方案,裡面包括和SNAP的功能例子,雖然都是控制檯應用程式,但是足夠強大了。glib-core、snap-adv、snap-core這三個資料夾是類庫,需要引入到工程中,具體引入方法在後面會具體說明。
    (2)開啟examples資料夾


    (3)開啟解決方案



    (4)這裡有很多工程,隨便點選一個工程,每個工程對應著NSAP的一個功能。這裡以motifs工程為例說明一下配置操作。

      首先,選中motifs工程,專案->屬性->配置屬性->常規->專案預設值->字符集->選擇“使用多位元組字符集”,點選確定完成。這個操作,對每個工程都要操作一遍。



      其次,工具->選項->專案和解決方案->VC++目錄->在“顯示一下內容的目錄”處選擇“包含檔案”(這裡千萬不要忽略,導致包含目錄出錯)->分別增加snap-core、      snap-adv和glib-core三個資料夾的目錄。這個操作只要做一次就可以了。




    最後,編譯執行這個工程就可以了。

7、功能測試

    (1)在命令列中手都執行程式

    在編譯執行之後會發現控制檯應用一閃而過,這是因為這些控制檯應用都是需要使用引數來執行的。這裡採用在命令列中用手動的方式呼叫控制檯應用,這樣的好處    是不用擔心控制檯會關閉,而且程式執行過程的記錄容易檢視。下面是步驟:

    首先,在Snap-1.10/examples/Debug(如果你編譯的時候選的是Release,這裡就是Release)裡面找到motifs.exe、motifs.ilk和motifs.pdb三個檔案,將這三個    檔案拷貝。



    在桌面上建立一個資料夾,命名為motifs,將這三個檔案貼上到這個資料夾中。然後將Snap-1.10/examples下的as20graph.txt,也拷貝到motifs資料夾中。

    其次,開啟命令列:
輸入cd Desktop/motifs
回車
motifs.exe
回車


這裡提示說發生了錯誤,不能開啟as20graph.txt檔案,因為我們在執行motifs.exe時候沒有新增引數,所以預設的../as20graph.txt檔案路徑不對。但是這個操作失誤,卻讓我們看到了引數的具體用法,於是便有了下面這條命令:

輸入 motifs.exe -i:as20graph.txt -m:3 -d:T -o:kbawyg
回車

在看motifs資料夾,生成了許多檔案:


這個功能是用來查詢整個複雜網路中的子圖的,每個子圖結構有兩個檔案。隨便開啟一個gif檔案可以在瀏覽器中看到




8、總結
    
    經過一下午和一晚上的努力,終於把SNAP弄明白了一點,而且可以看到它強大的功能了,希望對那些想用SNAP做實驗和分析的初學者有幫助。SNAP的其他功能,使用方法類似,大家可以試用一下。折騰了半天,覺得這東西的確是很好很強大,對斯坦福、對開源精神充滿無限敬意。