Amber系列1 - Amber16介绍和安装

1. Amber - 介绍

Amber是一套让用户能够进行分子动力学模拟的程序组, 特别是用于生物分子的模拟. 没有单个的程序使用Amber这个名称, 但各部分能很好地协同工作, 并为许多常用的计算提供了强大的框架. [1, 2] 术语Amber也用来指实现的经验力场. [3, 4]然而, 应当认识到, 该代码和力场是分开的: 若干其他计算程序包已经实现了Amber力场, 并且Amber程序组也可以使用其他力场. 此外, 该力场是公开的, 而程序代码需要授权许可协议.

Amber软件组分为两部分:1) AmberTools16/17 一组可免费获取的程序组, 多数遵循GPL证书; 2)Amber16, 以 pmemd模拟程序为中心, 除继续以前的证书协议外, 还受更有约束力的证书限制.

AmberTools 是一套用于生物分子模拟和分析的程序. 它们设计用于互相配合, 协同工作, 也同样与”常规” Amber程序组协同工作. 您可以使用 AmberTools 执行许多模拟任务, 您可以使用 AmberToolsAmber 本身的组合进行更广泛的模拟. AmberTools 的大部分组件都是在GNU通用公共许可证(GPL)下发布的. 少量组件属于公共领域或拥有其他开源许可证. 请参阅README文件获取更多信息.

以上就是官方发介绍内容,感谢哲●科●文Jerkwin发表在其博文上分享给大家,更多的内容大家可以去其官网阅读。

下面我们就说怎么安装吧!

2. Amber - 安装

