此篇对应官网教程第二个实例:advanced-example.zip,共三个大部分:多模版建模、loop优化、基于配体的优化。搜模版、选模版步骤与单模板建模相似,这里不再赘述——2mdh、1bdm、1b8p最合适。
多模板建模的好处是有多个同源蛋白序列,在同源性的基础上,通过对比多样性的序列结构可以发现相对更保守的区域,在模版对齐这一步有较大贡献。
1. 多模版建模
1.1 模版间的对齐(salign.py)
没啥可以说的,如果做别的项目,换掉输入的蛋白名跟链编号就行了,输出文件名大可不必改。
此时需要注意一点:如果做别的项目时,需要对齐模版间的多条链(即需要对多条链建模)则需要通过以下代码实现(我为了解释,在原来文件上改的,现实中这三个蛋白可能没有四条链):
ABCD:分别对应四条链
chain[0]跟chain[-1]:chain是一个字符串参数,[0]表示这个字符串的第一个字符,即“A”,[-1]表示这个字符串的最后一个字符,即“D”。整行代码就是在说:只要模板中从A链起,到D链结束的部分。
1.2 把序列对齐模版(align2d_mult.py)
没啥可说的,运行就是了。
初学者不必关心的一条: “gap_function=ture”这个参数注释是:使用结构相关的缺口惩罚函数,对于salign这一步很重要,要得到一个更理想的结果,这是一个可以去读官网手册深挖的参数。
1.3 建模(model_mult.py)
这一步建立了五个模型,但是官网上的文件没有dope打分选项,我给加上了,方便观察,不然就如下图所示的,只有molpdf分数没有dope分数。
计算DOPE后,结果如下:
DOPE
-38089.671875
-38008.472656
-37938.117188
-37977.257812
-38645.425781
DOPE结果表明第五个是最优结构,但是官网教程的代码里则写的最好结构是第一个。而且他说多模版建模后DOPE全局能量降低至-39164.4,但是我看他evaluate_model.log文件里发现“DOPE score : -38089.667969”,跟我计算的相差不大。令我很是疑惑。下面流程还是按照官网上的来。
1.4 打分最优模型并输出*.profile文件(evaluate_model.py)
代码略,见单模板建模。
按照第一个模型为最佳模型
1.5 作图(plot_profiles.py)
代码略,见单模板建模。
比较多模版与单模板建模,发现90-100氨基酸位置得到明显改善,但是在273-283处的氨基酸能量更高,需要loop优化。
2. loop优化
2.1 配置loop_refine.py文件
将1.3中的最优模型更名为“TvLDH-mult.pdb”,并作为输入文件,('273:A', '283:A')是需要优化的部分,A链氨基酸从273开始到283结束。这里的A链是因为新建模型链编号都是从A开始分配,当你建模其他蛋白时需注意,此时链的编号已经改变。
“m.loop.md_level”参数是对应loop优化时的计算精度,越快则精度越低,改为“refine.slow”得到的模型更好。
这一步我们得到十个模型。
2.2 用循环语法打分所有的模型(model_energies.py)
这其实是python的语法应用了,代码的意思是:i的值从1开始到11结束(不包括11),对应着生成的10个模型。我们拿第一个模型的名字为例子“TvLDH.BL00010001”,BL后面的四位数是可以变的,其它不变。“%04d” 指的是这部分宽度为4,内容为参数i的值,左边填充空格。
在这一步生成的log文件中搜索score,即可得到十个DOPE得分,找到最低能量的是第八个模型
2.3 结果
evaluate_model.py跟plot_profiles.py脚本都会用了,在这里就不啰嗦了,直接上图:
Loop优化后能量只有略微的降低,官网对此的解释是“最精确的loop优化方法需要对数百个独立构象建模,并对它们进行聚类,以选择loop中最具代表性的结构。”然后他选择第八个模型进行下一步,并重命名为“TvLDH-loop.pdb”
3. 基于配体的优化
这一部分官网上说明的不太详细,我着重讲讲。
他的思路是把loop优化的最优模型作为这一步的第一个模版,然后再找一个带有配体的蛋白删除掉多余部分,只留下一部分与配体作用的短链(以及配体)作为模版。在建模时限制配体原子与蛋白的距离。
3.1 准备序列文件(TvLDH.ali)、模版间的对齐文件(mult.ali)、序列与模版的对齐文件(TvLDH-mult.ali)(文件名略做修改)
需要的脚本:salign.py align2d_mult.py
序列文件:粘贴序列
模版:①2.3中loop优化后的文件,TvLDH-loop.pdb
②经过删减的1emd蛋白文件,1emd_bs.pdb
后面内容有点绕,等我整理整理思路后再编辑发布,可以关注我,到时候有提醒。
在这一步我试过从准备序列文件阶段就加上斜杠“/”以及点“.”,但是由于loop优化后没有B链,但是1emd_bs有B链,在代码逻辑上有点问题,对齐结果并不理想,所以我把这一步操作放在了所有对齐完成之后,手动添加。
在氨基酸序列最后、星号“*”之前加了一条斜杠“/”,以及两个点“..”。斜杠代表上条链结束,下条链开始;两个点表示有两个配体。
文件TvLDH.ali
文件salign.py
用文本文档的方式打开1emd_bs.pdb发现这个删改后的蛋白没有链的编号,所以在代码中双引号内的值缺省。
文件mult.ali
箭头所指的内容均为后来手动添加的。短横线“-”代表对其之后此部分没有。
文件TvLDH-mult.ali
3.2
这里的模版是TvLDH-loop.pdb跟1emd_bs.pdb(删改后的1emd.pdb)。
3.3
3.4 基于配体的多模版建模
3.5 结果(打分与作图)



