本教程将指导用户在DPPC式模型膜中制备并模拟一个简单的膜蛋白——KALP15。本教程假设用户已经成功地完成了溶菌酶教程、其他教程或者精通GROMACS的模拟和搭建拓扑的方法。本教程力图专注于膜蛋白的特异性搭建过程,而不会像溶菌酶教程那样详尽地解释每一步。
本教程假设您使用的是GROMACS 2018或更新版本。
请注意,本教程的目的是指导构建膜蛋白系统,并理解GROMACS力场构建和修改方法。本教程并不支持或建议您在模拟中使用文中出现的特定参数。在需要使用以相同方式来导出其他参数从而扩充力场的情况下,本教程提供的方法可以良好运行。有些力场已经包含了你所需要的一切,无需修改。就比如CHARMM36这种无需修改的力场,按照本教程的方法逐步更改是十分不明智的。如果真的有必要,您最好使用 CHARMM-GUI 进行构建(本文会在 Building with CHARMM-GUI 部分介绍)。
“”内内容为译者所加。
我们将要研究的蛋白质是KALP模型肽,称为KALP15,序列为:GKK(LA)4LKKA-NH2。本教程描述的实验过程是基于Kandasamy和Larson在疏水错配研究中建立的系统。原始的参考文献可以在这里找到(不过讲真的确实有些古老了)。
该肽的空间结构由AmberTools的xLeap构建,采用α-螺旋(φ = -60°,ψ = -40°)的理想骨架结构。通过editconf -princ使.pdb文件定向到z轴,然后绕y轴旋转。注意在GROMACS-3.3.x中,默认情况下,-princ选项将结构的长轴(在本例中是螺轴)朝向z轴,但在GROMACS-4.0.4中,这个选项变成了长轴朝向x轴。如果你想跳过这个肽的构造,可以在这里找到正确的结构。
执行pdb2gmx:
gmx pdb2gmx -f KALP-15_princ.pdb -o KALP-15_processed.gro -ignh -ter -water spc
出现提示时,选择GROMOS96 53A6。选择“None”作为蛋白两端;因为我们在N-端和C-端分别添加了乙酰和酰胺基的帽子,我们不希望pdb2gmx生成正常的胺和羧基。相反,我们希望pdb2gmx向我们的加帽基团增加连接性。-ignh标志告诉pdb2gmx忽略输入中的H原子。默认情况下,xLeap为我们提供了一个全原子结构(因为AMBER力场使用了显式的氢表示)。但由于AMBER的命名规则,这些H原子可能与GROMOS96力场的命名不同。如果我们告诉pdb2gmx忽略所有输入的H原子,它将只添加它需要的氢原子。
现在我们需要对拓扑进行一些修改。
我们将模拟的脂质双分子层是DPPC(二棕榈酰磷脂酰胆碱),因此我们也需要它的参数。但是,如果pdb2gmx被设计为仅处理蛋白质、核酸和数量有限的辅酶,那么我们从哪里得到脂质分子的参数,以及如何将它们应用到我们的系统中?
在本教程中,我们将使用一个联合原子力场(united-atom force field)来描述由Berger, Edholm和Jähnig推导的脂质(参考文献)。这些参数可以与GROMOS算法所表示的蛋白质相结合。
所谓的“Berger lipids”在某种程度上是GROMOS原子型和OPLS部分电荷的混合。由于长链烷烃不能很好地用GROMOS键参数表示,因此采用Ryckaert-Bellemans二面体势,以及比例系数为0.125的Lennard-Jones 1-4 相互作用。这些脂质参数由D. Peter Tieleman发布在他们的网站上。前往这个网站下载以下文件(似乎挂了这个网站,评论区有人发了,可以去自取,感谢那位大兄弟!可以试着用CHARMM-GUI搭建,要比1.的方法简单而且方便多了;但是1.这种方法确实向你展示了Gromacs可是怎么“高级”的使用):
那么 lipid. itp文件是什么,怎么用它呢?我们可以设想这样一个类比:gromos53a6.ff/forcefield. itp同蛋白质的关系就好似lipid. itp同脂质的关系。本质上,lipid. itp包含了绝大多数类型的脂质分子所需的所有的原子类型,非键参数和键参数,就像forcefield. itp,ffnonbonded. itp还有ffbonded. itp与蛋白质的关系。也就是说,我们不能只是简单地在拓扑文件中写上“#include “lipid.itp””就可以接着实验了,因为它与forcefield.itp处于相同的优先级。
要使用lipid. itp中的参数,我们必须对预打包的GROMOS96 53A6 force field文件(在$GMXLIB/gromos53a6.ff中)做一些更改。在名为“gromos53a6_lipid.ff”的工作目录中复制该目录(假设你是在/usr/local/gromacs
中安装的GROMACS):
cp -r /usr/local/gromacs/share/gromacs/top/gromos53a6.ff/ ./gromos53a6_lipid.ff
在这层目录中,你可以看到这些文件:
aminoacids.c.tdb
aminoacids.hdb
aminoacids.n.tdb
aminoacids.r2b
aminoacids.rtp
aminoacids.vsd
atomtypes.atp
ff_dum.itp
ffbonded.itp
ffnonbonded.itp
forcefield.doc
forcefield.itp
ions.itp
spc.itp
spce.itp
tip3p.itp
tip4p.itp
watermodels.dat
然后呢,根据我们在本教程中所需的修改来修改forcefield.doc,更新其中的力场参数的描述。包含如下内容:
GROMOS96 53A6 force field, extended to include Berger lipid parameters
这些包含在gromos53a6_lipid. ff中的文件构成了一个力场的完整描述。这些文件的具体用途如下:
现在,为了将脂质参数添加到父力场(parent force field)中,我们需要复制lipid. itp中[ atomtypes ]、[ nonbond_params ]和[ pairtypes ]的所有子内容,并粘贴到ffnonbonded.itp中的相应条目下。你会发现lipid. itp中[ atomtypes ]缺少原子序号(at. num列),所以也把它们添加进来。修改好的内容应该是这样的:
LO 8 15.9994 0.000 A 2.36400e-03 1.59000e-06 ;carbonyl O, OPLS
LOM 8 15.9994 0.000 A 2.36400e-03 1.59000e-06 ;carboxyl O, OPLS
LNL 7 14.0067 0.000 A 3.35300e-03 3.95100e-06 ;Nitrogen, OPLS
LC 6 12.0110 0.000 A 4.88800e-03 1.35900e-05 ;Carbonyl C, OPLS
LH1 6 13.0190 0.000 A 4.03100e-03 1.21400e-05 ;CH1, OPLS
LH2 6 14.0270 0.000 A 7.00200e-03 2.48300e-05 ;CH2, OPLS
LP 15 30.9738 0.000 A 9.16000e-03 2.50700e-05 ;phosphor, OPLS
LOS 8 15.9994 0.000 A 2.56300e-03 1.86800e-06 ;ester oxygen, OPLS
LP2 6 14.0270 0.000 A 5.87400e-03 2.26500e-05 ;RB CH2, Bergers LJ
LP3 6 15.0350 0.000 A 8.77700e-03 3.38500e-05 ;RB CH3, Bergers LJ
LC3 6 15.0350 0.000 A 9.35700e-03 3.60900e-05 ;CH3, OPLS
LC2 6 14.0270 0.000 A 5.94700e-03 1.79000e-05 ;CH2, OPLS
在[ nonbond_params ]部分,你会发现一行 ;; parameters for lipid-GROMOS interactions.
,删除这一行和这一节中的所有后续行(直至 ;; lipid-SPC/SPCE interactions
后停止删除)。蛋白质特异性非键组合是针对废弃的“ffgmx”(一种改进的GROMOS87)力场的。除去这些行才能使蛋白质和脂质之间的相互作用由GROMOS96 53A6的标准组合规则产生。涉及原子型HW的非键相互作用也存在,由于这些都是0,您也可以删除这些行;或者将HW重命名为H,以符合GROMOS96 53A6命名规则。如果不重命名或删除它们,grompp稍后将失败并出现致命错误。
将[ dihedraltypes ]的内容附加到ffbond .itp的相应部分。不要担心这些内容看起来有点不同。它们是Ryckaert-Bellemans二面体,在形式上不同于默认GROMOS96 53A6力场中使用的标准周期二面体。
总结一下,为了使力场发挥作用,你必须做以下所有的更改:
最后,更改topol中的#include语句,从:
#include "gromos53a6.ff/forcefield.itp"
改为:
#include "gromos53a6_lipid.ff/forcefield.itp"
最后,我们需要包括DPPC分子的具体参数。这个过程非常简单,只需在topol. top文件中添加一行 #include "dppc.itp"
,具体是在蛋白质的位置限制部分(position restraint file,这个东西定义了蛋白质[moleculetype]的末端)之后的某个地方。这样做类似于在拓扑结构中加入任何其他小分子或溶剂。在本节和整个教程中,加粗(原文为橙色部分,为了方便翻译本文使用加粗字体)表示应该添加的行,而其他文本(正常)表示在指定修改之前应该已经在拓扑中出现的行。
; Include Position restraint file
#ifdef POSRES
#include "posre.itp"
#endif
; Include DPPC chain topology
#include "dppc.itp"
; Include water topology
#include "gromos53a6_lipid.ff/spc.itp"
Notes on Force Fields
由于Berger参数是从GROMOS和OPLS-UA力场整合得出的,因此也可以使用OPLS-AA力场来表示蛋白质并得到一个兼容的模型。你必须对lipid. itp做一些调整来使其与OPLS的约定一致。有关如何做到这一点的信息,请阅读以下链接:
http://lists.gromacs.org/pipermail/gromacs.org_gmx-users/2006-May/021416.html
http://lists.gromacs.org/pipermail/gromacs.org_gmx-users/2006-August/023587.html
http://lists.gromacs.org/pipermail/gromacs.org_gmx-users/2006-September/023761.html
无论您选择哪种设置,都必须证明您的模型是合理的。根据内部测试和其他用户的报告,这里描述的特定参数组合都可以很好得使用。要由您来说服您的受众(即评论者)明白您知道自己在做什么而且您的模型是有效的。例如,如果你打算做长时间的模拟,你也知道GROMOS96 53A6不稳定的α-螺旋可能会使你最终得到一个随机线圈而不是一个正确的螺旋。在这种情况下,您可能希望使用较新的GROMOS96 54A7参数集,或者完全使用另一个力场。
如果您正确地遵循了上面的所有步骤,那么您将拥有一个功能完整的力场,可以使用pdb2gmx处理其他膜蛋白。这样做消除了手动大改topol文件的需要。将新的gromos53a6_lipid. ff文件夹放置在$GMXLIB目录将允许你在整个系统内使用这个力场。
为膜蛋白确定一个单位晶胞比水环境蛋白要复杂得多。构建单位晶胞有几个关键步骤:
我们已经使用editconf
对KALP肽进行了排列。双分子层位于x-y平面上,法线沿z轴。要消除周期性的影响,请使用trjconv
:
(1)使用grompp生成一个仅有DPPC的系统的.itp文件。
您可以使用任何有效的.mdp文件和对应于纯DPPC的拓扑文件。你可以在这里找到一个示例.mdp文件,也可以在这里找到这样的拓扑。注意这个拓扑是多么简单:它涵盖了读取DPPC和水的参数的dppc. itp和spc. itp;就这么简单!运行grompp
:
gmx grompp -f minim.mdp -c dppc128.pdb -p topol_dppc.top -o dppc.tpr
您可能会收到一个类似这样的致命错误,但是在这种情况下,对上面的命令使用-maxwarn 1
是安全的。这里解释了这样做的可行性。请注意,这一步是 topol_dppc. top 唯一一次被使用。它没有其他用途,您不应该在本教程的任何剩余步骤中使用它。
没有必要在双层上运行一个完整的能量最小化程序,尽管如果你想的话你可以这样做。.tpr文件包含有关成键和周期的信息,因此,在某种意义上,它可以用来重建“破碎的”分子。
(2) 使用trjconv
去除周期性(选择group 0,“System”为输出):
gmx trjconv -s dppc.tpr -f dppc128.pdb -o dppc128_whole.gro -pbc mol -ur compact
现在,看看这个.gro文件的最后一行;它对应于DPPC单元的x/y/z框向量。我们需要将KALP肽定位在这个相同的坐标系中,并将肽的质心放在这个盒子的中心:
gmx editconf -f KALP-15_processed.gro -o KALP_newbox.gro -c -box 6.41840 6.44350 6.59650
系统的中心现在位于(3.20920,3.22175,3.29825),每个box向量的一半。这是一个GROMACS惯例。注意,如果你希望模拟的其他系统与膜不对称,上面的命令必须修改为如下所示:
gmx editconf -f protein.gro -o protein_newbox.gro -box (membrane box vectors) -center x y z
在上面的命令中,x y z表示质量中心,以便蛋白质被正确放置。放置应该基于膜定位的实验数据,或者基于你对于特定蛋白质的化学成分的直觉。
到目前为止,我发现的将脂质包裹在蛋白质周围的最简单的方法是InflateGRO方法(ref←这里是参考文献,pl←这是脚本)。请注意,作者分发的是其原始版本的InflateGRO,而不是其他作者提供的InflateGRO2。下载链接的脚本文件并将其重命名为“inflategro.pl”以继续。首先,整合蛋白质和双层结构文件:
cat KALP_newbox.gro dppc128_whole.gro > system.gro
删除不必要的行(KALP结构中的box向量,DPPC结构中的头信息),并相应地更新坐标文件的第二行(原子总数)。
InflateGRO 脚本的作者建议对蛋白质重原子使用一个非常强大的位置约束力(position-restraining force)以确保蛋白质位置在EM过程中不被改变。添加一个新的 #ifdef 语句到你的拓扑文件,这样将调用一组特殊的位置限制,然后你的拓扑应当包含这样一个部分(; Strong position restraints for InflateGRO段为多出部分):
; Include Position restraint file
#ifdef POSRES
#include "posre.itp"
#endif
; Strong position restraints for InflateGRO
#ifdef STRONG_POSRES
#include "strong_posre.itp"
#endif
; Include DPPC chain topology
#include "dppc.itp"
; Include water topology
#include "gromos53a6_lipid.ff/spc.itp"
现在,使用 genrestr 生成这个新的位置约束文件:
gmx genrestr -f KALP_newbox.gro -o strong_posre.itp -fc 100000 100000 100000
在用于最小化的.mdp文件中,添加一行“define = -DSTRONG_POSRES”来使用这些新的位置限制。然后,只需遵循 InflateGRO 指令(包含在脚本本身中),这是一个很容易编写为脚本的过程。将脂质位置划分为4份:
perl inflategro.pl system.gro 4 DPPC 14 system_inflated.gro 5 area.dat
由于 InflateGRO 脚本对命令行参数要求非常特定的顺序,这里有必要做一个简短的解释。它们是:
注意有多少脂质被删除,并相应地更新你的拓扑结构的[molecules]中DCCP的数量。使用这个.mdp文件运行能量最小化:
gmx grompp -f minim_inflategro.mdp -c system_inflated.gro -p topol.top -r system_inflated.gro -o system_inflated_em.tpr
gmx mdrun -deffnm system_inflated_em
mdrun
的输出将是“破碎”的分子,所有的原子都在中央图像中。和前面一样,在尝试使用InflateGRO使用这些坐标之前,先用trjconv进行重构:
gmx trjconv -s system_inflated_em.tpr -f system_inflated_em.gro -o tmp.gro -pbc mol
mv tmp.gro system_inflated_em.gro
这时,我们需要开始用小于1的比例系数来使脂质聚裹在蛋白质周围;一种稳健的方法是将脂质按比例缩减0.95,这将需要多次迭代。第一次是:
perl inflategro.pl system_inflated_em.gro 0.95 DPPC 0 system_shrink1.gro 5 area_shrink1.dat
在“收缩”的步骤中,一定要保持 InflateGRO 截止值为0,否则你将继续删除脂类!经过26次按比例缩减0.95,我得到了大约71Å2,高于62Å2的实验值。由于脚本倾向于高估每脂质的面积,这个值足够好,足够用来进行下一步平衡。
如果您希望自动化这个过程,可以在这里找到一个Bash脚本,用于执行膨胀系统的能量最小化和所有后续收缩步骤。
从视觉上看,整个过程是这样的:
用 gmx solvate
溶解蛋白质是一件很简单的事。溶剂化膜蛋白系统并不那么简单,因为溶剂化程序倾向于用水分子填补脂酰链上的空隙。稍后将使用自定义Perl脚本删除这些水分子。按常规进行溶剂化:
gmx solvate -cp system_shrink26_em.gro -cs spc216.gro -o system_solv.gro -p topol.top
溶剂化后,查看可视化的结构,你会看到在双分子层的疏水核心中有许多水分子。使用这个Perl脚本删除这些水分子:
perl water_deletor.pl -in system_solv.gro -out system_solv_fix.gro -ref O33 -middle C50 -nwater 3
传递给 -in
和 -out
的文件名分别是输入文件名和输出文件名。-ref
标志允许用户设置哪个原子被设置为定义膜的上下边界的“参考”。将这个原子设置为磷脂的酯区的一个原子而不是脂质分子头部的原子是明智的,以防止过度脱水。-middle
指定了一个代表磷脂双层中间的原子(沿着膜的正交线,通常是z轴),因此可以以参考原子分为上下两个小叶,从而建立了水分子将被删除的z坐标值范围。传递给 -nwater
的值决定了一个水分子由多少个原子组成,对于SPC而言只有3个原子(OW、HW1和HW2)。
这个脚本告诉你系统中有多少水分子被删除了,还有多少水分子残留。更新topol. top中SOL行的水分子数。您可能希望使用 gmx genconf
对坐标文件进行重新编号,但这不是必需的。
现在我们已经溶剂化了我们的系统,并从膜的疏水核心除去了水分子,是时候加入中和离子了。 此时,继续构建系统的过程与溶菌酶教程中的过程几乎相同。.mdp文件可以在这里找到。
gmx grompp -f ions.mdp -c system_solv_fix.gro -p topol.top -o ions.tpr
由于KALP15肽含有4个赖氨酸残基,在中性ph值下,该肽带有+4e的净电荷。使用 genion 添加4个Cl-离子来中和这些电荷:
gmx genion -s ions.tpr -o system_solv_ions.gro -p topol.top -pname NA -nname CL -neutral
流程可以参考这篇文章。
进入 CHARMM-GUI的 膜体系生成界面,上传 KALP15 的结构文件(可以在这里下载,注意给 GUI 的 pdb 文件名中不能有"-_"等;如果你的 pdb 格式不标准的话记得勾选 correct),点下一步,接下来两步可以确认蛋白信息以及对蛋白做一些修改(当然咱这用不着就直接点下一步了)。
随后正式进入step1,这一步调整蛋白质方向使(跨膜方向延z轴)以及相对膜的位置(插入深度),建议提前调好。在这KALP有些靠近膜上叶,所以向下移动了0.75nm。
这一步首先确认一下我们蛋白的摆放有没有问题,首先可以看一下 Calculated Cross Sectional Area 那张图,如果曲线位于绿线之间就没太有问题;还可以检查一下 step2_orient.pdb 。
随后 Step3 就开始设置膜的成分。你可以选择盒子的形状、大小,膜脂的类型、比例或者插入个数。在这里我们选择插入80个DPPC,点 show the system info 看设置是否正确。
Step4展示了盒子的各个参数,此外我们还需要设置插入的离子,界面都很明确就不多说了;此外还有检查体系(一般不会有问题),没有需要设置的地方,你也可以查看一下 step4_lipid.pdb 是不是合理的,之后才是溶剂化和插入离子;。
Step5 这些组装完之后会有一个step5_assembly.pdb,也可以检查一下。Step6 选择输出的力场参数(实际上如果你有膜脂分子的力场而且或者有 .itp,完全可以用上一步的 step5_assembly.pdb 直接在gromacs 里生成 .top 之类的了),因为本教程全部是Gromacs,所以在 input generation options 只选了 Gromacs。再点一下就完成了,step6 就算是下载界面了。
下载 .tgz 压缩包,解压后在./charmm-gui-XX/gromacs
里面有我们需要的所有文件(不太建议直接使用 CHARMM-GUI 给的 .mdp)。
和任何其他模拟中一样,使用这个.mdp文件作为 grompp
的输入:
gmx grompp -f minim.mdp -c system_solv_ions.gro -p topol.top -o em.tpr
调用 mdrun:
gmx mdrun -v -deffnm em
在继续模拟之前验证EM过程中的 Epot 和 Fmax 值是否合理。膜蛋白系统可能很棘手,因为有很多潜在的问题。如果你的系统不收敛,考虑以下因素:
现在我们的系统处于能量最小,我们可以开始真正的动力学模拟了。
平衡过程与溶剂化蛋白质极其相似。一般来说,我们采用一个较短的NVT平衡阶段后加一个较长的NPT阶段。这样做是因为我们现在处理的是一个异质体系,水和DPPC都作为溶剂。这种异质性需要一个较长的平衡过程。水必须在脂质 headgroups 和任何蛋白质的暴露部分周围重新定位,而脂质也必须在蛋白质周围定位。这样的过程需要较长时间,而脂质平衡可能需要几个ns的模拟时间。
对于膜蛋白模拟,我们需要创建一个由蛋白质和脂质组成的特殊组(下文解释)。为此,使用make_ndx:
gmx make_ndx -f em.gro -o index.ndx
...
> 1 | 13
> q
在 make_ndx 提示符下输入 “1 | 13” 来合并 Protein(1) 和 DPPC(13) 组。这个新组将被用于去除质心运动和温度耦合(稍后详细介绍)。
我们将再次从NVT开始(使用这里的.mdp),调用 grompp
和 mdrun
,就像我们在EM步骤中做的那样:
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -n index.ndx -o nvt.tpr
gmx mdrun -deffnm nvt
我们使用的大多数参数与溶菌酶教程中的参数相当,但有一些变化:
; COM motion removal
; These options remove motion of the protein/bilayer relative to the solvent/ions(这些选项去除蛋白质/双分子层相对于溶剂/离子的运动)
nstcomm = 1
comm-mode = Linear
comm-grps = Protein_DPPC Water_and_ions
再次,在继续之前,使用 gmx energy
来确认系统的温度已经稳定在323 K。温度的选择应根据油脂的物理性质,尤其是相变温度。作者从文献中挖掘出了一些有用的数据,这些数据涉及每脂质面积、相变温度或各种脂质的参数推导(见下表)。请细阅参考资料及了解其含义。这个列表并不全面;参考文献提到了一些文献的例子,其中这些特殊的脂质已被用于模拟或实验工作。使用者应该调查这些论文中的引用,或者引用这些论文的后续论文。这个列表也不应该被认为是全面的,因为许多其他脂类已经被成功模拟。这里介绍的是一些更常见的(懒得翻了,(ˇωˇ」∠)_):
Lipid名称 | Area Per Lipid (Å2) | 相变温度(K) | 参考文献 |
---|---|---|---|
DPPC | 62.9 - 64 | 315 | |
DMPC | 60.6 | ||
POPG | 53 | ||
POPA | |||
POPC | |||
POPE | |||
DMTAP | |||
POPS |
如果你的系统出了问题或在平衡时崩溃了,请参见“高级故障处理(Advanced Troubleshooting,下文亦有翻译)”页面。
膜蛋白系统的初始平衡通常是模拟中最困难的部分。根据系统的构造方式(除了本教程中描述的方法外,还有其他方法),可能会出现其他问题。最常见的问题是脂质头群周围存在孔洞。可在线下载的预平衡双层结构将在InflateGRO步骤中从结构中剥离水。使用 genbox,如本教程所述(参见Defining the Unit Cell & Adding Solvent),可以充分地替换这些水,但通常情况下(取决于本步骤中C原子的范德华半径)孔隙仍然存在于脂质头群周围。没有适当的溶剂化可能会导致以下几种可能的行为:
这些问题会自己显而易见的显现出来,或者通过LINCS警告为由单位细胞扭曲,或脂质核内空洞形成引起的分子断裂。那么如何克服这些问题呢?有这么几个选项:
#ifdef POSRES_LIPID
#include "lipid_posre.itp"
#endif
您将需要在.mdp文件的define中(例如nvt.mdp文件中第二行)添加 -DPOSRES_LIPID (除了为蛋白质添加-DPOSRES),以使该特性正常工作。
既然温度已经稳定了,我们就必须使压强达到平衡。膜蛋白体系的NPT阶段通常比简单的水溶液蛋白稍长,这也是由于体系的异质性:水扩散快,脂质扩散慢。在这里,我们将进行1-ns NPT平衡。在这里可以找到.mdp文件。
.mdp有几点值得注意的改变:
现在,像往常一样继续 grompp
和 mdrun
。 由于模拟时长为1 ns,所以最好在集群上并行运行。 注意,GROMACS 4.5引入了线程来实现并行化,这意味着在多核工作站上,不需要外部MPI库。 对于网络连接的集群,仍然需要MPI来实现节点间的通信。
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -n index.ndx -o npt.tpr
gmx mdrun -deffnm npt
分析压力耦合过程,再次使用 gmx energy 。 验证系统已经稳定,确保膜侧边区稳定(Box-X 和 Box-Y)也是明智的。
在两个平衡阶段完成后,系统现在就在期望的温度和压力下很好地平衡了。我们现在已经准备好解除位置限制,并运行MD进行数据收集。这个过程很像我们之前看到的。我们将运行一个1-ns MD模拟,在这里可以找到.mdp文件。
gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -n index.ndx -o md_0_1.tpr
mdrun:
gmx mdrun -deffnm md_0_1
如果你的模拟要持续超过1 ns,尽可能利用GROMACS的检查点功能,参考GROMACS网站(讲真这个教程雀食有些古老了,1ns现在来看太短了)。
有几种类型的分析对膜蛋白系统特别有用。这里将给出一个简短的概要。你可能对以下几个参数感兴趣:
还需要考虑其他分析,如多肽的二级结构、RMSD、P-N载体取向、螺旋倾斜(helix tilt)等。大多数这些分析都需要使用由make_ndx生成的特殊索引组。
对于氘序参数分析,你将需要一个只包含脂酰链上碳的索引群(index group)。每个链必须单独考虑!
gmx make_ndx -f md_0_1.tpr -o sn1.ndx
...
> a C34
> a C36
> a C37
> a C38
...
> a C50
> del 0-21
> q
我们刚才所做的就是通过将脂质链上的所有原子与酰基链上碳原子的名称进行匹配,为DPPC的sn-1链创建一个索引群。然后删除所有不必要的组(删除0-21)。对于sn-2链,只需重复这个过程(C15, C17-C31生成“sn2.ndx”)。
为了计算沿z轴与脂双层正交的氘阶参数,使用GROMACS order
模块:
gmx order -s md_0_1.tpr -f md_0_1.xtc -n sn1.ndx -d z -od deuter_sn1.xvg
氘顺序参数可以帮助验证在模拟过程中膜是否进入凝胶相(gel phase)。计算的结果将像这样:
请注意,默认情况下,order 指令将每个链中的碳原子从1开始编号。计算末端碳原子的-SCD是不可能的,因为它们缺少邻近的原子,而这些原子是计算局部分子轴的依据。order 指令不知道酰基链的哪一段已经被选择,所以它只是从1给输出编号。上面的图是在对输出文件重新编号为2之后绘制的,反映了我们已经分析了每个链中所有适用的碳原子的事实。因此,在每个十六烷酰链中,carbon 1 (酯碳)或16(末端甲基)都没有值。
人们通常会将膜分解为几个部分进行密度分析——脂头基、酰基链(有时甚至进一步分解为甘油、亚甲基和末端甲基)、蛋白质和溶剂。后两组是标准的,不需要任何特殊操作。DPPC的脂头基团和酰基链的索引组可以通过输入以下参数来创建:
gmx make_ndx -f md_0_1.tpr -o density_groups.ndx
...
> 13 & a C1 | a C2 | a C3 | a N4 | ... | a O11
> name 22 Headgroups
> 13 & a C12 | a C13 | a O14 | a C15 | a O16 | a C32 | a O33 | a C34 | a O35
> name 23 Glycerol_Ester
> 13 & ! 22 & ! 23
> name 24 Acyl_Chains
> q
现在使用 density
模块分别分析每一组(注意,Protein和SOL已经包含在索引文件中):
gmx density -s md_0_1.tpr -f md_0_1.xtc -n density_groups.ndx -o dens_headgroups.xvg -d Z
没有一种GROMACS工具能够计算膜蛋白存在时每个脂质 headgroup 的面积。对于一个纯膜,这个数量是(Box-X * Box-Y)/(每小叶的脂质数量)。使用 gmx energy
,可以很容易地从 .edr 文件中提取盒向量。对于嵌入的蛋白质系统,例如KALP15,该蛋白质占据多大的空间?作者开发了一个程序来解决这个问题,GridMAT-MD。通过处理二维双层膜平面的投影,它可以计算每个脂质 headgroup 的面积,以及双层膜的厚度(ref)。
在验证您的膜没有在模拟过程中不恰当地进入凝胶阶段时,分析每个脂质 headgroup 的面积是一个很有参考价值的参数。
GROMACS提供了一个名为 msd
的模块来计算扩散系数。它的一个衍生功能是计算横向扩散(即平面内的扩散,而不是所有三个维度内的扩散)。这个特性对于含有脂类的系统特别有用。要执行 msd
,你需要为每个脂质选择一个参考原子,通常是DPPC headgroup 的P8。为这些原子创建一个索引组:
gmx make_ndx -f md_0_1.tpr -o p8.ndx
...
> a P8
> q
运行 msd :
gmx msd -s md_0_1.tpr -f md_0_1.xtc -n p8.ndx -lateral z
本文所进行的模拟不足以获得一个合理的自扩散系数值:
Fitting from 100 to 900 ps
D[ P8] 0.0270 (+/- 0.0267) 1e-5 cm^2/s
这个值既不准确也不精确,但这里仅展示msd
模块可以用于计算重要的脂质特性。
希望你已经成功地构建和模拟了一个简单的膜蛋白系统。请注意,1 ns的模拟对于任何系统都是非常短的,特别是对于膜蛋白。脂质平衡可能需要50-100 ns。这里使用的时间框架仅用于教学目的,您生成的数据可能没有物理意义,因为时间框架太短了。这里提供的.mdp文件只是作为示例,不应该被认为广泛适用于所有系统。为了提高效率和准确性,请查阅相关文献和GROMACS手册,以便对这些文件进行调整。
请注意,GROMOS96 53A6力场中的α螺旋最近被证明是不稳定的。也就是说,如果你在本教程的模拟系统进行了很长的时间,肽将展开。这种不合理的行为在最近的54A7参数集中已经得到了纠正。作者很久以前写了这个教程,那已经是53A6的缺陷被发现之前了,但作者仍然相信本文是一个有用的例子。只要理解蛋白质力场可能存在的问题,Berger脂质参数与GROMOS96参数集的结合仍然是一种有效的方法。
略
Happy simulating!