flex_ddg 中ddg_backrub.xml 学习

一、源代码:

<ROSETTASCRIPTS>
  <SCOREFXNS>
    <ScoreFunction name="fa_talaris2014" weights="talaris2014"/>
    <ScoreFunction name="fa_talaris2014_cst" weights="talaris2014">
      <Reweight scoretype="atom_pair_constraint" weight="1.0"/>
      <Set fa_max_dis="9.0"/>
    </ScoreFunction>
  </SCOREFXNS>

  <!-- ### Only required input file (other than PDB) - mutation resfile ### -->
  <!-- #### All residues must be set to be NATAA packable at top of resfile ### -->
  <TASKOPERATIONS>
    <ReadResfile name="res_mutate" filename="%%mutate_resfile_relpath%%"/>
  </TASKOPERATIONS>

  <RESIDUE_SELECTORS>
    <Task name="resselector" fixed="0" packable="0" designable="1" task_operations="res_mutate"/>
    <Neighborhood name="bubble" selector="resselector" distance="8.0"/>
    <PrimarySequenceNeighborhood name="bubble_adjacent" selector="bubble" lower="1" upper="1"/>
    <StoredResidueSubset name="restore_neighbor_shell" subset_name="neighbor_shell"/>
    <Not name="everythingelse" selector="restore_neighbor_shell"/>
  </RESIDUE_SELECTORS>
  <TASKOPERATIONS>
    <OperateOnResidueSubset name="repackonly" selector="restore_neighbor_shell">
      <RestrictToRepackingRLT/>
    </OperateOnResidueSubset>
    <OperateOnResidueSubset name="norepack" selector="everythingelse">
      <PreventRepackingRLT/>
    </OperateOnResidueSubset>
    <UseMultiCoolAnnealer name="multicool" states="6"/>
    <ExtraChiCutoff name="extrachizero" extrachi_cutoff="0"/>
    <InitializeFromCommandline name="commandline_init"/>
    <RestrictToRepacking name="restrict_to_repacking"/>
  </TASKOPERATIONS>

  <FILTERS>
  </FILTERS>

  <MOVERS>
    <StoreResidueSubset name="neighbor_shell_storer" subset_name="neighbor_shell" residue_selector="bubble_adjacent" />

    <AddConstraintsToCurrentConformationMover name="addcst" use_distance_cst="1" coord_dev="0.5" min_seq_sep="0" max_distance="9" CA_only="1" bound_width="0.0" cst_weight="0.0"/>
    <ClearConstraintsMover name="clearcst"/>
    <MinMover name="minimize" scorefxn="fa_talaris2014_cst" chi="1" bb="1" type="lbfgs_armijo_nonmonotone" tolerance="0.000001" max_iter="%%max_minimization_iter%%" abs_score_convergence_threshold="%%abs_score_convergence_thresh%%"/>

    <PackRotamersMover name="repack" scorefxn="fa_talaris2014" task_operations="commandline_init,repackonly,norepack,multicool"/>
    <PackRotamersMover name="mutate" scorefxn="fa_talaris2014" task_operations="commandline_init,res_mutate,norepack,multicool"/>

    <ReportToDB name="dbreport" batch_description="interface_ddG" database_name="ddG.db3">
      <ScoreTypeFeatures/>
      <ScoreFunctionFeatures scorefxn="fa_talaris2014"/>
      <StructureScoresFeatures scorefxn="fa_talaris2014"/>
    </ReportToDB>

    <ReportToDB name="structreport" batch_description="interface_ddG_struct" database_name="struct.db3">
      <PoseConformationFeatures/>
      <PdbDataFeatures/>
      <JobDataFeatures/>
      <ResidueFeatures/>
      <PoseCommentsFeatures/>
      <ProteinResidueConformationFeatures/>
      <ResidueConformationFeatures/>
    </ReportToDB>

    <SavePoseMover name="save_wt_bound_pose" restore_pose="0" reference_name="wt_bound_pose"/>
    <SavePoseMover name="save_backrub_pose" restore_pose="0" reference_name="backrubpdb"/>
    <SavePoseMover name="restore_backrub_pose" restore_pose="1" reference_name="backrubpdb"/>

    <InterfaceDdGMover name="int_ddG_mover" wt_ref_savepose_mover="save_wt_bound_pose" chain_name="%%chainstomove%%" db_reporter="dbreport" scorefxn="fa_talaris2014"/>

    <ScoreMover name="apply_score" scorefxn="fa_talaris2014_cst" verbose="0"/>

    <!-- This ParsedProtocol allows the ddG calculation to take place multiple times along the backrub trajectory, if desired -->
    <ParsedProtocol name="finish_ddg_post_backrub">
      <Add mover_name="save_backrub_pose"/>
      <Add mover_name="structreport"/>

      <Add mover_name="repack"/>

      <Add mover_name="addcst"/>
      <Add mover_name="minimize"/>
      <Add mover_name="clearcst"/>

      <Add mover_name="save_wt_bound_pose"/>
      <Add mover_name="structreport"/>
      <Add mover_name="restore_backrub_pose"/>

      <Add mover_name="mutate"/>

      <Add mover_name="addcst"/>
      <Add mover_name="minimize"/>
      <Add mover_name="clearcst"/>
      <Add mover_name="structreport"/>

      <Add mover_name="int_ddG_mover"/>
    </ParsedProtocol>

    <BackrubProtocol name="backrub" mc_kt="1.2" ntrials="%%number_backrub_trials%%" pivot_residue_selector="restore_neighbor_shell" task_operations="restrict_to_repacking,commandline_init,extrachizero" recover_low="0" trajectory_stride="%%backrub_trajectory_stride%%" trajectory_apply_mover="finish_ddg_post_backrub"/>

  </MOVERS>
  <APPLY_TO_POSE>
  </APPLY_TO_POSE>
  <PROTOCOLS>
    <Add mover_name="addcst"/>
    <Add mover_name="apply_score"/> <!-- Necessary to initialize neighbor graph -->
    <Add mover_name="neighbor_shell_storer"/>

    <Add mover_name="minimize"/>
    <Add mover_name="clearcst"/>

    <Add mover_name="backrub"/>
  </PROTOCOLS>
  <OUTPUT />
