天天看点

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 ! ?

  • 快带上你的向量文件做分类、聚类、预测等任务吧~

继续阅读