参考1: https://www.rosettacommons.org/demos/latest/tutorials/Relax_Tutorial/Relax
参考2: https://www.rosettacommons.org/docs/latest/application_documentation/structure_prediction/relax
教程资源位于:$ROSETTA/demos/tutorials/Relax_Tutorial
前言
FastRelax是Rosetta中优化结构的重要模块,可以用于消除晶体结构中的不合理构象,优化点突变设计的结构,以及比较多个不同结构的能量等。
在Rosetta力场下,FastRelax模块通过多次迭代进行氨基酸侧链重排以及能量最小化的计算来搜索给定三维结构的在局部能垒的最优构象。在每轮迭代中,程序脉动式地升高和降低范德华排斥力部分的权重,使得侧链构象不断地坍塌和膨胀,使之能够逃离局部能量区域,进入新的能量极小值点。
FastRelax的计算原理:
一张图看懂FastRelax在做什么:
relax.png其实FastRelax的本质就是在执行我们所定义的RelaxScript脚本。而RelaxScript脚本多步模拟退火组成(Ramp_repack_min),每步退火到包含三个步骤: 权重爬坡、氨基酸侧链重排以及能量最小化。权重爬坡包括调整范德华力排斥项、能量最小化阈值以及坐标限制权重。除此以外FastRelax支持用户自定义额外的限制参数以及MoveMap控制骨架和侧链的自由度。
FastRelax基本参数控制
FastRelax只能接受一个PDB文件或含有多个结构的silent文件,运行时需要relax的参数文件。
此处创建基本的参数文件,并保存为general_relax_flags。此时FastRelax将按照默认的设定参数去优化结构。
# 控制输出;
-nstruct 1000 # 生成模型数量
-out:path:pdb ./tutorial_output # 输出PDB文件的路径
-out:path:score ./expected_output # 输出打分文件的路径
# 控制采样
-relax:default_repeats 5 # 控制外部循环次数,默认为5,可以设置为15个循环,能量面的搜索更加彻底。
-score:weights ref2015 # 设置使用的打分函数/双空间时 使用ref2015_cart
FastRelax进阶参数控制
如果想进一步控制FastRelax的行为,还可以在general_relax_flags文件选择性中添加以下的一些选项:
# 脚本控制relax的选项,需要额外设定relax script
-relax:script <file> # 可自定义设置使用的relax script名称
# 自由度控制
-in:file:movemap <file> # 可自定义设置movemap file文件,也可以用以下3个选项进行替代设置。
-relax:jump_move true # 是否允许能量最小化时,多肽链之间的相对移动?
-relax:bb_move true # 是否允许骨架二面角在能量最小化时变化?
-relax:chi_move true # 是否允许侧链二面角在能量最小化时变化?
-relax:dualspace true # 是否采用双空间法Relax?
-relax::minimize_bond_angles # dualspace推荐设置。
# repack行为控制(默认是不可以repack成其他类型氨基酸)
-relax:respect_resfile # 设置refile文件,是的FastRelax过程中,可以进行突变设计。配合-packing:resfile使用,使用时关闭-relax:coord_constrain_sidechains。
-packing:resfile <file> # 输入自定义的resfile.
#-disable_design false # 可以通过全局控制,允许relax突变成20种氨基酸
# 启用预设的限制方式:
-relax:constrain_relax_to_start_coords # 为骨架重原子添加坐标限制势,使其不偏离初始输入的结构(不能与-relax:constrain_relax_to_native_coords同时使用)
-relax:constrain_relax_to_native_coords # 为骨架重原子添加坐标限制势,使其不偏对照/天然的结构(不能与-relax:constrain_relax_to_start_coords同时使用)
-relax:coord_constrain_sidechains # 是否也为侧链重原子添加坐标限制?(需要以上两个选项其中之一启用)
-relax:coord_cst_stdev <stdev> # 设置坐标限制的强度,越小限制越强
-relax:coord_cst_width <width> # 如果设置了,将启用flat-bottomed类型的限制函数。在<width>的范围内,收到的限制惩罚为0;
-relax:sc_cst_maxdist <dist> # ?
-relax:ramp_constraints false # 是否在模拟退火过程中,调整坐标限制的权重?
# 自定义限制参数的控制: 此处用于自定义的限制参数导入与权重控制;
-constraints:cst_fa_file <filename>
-constraints:cst_fa_weight <weight>
-constraints:cst_file <filename>
-constraints:cst_weight <weight>
- 双空间法: 执行3轮内坐标的relax,然后执行两轮卡迪尔空间的relax(需要能量函数带有cart_bonded打分项的能量函数,pro_close打分项权重需要设置为0)。
RelaxScript的格式与含义
默认的relax script如下:
repeat 15
ramp_repack_min 0.02 0.01 1.0
ramp_repack_min 0.250 0.01 0.5
ramp_repack_min 0.550 0.01 0.0
ramp_repack_min 1 0.00001 0.0
accept_to_best
endrepeat
选项简要说明:
- reapeat: 设置模拟退火循环的次数, 覆盖
-relax:default_repeats
选项; - ramp_repack_min: 用于指定每次ramp_repack_min的ramp调整的比重、能量最小化阈值、坐标限制强度;
- accept_to_best: 代表输出最佳能量构象(full weight的那一步);
- enrepeat : 结束语,无特殊意义。
上述实例脚本的具体含义: 一共进行15次模拟退火循环,每次模拟退火包含4次ramp_pack_min的过程。在这4次优化过程中,范德华排斥力打分项依次增加: 2%, 25%, 55% and 100%。能量最小化的阈值也依次增加: 0.01、0.01、0.01、0.00001,而对坐标限制的强度由1.0、0.5、0.0、0.0不断衰减,运行更大的自由度。最后输出所有构象中,能量最低者。
注1: 能量最小化阈值: 当能量最小化中每步的能量差小于该阈值范围时,认为已经达到/近似能量极小值点。
注2: 范德华排斥力打分项实际值与打分函数权重有关,因此Relax退火时调整的是百分比。
更多的默认脚本可以参考$ROSETTA/main/database/sampling/relax_scripts
文件夹,此处简要说明不同Relax参数的用途:
Script Name | Description |
---|---|
default | 默认的Relax参数 |
no_cst_ramping | 默认的Relax参数+使用固定坐标限制权重 |
MonomerRelax2019 | 用于优化非蛋白-蛋白复合物界面 |
MonomerDesign2019 | 用于优化经过突变设计的非蛋白-蛋白复合物界面 |
InterfaceRelax2019 | 用于优化蛋白-蛋白复合物界面 |
InterfaceDesign2019 | 用于优化经过突变设计的非蛋白-蛋白复合物界面 |
KillA2019 | 与MonomerDesign2019类似,但是使用了特定的ramp权重值来保证设计的氨基酸组成与天然氨基酸的分布相似。 |
注3:一般情况下无需更改脚本内容,此处只用于解释脚本控制的含义。
注4:带有.dualspace.txt
结尾的script表明启用双空间Relax的方法。带有.beta_nov16.txt
结尾的script表明启用了beta_nov16打分函数。
运行FastRelax
运行很简单,当我们将上述的参数和输入的PDB文件设置好即可, 运行命令如下:
relax.mpi.macosclangrelease -s $pdb @general_relax_flags
网友评论