</ROSETTASCRIPTS>

二、分段学习

(1)

<SCOREFXNS>
    <ScoreFunction name="fa_talaris2014" weights="talaris2014"/>
    <ScoreFunction name="fa_talaris2014_cst" weights="talaris2014">
      <Reweight scoretype="atom_pair_constraint" weight="1.0"/>
      <Set fa_max_dis="9.0"/>
    </ScoreFunction>
  </SCOREFXNS>

主要涉及到分子力学模拟的评分函数(Score Function)。

其中,fa_talaris2014和fa_talaris2014_cst是两个评分函数的名称,weights="talaris2014"表示采用的权重为talaris2014。

在fa_talaris2014_cst评分函数中,对原子对限制(atom_pair_constraint)的权重进行了调整(Reweight scoretype="atom_pair_constraint" weight="1.0"),同时对最大距离进行了设置(Set fa_max_dis="9.0")。

权重指的是评分函数(ScoreFunction)中各个分数项(scoretype)的权重,根据具体的需求可以进行适当的调整。不过需要注意的是,权重的调整可能会影响评分函数的性能和精度,需要进行一定的验证和测试。另外,在Rosetta中,已经有一些经典的评分函数(如talaris2014)已经被广泛应用,一般不建议随意修改权重。

如果将权重设置为0,则表示完全不考虑该评分项的贡献,相当于禁用了该评分项。如果您希望在XML文件中将某个评分项的权重设置为0,只需将相应的weight属性设置为0即可。例如,如果要禁用名为fa_sol的评分项,可以将其对应的weight属性设置为0:

<ScoreFunction name="my_scorefxn" weights="my_weights">
  <!-- 其他评分项 -->
  <Reweight scoretype="fa_sol" weight="0.0"/>
  <!-- 其他评分项 -->
</ScoreFunction>

如果在XML文件中有其他元素或对象引用了被删除的打分函数,那么这些引用也需要被相应地修改或删除。否则,程序可能无法正常运行或产生错误。具体需要根据实际情况进行修改。 

(2)

<TASKOPERATIONS>
    <ReadResfile name="res_mutate" filename="%%mutate_resfile_relpath%%"/>
  </TASKOPERATIONS>

  <RESIDUE_SELECTORS>
    <Task name="resselector" fixed="0" packable="0" designable="1" task_operations="res_mutate"/>
    <Neighborhood name="bubble" selector="resselector" distance="8.0"/>
    <PrimarySequenceNeighborhood name="bubble_adjacent" selector="bubble" lower="1" upper="1"/>
    <StoredResidueSubset name="restore_neighbor_shell" subset_name="neighbor_shell"/>
    <Not name="everythingelse" selector="restore_neighbor_shell"/>
  </RESIDUE_SELECTORS>
  <TASKOPERATIONS>
    <OperateOnResidueSubset name="repackonly" selector="restore_neighbor_shell">
      <RestrictToRepackingRLT/>
    </OperateOnResidueSubset>
    <OperateOnResidueSubset name="norepack" selector="everythingelse">
      <PreventRepackingRLT/>
    </OperateOnResidueSubset>
    <UseMultiCoolAnnealer name="multicool" states="6"/>
    <ExtraChiCutoff name="extrachizero" extrachi_cutoff="0"/>
    <InitializeFromCommandline name="commandline_init"/>
    <RestrictToRepacking name="restrict_to_repacking"/>
  </TASKOPERATIONS>

  1. <ReadResfile>:从文件中读取氨基酸选择器的参数,这个操作称为“res_mutate”。

  2. <Task>:定义一个名为“resselector”的氨基酸选择器,用于选择要进行设计和/或打包的氨基酸。fixed="0"表示这些氨基酸可变,packable="0"表示这些氨基酸不能被打包,designable="1"表示这些氨基酸可以被设计。

  3. <Neighborhood>:定义名为“bubble”的邻域选择器,用于选择在“resselector”中选择的氨基酸周围8埃范围内的其他氨基酸。

  4. <PrimarySequenceNeighborhood>:定义名为“bubble_adjacent”的氨基酸选择器,用于选择与“bubble”选择器中选择的氨基酸相邻的氨基酸。

  5. <StoredResidueSubset>:定义名为“restore_neighbor_shell”的储存的氨基酸选择器,用于储存在“bubble_adjacent”中选择的氨基酸。

  6. <Not>:定义名为“everythingelse”的氨基酸选择器,用于选择不在“restore_neighbor_shell”中的氨基酸。

  7. <OperateOnResidueSubset>:分别定义名为“repackonly”和“norepack”的操作,用于限制“restore_neighbor_shell”和“everythingelse”中的氨基酸的打包和设计选项。

  8. <UseMultiCoolAnnealer>:定义名为“multicool”的温度退火器,用于在六个不同的温度下运行Rosetta优化。

  9. <ExtraChiCutoff>:定义名为“extrachizero”的额外χ截止器,将在退火过程中降低非天然氨基酸的χ1/χ2/

