一.Windows上的Beagle读取问题

前言:在使用Beast分析数据时,有些版本强制使用BEAGLE,或者有些分析需要用到BEAGLE(比如定义了traits)。
笔者最近遇到一件很…奇葩的事,由于之前一直用的是Beast1.8,且建不带traits的MCC树分析时是不需要用到BEAGLE的,所以在“是否使用BEAGLE”这一栏一直没有打勾。
但是,在进行BSSVS分析时,由于定义了几个地区的traits,故需要用到BEAGLE。在windows上安装了好几个版本的BEAGLE,环境变量什么的也都设置了,可是Beast1.8在跑数据时怎么都读取不了BEAGLE,报错如下:

ailed to load BEAGLE library: no hmsbeagle32 in java.library.path BEAGLE not installed/found

  1. 明明设置了环境变量啊......<br /> 但是,在同样的设置和操作下,Beast1.10却可以完美读取BEAGLE。<br /> 问题到底出在哪里?<br /> 笔者一时不知道该把这个锅甩给谁.....<br /> **测试记录如下(Windows):**
BEAST版本 是否强制加载BEAGLE BEAGLE版本 运行情况
1.8.4 2.1 读取BEAGLE失败
1.8.4 3.0 读取BEAGLE失败
1.8.4 3.1 读取BEAGLE失败
1.10.4 2.1 正常读取
1.10.4 3.0 正常读取
1.10.4 3.1 正常读取
2.5.1 3.0 正常读取
2.5.1 3.1 正常读取

故对于Windows系统上的beast1.x系列,如果分析的数据需要定义traits,推荐使用beast1.10.4版本。


二.Ubuntu16.04上安装beagle

前言:使用beast,当开启traits时,如将地理信息作为traits,后续beast运行数据程序要求开启beagle,但是在linux上安装beagle以及能让beagle正常使用,是一件很让人头痛的事。当然,官网是给出了在Linux上安装beagle的教程,但是在实际操作时总会遇到这样或者那样的报错,笔者将自己在Ubuntu16.04上成功安装beagle的经历记录在这里,以供碰到同样问题的人参考。
官网教程链接:https://github.com/beagle-dev/beagle-lib/wiki/LinuxInstallInstructions
注:**官网教程仅供参考,笔者安装beagle与官网教程有些许出入。**
——————————————————————————————————————————————————————————-

1.安装前准备

(1)检查编译beagle需要的工具是否安装
由于官网提供的beagle这个包是采取源码编译进行安装,安装过程中需要一些依赖的工具。当然,其中的一些或许我们的Linux上早有安装,现在看看beagle需要哪些依赖的工具:
Beagle的问题 - 图1
上面这些工具包是必须的,也就是在安装beagle前,先要检查自己的Linux上有没有安装这些工具包,命令如下:

  1. $ dpkg --get-selections | grep 包名

比如笔者查看是自己的Ubuntu上否安装有gcc和make工具:
Beagle的问题 - 图2

如果没有安装某个包,ubuntu上则可以使用下面命令进行安装:

  1. $ sudo apt-get install 包名

(2)一些环境包
官网建议,安装下面这些:
Beagle的问题 - 图3
但是,凡是都有但是。这也是需要特别注意的地方,官网教程上的意思是,在安装beagle前,要安装OpenCL、NVIDIA显卡驱动这些东西。因为ubuntu 16.04默认安装的是第三方开源的驱动程序nouveau,于是笔者开始去网上找教程安装NVIDIA显卡驱动,然而在Linux上安装NVIDIA显卡驱动非常麻烦,可能安装不成功,要么安装成功了会遇到驱动冲突,循环登录等一系列问题,这些笔者都亲身体验,以安装失败告终(大家可以百度查查,或者亲身体验下)。
而且,笔者还发现自己的服务器上安装的是集成显卡,于是问题又多了一大堆。
可是官网说安装beagle需要安装这些啊?
最后,**笔者被逼无赖,选择不安装OpenCL和NVIDIA显卡驱动,只安装java**(也就是上图的java JDK,实际上笔者的ubuntu上早有安装java)
为了确保自己的ubuntu上确实安装有java,笔者进行了查询:
Beagle的问题 - 图4

以上表明java及javac已经成功安装(javac不需要单独安装,安装java JDK就会同时产生)

2.安装beagle

有了上面的基础,笔者现在假设ubuntu上已经把gcc、make、autoconf、automake、libtool、subversion、pkg-config以及java安装了,而OpenCL和NVIDIA显卡驱动则不进行安装,不用管。
(1)安装beagle命令如下:

  1. $ cd
  2. $ git clone --depth=1 https://github.com/beagle-dev/beagle-lib.git
  3. $ cd beagle-lib
  4. $ ./autogen.sh
  5. $ ./configure --prefix=$HOME
  6. $ make install
  7. $ cd

注意,命令cd,是切换到该账户的家目录下。上面的代码,会将beagle安装在该账户下的lib文件夹里,可以通过ls命令查看。

(2)需要注意的是:
①笔者之前由于java出了点问题,在./configure --prefix=$HOME这一步老是报错提示找不到javac(即使用 which javac命令找不到javac,但是可以找到java),后来重新安装了一次java,javac就可以正常工作,./configure --prefix=$HOME这一步编译也就可以正常进行了。
②由于没有安装OpenCL和NVIDIA显卡驱动,执行make install这一步后,会有诸如没有OpenCL和NVIDIA显卡驱动的警告提示(只是警告,并非bug),但是我们不用管它。

3.设置环境变量

(1)紧接上面的安装beagle命令

  1. # 第一步,打开设置环境变量的文件.bashrc
  2. $ sudo vi .bashrc
  3. #按i进入编辑模式,通过键盘下标键,将光标移动到文尾,将以下内容粘贴到文尾进去后,再按键盘“Esc”键,之后输入字符:wq!保存并退出文本bashrc。
  4. #以下是粘贴到文件bashrc文本文尾的内容
  5. export LD_LIBRARY_PATH=$HOME/lib:$LD_LIBRARY_PATH
  6. export PKG_CONFIG_PATH=$HOME/lib/pkgconfig:$PKG_CONFIG_PATH
  7. export PATH=$PATH:/home/gong/桌面/bioinfo/BEASTv1.10.4/BEASTv1.10.4/bin
  8. export CLASSPATH=.:/home/gong/桌面/bioinfo/BEASTv1.10.4/BEASTv1.10.4/lib

如下:
Beagle的问题 - 图5
上面操作的本质,是将本次安装的beagle所在的目录路径(示例是账户下lib文件夹),以及BEAST软件包所在目录路径添加到环境变量(笔者ubuntu上已有BEASTv1.10.4)。
注意:具体BEAST软件包的bin和lib文件夹所在的路径请填上自己的,上面的路径是笔者的。

(2)更新.bashrc

  1. $ source .bashrc

没有报错提示,表明更新成功,如果有报错,请检查上一步往文件bashrc里粘贴东西时,是否粘贴不全等等。

4.检查beagle是否安装成功

示例:先进入BEASTv1.10.4软件包的bin目录,再在命令端输入:

  1. $ ./beast -beagle_info

beagle安装成功,则会显示如下红色方框里的信息:
Beagle的问题 - 图6

  1. Linux上安装beagle血泪史介绍到这里,之后可以在服务器上图形版beast里大胆地勾选beagle,或者在命令行里开启beagle,结合beagle来跑数据了。

FAQ:为什么不介绍Windows上的Beagle的安装?
A:呃,这个,Windows安装Beagle这个软件和安装其他软件没什么区别,一路点击鼠标就行。

欢迎转载,请注明出处。