一、简介

利用amber的cpptraj模块对显式溶剂模型进行H键作用分析,对得到的溶质-溶质间H键存在与否的变化进行gnuplot绘图,对体系整体H键的变化,体系的RMSD变化进行xmgrace绘图,对溶质内H键寿命变化进行计算统计。

二、下载教程提供的准备文件

1、top文件:

wget https://amber.utah.edu/AMBER-workshop/London-2015/Hbond/trpzip2.ff10.tip3p.parm7

2、轨迹文件:

wget https://amber.utah.edu/AMBER-workshop/London-2015/Hbond/trpzip2.unfold.nc

3.cpptraj程序的input文件:

wget https://amber.utah.edu/AMBER-workshop/London-2015/Hbond/cpptraj.hbond.in

三、执行cpptraj模块

导入top文件,赋予标签:

cpptraj
parm trpzip2.ff10.tip3p.parm7 [top]

导入轨迹文件:

trajin trpzip2.unfold.nc parm [top]

计算轨迹中溶质和溶质、溶质和溶剂(WAT)之间的H键还有溶质、溶剂和溶质之间形成的桥接作用:

#这里U特指溶质,V特指溶剂
hbond All out All.hbvtime.dat solventdonor :WAT solventacceptor :WAT@O \
  avgout All.UU.avg.dat solvout All.UV.avg.dat bridgeout All.bridge.avg.dat
run

 ALL:是生成数据集的名字,类似的有下面的Backbone

solventdonor:指定溶剂H供体(也可以是离子),这里限制为残基WAT

solventacceptor:指定溶剂H受体(同样可以是离子),这里限制为残基原子O(......)

这里没有限制溶质的H供受体哦

avgout:将溶质-溶质H键平均值写入到后接着的文件

solvout:将溶质-溶剂H键的平均值写入到后接的文件

bridgeout: 将溶质-溶剂桥接作用写入到后接的文件

生成的ALL.UU.avg.dat文件内容如下:

如何判断存在redis 如何判断存在氢键_开发语言

Acceptor、DonorH和Donor是参与组成H键的原子,Frames是这个H键存在的帧数,2099就是出现了2099次,Frac是这个次数占总次数的百分比。AvgDist是根据这些帧计算出的H键平均距离,AvgAng则是三个原子组成的平均角度。

 生成的ALL.UV.avg.dat文件:

如何判断存在redis 如何判断存在氢键_servlet_02

Count也是出现的帧数总值,为什么会高出实际总帧数(......)

生成的All.hbvtime.dat文件内容:

如何判断存在redis 如何判断存在氢键_servlet_03

All[ID] 组成桥接的三个原子序号x(x+x+),若有多组桥接作用。组间由逗号分隔

这个文件中,行数是帧数,表示一帧中存在多少H键和溶剂桥接作用

生成的ALL.bridge.avg.dat文件:

如何判断存在redis 如何判断存在氢键_开发语言_04

计算轨迹中溶质蛋白主链上的H键:

hbond Backbone :1-12@C,O,N,H avgout BB.avg.dat series uuseries bbhbond.gnu
run

Backbone是一个数据集,series 以每帧有哪些残基组成H键出现的格式保存文件,uuseries 将溶质-溶质之间的H键写入到后接着的文件(series uvseries [filename]则是溶质-溶剂之间的H键)

用gnuplot和生成的gnu文件进行绘图:

gnuplot bbhbond.gnu

如何判断存在redis 如何判断存在氢键_servlet_05

图中, 部分残基组成的H键在2000帧后存现,同时部分残基形成的H键消失,和下图RMSD观察到的蛋白构象变化有关。

利用数据集的内容生成新文件:

# Create file containing only number of solute-solute and solute-solvent
# hydrogen bonds, and number of solute-solvent-solute bridges.
create nhbvtime.agr All[UU] Backbone[UU] All[UV] All[Bridge]
run

  这个文件的数据是接成同一列的:

如何判断存在redis 如何判断存在氢键_servlet_06

所以这里实际的列数>帧数(3290*4),还要加上注释

xmgrace绘图:

xmgrace nhbvtime.agr

如何判断存在redis 如何判断存在氢键_如何判断存在redis_07

计算主链的RMSD:

# Calculate RMSD to first frame.
rms BBrmsd :1-12@C,CA,N out BBrmsd.agr
run

xmgrace绘图:

xmgrace BBrmsd.agr

如何判断存在redis 如何判断存在氢键_如何判断存在redis_08

 结合轨迹H键数目的变化图,在2000Frames后,H键数目减少,溶质的RMSD发生明显的改变。

H键寿命分析:

# Perform lifetime analysis on backbone hydrogen bonds
lifetime Backbone[solutehb] out backbone.lifetime.gnu
runanalysis

寿命lifetime的定义:一个物质存在的时长,就是寿命。这里研究的对象是H键存在的时长,若一个H键在连续的10帧中都存在,这个H键的寿命时长就是10

我们设置一个截断距离,但一帧内H键时长大于这个值,就判断其存在:

cut <cutoff>
#默认的cutoff是0.5(单位??)

标准化:对数据计算均值,所有的数值都进行减掉均值后在除以标准差,得到一组均值为0,方差为1的标准数据,这个过程称为标准化。

[rawcurve]
#添加这个选项后,不会对数据进行标准化处理,在out [filename] 得到的文件不会有crv.[filename]

out 会输出多个文件,一个backbone.lifetime.dat(这里简称为[file]),一个crv.[file],这个文件是对前者进行标准化后得到的数据。

若是添加参数window(指定计算的帧数范围),还会多出文件max.[file]和avg.[file],前者是这个帧数范围内的最大寿命,后者是这个帧数范围内的平均寿命。

得到的*.dat文件:

如何判断存在redis 如何判断存在氢键_开发语言_09

这里的lifetime_00027是寿命期的个数,lifetime_00027[max]是存在的最长寿命期的长度,lifetime_00027[avg]是平均长度,lifetime_00027[frames]是存在的帧数。

e.g.第一个是11号残基TRP和1号残基SER形成的H键(lifetime_00027[name]列),这个H键分别出现了两次(lifetime_00027列),最长的一次寿命长度是1帧(lifetime_00027[max]列),平均帧时长是1.0000(lifetime_00027[avg]列