(3) 

 <MOVERS>
    <StoreResidueSubset name="neighbor_shell_storer" subset_name="neighbor_shell" residue_selector="bubble_adjacent" />
#StoreResidueSubset用于存储一个指定选择器中的残基子集;
    <AddConstraintsToCurrentConformationMover name="addcst" use_distance_cst="1" coord_dev="0.5" min_seq_sep="0" max_distance="9" CA_only="1" bound_width="0.0" cst_weight="0.0"/>
#AddConstraintsToCurrentConformationMover用于向当前构象中添加约束;
    <ClearConstraintsMover name="clearcst"/>
#ClearConstraintsMover用于清除所有约束;
    <MinMover name="minimize" scorefxn="fa_talaris2014_cst" chi="1" bb="1" type="lbfgs_armijo_nonmonotone" tolerance="0.000001" max_iter="%%max_minimization_iter%%" abs_score_convergence_threshold="%%abs_score_convergence_thresh%%"/>
#MinMover用于通过最小化分数函数来优化构象;
    <PackRotamersMover name="repack" scorefxn="fa_talaris2014" task_operations="commandline_init,repackonly,norepack,multicool"/>
    <PackRotamersMover name="mutate" scorefxn="fa_talaris2014" task_operations="commandline_init,res_mutate,norepack,multicool"/>
##PackRotamersMover用于在保留指定残基不变的情况下,通过旋转氨基酸侧链来优化分子构象;
    <ReportToDB name="dbreport" batch_description="interface_ddG" database_name="ddG.db3">
      <ScoreTypeFeatures/>
      <ScoreFunctionFeatures scorefxn="fa_talaris2014"/>
      <StructureScoresFeatures scorefxn="fa_talaris2014"/>
#ReportToDB用于将得分函数得到的评分信息保存到指定的数据库中。

1、StoreResidueSubset: 用于存储满足一定条件的残基,如指定的邻域。subset_name 参数用于命名存储的残基子集。这个 StoreResidueSubset 的mover 的作用是存储一个满足特定选择器 (residue_selector) 的氨基酸子集,并为该子集指定一个名称 (subset_name)。在这个例子中,选择器是 bubble_adjacent,它选择了与名为 resselector 的任务操作 (task operation) 相关的氨基酸残基的邻域 (8埃范围内)。 存储后,这个子集可以在以后的 mover 中使用。

2、AddConstraintsToCurrentConformationMover作用是在当前蛋白构象中添加距离约束

  • name: Mover的名称为addcst
  • use_distance_cst:设置为1表示使用距离约束
  • coord_dev: 坐标偏差值,即两个原子之间距离的上限与下限之间的距离。如果两个原子之间的距离在上限与下限之间,则不会对其施加任何约束。
  • min_seq_sep: 距离约束对应的两个氨基酸之间的最小序列间隔,这里设置为0表示所有序列间隔都满足距离约束条件。
  • max_distance: 距离约束的最大值,即两个原子之间的距离必须小于等于该值才满足约束条件。
  • CA_only: 是否仅对C-alpha原子进行约束,这里设置为1表示仅对C-alpha原子进行约束。
  • bound_width: 距离约束的边界宽度,这里设置为0表示约束的边界非常严格。
  • cst_weight: 距离约束的权重,这里设置为0表示距离约束不会对能量函数产生贡献。

3、 minmover:

