天天看點

Ubuntu下配置GSL運作網絡嵌入算法line(測試通過)? 說明:well done ! ?

? 說明:

  • 最近在做一些網絡嵌入方面的disease-miRNA連結預測工作,在配置line算法所需運作環境時,折騰了一些時間,故作此筆記,以備檢視。
  • GitHub
  • 測試平台:Ubuntu 16.04 LTS

? 下載下傳line

  • 輸入檔案:line 需要網絡檔案作為輸入,對應後文代碼中提到的?line_needed_links.txt
  • 其中節點的編碼應包含字母,形如D-0, mi-268
  • 若隻用數字編碼,即0, 268,可能會使部分節點向量無法得到

以下是line所用關鍵庫GSL的配置過程 ?

install GSL ❔

  • ?下載下傳GSL
  • 打開上述連結後,往下拉到最後,下載下傳最新的版本gsl-latest.tar.gz,即gsl 2.5版本
tar -zxv -f gsl-latest.tar.gz 
cd gsl-2.5/
clear
mkdir /opt/gsl2.5
sudo mkdir /opt/gsl2.5
./configure --prefix=/opt/gsl2.5
make
sudo make install
nano ~/.bashrc
# add following to the end of .barshrc file
# export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/gsl2.5/include
# export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/gsl2.5/include
# export LIBRARY_PATH=$LIBRARY_PATH:/opt/gsl2.5/lib
source ~/.bashrc
           

compile line.cpp ?

#首先切換工作目錄,即你所下載下傳line的所在位置
cd /media/xk_wang/工作娛樂/2.Project/project-異構網絡嵌入/調試代碼相關/v2.0/算法對比/LINE/linux
#注意 -gsl -lgslcblas -lm -lpthread參數位置及[順序] (即需要将庫連結放在末尾)
#myline是編譯後的可執行檔案名字,也可以取其他名字
gcc -I /opt/gsl2.5/include -L /opt/gsl2.5/lib -o myline line.cpp -lgsl -lgslcblas -lm -lpthread
#若上條指令未通過
将/opt/gsl2.5/lib/下的libgslcblas.so  libgslcblas.so.0  libgsl.so  libgsl.so.23拷貝到/usr/local/lib/
#可用以下指令賦予拷貝權限,像windows下拷貝檔案(Ctrl+c, Ctrl+v)
sudo nautilus
           

configure before run myline ?

  • myline是上述編譯後的可執行檔案名字
#添加環境變量
export PATH=$PATH:/opt/gsl2.5/lib
#使環境變量生效
source /etc/profile
#寫入共享庫緩存目錄
sudo ldconfig
           

====》如果你隻想配置下GSL,那到這裡就完成了~

====》若你想了解一下神奇的網絡嵌入,請繼續浏覽~

run myline ?

# 隻要切換到你所下載下傳line的路徑即可
# 對我而言,這裡挂載了我的“工作娛樂[F]”盤(雙系統,你懂得)
# emmmmm, 好像這裡不用cd了,剛剛已經cd過了
cd /media/xk_wang/工作娛樂/2.Project/project-異構網絡嵌入/調試代碼相關/v2.0/算法對比/LINE/linux
# 小小測試以下,myline就是剛剛編譯後産生的可執行檔案
./myline -train ../../2-layers/datasets/line/line_needed_links.txt -output ../../2-layers/datasets/line/output_vectors/test.txt -size 16 -order 1 -negative 5 -samples 100
           

combine vector ✌️

# 開始訓練咯~
./myline -train ../../2-layers/datasets/line/line_needed_links.txt -output ../../2-layers/datasets/line/output_vectors/line_guided_2_layer.vector.w.l.order1.size32.txt  -size 32 -order 1 -samples 10 -threads 32
./myline -train ../../2-layers/datasets/line/line_needed_links.txt -output ../../2-layers/datasets/line/output_vectors/line_guided_2_layer.vector.w.l.order2.size32.txt  -size 32 -order 2 -samples 10 -threads 32
# 将兩種32維的向量檔案組合為一個64維的向量檔案
python ../line_combine.py -i1 ../../2-layers/datasets/line/output_vectors/line_guided_2_layer.vector.w.l.order1.size32.txt -i2 ../../2-layers/datasets/line/output_vectors/line_guided_2_layer.vector.w.l.order2.size32.txt -o ../../2-layers/datasets/line/output_vectors/line_guided_2_layer.vector.w.l.combined.size64.txt
           

tips ❤️

  • 當輸出檔案的名稱較長時,比如:line_guided_2_layer.vector.w.l.order1.size32.txt
  • 可能會出現這個問題:Segmentation fault (core dumped)
  • 将輸出檔案名稱改短一點即可,如:vector.w.l.order1.size32.txt

well done ! ?

  • 快帶上你的向量檔案做分類、聚類、預測等任務吧~

繼續閱讀