? 說明:
- 最近在做一些網絡嵌入方面的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 ! ?
- 快帶上你的向量檔案做分類、聚類、預測等任務吧~