这是一个MinMover(最小化Mover),它会最小化当前蛋白质构象的分数。下面是参数的详细说明:

  • name:Mover的名称,这里为“minimize”。
  • scorefxn:用于计算分数的ScoreFunction的名称,这里为“fa_talaris2014_cst”。
  • ps:【如果将打分函数设置为none,则Rosetta将不会计算能量或得分,也就是说不会进行最小化或优化。通常情况下,进行能量最小化需要先计算当前构象的能量或得分,因此在不进行能量或得分计算的情况下无法进行最小化】
  • chi:是否在最小化过程中优化侧链旋转角,这里设置为1表示优化侧链旋转角。
  • bb:是否在最小化过程中优化主链构象,这里设置为1表示优化主链构象。
  • type:最小化算法的类型,这里使用lbfgs_armijo_nonmonotone,表示L-BFGS算法和Armijo非单调线搜索。
  • tolerance:最小化过程中停止迭代的分数变化阈值。
  • max_iter:最大迭代次数,这里使用了一个占位符“%%max_minimization_iter%%”,表示这个值是在运行程序时从其他地方读取的。
  • abs_score_convergence_threshold:绝对分数收敛阈值,当分数的变化小于此阈值时,最小化过程将被视为已经收敛。同样使用了一个占位符“%%abs_score_convergence_thresh%%”,表示这个值也是从其他地方读取的。

4、  <PackRotamersMover name="repack" scorefxn="fa_talaris2014" task_operations="commandline_init,repackonly,norepack,multicool"/>
    <PackRotamersMover name="mutate" scorefxn="fa_talaris2014" task_operations="commandline_init,res_mutate,norepack,multicool"/>

这里定义了两个 PackRotamersMover,分别命名为 repackmutate。这些Mover用于对蛋白质的侧链构象进行采样,以优化蛋白质分子的能量。这两个Mover的输入参数 scorefxn 都设置为 fa_talaris2014,表示使用该得分函数进行侧链构象采样。

task_operations 参数指定了应用于构象采样的任务操作(Task Operation)。这里,repack Mover 的任务操作包括 commandline_initrepackonlynorepackmulticool,而 mutate Mover 的任务操作包括 commandline_initres_mutatenorepackmulticool。具体来说:

  • commandline_init 用于读取命令行中输入的参数并初始化任务操作;
  • repackonly 仅允许侧链重新打包,不允许其他的构象变化;
  • res_mutate 用于读取要突变的氨基酸信息;
  • norepack 禁止对选择的残基进行重新打包,以固定这些残基的构象;
  • multicool 表示采用多温度退火算法,对多个温度进行构象采样。

5、<ReportToDB name="dbreport" batch_description="interface_ddG" database_name="ddG.db3">
      <ScoreTypeFeatures/>
      <ScoreFunctionFeatures scorefxn="fa_talaris2014"/>
      <StructureScoresFeatures scorefxn="fa_talaris2014"/> 

这段代码定义了一个名为 dbreportMover,它会将一些数据报告到指定的数据库中。

batch_description 参数是一个用于描述批处理任务的字符串。

database_name 参数指定要使用的数据库的名称。

ScoreTypeFeatures 元素指定将在报告中包含哪些分数类型的特征。如果为空,则将包含所有分数类型。

ScoreFunctionFeatures 元素指定要在报告中包含哪些评分函数的特征。

StructureScoresFeatures 元素指定要在报告中包含哪些结构得分的特征。

(4)

<ReportToDB name="structreport" batch_description="interface_ddG_struct" database_name="struct.db3">
      <PoseConformationFeatures/>
      <PdbDataFeatures/>
      <JobDataFeatures/>
      <ResidueFeatures/>
      <PoseCommentsFeatures/>
      <ProteinResidueConformationFeatures/>
      <ResidueConformationFeatures/>
    </ReportToDB>

    <SavePoseMover name="save_wt_bound_pose" restore_pose="0" reference_name="wt_bound_pose"/>
    <SavePoseMover name="save_backrub_pose" restore_pose="0" reference_name="backrubpdb"/>
    <SavePoseMover name="restore_backrub_pose" restore_pose="1" reference_name="backrubpdb"/>

    <InterfaceDdGMover name="int_ddG_mover" wt_ref_savepose_mover="save_wt_bound_pose" chain_name="%%chainstomove%%" db_reporter="dbreport" scorefxn="fa_talaris2014"/>

    <ScoreMover name="apply_score" scorefxn="fa_talaris2014_cst" verbose="0"/>

  • ReportToDB:将计算结果存入数据库,包括PoseConformationFeatures、PdbDataFeatures、JobDataFeatures、ResidueFeatures、PoseCommentsFeatures、ProteinResidueConformationFeatures、ResidueConformationFeatures等特征。
  • SavePoseMover:保存当前的构象,用于后续的回溯或者作为参考构象。
  • InterfaceDdGMover:根据指定的chain_name计算界面(ddG)值,并将结果保存到数据库中。
  • ScoreMover:对当前构象进行评分,使用的ScoreFunction为fa_talaris2014_cst。

 PS:如果你只是想产生构象而没有对接口进行计算,那么去除 InterfaceDdGMover 是没有影响的,因为它是专门用于计算蛋白质复合物界面上的 ddG 值的。同时也可以去除 db_reporter 和 apply_score 这两个Mover,因为它们是用于将计算结果保存到数据库和应用打分函数的

 (5)

