from https://jerkwin.github.io/GMX/GMXtut-9/
在分子模拟领域, 准确计算结合自由能(binding free energy)仍然是一个挑战. 为此, 人们发展了许多方法. 论文自由能计算方法及其在生物大分子体系中的适用性问题对这些方法有一些总结, 可供参考. 王喜军在一篇文章杂谈自由能计算,PMF,伞形抽样,WHAM中对一些基本概念进行了讲解. 在这些方法中, 自由能微扰(FEP)与热力学积分(TI)都是比较准确的成熟方法, 但计算量很大, 不适用于生物大分子体系. MM-PBSA(Molecular Mechanics-Poisson Bolzmann Surface Area, 分子力学泊松玻尔兹曼表面积)是一种对MD轨迹进行后处理以估计结合自由能的方法, 计算时会将溶剂视为均匀的连续介质, 并基于力场和隐式的连续介质模型, 对平衡轨迹中的许多帧进行平均, 以考虑温度的影响. 尽管MM-PBSA方法的准确度不如FEP和TI, 但这种方法的计算量小, 在分子识别, 区分结合的强弱方面是一种有效的方法, 因此在生物分子模拟和药物筛选领域应用广泛, 并已经成功地用于许多结合自由能的计算.


对GROMACS用户而言, 长期以来没有一个方便的工具用于计算MM-PBSA自由能. 鉴于AMBER中有一个计算MM-PBSA的脚本mmpbsa.py, 所以以前的GROMACS用户往往先将得到的轨迹转换为AMBER格式, 然后在利用AMBER的工具进行自由能计算. 随着GROAMCS用户的逐渐增多, 目前, 已经有两个工具可以直接使用GROMACS的工具进行MM-PBSA自由能计算了.
这是基于bash/perl的脚本, 计算时调用已经安装的GROAMCS工具和APBS程序计算MM-PBSA. 脚本所起的作用主要是为GROAMCS工具和APBS程序准备输入文件, 并处理输出文件, 实际计算是由GROAMCS工具和APBS程序完成的. 因为是脚本程序, 不需要编译, 所以GMXPBSAtool使用比较方便, 可以很方便地进行大量计算. 程序修改也很方便, 只要清楚了各个程序的输入输出格式, 就可以用于不同版本的GROMACS和APBS.
程序包含三个脚本
gmxpbsa0.sh: 初步计算. 只要为后面的计算进行设置, 包括: 检查输入文件, 从MD轨迹中抽取所需的帧, 使用APBS计算库仑作用的贡献. 如果在输入文件中定义了Alanine扫描, 也会对定义的残基进行Alanine突变.gmxpbsa1.sh: 计算极性和非极性的溶剂化能. 计算中最耗时的一步, 计算时可以并行.gmxpbsa2.sh: 统计所有帧的各项计算结果, 计算最终的结合自由能, 输出计算结果报告.使用方法
遵照程序自带的文档HOW_TO_INSTALL, 解压后, 设置一下路径, 并保证当前使用的shell为bash, 即可使用. 当然前提是安装好GROMACS和APBS(安装方法在下面统一介绍).
运行时, 先在输入控制文件INPUT.dat中设置好GROMACS和APBS的路径, 再依次运行上面三个脚本即可.
运行结束后, Compare_MMPBSA.dat文件中列出了Alanine突变的计算结果, 相应的SUMMARY_FILES目录下保存了主要的结果.
类似于GROMACS自带的工具, 使用方式也类似, GROAMCS用户可以很容易上手.
g_mmpbsa计算的结合自由能由以下部分组成:
计算时, 先使用g_mmpbsa分别计算每一部分, 所有计算完成后, 再按顺序运行程序附带的3个脚本进行后处理: MmPbSaStat.py计算平均结合能及其标准偏差/误差, MmPbSaDecomp.py进行能量分解, energy2fbc将能量转换为温度因子. 具体流程如下:
计算MM部分:
g_mmpbsa -f traj.xtc -s topol.tpr -n index.ndx -mme -pdie 2 -decomp
-mme指明计算范德华和库仑静电能
计算PB部分:
g_mmpbsa -f traj.xtc -s topol.tpr -n index.ndx -i polar.mdp -nomme -pbsa -decomp
使用-pbsa, 因为默认-nopbsa, 所以还需要使用-i提供溶剂化能参数输入文件
使用-nomme是上一步已经计算了MM部分
计算SA部分:
使用SASA模型: g_mmpbsa -f traj.xtc -s topol.tpr -n input.ndx -i apolar_sasa.mdp -nomme -pbsa -decomp -apol sasa.xvg -apcon sasa_contrib.dat
使用SAV模型: g_mmpbsa -f traj.xtc -s topol.tpr -n input.ndx -i apolar_sav.mdp -nomme -pbsa -decomp -apol sav.xvg -apcon sav_contrib.dat
计算平均结合能:
使用bootstrap方法: python MmPbSaStat.py -bs -nbs 2000 -m energy_MM.xvg -p polar.xvg -a apolar.xvg (or sasa.xvg)
能量分解:
python MmPbSaDecomp.py -m contrib_MM.dat -p contrib_pol.dat -a contrib_apol.dat -bs -nbs 2000 -ct 999 -o final-contrib-energy.dat -om energymapin.dat
必须按顺序写-m, -p, -a. 也可使用metafile.dat文件, 其中的内容为3个文件的路径(必须按照MM, polar, apolar的顺序). 我们所需要的能量均写在这里. final-contrib-energy.dat文件中为能量分解的具体内容, 另外一个输出文件energymapin.dat是为下一命令准备的.
转换为温度因子
python energy2fbc -s md.tpr -i energymapin.dat -n input.ndx -c complex.pdb -s1 s1.pdb -s2 s2.pdb
-s1, -s2为分链显示, s1和s2链的原子数相加必须与之前计算中体系的总原子数相等. 脚本会将残基按温度因子(b-factor)进行着色, 在PyMol中选择按b-factor着色即可看到效果.
编译
作者的网站上给出了二进制版本的g_mmpbsa程序, 如果你的机器够新, 一般可以直接使用. 使用前需要先安装GROMACS和APBS. 如果你使用Ubuntu系统, 安装GROMACS和APBS很方便
sudo apt-get install gromacs
sudo apt-get install apbs
然后将gmx_pbsa程序复制到选定的目录下(建议放于GROAMCS主目录下的bin中, 和其他GROAMCS工具放一起), 添加可执行属性: chmod u+x ./g_mmpbsa即可使用了.
由于作者编译gmx_pbsa时使用了Intel编译器的一些优化选项(如AVX, SSE之类), 致使在一些比较老的机器上使用程序时, 会出现FATAL: kernel too old. Segmentation fault或Illegal instruction (core dumped)之类的错误. 在这种情况下, 就只能在你自己的机器上重新编译了. 在编译g_mmpbsa前, 需要下面的一些库:
libgmx.a, libgmxana.a, libmd.a或libgmx.so, libgmxana.so, libmd.solibapbsmainroutines.a, libapbs.a, libapbsblas.a, libmaloc.a, libapbsgen.a, libz.a这些文件在GROMACS和APBS编译之后得到的. 如果你没有权限使用上面的命令安装GROMACS和APBS, 那你还需要自己编译GROMACS和APBS. 编译时, 最好对这三个程序使用相同的编译器, 否则出现错误的话, 不易解决.
编译GROMACS 4.6.5(新版本已经支持GMX 5.x)
g_mmpbsa支持GROMACS–4.6.x, 尚未支持5.x. 编译时, GROMACS需要生成静态库, 因为g_mmpbsa不支持MPI, 不能并行, 因此编译GROMACS时, 必须明确地禁用MPI和GPU选项. 此外, 还需要注意fftw的单双精度问题, 需要安装双精度版本的fftw.
tar -zxvf gromacs-4.6.5.tar.gz
cd gromacs-4.6.5
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/gromacs -DGMX_PREFER_STATIC_LIBS=ON -DGMX_GPU=off
make
make install编译APBS 1.3
g_mmpbsa目前也支持APBS–1.4, 编译方法请参考程序网站上的说明.
编译时, 如果环境变量含有ifort, 会自动选择intel的ifort进行编译, 这样g_mmpbsa也应当使用ifort来编译.
tar zxvf apbs-1.3-source.tar.gz
cd apbs-1.3-source/
./configure --prefix=/path/to/apbs-1.3
make
make install编译fftw单双精度版
cd fftw-3.1.2
./configure --enable-float --enable-mpi --prefix=/opt/fftw-3.1.2
make
make install
make distclean
./configure --disable-float --enable-mpi --prefix=/opt/fftw-3.1.2编译g_mmpbsa
tar zxvf RashmiKumari-g_mmpbsa-v1.1.0-7-gcf6c583.tar.gz
cd RashmiKumari-g_mmpbsa-cf6c583/
mkdir build
cd build
cmake -DGMX_PATH=/opt/gromacs \
-DAPBS_INSTALL=/opt/apbs \
-DAPBS_SRC=/path/to/apbs-1.3-source \
-DCMAKE_INSTALL_PREFIX=/opt/g_mmpbsa \
-DFFTW_LIB=/opt/fftw-3.3.4/lib ..
make
make install完善Python环境
g_mmpbsa附带的tools文件夹中包含了几个用于后处理的Python脚本. 如果直接执行脚本时出错, 那你需要对Python环境进行完善, 安装缺少的模块. 由于Pyhton版本众多, 注意要下载与已安装的Python版本匹配的模块. 网站Unofficial Windows Binaries for Python Extension Packages上提高各种版本的模块供下载, 需要的话可以下载.
这两个工具都可以用于计算MMPBSA的结合能, 根据袁曙光的个人经验, 使用默认参数时, 在精度上GMXPBSA似乎优于g_mmpbsa而且使用也更方便.
APBS程序可使用OpenMP进行并行, 通过环境变量控制使用的核/处理器数目, export OMP_NUM_THREADS=X
APBS程序求解PB方程的速度有限, 因此体系大时, 计算很耗时. 卢本卓提出了一种求解PB方程的改进方法, 且发布了求解程序AFMPB. 如果使用AFMPB替代APBS, 应该可以提高计算速度.
在轨迹不平衡的情况下, 计算PB部分时可能会变得非常慢, 所以需要挑选足够平衡的轨迹进行计算
默认计算能量时, 每帧都会计算, 这样可能会特别费时. 在这种情况下你可以使用trjconv抽取一步分轨迹进行计算, 以减少运算量
trjconv -f md.xtc -o trj_8-10ns -b 8000 -e 10000 -dt 100
在具体的应用中, 尤其是在多条蛋白质MD中, 会需要选择不同的链作为单体, 这时候可使用make_ndx命令将两条蛋白链分别设为不同的组.
对结合能进行能量分解可得到不同残基对总结合自由能的贡献, 用以考察每个残基对自由能的贡献大小. 这方面的一个应用可参考MM-PBSA Captures Key Role of Intercalating Water Molecules at a Protein-Protein Interface. 论文中所考察的蛋白质, 在某些氨基酸发生突变后, 与配体的结合能力会增加1000倍, 这主要是表面的水分子在起作用. 作者利用MM-PBSA方法计算了结合自由能, 发现天然的与突变后的结合自由能有明显的差异, 可以有效地区分结合的强弱.