在这一节中,我们将去概述如何安装和测试Amber。 实际上Amber网页(http://ambermd.org)和各个博客都会讲怎么去安装 AmberTools167Amber16,尤其在官方的文档中详细介绍了安装过程。遗憾的是,大家在实际的使用过程中,总是会遇到各种安装错误,这些错误主要来自于我们的系统中的环境设置和相关依赖包的版本等问题。

要知道AmberTools167Amber16都不是最新的软件,已经发布了几年了,这个时候Amber软件需要的老版本的依赖包,但是我们的系统安装的往往是最新版本的依赖包,这个时候我们去安装往往会有很多错误。此外,Amber是要部署到Linxu服务器上的,但是您的用户面临着root权限的问题。

针对这些问题,我们有没有什么比较好的方法呢?

最近Docker技术的出现给我提供了一个解决方案。应用Docker技术可以解决root权限的问题,不会影响服务器上安装的软件,同时在完成后,可以快速的移植到新的服务器上。下面让我们来具体看如何安装Amber。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

最后,如果你不想用Docker的话,可以直接跳过Docker的相关内容,直接看Amber安装的相关介绍

2.1. Docker - 安装

这里给推荐BUNOOB上的Docker 教程,这个教程已经详细介绍了各个系统上是如何安装Docker的,包括了Windows,Ubuntu,CentOS和MacOS。我这里就不再详细的介绍了。

现在,我在本地Windows10和服务器(CentOS)上都安装了Docker。基本上我都是在本地弄完后,直接将镜像提供给服务器。

2.2. Docker - 镜像构建

实际上不用Docker也行,可以直接在Linux服务器上安装。

如果你不需要Docker的话,请直接跳到2.3.Amber - 安装开始阅读

我们首先需要构建一个用于安装Amber的Docker镜像,实际上这个镜像就是一个虚拟的Linux环境。在进入这个环境后,我可以按照平常在Linux下的习惯进行操作。

熟悉Docker的都知道我们可以从头开始构建这个系统,但是我们也要了解到Docker的库中包含了很多其他作者分享的镜像,我们可以直接去使用这些镜像。在试过几个版本后,这里我们推荐大家去安装indigodatacloudapps/ambertools-oneclient的镜像,它也有相应的Github地址,相应的说明也比较详细。

我们可以看看这个镜像的Dockerfile文件来基本了解这个镜像

# docker build --rm -t ambertools-oneclient .
FROM lipcomputing/ansible-ubuntu16.04
MAINTAINER Mario David <mariojmdavid@gmail.com>
LABEL description="Container image to run AmberTools v17. Installed Oneclient"

ENV AMBERHOME /usr/local/amber16
ENV PATH $PATH:AMBERHOME/bin
ENV LD_LIBRARY_PATH $AMBERHOME/lib
RUN apt-get update && apt-get -y install openjdk-8-jdk maven
RUN ansible-galaxy install git+https://github.com/indigo-dc/ansible-role-oneclient.git &&\
    ansible-galaxy install git+https://github.com/indigo-dc/ansible-role-ambertools.git && \
    ansible-playbook /etc/ansible/roles/ansible-role-oneclient/tests/oneclient.yml && \
    ansible-playbook /etc/ansible/roles/ansible-role-ambertools/tests/ambertools.yml

系统:ubuntu16.04

2.2.1. 镜像安装

本地Win10安装完Docker后,我们就可以在cmd命令行中使用了。这里我用到CMD终端是ConEmu,相比Windows原声的CMD终端好用很多。

# 下载镜像
$ docker pull indigodatacloudapps/ambertools-oneclient
# 查看现有的镜像
$ docker images

2.2.2. 容器生成

下载完镜像后,我们生成相应的Docker容器,并将这个容器命名为amber16这个容器就是相当与我们的Linux虚拟环境:

# 生成容器,并进入容器的交互终端
$ docker run -it --name="amber16" indigodatacloudapps/ambertools-oneclient /bin/bash
root@6f2d0fe3a778:/#
# 退出容器
root@6f2d0fe3a778:/# exit

2.2.3. 文件传输

我们要事先准备好Amber相关的安装包AmberTools17.tar.bz2Amber16.tar.bz2,分别是保存在相关目录下:

Virtual@VIRTUAL D:\Data\BaiduYunDownload\Amber
$ dir
 驱动器 D 中的卷是 新加卷
 卷的序列号是 9CDC-0A90

 D:\Data\BaiduYunDownload\Amber 的目录

2018/08/29  16:44    <DIR>          .
2018/08/29  16:44    <DIR>          ..
2017/11/13  15:05        62,444,314 Amber16.tar.bz2
2017/11/13  15:55       359,955,025 AmberTools17.tar.bz2
               2 个文件    422,399,339 字节
               2 个目录 97,530,105,856 可用字节

记住在我们前面退出容器的时候,我们就已经关闭了容器,这里我们需要再次开启容器:

$ docker start amber16

将我们在Amber目录传送到容器amber16root目录下:

$ docker cp D:\Data\BaiduYunDownload\Amber amber16:/root/

传输完成后,我再次开启容器的交互终端:

$ docker exec -it amber16 /bin/bash
root@6f2d0fe3a778:/#

2.3. Amber - 安装

在完成上述的文件传输后,我们就正式开始Amber的安装了,实际上官网上就有详细的教程。

需要注意的是:我们的使用的镜像生成的容器已经设置好AMBERHOME环境变量

root@6f2d0fe3a778:/# echo $AMBERHOME
/usr/local/amber16

现在正式开始吧!!

注意后续过程中,我将用符号$代替root@6f2d0fe3a778:/....#,以便内容整洁

2.3.1. 文件解压和环境变量设置

  1. 首先, 我们通过上面的传输,我们将AmberTools17.tar.bz2Amber16.tar.bz2安装包存放在/root/Amber目录下:

    $ cd /root/Amber
    $ tar xvfj AmberTools17.tar.bz2  #(注意: 提取到"amber16"目录中)
    $ tar xvfj Amber16.tar.bz2       #(只有当你拥有Amber16的许可证时才可以进行!)
    $ ls
    Amber16.tar.bz2  AmberTools17.tar.bz2  amber16
    

    最终解压得到amber16文件夹,其中包含了Amber软件的相关内容

  2. 下一步, 设置你的AMBERHOME环境变量(不要忘记镜像已经设置好了,当然我们也可以重新设置):

    $ export AMBERHOME=/home/myname/amber16  #(对于bash, zsh, ksh等)
    $ setenv AMBERHOME /home/myname/amber16  #(对于csh, tcsh)
    

    注意:确认将上面的/home/myname更改为适合您的机器的任何目录, 并且确保您在您选择的目录树中拥有写入权限

    而我们就还是使用镜像默认的AMBERHOME环境变量/usr/local/amber16

  3. 删除/usr/local/目录下的amber16文件夹,将我们在/root/Amber目录下的amber16复制或者剪切到/usr/local/目录下

    # 删除镜像自带的Amber16文件夹
    $ rm -rf /usr/local/amber16
    # 复制我们解压出来的Amber16文件夹
    $ cp -r /root/Amber/amber16 /usr/local/
    # or 剪切我们解压出来的Amber16文件夹
    $ mv /root/Amber/amber16 /usr/local/
    

2.3.2. 安装环境配置

接下来, 您可能需要安装一些编译器和其他库. 具体的取决于你用什么操作系统和已经安装了什么。这里我们需要将官方的安装步骤对调一下。

2.3.2.1. 查看配置脚本

切换到AMBERHOME目录中, 运行配置脚本:

$ cd $AMBERHOME
$ ./configure --help

Usage: ./configure [flags] compiler

    where compiler is one of: [[ gnu, intel, pgi, clang, or cray ]]

                              COMPILERS
                 -------------------------------------------------------------
    Compiler Set |     C     |    C++    | Fortran   |   tested versions
    --------------------------------------------------------------------------
      gnu        |    gcc    |   g++     | gfortran  |   4.4.7, 4.8.4 +
      intel      |    icc    |   icpc    | ifort     |   12 - 17
      pgi        |    pgcc   |   pgc++   | pgf90     |   14.9, 15.4, 16.5
      clang      |    clang  |  clang++  | gfortran  |
      cray       |    cc     |   CC      | ftn       |   8.4.6*
    --------------------------------------------------------------------------
  * See ./configure --full-help for details on flags required for 'cray'.

在这里会为您显示选项. 选择你想要的编译器Compiler和标志。对于大多数系统来说会选择gnu

这个时候,我们需要尤其注意的是gnu所需要的gccg++gfortran的版本号,一般来说这个三个包的版本是一致的,而配置脚本需要的版本是4.4.7或者是4.8.4以上,

当我运行配置脚本的时候,遇到各种错误:比如NETCDF编译失败等等。

后来发现,是我目前gccg++gfortran版本(5.4)太高了,Amber自带的NETCDF版本是4.4.3,无法成功安装,需要降低上面三个包的版本

2.3.2.2. 切换gcc,g++,gfortran版本

我们需要将系统的gcc,g++,gfortran版本切换到4.8,而在Ubuntu16.04系统下,安装其他老的版本并切换的基本步骤如下:

  1. 首先查看一下当前我的Ubuntu16.04系统中的的GCC,GFOTRAN和G++版本:

    $ gcc -v #查看gcc的版本
    $ g++ -v #查看g++的版本
    $ gfortran -v #查看gfortran的版本
    # 基本都是5.4的版本(这对我编译某些很早的内核文件的确是太新了)
    
  2. 安装目前需要GCC,GFOTRAN和G++的版本(目前安装的是gcc-4.8版本):

    先使用apt-get的安装方法:

    $ apt-get install gcc-4.8 g++-4.8 gfortran-4.8
    

    你在安装完之后可以采用下面的指令来查看当前系统中安装的所有的gcc和g++的版本:

    $ ls /usr/bin/gcc*
    $ ls /usr/bin/g++*
    $ ls /usr/bin/gfortran*
    

  3. 将某个版本加入gcc候选中,最后的数字是优先级,我自己是直接设为100(测试没有问题),指令如下:

    $ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
    

    同样的我们也将原来系统中的gcc和g++的优先级改成100,这样我们就能在选择完当前使用版本之后不会恢复默认优先级的版本。

    $ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100
    

    对于g++和gfortran也执行相同的操作

    # g++
    $ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100
    $ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
    # gfortran
    $ update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.8 100
    $ update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-5 100
    

    实际上,完成上述步骤后就已经完成了版本切换,但是为了再次确定,我们接着下面的步骤

  4. 完成上面的操作之后,我们就可以通过下面的指令来选择不同的gcc,gfortran和g的版本了,(注意使用之前确保至少有两个gcc,gfortran或者g的版本进行了第3步的操作):

    $ update-alternatives --config gcc
    

    如果4.8版本不是第一位“automode”,那么我们选择相应的数字进行切换,否则直接enter退出。

    接下来查看当前的版本是否已经切换过来了。

    $ gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.5-4ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 4.8.5 (Ubuntu 4.8.5-4ubuntu2)
    

    对gfortran和g++采用相同的操作

    # g++
    $ update-alternatives --config gcc
    $ g++ -v
    # gfortran
    $ update-alternatives --config gfortran
    $ ggfortran -v
    
    

    注意一个问题:

    当切换使用了其他版本的gcc时,请务必保持ggfortran,g的版本和gcc版本的一致性,否则用cmake配置出来的项目遇到c代码还是会用之前版本的gcc。

2.3.2.3. 环境配置

在调整好ggfortran,g++和gcc的版本后,我们安装其他依赖包的预编译,不同的系统请参阅官网上http://ambermd.org/amber_install.html的说明

# 基本依赖包
$ apt-get install csh flex patch make xorg-dev bison libbz2-dev
# 并行需要的依赖包-1
$ apt-get install openmpi-bin libopenmpi-dev
# 并行需要的依赖包-2(选择1就不需要2了)
$ apt-get install mpich libmpich-dev

2.3.3. 安装Amber

2.3.3.1. 运行配置脚本

切换到AMBERHOME目录中, 运行配置脚本:

$ cd $AMBERHOME
$ ./configure gnu
# (提示安装miniconda选择安装,不会与自己安装的conda发生冲突,因为其不会写入环境变量)
# 若是编写脚本安装可以输入yes自动接收协议,如下
$ yes | ./configure gnu

此步骤还将检查是否有任何更新和错误修复尚未应用于您的安装, 并将应用它们(除非你不要). 如果配置步骤找到丢失的库, 请回到步骤3. 这一步也会询问你是否要为Python安装在Amber中兼容的Python可执行文件程序包括(MMPBSA.py, MCPB.py, ParmEd, pysander, pytraj, pdb4amber, 其余的amberlite). 由于Amber现在需要Python 2.7或更高版本, 以及numpy, scipy和matplotlib启用其所有的功能, 现在配置提供了一个选项来下载兼容的PythonContinuum IO(通过miniconda)安装在Amber目录中, 用于Amber程序. 更多细节见2.2部分. 只要你的默认Python已经安装了必要的条件, configure就会只需选择与Amber一起使用的Python. 不要在这一步选择任何并行选项! 您需要先安装串行版本; 在步骤8下面描述了用于并行的构建. 要自动接受配置过程中的所有建议, 可以将”yes”的输出传送给配置:

若自己安装了conda,也可以使用自己的conda,方法如下:

$ ./configure --with-python /home/kangsgo/anconda3/python gnu
# 其中路径需要修改为自己的

这一步不要安装并行选项,并行需要在后面再进行安装

2.3.3.2. 设置环境变量

配置步骤完成后,将在AMBERHOME目录中创建两个资源文件: amber.sh和amber.csh。这些源代码脚本将为Amber正确设置您的shell环境:

$ source /usr/local/amber16/amber.sh # for bash, zsh, ksh, etc.
$ source /usr/local/amber16/amber.csh # for csh, tcsh

选择适合你系统的一条命令执行,大部分的是amber.sh

2.3.3.3. 安装
$ make install
# 如果你没有amber16,那么最后会显示
# /usr/local/amber16//src/Makefile not found, or -noamber was set.
# 这是正常现象

将编译代码. 如果此步骤失败, 请尝试仔细阅读错误消息以确定问题.

2.3.3.4. 测试

将运行测试, 并报告成功或失败

$ make test
  1. 如果失败

    在发现”possible FAILURE”消息时, 转到 $AMBERHOME/AmberTools/test下的指定目录或$AMBERHOME/test, 然后查看”*.dif”文件. 差异可能涉及到最后一位数字的四舍五入印刷的或偶尔因机器而异的信息(详见下文). 和汇编一样, 如果您在单个测试中遇到麻烦, 您可能选择在Makefiles中注释某些行(即$AMBERHOME/AmberTools/test/Makefile$AMBERHOME/test/Makefile), 和直接进入测试子目录详细检查输入和输出. 为了方便, 所有的错误信息和差异收集在$AMBERHOME/logs目录中;如果除了舍入误差外, 还有其他的东西, 你可以快速地察看它们.

  2. 而成功后,会显示下面的信息

    Finished serial test suite for Amber 17 at Wed Aug 29 15:21:45 UTC 2018.
    
    make[2]: Leaving directory '/usr/local/amber16/test'
    162 file comparisons passed
    0 file comparisons failed
    0 tests experienced errors
    Test log file saved as /usr/local/amber16/logs/test_amber_serial/2018-08-29_15-12-09.log
    No test diffs to save!
    make[1]: Leaving directory '/usr/local/amber16/test'
    
    Summary of AmberTools serial tests:
    
    2093 file comparisons passed
    0 file comparisons failed
    0 tests experienced errors
    Test log file saved as /usr/local/amber16/logs/test_at_serial/2018-08-29_12-59-39.log
    No test diffs to save!
    

    这一步时间较久,可以能1个小时还没有完成,特别是经常屏幕没有反应这是正常现象不需要惊慌。

2.3.3.5. 多线程的安装

由于还没试过,我们先将教程照搬过来,后续试过后修改

cd $AMBERHOME
./configure -mpi <....other options....> <compiler-choice>
make install

# 注意, 下面的值基于你要实现的MPI
export DO_PARALLEL="mpirun -np 2"
make test

# 注意, 一些测试, 像replica exchange 测试, 需要高于2线程, 我们建议你测试4或者8线程
export DO_PARALLEL="mpirun -np 8"

make test

2.4. Amber - 新镜像生成和保存

在完成上述步骤的安装后,我们需要将目前成功安装Amber的系统保存下来,以便移植到其他系统中(这一步我还没有完全的试过,等待我后续补充上详细的步骤)。

  1. 生成新的镜像:

    $ docker commit -a "alphajp" -m "amer16 for LSP" 6f2d0fe3a778 alphajp/amber16:v1
    sha256:bb0abba93dd3d4c50613f501663eaac107c4bc66690fc4645ea4217e4acde53a
    
    $ docker images
    REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
    alphajp/amber16                  v1                  bb0abba93dd3        2 minutes ago       8.43GB
    indigodatacloudapps/ambertools   latest              0bacc6216ee0        13 months ago       1.47GB
    ambermd/amber-build-box          latest              1a57cfabe28d        20 months ago       2.2GB
    
  2. 保存生成的镜像

    $ docker images
    $ docker save -o amber16.tar alphajp/amber16:v1
    
  3. 在服务器导入镜像

    将保存的文件传送到服务器上,然后导入上述的镜像

    $ docker load < amber16.tar
    $ docker images
    

3. 参考

Amber 
更新时间:2019-06-21 11:41:25

本文由 AlphaJP 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.computsystmed.com/archives/amber-series-amber16-introduction-and-installation
最后更新:2019-06-21 11:41:25

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×