<ParsedProtocol name="finish_ddg_post_backrub">
      <Add mover_name="save_backrub_pose"/>
      <Add mover_name="structreport"/>

      <Add mover_name="repack"/>

      <Add mover_name="addcst"/>
      <Add mover_name="minimize"/>
      <Add mover_name="clearcst"/>

      <Add mover_name="save_wt_bound_pose"/>
      <Add mover_name="structreport"/>
      <Add mover_name="restore_backrub_pose"/>

      <Add mover_name="mutate"/>

      <Add mover_name="addcst"/>
      <Add mover_name="minimize"/>
      <Add mover_name="clearcst"/>
      <Add mover_name="structreport"/>

      <Add mover_name="int_ddG_mover"/>
    </ParsedProtocol>

    <BackrubProtocol name="backrub" mc_kt="1.2" ntrials="%%number_backrub_trials%%" pivot_residue_selector="restore_neighbor_shell" task_operations="restrict_to_repacking,commandline_init,extrachizero" recover_low="0" trajectory_stride="%%backrub_trajectory_stride%%" trajectory_apply_mover="finish_ddg_post_backrub"/>

该代码段定义了一个名为 "finish_ddg_post_backrub" 的协议,它包含一系列的mover操作,其目的是产生一个可靠的界面变异的结构并计算界面自由能变化。

具体来说,该协议中的mover操作的作用如下:

  • SavePoseMover: 将当前的构象保存为 "backrub" 和 "wt_bound_pose"。
  • ReportToDB: 将计算的分数和结构信息报告到数据库。
  • PackRotamersMover: 通过使用repackonly的task操作和fa_talaris2014打分函数来重新打包氨基酸侧链。:"repack"是一个执行侧链重排操作的Mover,它可以将蛋白质构象中的氨基酸侧链重新排布以优化构象。
  • AddConstraintsToCurrentConformationMover: 添加氢键和二面角限制,以增强结构的稳定性。
  • MinMover: 通过能量最小化来优化构象。
  • ReportToDB: 将计算的分数和结构信息报告到数据库。
  • InterfaceDdGMover: 计算变异后的构象的界面自由能变化。

最后一个mover操作是在BackrubProtocol中定义的,该协议定义了一系列的backrub折叠仿真运动,用于对结构进行随机扰动,以生成多个构象,最终的构象则使用上述的mover操作进行优化。

   <Add mover_name="int_ddG_mover"/>这行代码是添加一个名为 "int_ddG_mover" 的 mover 到该协议中。"Int_ddG_mover" 是 InterfaceDdGMover 类型的 mover,用于计算蛋白质蛋白质接口上进行的突变引起的 ddG(自由能变化)值,即突变后蛋白质相互作用的变化。该 mover 会使用一个特定的能量函数(scorefxn)对突变后的构象进行打分,并将结果存储到指定的数据库中(db_reporter)用于后续分析。

(6)

 </MOVERS>
  <APPLY_TO_POSE>
  </APPLY_TO_POSE>
  <PROTOCOLS>
    <Add mover_name="addcst"/>
    <Add mover_name="apply_score"/> <!-- Necessary to initialize neighbor graph -->
    <Add mover_name="neighbor_shell_storer"/>

    <Add mover_name="minimize"/>
    <Add mover_name="clearcst"/>

    <Add mover_name="backrub"/>
  </PROTOCOLS>
  <OUTPUT />
</ROSETTASCRIPTS>

这是一个RosettaScripts的XML文件,其中包含了一些Rosetta的操作和协议。这里列出的是一些主要的组成部分和其大致含义:

  • MOVERS:包含了所有的RosettaMovers,即Rosetta中的操作单元,如能量最小化、构象采样等等。
  • APPLY_TO_POSE:对蛋白质结构进行操作的部分,指定了哪些操作要应用到蛋白质结构上。
  • PROTOCOLS:指定了RosettaScripts的协议,即在APPLY_TO_POSE中应用MOVERS的顺序和方式。
  • OUTPUT:指定了输出文件的格式和路径。

具体地,这段代码中的操作包括:

  • 使用addcst mover添加一些距离和角度限制。
  • 使用apply_score mover来初始化邻居图。
  • 使用neighbor_shell_storer mover来保存一个特定选择器(pivot_residue_selector)中的氨基酸残基周围的邻居。
  • 使用minimize mover进行能量最小化。
  • 使用clearcst mover清除距离和角度限制。
  • 使用backrub mover进行构象采样和蛋白质构象的改变。

关于只产生构象:

1、如果你想在xml文件中去掉约束,并且只生成构象,可以将AddConstraintsToCurrentConformationMover从PROTOCOLS中删除。例如

<!-- <AddConstraintsToCurrentConformationMover cst_file="constraints.cst"/> -->
<!-- <Add mover_name="addcst"/> -->
<!-- <Add mover_name="clearcst"/> -->
去除

  1. <Add mover_name="minimize"/><Add mover_name="clearcst"/> 两行删除,这样就不会进行能量最小化和清除约束的操作。

  2. 如果存在引入约束的步骤,则需要将其删除或者注释掉,以避免对采样结果的影响。

修改完成后,您就可以运行这个脚本来生成构象。注意,这些构象只是经过采样而得到的初始结构,还需要经过后续的能量最小化和评估等步骤进行筛选和优化。

2、

如果只需要生成构象,可以考虑去除以下步骤或者组件:

  1. AddConstraintsToCurrentConformationMover或者AddConstraintsToCurrentConformationFilter,因为它们添加了约束。
  2. MinMover或者FastRelax,因为它们执行了结构最小化或者松弛,这可能会使构象产生大的改变。
  3. InterfaceDdGMover,因为它计算界面的ΔΔG值,需要进行更多的计算。
  4. SavePoseMoverReportToDB,因为它们记录和报告结果,可能会产生额外的开销。

因此,只需要保留产生构象的相关步骤即可。例如,可以保留PackRotamersMoverBackrubProtocol,以便进行侧链构象采样和Backrub蛋白质构象采样,而忽略计算界面能量等步骤。

3、成功实现的代码:

<ROSETTASCRIPTS>
<!--  <SCOREFXNS>-->
<!--    <ScoreFunction name="fa_talaris2014" weights="talaris2014"/>-->
<!--    <ScoreFunction name="fa_talaris2014_cst" weights="talaris2014">-->
<!--      <Reweight scoretype="atom_pair_constraint" weight="1.0"/>-->
<!--      <Set fa_max_dis="9.0"/>-->
<!--    </ScoreFunction>-->
<!--  </SCOREFXNS>-->

  <!-- ### Only required input file (other than PDB) - mutation resfile ### -->
  <!-- #### All residues must be set to be NATAA packable at top of resfile ### -->
  <TASKOPERATIONS>
    <ReadResfile name="res_mutate" filename="%%mutate_resfile_relpath%%"/>
  </TASKOPERATIONS>

  <RESIDUE_SELECTORS>
    <Task name="resselector" fixed="0" packable="0" designable="1" task_operations="res_mutate"/>
    <Neighborhood name="bubble" selector="resselector" distance="8.0"/>
    <PrimarySequenceNeighborhood name="bubble_adjacent" selector="bubble" lower="1" upper="1"/>
    <StoredResidueSubset name="restore_neighbor_shell" subset_name="neighbor_shell"/>
    <Not name="everythingelse" selector="restore_neighbor_shell"/>
  </RESIDUE_SELECTORS>
  <TASKOPERATIONS>
    <OperateOnResidueSubset name="repackonly" selector="restore_neighbor_shell">
      <RestrictToRepackingRLT/>
    </OperateOnResidueSubset>
    <OperateOnResidueSubset name="norepack" selector="everythingelse">
      <PreventRepackingRLT/>
    </OperateOnResidueSubset>
    <UseMultiCoolAnnealer name="multicool" states="6"/>
    <ExtraChiCutoff name="extrachizero" extrachi_cutoff="0"/>
    <InitializeFromCommandline name="commandline_init"/>
    <RestrictToRepacking name="restrict_to_repacking"/>
  </TASKOPERATIONS>

  <FILTERS>
  </FILTERS>

  <MOVERS>
    <StoreResidueSubset name="neighbor_shell_storer" subset_name="neighbor_shell" residue_selector="bubble_adjacent" />

<!--    <AddConstraintsToCurrentConformationMover name="addcst" use_distance_cst="1" coord_dev="0.5" min_seq_sep="0" max_distance="9" CA_only="1" bound_width="0.0" cst_weight="0.0"/>-->
    <ClearConstraintsMover name="clearcst"/>
<!--    <MinMover name="minimize" scorefxn="fa_talaris2014_cst" chi="1" bb="1" type="lbfgs_armijo_nonmonotone" tolerance="0.000001" max_iter="%%max_minimization_iter%%" abs_score_convergence_threshold="%%abs_score_convergence_thresh%%"/>-->
<!--    <MinMover name="minimize" chi="1" bb="1" type="lbfgs_armijo_nonmonotone" tolerance="0.000001" max_iter="%%max_minimization_iter%%" abs_score_convergence_threshold="%%abs_score_convergence_thresh%%"/>-->

<!--    <PackRotamersMover name="repack" scorefxn="fa_talaris2014" task_operations="commandline_init,repackonly,norepack,multicool"/>-->
<!--    <PackRotamersMover name="mutate" scorefxn="fa_talaris2014" task_operations="commandline_init,res_mutate,norepack,multicool"/>-->
    <PackRotamersMover name="repack"  task_operations="commandline_init,repackonly,norepack,multicool"/>
    <PackRotamersMover name="mutate"  task_operations="commandline_init,res_mutate,norepack,multicool"/>

<!--    <ReportToDB name="dbreport" batch_description="interface_ddG" database_name="ddG.db3">-->
<!--      <ScoreTypeFeatures/>-->
<!--      <ScoreFunctionFeatures scorefxn="fa_talaris2014"/>-->
<!--      <StructureScoresFeatures scorefxn="fa_talaris2014"/>-->
<!--    </ReportToDB>-->

<!--    <ReportToDB name="structreport" batch_description="interface_ddG_struct" database_name="struct.db3">-->
<!--      <PoseConformationFeatures/>-->
<!--      <PdbDataFeatures/>-->
<!--      <JobDataFeatures/>-->
<!--      <ResidueFeatures/>-->
<!--      <PoseCommentsFeatures/>-->
<!--      <ProteinResidueConformationFeatures/>-->
<!--      <ResidueConformationFeatures/>-->
<!--    </ReportToDB>-->

<!--    <SavePoseMover name="save_wt_bound_pose" restore_pose="0" reference_name="wt_bound_pose"/>-->
<!--    <SavePoseMover name="save_backrub_pose" restore_pose="0" reference_name="backrubpdb"/>-->
<!--    <SavePoseMover name="restore_backrub_pose" restore_pose="1" reference_name="backrubpdb"/>-->

<!--    <InterfaceDdGMover name="int_ddG_mover" wt_ref_savepose_mover="save_wt_bound_pose" chain_name="%%chainstomove%%" db_reporter="dbreport" scorefxn="fa_talaris2014"/>-->
<!--    <InterfaceDdGMover name="int_ddG_mover" wt_ref_savepose_mover="save_wt_bound_pose" chain_name="%%chainstomove%%" db_reporter="dbreport"/>-->

<!--    <ScoreMover name="apply_score" scorefxn="fa_talaris2014_cst" verbose="0"/>-->

    <!-- This ParsedProtocol allows the ddG calculation to take place multiple times along the backrub trajectory, if desired -->
    <ParsedProtocol name="finish_ddg_post_backrub">
<!--      <Add mover_name="save_backrub_pose"/>-->
<!--      <Add mover_name="structreport"/>-->

      <Add mover_name="repack"/>

<!--      <Add mover_name="addcst"/>-->
<!--      <Add mover_name="minimize"/>-->
<!--      <Add mover_name="clearcst"/>-->

<!--      <Add mover_name="save_wt_bound_pose"/>-->
<!--      <Add mover_name="structreport"/>-->
<!--      <Add mover_name="restore_backrub_pose"/>-->

      <Add mover_name="mutate"/>

<!--      <Add mover_name="addcst"/>-->
<!--      <Add mover_name="minimize"/>-->
<!--      <Add mover_name="clearcst"/>-->
<!--      <Add mover_name="structreport"/>-->

<!--      <Add mover_name="int_ddG_mover"/>-->
    </ParsedProtocol>

    <BackrubProtocol name="backrub" mc_kt="1.2" ntrials="%%number_backrub_trials%%" pivot_residue_selector="restore_neighbor_shell" task_operations="restrict_to_repacking,commandline_init,extrachizero" recover_low="0" trajectory_stride="%%backrub_trajectory_stride%%" trajectory_apply_mover="finish_ddg_post_backrub"/>

  </MOVERS>
  <APPLY_TO_POSE>
  </APPLY_TO_POSE>
  <PROTOCOLS>
<!--    <Add mover_name="addcst"/>-->
<!--    <Add mover_name="apply_score"/> &lt;!&ndash; Necessary to initialize neighbor graph &ndash;&gt;-->
    <Add mover_name="neighbor_shell_storer"/>

<!--    <Add mover_name="minimize"/>-->
<!--    <Add mover_name="clearcst"/>-->

    <Add mover_name="backrub"/>
  </PROTOCOLS>
  <OUTPUT />
</ROSETTASCRIPTS>

产生了pdb结构,没有计算能量【去除了能量最优化、去除了约束,构象可能没有之前好】




补充学习:

(1)文献: Flex ddG: Rosetta Ensemble-Based Estimation of Changes in Protein-Protein Binding Affinity Upon Mutation

(2)代码:GitHub - Kortemme-Lab/flex_ddG_tutorial

(3)文献解读:​Rosetta Flex ddG: 蛋白亲和力成熟突变设计 (qq.com) 

(4)学习

【1】backrub mover:

Backrub Mover 是一种在蛋白质分子模拟中常用的构象搜索算法。它是由Rosetta软件套件中的Rosetta++程序库引入的。Backrub Mover 通过模拟蛋白质中的侧链和主链的局部扭曲来搜索构象空间。

Backrub Mover 的基本思想是通过扭曲蛋白质的侧链和主链来引入构象的变化。它通过在蛋白质的某个位置选择一个扭曲角度,并在该位置周围进行局部优化,来搜索新的构象。这种方法可以帮助模拟蛋白质的构象变化,例如蛋白质的局部结构变化或蛋白质的柔性区域。

Backrub Mover 在蛋白质分子模拟中被广泛应用,特别是在蛋白质折叠和蛋白质-配体相互作用的研究中。它可以帮助研究人员探索蛋白质的不同构象,了解蛋白质的结构和功能之间的关系。

【2】repack

在蛋白质分子模拟中,"repack" 是指对蛋白质的侧链进行重新打包的过程。侧链是蛋白质分子中与主链相连的非线性部分,它们的构象可以影响蛋白质的稳定性和功能。

在进行构象搜索或蛋白质设计时,"repack" 步骤通常用于优化蛋白质的侧链构象,以改善蛋白质的稳定性、配体结合能力或其他特定的性质。这个过程涉及到对蛋白质的侧链进行重新排列和优化,以找到更合适的构象。

在 Rosetta 软件套件中,"repack" 是一个常用的术语,用于描述对蛋白质的侧链进行重新打包的操作。这个过程通常涉及到计算每个侧链的最佳构象,以最大程度地减少能量或优化特定的目标函数。通过重新打包侧链,可以改善蛋白质的稳定性和结构特性,从而对蛋白质的功能和性质进行调控。

【3】GAM 拟合:

在给定多个构象的情况下,"GAM拟合" 可能指的是使用广义加性模型(Generalized Additive Model,GAM)对这些构象的得分进行建模和分析。

在蛋白质分子模拟或蛋白质设计中,构象搜索通常会生成多个可能的构象。为了评估这些构象的质量,需要对它们进行打分。打分函数可以根据一些物理或化学性质来评估构象的稳定性、配体结合能力或其他特定的性质。

GAM拟合可以用于对构象得分进行建模。它可以通过将构象得分作为响应变量,将构象的特征(如结构特征、物理性质等)作为预测变量,来建立一个非线性的关系模型。这个模型可以帮助理解构象得分与构象特征之间的关系,并提供对构象质量的预测和解释。

通过GAM拟合,可以对多个构象的得分进行平均化或加权平均化,以获得一个综合的构象得分。这个综合得分可以用于选择最优的构象或进行进一步的分析和优化。

需要注意的是,具体的GAM拟合方法和实现可能因应用领域和具体工具而有所不同。因此,建议参考相关文献或使用的软件工具的文档,以了解具体的GAM拟合方法和步骤。

【4】大概步骤:

  • 首先使用初始结构信息生成限制,在此条件下进行能量最小化;

  • 对野生型和突变组分别使用Backrup Mover对骨架构象进行采样;

  • 根据新的骨架构象进行mutate、repack以及能量能最小化;

  • 对新的构象进行打分,并对多个构象的得分进行平均化,GAM拟合。



flex ddg 代码中的一些参数学习:

【1】nstruct = 3 # Normally 35
【2】max_minimization_iter = 5 # Normally 5000
【3】abs_score_convergence_thresh = 200.0 # Normally 1.0
【4】number_backrub_trials = 10 # Normally 35000
【5】backrub_trajectory_stride = 5 # Can be whatever you want, if you would like to see results from earlier time points in the backrub trajectory. 7000 is a reasonable number, to give you three checkpouints for a 35000 step run, but you could also set it to 35000 for quickest run time (as the final minimization and packing steps will only need to be run one time).
【6】path_to_script = 'ddG-backrub.xml'
  • nstruct = 3:这个参数指定了进行构象优化和打分的构象数量。在这个例子中,将使用3个构象进行优化和打分。通常情况下,可以使用更多的构象来获得更准确的结果。

  • max_minimization_iter = 5:这个参数指定了构象优化过程中的最大迭代次数。在这个例子中,每个构象将进行最多5次迭代的优化。通常情况下,可以使用更多的迭代次数来更充分地优化构象。

  • abs_score_convergence_thresh = 200.0:这个参数指定了构象优化过程中的得分收敛阈值。如果得分的绝对变化小于该阈值,则认为优化过程已经收敛。在这个例子中,如果得分的绝对变化小于200.0,则认为优化过程已经收敛。通常情况下,可以根据具体情况调整该阈值。

  • number_backrub_trials = 10:这个参数指定了进行Backrub Mover的次数。Backrub Mover是一种用于蛋白质构象搜索的算法。在这个例子中,将进行10次Backrub Mover操作。通常情况下,可以使用更多的操作次数来更全面地搜索构象空间。

  • backrub_trajectory_stride = 5:这个参数指定了在Backrub Mover过程中保存构象的间隔。在这个例子中,每隔5个步骤保存一个构象。这样可以在后续分析中查看Backrub Mover过程中的不同时间点的结果。

  • path_to_script = 'ddG-backrub.xml':这个参数指定了使用的脚本文件的路径。在这个例子中,使用名为"ddG-backrub.xml"的脚本文件进行构象优化和打分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值